diff --git a/src/main/java/com/seodisparate/TurnBasedMinecraft/client/BattleGui.java b/src/main/java/com/seodisparate/TurnBasedMinecraft/client/BattleGui.java index e42b8e3..631a628 100644 --- a/src/main/java/com/seodisparate/TurnBasedMinecraft/client/BattleGui.java +++ b/src/main/java/com/seodisparate/TurnBasedMinecraft/client/BattleGui.java @@ -1,6 +1,7 @@ package com.seodisparate.TurnBasedMinecraft.client; import java.io.IOException; +import java.util.ConcurrentModificationException; import java.util.HashMap; import java.util.Map; import java.util.concurrent.atomic.AtomicInteger; @@ -165,32 +166,44 @@ public class BattleGui extends GuiScreen case ATTACK_TARGET: info = "Who will you attack?"; int y = 30; - for(Map.Entry e : TurnBasedMinecraftMod.proxy.getLocalBattle().getSideAEntrySet()) + try { - if(e.getValue().entity != null) + for(Map.Entry e : TurnBasedMinecraftMod.proxy.getLocalBattle().getSideAEntrySet()) { - buttonList.add(new EntitySelectionButton(ButtonAction.ATTACK_TARGET.getValue(), width/4 - 60, y, 120, 20, e.getValue().entity.getName(), e.getKey(), true)); + if(e.getValue().entity != null) + { + buttonList.add(new EntitySelectionButton(ButtonAction.ATTACK_TARGET.getValue(), width/4 - 60, y, 120, 20, e.getValue().entity.getName(), e.getKey(), true)); + } + else + { + buttonList.add(new EntitySelectionButton(ButtonAction.ATTACK_TARGET.getValue(), width/4 - 60, y, 120, 20, "Unknown", e.getKey(), true)); + } + y += 20; } - else - { - buttonList.add(new EntitySelectionButton(ButtonAction.ATTACK_TARGET.getValue(), width/4 - 60, y, 120, 20, "Unknown", e.getKey(), true)); - } - y += 20; + } catch (ConcurrentModificationException e) + { + // ignored } y = 30; - for(Map.Entry e : TurnBasedMinecraftMod.proxy.getLocalBattle().getSideBEntrySet()) + try { - if(e.getValue().entity != null) + for(Map.Entry e : TurnBasedMinecraftMod.proxy.getLocalBattle().getSideBEntrySet()) { - buttonList.add(new EntitySelectionButton(ButtonAction.ATTACK_TARGET.getValue(), width*3/4 - 60, y, 120, 20, e.getValue().entity.getName(), e.getKey(), false)); + if(e.getValue().entity != null) + { + buttonList.add(new EntitySelectionButton(ButtonAction.ATTACK_TARGET.getValue(), width*3/4 - 60, y, 120, 20, e.getValue().entity.getName(), e.getKey(), false)); + } + else + { + buttonList.add(new EntitySelectionButton(ButtonAction.ATTACK_TARGET.getValue(), width*3/4 - 60, y, 120, 20, "Unknown", e.getKey(), false)); + } + y += 20; } - else - { - buttonList.add(new EntitySelectionButton(ButtonAction.ATTACK_TARGET.getValue(), width*3/4 - 60, y, 120, 20, "Unknown", e.getKey(), false)); - } - y += 20; + } catch (ConcurrentModificationException e) + { + // ignored } - buttonList.add(new GuiButton(ButtonAction.CANCEL.getValue(), width/2 - 40, height - 120, 80, 20, "Cancel")); + buttonList.add(new GuiButton(ButtonAction.CANCEL.getValue(), width/2 - 30, height - 120, 60, 20, "Cancel")); break; case ITEM_ACTION: info = "What will you do with an item?"; diff --git a/src/main/java/com/seodisparate/TurnBasedMinecraft/common/Battle.java b/src/main/java/com/seodisparate/TurnBasedMinecraft/common/Battle.java index abb1910..065bcf2 100644 --- a/src/main/java/com/seodisparate/TurnBasedMinecraft/common/Battle.java +++ b/src/main/java/com/seodisparate/TurnBasedMinecraft/common/Battle.java @@ -256,11 +256,41 @@ public class Battle public boolean hasCombatant(int entityID) { + synchronized(sideAEntryQueue) + { + for(Combatant c : sideAEntryQueue) + { + if(c.entity.getEntityId() == entityID) + { + return true; + } + } + } + synchronized(sideBEntryQueue) + { + for(Combatant c : sideBEntryQueue) + { + if(c.entity.getEntityId() == entityID) + { + return true; + } + } + } return sideA.containsKey(entityID) || sideB.containsKey(entityID); } public boolean hasCombatantInSideA(int entityID) { + synchronized(sideAEntryQueue) + { + for(Combatant c : sideAEntryQueue) + { + if(c.entity.getEntityId() == entityID) + { + return true; + } + } + } return sideA.containsKey(entityID); } @@ -775,7 +805,7 @@ public class Battle { turnOrderQueue.add(c); } - update(0); + return update(0); } else {