Add command "/tbm-edit"

Can now add/edit entity entries in config. Now possible to add entries
for unknown mobs in-game.
This commit is contained in:
Stephen Seo 2018-10-24 17:20:04 +09:00
parent 05b3dc90b0
commit 9e15f845c5
13 changed files with 1245 additions and 33 deletions

View file

@ -4,6 +4,9 @@ Fix bug where player can start battle with self.
Change config to use ".toml" instead of ".xml". Change config to use ".toml" instead of ".xml".
Added command "/tbm-edit" that allows OPs to edit entity entries for TBM.
Can be used to add mobs from other mods easily.
Change how battle info text is displayed. Change how battle info text is displayed.
# Version 1.5 # Version 1.5

View file

@ -36,7 +36,7 @@ public class BattleGui extends GuiScreen
private int value; private int value;
private MenuState(int value) MenuState(int value)
{ {
this.value = value; this.value = value;
} }
@ -78,7 +78,7 @@ public class BattleGui extends GuiScreen
private int value; private int value;
private ButtonAction(int value) ButtonAction(int value)
{ {
this.value = value; this.value = value;
} }

View file

@ -88,11 +88,7 @@ public class BattleMusic
return false; return false;
} }
String ext = name.substring(extIndex + 1).toLowerCase(); String ext = name.substring(extIndex + 1).toLowerCase();
if(ext.equals("mid") || ext.equals("wav")) return ext.equals("mid") || ext.equals("wav");
{
return true;
}
return false;
} }
}); });
for(File f : battleFiles) for(File f : battleFiles)
@ -110,11 +106,7 @@ public class BattleMusic
return false; return false;
} }
String ext = name.substring(extIndex + 1).toLowerCase(); String ext = name.substring(extIndex + 1).toLowerCase();
if(ext.equals("mid") || ext.equals("wav")) return ext.equals("mid") || ext.equals("wav");
{
return true;
}
return false;
} }
}); });
for(File f : sillyFiles) for(File f : sillyFiles)

View file

@ -168,6 +168,12 @@ public class ClientProxy extends CommonProxy
Minecraft.getMinecraft().player.sendMessage(prefix); Minecraft.getMinecraft().player.sendMessage(prefix);
} }
@Override
public void displayTextComponent(ITextComponent text)
{
Minecraft.getMinecraft().player.sendMessage(text);
}
@Override @Override
public Entity getEntityByID(int id) public Entity getEntityByID(int id)
{ {

View file

@ -4,6 +4,8 @@ import java.util.Iterator;
import com.seodisparate.TurnBasedMinecraft.common.networking.PacketBattleMessage; import com.seodisparate.TurnBasedMinecraft.common.networking.PacketBattleMessage;
import com.seodisparate.TurnBasedMinecraft.common.networking.PacketEditingMessage;
import net.minecraft.entity.player.EntityPlayerMP;
import net.minecraftforge.event.entity.living.LivingAttackEvent; import net.minecraftforge.event.entity.living.LivingAttackEvent;
import net.minecraftforge.event.entity.living.LivingSetAttackTargetEvent; import net.minecraftforge.event.entity.living.LivingSetAttackTargetEvent;
import net.minecraftforge.fml.common.eventhandler.SubscribeEvent; import net.minecraftforge.fml.common.eventhandler.SubscribeEvent;
@ -59,8 +61,32 @@ public class AttackEventHandler
{ {
return; return;
} }
Config config = TurnBasedMinecraftMod.proxy.getConfig(); CommonProxy proxy = TurnBasedMinecraftMod.proxy;
BattleManager battleManager = TurnBasedMinecraftMod.proxy.getBattleManager(); Config config = proxy.getConfig();
BattleManager battleManager = proxy.getBattleManager();
// handle edit entity, pick entity via attack
{
EditingInfo editingInfo = null;
if(event.getSource().getTrueSource() != null && event.getEntity() != null)
{
editingInfo = proxy.getEditingInfo(event.getSource().getTrueSource().getEntityId());
if(editingInfo != null && editingInfo.isPendingEntitySelection)
{
editingInfo.isPendingEntitySelection = false;
event.setCanceled(true);
editingInfo.entityInfo = config.getMatchingEntityInfo(event.getEntity());
if(editingInfo.entityInfo == null)
{
editingInfo.entityInfo = new EntityInfo();
editingInfo.entityInfo.classType = event.getEntity().getClass();
TurnBasedMinecraftMod.NWINSTANCE.sendTo(new PacketEditingMessage(PacketEditingMessage.Type.PICK_EDIT, editingInfo.entityInfo), (EntityPlayerMP)editingInfo.editor);
return;
}
TurnBasedMinecraftMod.NWINSTANCE.sendTo(new PacketEditingMessage(PacketEditingMessage.Type.PICK_EDIT, editingInfo.entityInfo), (EntityPlayerMP)editingInfo.editor);
return;
}
}
}
if((event.getEntity() != null && battleManager.isRecentlyLeftBattle(event.getEntity().getEntityId())) if((event.getEntity() != null && battleManager.isRecentlyLeftBattle(event.getEntity().getEntityId()))
|| (event.getSource().getTrueSource() != null && battleManager.isRecentlyLeftBattle(event.getSource().getTrueSource().getEntityId()))) || (event.getSource().getTrueSource() != null && battleManager.isRecentlyLeftBattle(event.getSource().getTrueSource().getEntityId())))
{ {

View file

@ -20,7 +20,6 @@ import net.minecraft.entity.EntityLiving;
import net.minecraft.entity.EntityLivingBase; import net.minecraft.entity.EntityLivingBase;
import net.minecraft.entity.player.EntityPlayer; import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.entity.player.EntityPlayerMP; import net.minecraft.entity.player.EntityPlayerMP;
import net.minecraft.init.Items;
import net.minecraft.item.Item; import net.minecraft.item.Item;
import net.minecraft.item.ItemBow; import net.minecraft.item.ItemBow;
import net.minecraft.item.ItemFood; import net.minecraft.item.ItemFood;
@ -63,7 +62,7 @@ public class Battle
private int value; private int value;
private static Map<Integer, State> map = new HashMap<Integer, State>(); private static Map<Integer, State> map = new HashMap<Integer, State>();
private State(int value) State(int value)
{ {
this.value = value; this.value = value;
} }
@ -99,7 +98,7 @@ public class Battle
private int value; private int value;
private static Map<Integer, Decision> map = new HashMap<Integer, Decision>(); private static Map<Integer, Decision> map = new HashMap<Integer, Decision>();
private Decision(int value) Decision(int value)
{ {
this.value = value; this.value = value;
} }
@ -892,11 +891,11 @@ public class Battle
int hitChance = TurnBasedMinecraftMod.proxy.getConfig().getPlayerAttackProbability(); int hitChance = TurnBasedMinecraftMod.proxy.getConfig().getPlayerAttackProbability();
if(target.entity instanceof EntityPlayer) if(target.entity instanceof EntityPlayer)
{ {
hitChance -= TurnBasedMinecraftMod.proxy.getConfig().getPlayerEvasion(); hitChance = hitChance * (100 - TurnBasedMinecraftMod.proxy.getConfig().getPlayerEvasion()) / 100;
} }
else else
{ {
hitChance -= target.entityInfo.evasion; hitChance = hitChance * (100 - target.entityInfo.evasion) / 100;
} }
if(hitChance < TurnBasedMinecraftMod.proxy.getConfig().getMinimumHitPercentage()) if(hitChance < TurnBasedMinecraftMod.proxy.getConfig().getMinimumHitPercentage())
{ {
@ -999,11 +998,11 @@ public class Battle
int hitChance = next.entityInfo.attackProbability; int hitChance = next.entityInfo.attackProbability;
if(target.entity instanceof EntityPlayer) if(target.entity instanceof EntityPlayer)
{ {
hitChance -= TurnBasedMinecraftMod.proxy.getConfig().getPlayerEvasion(); hitChance = hitChance * (100 - TurnBasedMinecraftMod.proxy.getConfig().getPlayerEvasion()) / 100;
} }
else else
{ {
hitChance -= target.entityInfo.evasion; hitChance = hitChance * (100 - target.entityInfo.evasion) / 100;
} }
if(hitChance < TurnBasedMinecraftMod.proxy.getConfig().getMinimumHitPercentage()) if(hitChance < TurnBasedMinecraftMod.proxy.getConfig().getMinimumHitPercentage())
{ {
@ -1020,6 +1019,10 @@ public class Battle
{ {
damageAmount += (int)(Math.random() * (next.entityInfo.attackVariance * 2 + 1)) - next.entityInfo.attackVariance; damageAmount += (int)(Math.random() * (next.entityInfo.attackVariance * 2 + 1)) - next.entityInfo.attackVariance;
} }
if(damageAmount < 0)
{
damageAmount = 0;
}
// attack // attack
final Entity nextEntity = next.entity; final Entity nextEntity = next.entity;
final EntityInfo nextEntityInfo = next.entityInfo; final EntityInfo nextEntityInfo = next.entityInfo;

View file

@ -0,0 +1,416 @@
package com.seodisparate.TurnBasedMinecraft.common;
import com.seodisparate.TurnBasedMinecraft.common.networking.PacketEditingMessage;
import com.seodisparate.TurnBasedMinecraft.common.networking.PacketGeneralMessage;
import net.minecraft.command.CommandBase;
import net.minecraft.command.CommandException;
import net.minecraft.command.ICommandSender;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.entity.player.EntityPlayerMP;
import net.minecraft.server.MinecraftServer;
public class CommandTBMEdit extends CommandBase
{
public static final String usage = "/tbm-edit (Invoke without parameters to start edit)";
private Config config;
public CommandTBMEdit(Config config)
{
this.config = config;
}
@Override
public String getName()
{
return "tbm-edit";
}
@Override
public String getUsage(ICommandSender sender)
{
return usage;
}
@Override
public void execute(MinecraftServer server, ICommandSender sender, String[] args) throws CommandException
{
EntityPlayer senderEntity = null;
EditingInfo editingInfo = null;
try
{
senderEntity = (EntityPlayer) sender.getCommandSenderEntity();
} catch (ClassCastException e)
{
// if sender is not EntityPlayer, ignore
return;
}
editingInfo = TurnBasedMinecraftMod.proxy.getEditingInfo(senderEntity.getEntityId());
if(args.length == 0)
{
if(editingInfo != null && !editingInfo.isPendingEntitySelection)
{
TurnBasedMinecraftMod.NWINSTANCE.sendTo(new PacketEditingMessage(PacketEditingMessage.Type.PICK_EDIT, editingInfo.entityInfo), (EntityPlayerMP)senderEntity);
}
else if(editingInfo != null)
{
TurnBasedMinecraftMod.NWINSTANCE.sendTo(new PacketEditingMessage(PacketEditingMessage.Type.ATTACK_ENTITY), (EntityPlayerMP) senderEntity);
}
else
{
TurnBasedMinecraftMod.proxy.setEditingPlayer(senderEntity);
TurnBasedMinecraftMod.NWINSTANCE.sendTo(new PacketEditingMessage(PacketEditingMessage.Type.ATTACK_ENTITY), (EntityPlayerMP) senderEntity);
TurnBasedMinecraftMod.logger.info("Begin editing TBM Entity for player \"" + senderEntity.getName() + "\"");
}
}
else if(args.length == 1)
{
if(editingInfo != null && !editingInfo.isPendingEntitySelection)
{
if(args[0].toLowerCase().equals("finish"))
{
config.editEntityEntry(editingInfo.entityInfo);
TurnBasedMinecraftMod.proxy.removeEditingInfo(senderEntity.getEntityId());
TurnBasedMinecraftMod.NWINSTANCE.sendTo(new PacketGeneralMessage("Entity info saved in config and loaded."), (EntityPlayerMP) senderEntity);
}
else if(args[0].toLowerCase().equals("cancel"))
{
TurnBasedMinecraftMod.proxy.removeEditingInfo(senderEntity.getEntityId());
TurnBasedMinecraftMod.NWINSTANCE.sendTo(new PacketGeneralMessage("Cancelled editing entity."), (EntityPlayerMP)senderEntity);
}
else if(args[0].toLowerCase().equals("edit"))
{
TurnBasedMinecraftMod.NWINSTANCE.sendTo(new PacketEditingMessage(PacketEditingMessage.Type.PICK_EDIT, editingInfo.entityInfo), (EntityPlayerMP)senderEntity);
}
else
{
TurnBasedMinecraftMod.NWINSTANCE.sendTo(new PacketGeneralMessage("Invalid argument for \"/tbm-edit <arg>\"."), (EntityPlayerMP)senderEntity);
}
}
else if(editingInfo != null)
{
TurnBasedMinecraftMod.NWINSTANCE.sendTo(new PacketEditingMessage(PacketEditingMessage.Type.ATTACK_ENTITY), (EntityPlayerMP) senderEntity);
}
else
{
TurnBasedMinecraftMod.NWINSTANCE.sendTo(new PacketGeneralMessage("Cannot edit entity without starting editing process (use \"/tbm-edit\")."), (EntityPlayerMP)senderEntity);
}
}
else if(args.length == 2)
{
if(editingInfo != null && !editingInfo.isPendingEntitySelection)
{
if(args[0].toLowerCase().equals("edit"))
{
switch(args[1])
{
case "ignoreBattle":
TurnBasedMinecraftMod.NWINSTANCE.sendTo(new PacketEditingMessage(PacketEditingMessage.Type.EDIT_IGNORE_BATTLE), (EntityPlayerMP) senderEntity);
break;
case "attackPower":
TurnBasedMinecraftMod.NWINSTANCE.sendTo(new PacketEditingMessage(PacketEditingMessage.Type.EDIT_ATTACK_POWER), (EntityPlayerMP) senderEntity);
break;
case "attackProbability":
TurnBasedMinecraftMod.NWINSTANCE.sendTo(new PacketEditingMessage(PacketEditingMessage.Type.EDIT_ATTACK_PROBABILITY), (EntityPlayerMP) senderEntity);
break;
case "attackVariance":
TurnBasedMinecraftMod.NWINSTANCE.sendTo(new PacketEditingMessage(PacketEditingMessage.Type.EDIT_ATTACK_VARIANCE), (EntityPlayerMP) senderEntity);
break;
case "attackEffect":
TurnBasedMinecraftMod.NWINSTANCE.sendTo(new PacketEditingMessage(PacketEditingMessage.Type.EDIT_ATTACK_EFFECT), (EntityPlayerMP) senderEntity);
break;
case "attackEffectProbability":
TurnBasedMinecraftMod.NWINSTANCE.sendTo(new PacketEditingMessage(PacketEditingMessage.Type.EDIT_ATTACK_EFFECT_PROBABILITY), (EntityPlayerMP) senderEntity);
break;
case "defenseDamage":
TurnBasedMinecraftMod.NWINSTANCE.sendTo(new PacketEditingMessage(PacketEditingMessage.Type.EDIT_DEFENSE_DAMAGE), (EntityPlayerMP) senderEntity);
break;
case "defenseDamageProbability":
TurnBasedMinecraftMod.NWINSTANCE.sendTo(new PacketEditingMessage(PacketEditingMessage.Type.EDIT_DEFENSE_DAMAGE_PROBABILITY), (EntityPlayerMP) senderEntity);
break;
case "evasion":
TurnBasedMinecraftMod.NWINSTANCE.sendTo(new PacketEditingMessage(PacketEditingMessage.Type.EDIT_EVASION), (EntityPlayerMP) senderEntity);
break;
case "speed":
TurnBasedMinecraftMod.NWINSTANCE.sendTo(new PacketEditingMessage(PacketEditingMessage.Type.EDIT_SPEED), (EntityPlayerMP) senderEntity);
break;
case "category":
TurnBasedMinecraftMod.NWINSTANCE.sendTo(new PacketEditingMessage(PacketEditingMessage.Type.EDIT_CATEGORY), (EntityPlayerMP) senderEntity);
break;
case "decisionAttack":
TurnBasedMinecraftMod.NWINSTANCE.sendTo(new PacketEditingMessage(PacketEditingMessage.Type.EDIT_DECISION_ATTACK), (EntityPlayerMP) senderEntity);
break;
case "decisionDefend":
TurnBasedMinecraftMod.NWINSTANCE.sendTo(new PacketEditingMessage(PacketEditingMessage.Type.EDIT_DECISION_DEFEND), (EntityPlayerMP) senderEntity);
break;
case "decisionFlee":
TurnBasedMinecraftMod.NWINSTANCE.sendTo(new PacketEditingMessage(PacketEditingMessage.Type.EDIT_DECISION_FLEE), (EntityPlayerMP) senderEntity);
break;
default:
TurnBasedMinecraftMod.NWINSTANCE.sendTo(new PacketGeneralMessage("Invalid argument for \"/tbm-edit edit <arg>\""), (EntityPlayerMP) senderEntity);
break;
}
}
else
{
TurnBasedMinecraftMod.NWINSTANCE.sendTo(new PacketGeneralMessage("Invalid arguments for \"/tbm-edit <arg> <arg>\"."), (EntityPlayerMP)senderEntity);
}
}
else if(editingInfo != null)
{
TurnBasedMinecraftMod.NWINSTANCE.sendTo(new PacketEditingMessage(PacketEditingMessage.Type.ATTACK_ENTITY), (EntityPlayerMP)senderEntity);
}
else
{
TurnBasedMinecraftMod.NWINSTANCE.sendTo(new PacketGeneralMessage("Cannot edit entity without starting editing process (use \"/tbm-edit\")."), (EntityPlayerMP)senderEntity);
}
}
else if(args.length == 3)
{
if(editingInfo != null && !editingInfo.isPendingEntitySelection)
{
if(args[0].toLowerCase().equals("edit"))
{
switch(args[1])
{
case "ignoreBattle":
if(args[2].toLowerCase().equals("true"))
{
editingInfo.entityInfo.ignoreBattle = true;
TurnBasedMinecraftMod.NWINSTANCE.sendTo(new PacketEditingMessage(PacketEditingMessage.Type.PICK_EDIT, editingInfo.entityInfo), (EntityPlayerMP)senderEntity);
}
else if(args[2].toLowerCase().equals("false"))
{
editingInfo.entityInfo.ignoreBattle = false;
TurnBasedMinecraftMod.NWINSTANCE.sendTo(new PacketEditingMessage(PacketEditingMessage.Type.PICK_EDIT, editingInfo.entityInfo), (EntityPlayerMP)senderEntity);
}
else
{
TurnBasedMinecraftMod.NWINSTANCE.sendTo(new PacketGeneralMessage("Invalid argument for \"/tbm-edit edit ignoreBattle <boolean>\""), (EntityPlayerMP)senderEntity);
}
break;
case "attackPower":
try
{
editingInfo.entityInfo.attackPower = Integer.parseInt(args[2]);
if(editingInfo.entityInfo.attackPower < 0)
{
editingInfo.entityInfo.attackPower = 0;
}
TurnBasedMinecraftMod.NWINSTANCE.sendTo(new PacketEditingMessage(PacketEditingMessage.Type.PICK_EDIT, editingInfo.entityInfo), (EntityPlayerMP)senderEntity);
}
catch (NumberFormatException e)
{
TurnBasedMinecraftMod.NWINSTANCE.sendTo(new PacketGeneralMessage("Invalid argument for \"/tbm-edit edit attackPower <integer>\""), (EntityPlayerMP)senderEntity);
}
break;
case "attackProbability":
try
{
editingInfo.entityInfo.attackProbability = Integer.parseInt(args[2]);
if(editingInfo.entityInfo.attackProbability < 0)
{
editingInfo.entityInfo.attackProbability = 0;
}
else if(editingInfo.entityInfo.attackProbability > 100)
{
editingInfo.entityInfo.attackProbability = 100;
}
TurnBasedMinecraftMod.NWINSTANCE.sendTo(new PacketEditingMessage(PacketEditingMessage.Type.PICK_EDIT, editingInfo.entityInfo), (EntityPlayerMP)senderEntity);
}
catch (NumberFormatException e)
{
TurnBasedMinecraftMod.NWINSTANCE.sendTo(new PacketGeneralMessage("Invalid argument for \"/tbm-edit edit attackProbability <percentage-integer>\""), (EntityPlayerMP)senderEntity);
}
break;
case "attackVariance":
try
{
editingInfo.entityInfo.attackVariance = Integer.parseInt(args[2]);
if(editingInfo.entityInfo.attackVariance < 0)
{
editingInfo.entityInfo.attackVariance = 0;
}
TurnBasedMinecraftMod.NWINSTANCE.sendTo(new PacketEditingMessage(PacketEditingMessage.Type.PICK_EDIT, editingInfo.entityInfo), (EntityPlayerMP)senderEntity);
}
catch (NumberFormatException e)
{
TurnBasedMinecraftMod.NWINSTANCE.sendTo(new PacketGeneralMessage("Invalid argument for \"/tbm-edit edit attackVariance <integer>\""), (EntityPlayerMP)senderEntity);
}
break;
case "attackEffect":
editingInfo.entityInfo.attackEffect = EntityInfo.Effect.fromString(args[2]);
TurnBasedMinecraftMod.NWINSTANCE.sendTo(new PacketEditingMessage(PacketEditingMessage.Type.PICK_EDIT, editingInfo.entityInfo), (EntityPlayerMP)senderEntity);
break;
case "attackEffectProbability":
try
{
editingInfo.entityInfo.attackEffectProbability = Integer.parseInt(args[2]);
if(editingInfo.entityInfo.attackEffectProbability < 0)
{
editingInfo.entityInfo.attackEffectProbability = 0;
}
else if(editingInfo.entityInfo.attackEffectProbability > 100)
{
editingInfo.entityInfo.attackEffectProbability = 100;
}
TurnBasedMinecraftMod.NWINSTANCE.sendTo(new PacketEditingMessage(PacketEditingMessage.Type.PICK_EDIT, editingInfo.entityInfo), (EntityPlayerMP)senderEntity);
}
catch (NumberFormatException e)
{
TurnBasedMinecraftMod.NWINSTANCE.sendTo(new PacketGeneralMessage("Invalid argument for \"/tbm-edit edit attackEffectProbability <percentage-integer>\""), (EntityPlayerMP)senderEntity);
}
break;
case "defenseDamage":
try
{
editingInfo.entityInfo.defenseDamage = Integer.parseInt(args[2]);
if(editingInfo.entityInfo.defenseDamage < 0)
{
editingInfo.entityInfo.defenseDamage = 0;
}
TurnBasedMinecraftMod.NWINSTANCE.sendTo(new PacketEditingMessage(PacketEditingMessage.Type.PICK_EDIT, editingInfo.entityInfo), (EntityPlayerMP)senderEntity);
}
catch (NumberFormatException e)
{
TurnBasedMinecraftMod.NWINSTANCE.sendTo(new PacketGeneralMessage("Invalid argument for \"/tbm-edit edit defenseDamage <integer>\""), (EntityPlayerMP)senderEntity);
}
break;
case "defenseDamageProbability":
try
{
editingInfo.entityInfo.defenseDamageProbability = Integer.parseInt(args[2]);
if(editingInfo.entityInfo.defenseDamageProbability < 0)
{
editingInfo.entityInfo.defenseDamageProbability = 0;
}
else if(editingInfo.entityInfo.defenseDamageProbability > 100)
{
editingInfo.entityInfo.defenseDamageProbability = 100;
}
TurnBasedMinecraftMod.NWINSTANCE.sendTo(new PacketEditingMessage(PacketEditingMessage.Type.PICK_EDIT, editingInfo.entityInfo), (EntityPlayerMP)senderEntity);
}
catch (NumberFormatException e)
{
TurnBasedMinecraftMod.NWINSTANCE.sendTo(new PacketGeneralMessage("Invalid argument for \"/tbm-edit edit defenseDamageProbability <percentage-integer>\""), (EntityPlayerMP)senderEntity);
}
break;
case "evasion":
try
{
editingInfo.entityInfo.evasion = Integer.parseInt(args[2]);
if(editingInfo.entityInfo.evasion < 0)
{
editingInfo.entityInfo.evasion = 0;
}
else if(editingInfo.entityInfo.evasion > 100)
{
editingInfo.entityInfo.evasion = 100;
}
TurnBasedMinecraftMod.NWINSTANCE.sendTo(new PacketEditingMessage(PacketEditingMessage.Type.PICK_EDIT, editingInfo.entityInfo), (EntityPlayerMP)senderEntity);
}
catch (NumberFormatException e)
{
TurnBasedMinecraftMod.NWINSTANCE.sendTo(new PacketGeneralMessage("Invalid argument for \"/tbm-edit edit evasion <percentage-integer>\""), (EntityPlayerMP)senderEntity);
}
break;
case "speed":
try
{
editingInfo.entityInfo.speed = Integer.parseInt(args[2]);
if(editingInfo.entityInfo.speed < 0)
{
editingInfo.entityInfo.speed = 0;
}
TurnBasedMinecraftMod.NWINSTANCE.sendTo(new PacketEditingMessage(PacketEditingMessage.Type.PICK_EDIT, editingInfo.entityInfo), (EntityPlayerMP)senderEntity);
}
catch (NumberFormatException e)
{
TurnBasedMinecraftMod.NWINSTANCE.sendTo(new PacketGeneralMessage("Invalid argument for \"/tbm-edit edit speed <integer>\""), (EntityPlayerMP)senderEntity);
}
break;
case "category":
editingInfo.entityInfo.category = args[2];
TurnBasedMinecraftMod.NWINSTANCE.sendTo(new PacketEditingMessage(PacketEditingMessage.Type.PICK_EDIT, editingInfo.entityInfo), (EntityPlayerMP)senderEntity);
break;
case "decisionAttack":
try
{
editingInfo.entityInfo.decisionAttack = Integer.parseInt(args[2]);
if(editingInfo.entityInfo.decisionAttack < 0)
{
editingInfo.entityInfo.decisionAttack = 0;
}
else if(editingInfo.entityInfo.decisionAttack > 100)
{
editingInfo.entityInfo.decisionAttack = 100;
}
TurnBasedMinecraftMod.NWINSTANCE.sendTo(new PacketEditingMessage(PacketEditingMessage.Type.PICK_EDIT, editingInfo.entityInfo), (EntityPlayerMP)senderEntity);
}
catch (NumberFormatException e)
{
TurnBasedMinecraftMod.NWINSTANCE.sendTo(new PacketGeneralMessage("Invalid argument for \"/tbm-edit edit decisionAttack <percentage-integer>\""), (EntityPlayerMP)senderEntity);
}
break;
case "decisionDefend":
try
{
editingInfo.entityInfo.decisionDefend = Integer.parseInt(args[2]);
if(editingInfo.entityInfo.decisionDefend < 0)
{
editingInfo.entityInfo.decisionDefend = 0;
}
else if(editingInfo.entityInfo.decisionDefend > 100)
{
editingInfo.entityInfo.decisionDefend = 100;
}
TurnBasedMinecraftMod.NWINSTANCE.sendTo(new PacketEditingMessage(PacketEditingMessage.Type.PICK_EDIT, editingInfo.entityInfo), (EntityPlayerMP)senderEntity);
}
catch (NumberFormatException e)
{
TurnBasedMinecraftMod.NWINSTANCE.sendTo(new PacketGeneralMessage("Invalid argument for \"/tbm-edit edit decisionDefend <percentage-integer>\""), (EntityPlayerMP)senderEntity);
}
break;
case "decisionFlee":
try
{
editingInfo.entityInfo.decisionFlee = Integer.parseInt(args[2]);
if(editingInfo.entityInfo.decisionFlee < 0)
{
editingInfo.entityInfo.decisionFlee = 0;
}
else if(editingInfo.entityInfo.decisionFlee > 100)
{
editingInfo.entityInfo.decisionFlee = 100;
}
TurnBasedMinecraftMod.NWINSTANCE.sendTo(new PacketEditingMessage(PacketEditingMessage.Type.PICK_EDIT, editingInfo.entityInfo), (EntityPlayerMP)senderEntity);
}
catch (NumberFormatException e)
{
TurnBasedMinecraftMod.NWINSTANCE.sendTo(new PacketGeneralMessage("Invalid argument for \"/tbm-edit edit decisionFlee <percentage-integer>\""), (EntityPlayerMP)senderEntity);
}
break;
default:
TurnBasedMinecraftMod.NWINSTANCE.sendTo(new PacketGeneralMessage("Invalid second argument for \"/tbm-edit edit <arg> <arg>\""), (EntityPlayerMP)senderEntity);
break;
}
}
else
{
TurnBasedMinecraftMod.NWINSTANCE.sendTo(new PacketGeneralMessage("Invalid arguments for \"/tbm-edit <arg> <arg> <arg>\"."), (EntityPlayerMP)senderEntity);
}
}
else if(editingInfo != null)
{
TurnBasedMinecraftMod.NWINSTANCE.sendTo(new PacketEditingMessage(PacketEditingMessage.Type.ATTACK_ENTITY), (EntityPlayerMP)senderEntity);
}
else
{
TurnBasedMinecraftMod.NWINSTANCE.sendTo(new PacketGeneralMessage("Cannot edit entity without starting editing process (use \"/tbm-edit\")."), (EntityPlayerMP)senderEntity);
}
}
else
{
TurnBasedMinecraftMod.NWINSTANCE.sendTo(new PacketGeneralMessage("Invalid arguments for \"/tbm-edit\"."), (EntityPlayerMP)senderEntity);
}
}
}

View file

@ -1,8 +1,9 @@
package com.seodisparate.TurnBasedMinecraft.common; package com.seodisparate.TurnBasedMinecraft.common;
import java.util.HashSet; import java.util.*;
import java.util.Set;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.util.text.ITextComponent;
import org.apache.logging.log4j.Logger; import org.apache.logging.log4j.Logger;
import net.minecraft.entity.Entity; import net.minecraft.entity.Entity;
@ -16,10 +17,12 @@ public class CommonProxy
private int attackingDamage = 0; private int attackingDamage = 0;
private Config config = null; private Config config = null;
private Logger logger = null; private Logger logger = null;
private Map<Integer, EditingInfo> editingPlayers;
public final void initialize() public final void initialize()
{ {
attackerViaBow = new HashSet<AttackerViaBow>(); attackerViaBow = new HashSet<AttackerViaBow>();
editingPlayers = new Hashtable<Integer, EditingInfo>();
initializeClient(); initializeClient();
} }
@ -85,6 +88,8 @@ public class CommonProxy
public void displayString(String message) {} public void displayString(String message) {}
public void displayTextComponent(ITextComponent textComponent) {}
public Entity getEntityByID(int id) public Entity getEntityByID(int id)
{ {
return FMLCommonHandler.instance().getMinecraftServerInstance().getEntityWorld().getEntityByID(id); return FMLCommonHandler.instance().getMinecraftServerInstance().getEntityWorld().getEntityByID(id);
@ -141,4 +146,19 @@ public class CommonProxy
{ {
return config; return config;
} }
protected final EditingInfo getEditingInfo(int id)
{
return editingPlayers.get(id);
}
protected final EditingInfo setEditingPlayer(EntityPlayer player)
{
return editingPlayers.put(player.getEntityId(), new EditingInfo(player));
}
protected final EditingInfo removeEditingInfo(int id)
{
return editingPlayers.remove(id);
}
} }

View file

@ -0,0 +1,24 @@
package com.seodisparate.TurnBasedMinecraft.common;
import net.minecraft.entity.player.EntityPlayer;
public class EditingInfo
{
public EntityPlayer editor;
public EntityInfo entityInfo;
public boolean isPendingEntitySelection;
public EditingInfo()
{
editor = null;
entityInfo = null;
isPendingEntitySelection = true;
}
public EditingInfo(EntityPlayer player)
{
editor = player;
entityInfo = null;
isPendingEntitySelection = true;
}
}

View file

@ -1,13 +1,8 @@
package com.seodisparate.TurnBasedMinecraft.common; package com.seodisparate.TurnBasedMinecraft.common;
import com.seodisparate.TurnBasedMinecraft.common.networking.*;
import org.apache.logging.log4j.Logger; import org.apache.logging.log4j.Logger;
import com.seodisparate.TurnBasedMinecraft.common.networking.PacketBattleDecision;
import com.seodisparate.TurnBasedMinecraft.common.networking.PacketBattleInfo;
import com.seodisparate.TurnBasedMinecraft.common.networking.PacketBattleMessage;
import com.seodisparate.TurnBasedMinecraft.common.networking.PacketBattleRequestInfo;
import com.seodisparate.TurnBasedMinecraft.common.networking.PacketGeneralMessage;
import net.minecraftforge.common.MinecraftForge; import net.minecraftforge.common.MinecraftForge;
import net.minecraftforge.fml.common.Mod; import net.minecraftforge.fml.common.Mod;
import net.minecraftforge.fml.common.Mod.EventHandler; import net.minecraftforge.fml.common.Mod.EventHandler;
@ -80,6 +75,12 @@ public class TurnBasedMinecraftMod
PacketGeneralMessage.class, PacketGeneralMessage.class,
packetHandlerID++, packetHandlerID++,
Side.CLIENT); Side.CLIENT);
NWINSTANCE.registerMessage(
PacketEditingMessage.HandlerEditingMessage.class,
PacketEditingMessage.class,
packetHandlerID++,
Side.CLIENT
);
// register event handler(s) // register event handler(s)
MinecraftForge.EVENT_BUS.register(new AttackEventHandler()); MinecraftForge.EVENT_BUS.register(new AttackEventHandler());
@ -109,6 +110,7 @@ public class TurnBasedMinecraftMod
event.registerServerCommand(new CommandTBMSet(proxy.getConfig())); event.registerServerCommand(new CommandTBMSet(proxy.getConfig()));
event.registerServerCommand(new CommandTBMDisableAll(proxy.getConfig())); event.registerServerCommand(new CommandTBMDisableAll(proxy.getConfig()));
event.registerServerCommand(new CommandTBMEnableAll(proxy.getConfig())); event.registerServerCommand(new CommandTBMEnableAll(proxy.getConfig()));
event.registerServerCommand(new CommandTBMEdit(proxy.getConfig()));
} }
@EventHandler @EventHandler

View file

@ -41,7 +41,7 @@ public class PacketBattleMessage implements IMessage
private int value; private int value;
private static Map<Integer, MessageType> map = new HashMap<Integer, MessageType>(); private static Map<Integer, MessageType> map = new HashMap<Integer, MessageType>();
private MessageType(int value) MessageType(int value)
{ {
this.value = value; this.value = value;
} }
@ -75,7 +75,7 @@ public class PacketBattleMessage implements IMessage
private int value; private int value;
private static Map<Integer, UsedItemAction> map = new HashMap<Integer, UsedItemAction>(); private static Map<Integer, UsedItemAction> map = new HashMap<Integer, UsedItemAction>();
private UsedItemAction(int value) UsedItemAction(int value)
{ {
this.value = value; this.value = value;
} }

View file

@ -41,8 +41,7 @@ public class PacketBattleRequestInfo implements IMessage
{ {
return null; return null;
} }
PacketBattleInfo battleInfo = new PacketBattleInfo(b.getSideAIDs(), b.getSideBIDs(), b.getTimerSeconds()); return new PacketBattleInfo(b.getSideAIDs(), b.getSideBIDs(), b.getTimerSeconds());
return battleInfo;
} }
} }
} }

View file

@ -0,0 +1,721 @@
package com.seodisparate.TurnBasedMinecraft.common.networking;
import com.seodisparate.TurnBasedMinecraft.common.EntityInfo;
import com.seodisparate.TurnBasedMinecraft.common.TurnBasedMinecraftMod;
import io.netty.buffer.ByteBuf;
import net.minecraft.util.text.ITextComponent;
import net.minecraft.util.text.TextComponentString;
import net.minecraft.util.text.TextFormatting;
import net.minecraft.util.text.event.ClickEvent;
import net.minecraft.util.text.event.HoverEvent;
import net.minecraftforge.fml.common.network.ByteBufUtils;
import net.minecraftforge.fml.common.network.simpleimpl.IMessage;
import net.minecraftforge.fml.common.network.simpleimpl.IMessageHandler;
import net.minecraftforge.fml.common.network.simpleimpl.MessageContext;
import java.util.HashMap;
import java.util.Map;
public class PacketEditingMessage implements IMessage
{
public enum Type
{
ATTACK_ENTITY(0),
PICK_EDIT(1),
EDIT_IGNORE_BATTLE(2),
EDIT_ATTACK_POWER(3),
EDIT_ATTACK_PROBABILITY(4),
EDIT_ATTACK_VARIANCE(5),
EDIT_ATTACK_EFFECT(6),
EDIT_ATTACK_EFFECT_PROBABILITY(7),
EDIT_DEFENSE_DAMAGE(8),
EDIT_DEFENSE_DAMAGE_PROBABILITY(9),
EDIT_EVASION(10),
EDIT_SPEED(11),
EDIT_CATEGORY(12),
EDIT_DECISION_ATTACK(13),
EDIT_DECISION_DEFEND(14),
EDIT_DECISION_FLEE(15);
Type(int value)
{
this.value = value;
}
private static Map<Integer, Type> map;
private int value;
static
{
map = new HashMap<Integer, Type>();
for(Type t : values())
{
map.put(t.value, t);
}
}
public int getValue()
{
return value;
}
public static Type valueOf(int value)
{
return map.get(value);
}
}
Type type = Type.ATTACK_ENTITY;
EntityInfo entityInfo = new EntityInfo();
public PacketEditingMessage() {}
public PacketEditingMessage(Type type)
{
this.type = type;
}
public PacketEditingMessage(Type type, EntityInfo entityInfo)
{
this.type = type;
this.entityInfo = entityInfo;
}
@Override
public void fromBytes(ByteBuf buf)
{
type = Type.valueOf(buf.readInt());
try
{
entityInfo.classType = getClass().getClassLoader().loadClass(ByteBufUtils.readUTF8String(buf));
}
catch (ClassNotFoundException e) { /* ignored */ }
entityInfo.ignoreBattle = buf.readBoolean();
entityInfo.attackPower = buf.readInt();
entityInfo.attackProbability = buf.readInt();
entityInfo.attackVariance = buf.readInt();
entityInfo.attackEffect = EntityInfo.Effect.fromString(ByteBufUtils.readUTF8String(buf));
entityInfo.attackEffectProbability = buf.readInt();
entityInfo.defenseDamage = buf.readInt();
entityInfo.defenseDamageProbability = buf.readInt();
entityInfo.evasion = buf.readInt();
entityInfo.speed = buf.readInt();
entityInfo.category = ByteBufUtils.readUTF8String(buf);
entityInfo.decisionAttack = buf.readInt();
entityInfo.decisionDefend = buf.readInt();
entityInfo.decisionFlee = buf.readInt();
}
@Override
public void toBytes(ByteBuf buf)
{
buf.writeInt(type.getValue());
if(entityInfo.classType != null)
{
ByteBufUtils.writeUTF8String(buf, entityInfo.classType.getName());
}
else
{
ByteBufUtils.writeUTF8String(buf, "unknown");
}
buf.writeBoolean(entityInfo.ignoreBattle);
buf.writeInt(entityInfo.attackPower);
buf.writeInt(entityInfo.attackProbability);
buf.writeInt(entityInfo.attackVariance);
ByteBufUtils.writeUTF8String(buf, entityInfo.attackEffect.toString());
buf.writeInt(entityInfo.attackEffectProbability);
buf.writeInt(entityInfo.defenseDamage);
buf.writeInt(entityInfo.defenseDamageProbability);
buf.writeInt(entityInfo.evasion);
buf.writeInt(entityInfo.speed);
ByteBufUtils.writeUTF8String(buf, entityInfo.category);
buf.writeInt(entityInfo.decisionAttack);
buf.writeInt(entityInfo.decisionDefend);
buf.writeInt(entityInfo.decisionFlee);
}
public static class HandlerEditingMessage implements IMessageHandler<PacketEditingMessage, IMessage>
{
@Override
public IMessage onMessage(PacketEditingMessage message, MessageContext ctx)
{
switch(message.type)
{
case ATTACK_ENTITY:
{
ITextComponent prefix = new TextComponentString("TBM: ");
prefix.getStyle().setColor(TextFormatting.GREEN).setBold(true);
ITextComponent text = new TextComponentString("Attack the entity you want to edit for TurnBasedMinecraftMod. ");
text.getStyle().setColor(TextFormatting.WHITE).setBold(false);
ITextComponent cancel = new TextComponentString("Cancel");
cancel.getStyle().setColor(TextFormatting.RED).setClickEvent(new ClickEvent(ClickEvent.Action.RUN_COMMAND, "/tbm-edit cancel"));
text.appendSibling(cancel);
prefix.appendSibling(text);
TurnBasedMinecraftMod.proxy.displayTextComponent(prefix);
break;
}
case PICK_EDIT:
{
ITextComponent prefix = new TextComponentString("TBM: ");
prefix.getStyle().setColor(TextFormatting.GREEN).setBold(true);
ITextComponent text = new TextComponentString("Edit what value? ");
text.getStyle().setColor(TextFormatting.WHITE).setBold(false);
ITextComponent option = new TextComponentString("IgB");
option.getStyle().setColor(TextFormatting.YELLOW).setClickEvent(new ClickEvent(ClickEvent.Action.RUN_COMMAND, "/tbm-edit edit ignoreBattle"))
.setHoverEvent(new HoverEvent(HoverEvent.Action.SHOW_TEXT, new TextComponentString("IgnoreBattle")));
ITextComponent value = new TextComponentString("(" + message.entityInfo.ignoreBattle + ") ");
value.getStyle().setColor(TextFormatting.WHITE);
option.appendSibling(value);
text.appendSibling(option);
option = new TextComponentString("AP");
option.getStyle().setColor(TextFormatting.YELLOW).setClickEvent(new ClickEvent(ClickEvent.Action.RUN_COMMAND, "/tbm-edit edit attackPower"))
.setHoverEvent(new HoverEvent(HoverEvent.Action.SHOW_TEXT, new TextComponentString("AttackPower")));
value = new TextComponentString("(" + message.entityInfo.attackPower + ") ");
value.getStyle().setColor(TextFormatting.WHITE);
option.appendSibling(value);
text.appendSibling(option);
option = new TextComponentString("APr");
option.getStyle().setColor(TextFormatting.YELLOW).setClickEvent(new ClickEvent(ClickEvent.Action.RUN_COMMAND, "/tbm-edit edit attackProbability"))
.setHoverEvent(new HoverEvent(HoverEvent.Action.SHOW_TEXT, new TextComponentString("AttackProbability")));
value = new TextComponentString("(" + message.entityInfo.attackProbability + "%) ");
value.getStyle().setColor(TextFormatting.WHITE);
option.appendSibling(value);
text.appendSibling(option);
option = new TextComponentString("AV");
option.getStyle().setColor(TextFormatting.YELLOW).setClickEvent(new ClickEvent(ClickEvent.Action.RUN_COMMAND, "/tbm-edit edit attackVariance"))
.setHoverEvent(new HoverEvent(HoverEvent.Action.SHOW_TEXT, new TextComponentString("AttackVariance")));
value = new TextComponentString("(" + message.entityInfo.attackVariance + ") ");
value.getStyle().setColor(TextFormatting.WHITE);
option.appendSibling(value);
text.appendSibling(option);
option = new TextComponentString("AE");
option.getStyle().setColor(TextFormatting.YELLOW).setClickEvent(new ClickEvent(ClickEvent.Action.RUN_COMMAND, "/tbm-edit edit attackEffect"))
.setHoverEvent(new HoverEvent(HoverEvent.Action.SHOW_TEXT, new TextComponentString("AttackEffect")));
value = new TextComponentString("(" + message.entityInfo.attackEffect.toString() + ") ");
value.getStyle().setColor(TextFormatting.WHITE);
option.appendSibling(value);
text.appendSibling(option);
option = new TextComponentString("AEPr");
option.getStyle().setColor(TextFormatting.YELLOW).setClickEvent(new ClickEvent(ClickEvent.Action.RUN_COMMAND, "/tbm-edit edit attackEffectProbability"))
.setHoverEvent(new HoverEvent(HoverEvent.Action.SHOW_TEXT, new TextComponentString("AttackEffectProbability")));
value = new TextComponentString("(" + message.entityInfo.attackEffectProbability + "%) ");
value.getStyle().setColor(TextFormatting.WHITE);
option.appendSibling(value);
text.appendSibling(option);
option = new TextComponentString("DD");
option.getStyle().setColor(TextFormatting.YELLOW).setClickEvent(new ClickEvent(ClickEvent.Action.RUN_COMMAND, "/tbm-edit edit defenseDamage"))
.setHoverEvent(new HoverEvent(HoverEvent.Action.SHOW_TEXT, new TextComponentString("DefenseDamage")));
value = new TextComponentString("(" + message.entityInfo.defenseDamage + ") ");
value.getStyle().setColor(TextFormatting.WHITE);
option.appendSibling(value);
text.appendSibling(option);
option = new TextComponentString("DDPr");
option.getStyle().setColor(TextFormatting.YELLOW).setClickEvent(new ClickEvent(ClickEvent.Action.RUN_COMMAND, "/tbm-edit edit defenseDamageProbability"))
.setHoverEvent(new HoverEvent(HoverEvent.Action.SHOW_TEXT, new TextComponentString("DefenseDamageProbability")));
value = new TextComponentString("(" + message.entityInfo.defenseDamageProbability + "%) ");
value.getStyle().setColor(TextFormatting.WHITE);
option.appendSibling(value);
text.appendSibling(option);
option = new TextComponentString("E");
option.getStyle().setColor(TextFormatting.YELLOW).setClickEvent(new ClickEvent(ClickEvent.Action.RUN_COMMAND, "/tbm-edit edit evasion"))
.setHoverEvent(new HoverEvent(HoverEvent.Action.SHOW_TEXT, new TextComponentString("Evasion")));
value = new TextComponentString("(" + message.entityInfo.evasion + ") ");
value.getStyle().setColor(TextFormatting.WHITE);
option.appendSibling(value);
text.appendSibling(option);
option = new TextComponentString("S");
option.getStyle().setColor(TextFormatting.YELLOW).setClickEvent(new ClickEvent(ClickEvent.Action.RUN_COMMAND, "/tbm-edit edit speed"))
.setHoverEvent(new HoverEvent(HoverEvent.Action.SHOW_TEXT, new TextComponentString("Speed")));
value = new TextComponentString("(" + message.entityInfo.speed + ") ");
value.getStyle().setColor(TextFormatting.WHITE);
option.appendSibling(value);
text.appendSibling(option);
option = new TextComponentString("C");
option.getStyle().setColor(TextFormatting.YELLOW).setClickEvent(new ClickEvent(ClickEvent.Action.RUN_COMMAND, "/tbm-edit edit category"))
.setHoverEvent(new HoverEvent(HoverEvent.Action.SHOW_TEXT, new TextComponentString("Category")));
value = new TextComponentString("(" + message.entityInfo.category + ") ");
value.getStyle().setColor(TextFormatting.WHITE);
option.appendSibling(value);
text.appendSibling(option);
option = new TextComponentString("DecA");
option.getStyle().setColor(TextFormatting.YELLOW).setClickEvent(new ClickEvent(ClickEvent.Action.RUN_COMMAND, "/tbm-edit edit decisionAttack"))
.setHoverEvent(new HoverEvent(HoverEvent.Action.SHOW_TEXT, new TextComponentString("DecisionAttack")));
value = new TextComponentString("(" + message.entityInfo.decisionAttack + "%) ");
value.getStyle().setColor(TextFormatting.WHITE);
option.appendSibling(value);
text.appendSibling(option);
option = new TextComponentString("DecD");
option.getStyle().setColor(TextFormatting.YELLOW).setClickEvent(new ClickEvent(ClickEvent.Action.RUN_COMMAND, "/tbm-edit edit decisionDefend"))
.setHoverEvent(new HoverEvent(HoverEvent.Action.SHOW_TEXT, new TextComponentString("DecisionDefend")));
value = new TextComponentString("(" + message.entityInfo.decisionDefend + "%) ");
value.getStyle().setColor(TextFormatting.WHITE);
option.appendSibling(value);
text.appendSibling(option);
option = new TextComponentString("DecF");
option.getStyle().setColor(TextFormatting.YELLOW).setClickEvent(new ClickEvent(ClickEvent.Action.RUN_COMMAND, "/tbm-edit edit decisionFlee"))
.setHoverEvent(new HoverEvent(HoverEvent.Action.SHOW_TEXT, new TextComponentString("DecisionFlee")));
value = new TextComponentString("(" + message.entityInfo.decisionFlee + "%) ");
value.getStyle().setColor(TextFormatting.WHITE);
option.appendSibling(value);
text.appendSibling(option);
option = new TextComponentString("Finished Editing");
option.getStyle().setColor(TextFormatting.GREEN).setClickEvent(new ClickEvent(ClickEvent.Action.RUN_COMMAND, "/tbm-edit finish"));
text.appendSibling(option).appendText(" ");
option = new TextComponentString("Cancel");
option.getStyle().setColor(TextFormatting.RED).setClickEvent(new ClickEvent(ClickEvent.Action.RUN_COMMAND, "/tbm-edit cancel"));
text.appendSibling(option);
prefix.appendSibling(text);
TurnBasedMinecraftMod.proxy.displayTextComponent(prefix);
break;
}
case EDIT_IGNORE_BATTLE:
{
ITextComponent prefix = new TextComponentString("TBM: ");
prefix.getStyle().setColor(TextFormatting.GREEN).setBold(true);
ITextComponent text = new TextComponentString("ignoreBattle: ");
text.getStyle().setColor(TextFormatting.WHITE).setBold(false);
ITextComponent option = new TextComponentString("true");
option.getStyle().setColor(TextFormatting.GREEN).setClickEvent(new ClickEvent(ClickEvent.Action.RUN_COMMAND, "/tbm-edit edit ignoreBattle true"));
text.appendSibling(option);
text.appendText(" ");
option = new TextComponentString("false");
option.getStyle().setColor(TextFormatting.RED).setClickEvent(new ClickEvent(ClickEvent.Action.RUN_COMMAND, "/tbm-edit edit ignoreBattle false"));
text.appendSibling(option);
prefix.appendSibling(text);
TurnBasedMinecraftMod.proxy.displayTextComponent(prefix);
break;
}
case EDIT_ATTACK_POWER:
{
ITextComponent prefix = new TextComponentString("TBM: ");
prefix.getStyle().setColor(TextFormatting.GREEN).setBold(true);
ITextComponent text = new TextComponentString("attackPower: ");
text.getStyle().setColor(TextFormatting.WHITE).setBold(false);
for(int i = 0; i <= 15; ++i)
{
ITextComponent option = new TextComponentString(Integer.toString(i));
option.getStyle().setColor(TextFormatting.YELLOW).setClickEvent(new ClickEvent(ClickEvent.Action.RUN_COMMAND, "/tbm-edit edit attackPower " + Integer.toString(i)));
text.appendSibling(option);
if(i < 15)
{
text.appendText(", ");
}
}
text.appendText(" (or use command \"/tbm-edit edit attackPower <integer>\")");
prefix.appendSibling(text);
TurnBasedMinecraftMod.proxy.displayTextComponent(prefix);
break;
}
case EDIT_ATTACK_PROBABILITY:
{
ITextComponent prefix = new TextComponentString("TBM: ");
prefix.getStyle().setColor(TextFormatting.GREEN).setBold(true);
ITextComponent text = new TextComponentString("attackProbability: ");
text.getStyle().setColor(TextFormatting.WHITE).setBold(false);
for(int i = 10; i <= 100; i += 10)
{
ITextComponent option = new TextComponentString(Integer.toString(i) + "%");
option.getStyle().setColor(TextFormatting.YELLOW).setClickEvent(new ClickEvent(ClickEvent.Action.RUN_COMMAND, "/tbm-edit edit attackProbability " + Integer.toString(i)));
text.appendSibling(option);
if(i < 100)
{
text.appendText(", ");
}
}
text.appendText(" (or use command \"/tbm-edit edit attackProbability <percentage-integer>\")");
prefix.appendSibling(text);
TurnBasedMinecraftMod.proxy.displayTextComponent(prefix);
break;
}
case EDIT_ATTACK_VARIANCE:
{
ITextComponent prefix = new TextComponentString("TBM: ");
prefix.getStyle().setColor(TextFormatting.GREEN).setBold(true);
ITextComponent text = new TextComponentString("attackVariance: ");
text.getStyle().setColor(TextFormatting.WHITE).setBold(false);
for(int i = 0; i <= 10; ++i)
{
ITextComponent option = new TextComponentString(Integer.toString(i));
option.getStyle().setColor(TextFormatting.YELLOW).setClickEvent(new ClickEvent(ClickEvent.Action.RUN_COMMAND, "/tbm-edit edit attackVariance " + Integer.toString(i)));
text.appendSibling(option);
if(i < 10)
{
text.appendText(", ");
}
}
text.appendText(" (or use command \"/tbm-edit edit attackVariance <integer>\")");
prefix.appendSibling(text);
TurnBasedMinecraftMod.proxy.displayTextComponent(prefix);
break;
}
case EDIT_ATTACK_EFFECT:
{
ITextComponent prefix = new TextComponentString("TBM: ");
prefix.getStyle().setColor(TextFormatting.GREEN).setBold(true);
ITextComponent text = new TextComponentString("attackEffect: ");
text.getStyle().setColor(TextFormatting.WHITE).setBold(false);
for(EntityInfo.Effect e : EntityInfo.Effect.values())
{
ITextComponent option = new TextComponentString(e.toString());
option.getStyle().setColor(TextFormatting.YELLOW).setClickEvent(new ClickEvent(ClickEvent.Action.RUN_COMMAND, "/tbm-edit edit attackEffect " + e.toString()));
text.appendSibling(option);
if(e != EntityInfo.Effect.UNKNOWN)
{
// TODO find a better way to handle printing comma for items before last
text.appendText(", ");
}
}
prefix.appendSibling(text);
TurnBasedMinecraftMod.proxy.displayTextComponent(prefix);
break;
}
case EDIT_ATTACK_EFFECT_PROBABILITY:
{
ITextComponent prefix = new TextComponentString("TBM: ");
prefix.getStyle().setColor(TextFormatting.GREEN).setBold(true);
ITextComponent text = new TextComponentString("attackEffectProbability: ");
text.getStyle().setColor(TextFormatting.WHITE).setBold(false);
for(int i = 0; i <= 100; i += 10)
{
ITextComponent option = new TextComponentString(Integer.toString(i) + "%");
option.getStyle().setColor(TextFormatting.YELLOW).setClickEvent(new ClickEvent(ClickEvent.Action.RUN_COMMAND, "/tbm-edit edit attackEffectProbability " + Integer.toString(i)));
text.appendSibling(option);
if(i < 100)
{
text.appendText(", ");
}
}
text.appendText(" (or use command \"/tbm-edit edit attackEffectProbability <percentage-integer>\")");
prefix.appendSibling(text);
TurnBasedMinecraftMod.proxy.displayTextComponent(prefix);
break;
}
case EDIT_DEFENSE_DAMAGE:
{
ITextComponent prefix = new TextComponentString("TBM: ");
prefix.getStyle().setColor(TextFormatting.GREEN).setBold(true);
ITextComponent text = new TextComponentString("defenseDamage: ");
text.getStyle().setColor(TextFormatting.WHITE).setBold(false);
for(int i = 0; i <= 15; ++i)
{
ITextComponent option = new TextComponentString(Integer.toString(i));
option.getStyle().setColor(TextFormatting.YELLOW).setClickEvent(new ClickEvent(ClickEvent.Action.RUN_COMMAND, "/tbm-edit edit defenseDamage " + Integer.toString(i)));
text.appendSibling(option);
if(i < 15)
{
text.appendText(", ");
}
}
text.appendText(" (or use command \"/tbm-edit edit defenseDamage <integer>\")");
prefix.appendSibling(text);
TurnBasedMinecraftMod.proxy.displayTextComponent(prefix);
break;
}
case EDIT_DEFENSE_DAMAGE_PROBABILITY:
{
ITextComponent prefix = new TextComponentString("TBM: ");
prefix.getStyle().setColor(TextFormatting.GREEN).setBold(true);
ITextComponent text = new TextComponentString("defenseDamageProbability: ");
text.getStyle().setColor(TextFormatting.WHITE).setBold(false);
for(int i = 0; i <= 100; i += 10)
{
ITextComponent option = new TextComponentString(Integer.toString(i) + "%");
option.getStyle().setColor(TextFormatting.YELLOW).setClickEvent(new ClickEvent(ClickEvent.Action.RUN_COMMAND, "/tbm-edit edit defenseDamageProbability " + Integer.toString(i)));
text.appendSibling(option);
if(i < 100)
{
text.appendText(", ");
}
}
text.appendText(" (or use command \"/tbm-edit edit defenseDamageProbability <percentage-integer>\")");
prefix.appendSibling(text);
TurnBasedMinecraftMod.proxy.displayTextComponent(prefix);
break;
}
case EDIT_EVASION:
{
ITextComponent prefix = new TextComponentString("TBM: ");
prefix.getStyle().setColor(TextFormatting.GREEN).setBold(true);
ITextComponent text = new TextComponentString("evasion: ");
text.getStyle().setColor(TextFormatting.WHITE).setBold(false);
for(int i = 0; i <= 100; i += 10)
{
ITextComponent option = new TextComponentString(Integer.toString(i) + "%");
option.getStyle().setColor(TextFormatting.YELLOW).setClickEvent(new ClickEvent(ClickEvent.Action.RUN_COMMAND, "/tbm-edit edit evasion " + Integer.toString(i)));
text.appendSibling(option);
if(i < 100)
{
text.appendText(", ");
}
}
text.appendText(" (or use command \"/tbm-edit edit evasion <percentage-integer>\")");
prefix.appendSibling(text);
TurnBasedMinecraftMod.proxy.displayTextComponent(prefix);
break;
}
case EDIT_SPEED:
{
ITextComponent prefix = new TextComponentString("TBM: ");
prefix.getStyle().setColor(TextFormatting.GREEN).setBold(true);
ITextComponent text = new TextComponentString("speed: ");
text.getStyle().setColor(TextFormatting.WHITE).setBold(false);
for(int i = 0; i <= 100; i += 10)
{
ITextComponent option = new TextComponentString(Integer.toString(i));
option.getStyle().setColor(TextFormatting.YELLOW).setClickEvent(new ClickEvent(ClickEvent.Action.RUN_COMMAND, "/tbm-edit edit speed " + Integer.toString(i)));
text.appendSibling(option);
if(i < 100)
{
text.appendText(", ");
}
}
text.appendText(" (or use command \"/tbm-edit edit speed <integer>\")");
prefix.appendSibling(text);
TurnBasedMinecraftMod.proxy.displayTextComponent(prefix);
break;
}
case EDIT_CATEGORY:
{
ITextComponent prefix = new TextComponentString("TBM: ");
prefix.getStyle().setColor(TextFormatting.GREEN).setBold(true);
ITextComponent text = new TextComponentString("category: ");
text.getStyle().setColor(TextFormatting.WHITE).setBold(false);
ITextComponent option = new TextComponentString("monster");
option.getStyle().setColor(TextFormatting.YELLOW).setClickEvent(new ClickEvent(ClickEvent.Action.RUN_COMMAND, "/tbm-edit edit category monster"));
if(TurnBasedMinecraftMod.proxy.getConfig().isIgnoreBattleType("monster"))
{
ITextComponent optionInfo = new TextComponentString("(battle-");
optionInfo.getStyle().setColor(TextFormatting.WHITE);
ITextComponent optionInfoBool = new TextComponentString("disabled");
optionInfoBool.getStyle().setColor(TextFormatting.RED);
optionInfo.appendSibling(optionInfoBool).appendText(")");
option.appendSibling(optionInfo);
}
else
{
ITextComponent optionInfo = new TextComponentString("(battle-");
optionInfo.getStyle().setColor(TextFormatting.WHITE);
ITextComponent optionInfoBool = new TextComponentString("enabled");
optionInfoBool.getStyle().setColor(TextFormatting.GREEN);
optionInfo.appendSibling(optionInfoBool).appendText(")");
option.appendSibling(optionInfo);
}
text.appendSibling(option).appendText(", ");
option = new TextComponentString("animal");
option.getStyle().setColor(TextFormatting.YELLOW).setClickEvent(new ClickEvent(ClickEvent.Action.RUN_COMMAND, "/tbm-edit edit category animal"));
if(TurnBasedMinecraftMod.proxy.getConfig().isIgnoreBattleType("animal"))
{
ITextComponent optionInfo = new TextComponentString("(battle-");
optionInfo.getStyle().setColor(TextFormatting.WHITE);
ITextComponent optionInfoBool = new TextComponentString("disabled");
optionInfoBool.getStyle().setColor(TextFormatting.RED);
optionInfo.appendSibling(optionInfoBool).appendText(")");
option.appendSibling(optionInfo);
}
else
{
ITextComponent optionInfo = new TextComponentString("(battle-");
optionInfo.getStyle().setColor(TextFormatting.WHITE);
ITextComponent optionInfoBool = new TextComponentString("enabled");
optionInfoBool.getStyle().setColor(TextFormatting.GREEN);
optionInfo.appendSibling(optionInfoBool).appendText(")");
option.appendSibling(optionInfo);
}
text.appendSibling(option).appendText(", ");
option = new TextComponentString("passive");
option.getStyle().setColor(TextFormatting.YELLOW).setClickEvent(new ClickEvent(ClickEvent.Action.RUN_COMMAND, "/tbm-edit edit category passive"));
if(TurnBasedMinecraftMod.proxy.getConfig().isIgnoreBattleType("passive"))
{
ITextComponent optionInfo = new TextComponentString("(battle-");
optionInfo.getStyle().setColor(TextFormatting.WHITE);
ITextComponent optionInfoBool = new TextComponentString("disabled");
optionInfoBool.getStyle().setColor(TextFormatting.RED);
optionInfo.appendSibling(optionInfoBool).appendText(")");
option.appendSibling(optionInfo);
}
else
{
ITextComponent optionInfo = new TextComponentString("(battle-");
optionInfo.getStyle().setColor(TextFormatting.WHITE);
ITextComponent optionInfoBool = new TextComponentString("enabled");
optionInfoBool.getStyle().setColor(TextFormatting.GREEN);
optionInfo.appendSibling(optionInfoBool).appendText(")");
option.appendSibling(optionInfo);
}
text.appendSibling(option).appendText(", ");
option = new TextComponentString("boss");
option.getStyle().setColor(TextFormatting.YELLOW).setClickEvent(new ClickEvent(ClickEvent.Action.RUN_COMMAND, "/tbm-edit edit category boss"));
if(TurnBasedMinecraftMod.proxy.getConfig().isIgnoreBattleType("boss"))
{
ITextComponent optionInfo = new TextComponentString("(battle-");
optionInfo.getStyle().setColor(TextFormatting.WHITE);
ITextComponent optionInfoBool = new TextComponentString("disabled");
optionInfoBool.getStyle().setColor(TextFormatting.RED);
optionInfo.appendSibling(optionInfoBool).appendText(")");
option.appendSibling(optionInfo);
}
else
{
ITextComponent optionInfo = new TextComponentString("(battle-");
optionInfo.getStyle().setColor(TextFormatting.WHITE);
ITextComponent optionInfoBool = new TextComponentString("enabled");
optionInfoBool.getStyle().setColor(TextFormatting.GREEN);
optionInfo.appendSibling(optionInfoBool).appendText(")");
option.appendSibling(optionInfo);
}
text.appendSibling(option).appendText(", ");
option = new TextComponentString("player");
option.getStyle().setColor(TextFormatting.YELLOW).setClickEvent(new ClickEvent(ClickEvent.Action.RUN_COMMAND, "/tbm-edit edit category player"));
if(TurnBasedMinecraftMod.proxy.getConfig().isIgnoreBattleType("player"))
{
ITextComponent optionInfo = new TextComponentString("(battle-");
optionInfo.getStyle().setColor(TextFormatting.WHITE);
ITextComponent optionInfoBool = new TextComponentString("disabled");
optionInfoBool.getStyle().setColor(TextFormatting.RED);
optionInfo.appendSibling(optionInfoBool).appendText(")");
option.appendSibling(optionInfo);
}
else
{
ITextComponent optionInfo = new TextComponentString("(battle-");
optionInfo.getStyle().setColor(TextFormatting.WHITE);
ITextComponent optionInfoBool = new TextComponentString("enabled");
optionInfoBool.getStyle().setColor(TextFormatting.GREEN);
optionInfo.appendSibling(optionInfoBool).appendText(")");
option.appendSibling(optionInfo);
}
text.appendSibling(option);
text.appendText(" (or use command \"/tbm-edit edit category <string>\")");
prefix.appendSibling(text);
TurnBasedMinecraftMod.proxy.displayTextComponent(prefix);
break;
}
case EDIT_DECISION_ATTACK:
{
ITextComponent prefix = new TextComponentString("TBM: ");
prefix.getStyle().setColor(TextFormatting.GREEN).setBold(true);
ITextComponent text = new TextComponentString("decisionAttack: ");
text.getStyle().setColor(TextFormatting.WHITE).setBold(false);
for(int i = 0; i <= 100; i += 10)
{
ITextComponent option = new TextComponentString(Integer.toString(i) + "%");
option.getStyle().setColor(TextFormatting.YELLOW).setClickEvent(new ClickEvent(ClickEvent.Action.RUN_COMMAND, "/tbm-edit edit decisionAttack " + Integer.toString(i)));
text.appendSibling(option);
if(i < 100)
{
text.appendText(", ");
}
}
prefix.appendSibling(text);
TurnBasedMinecraftMod.proxy.displayTextComponent(prefix);
break;
}
case EDIT_DECISION_DEFEND:
{
ITextComponent prefix = new TextComponentString("TBM: ");
prefix.getStyle().setColor(TextFormatting.GREEN).setBold(true);
ITextComponent text = new TextComponentString("decisionDefend: ");
text.getStyle().setColor(TextFormatting.WHITE).setBold(false);
for(int i = 0; i <= 100; i += 10)
{
ITextComponent option = new TextComponentString(Integer.toString(i) + "%");
option.getStyle().setColor(TextFormatting.YELLOW).setClickEvent(new ClickEvent(ClickEvent.Action.RUN_COMMAND, "/tbm-edit edit decisionDefend " + Integer.toString(i)));
text.appendSibling(option);
if(i < 100)
{
text.appendText(", ");
}
}
prefix.appendSibling(text);
TurnBasedMinecraftMod.proxy.displayTextComponent(prefix);
break;
}
case EDIT_DECISION_FLEE:
{
ITextComponent prefix = new TextComponentString("TBM: ");
prefix.getStyle().setColor(TextFormatting.GREEN).setBold(true);
ITextComponent text = new TextComponentString("decisionFlee: ");
text.getStyle().setColor(TextFormatting.WHITE).setBold(false);
for(int i = 0; i <= 100; i += 10)
{
ITextComponent option = new TextComponentString(Integer.toString(i) + "%");
option.getStyle().setColor(TextFormatting.YELLOW).setClickEvent(new ClickEvent(ClickEvent.Action.RUN_COMMAND, "/tbm-edit edit decisionFlee " + Integer.toString(i)));
text.appendSibling(option);
if(i < 100)
{
text.appendText(", ");
}
}
prefix.appendSibling(text);
TurnBasedMinecraftMod.proxy.displayTextComponent(prefix);
break;
}
default:
break;
}
return null;
}
}
}