Fix bow attack, config, add freeze enemies option
Fix bug where bow attack hit announcement was made multiple times. Fix config format for Entities. Add feature to freeze combatants when battle starts, option to enable in config.
This commit is contained in:
parent
9778c6a7d5
commit
efa65da721
5 changed files with 321 additions and 192 deletions
|
@ -36,19 +36,20 @@ public class AttackEventHandler
|
|||
else if(event.getSource().getTrueSource().equals(attacker.entity) && event.getSource().isProjectile())
|
||||
{
|
||||
removeQueue.add(attacker);
|
||||
isValid = true;
|
||||
Battle b = TurnBasedMinecraftMod.battleManager.getBattleByID(attacker.battleID);
|
||||
if(b != null)
|
||||
if(!isValid)
|
||||
{
|
||||
b.sendMessageToAllPlayers(PacketBattleMessage.MessageType.ARROW_HIT, attacker.entity.getEntityId(), event.getEntity().getEntityId(), 0);
|
||||
Battle b = TurnBasedMinecraftMod.battleManager.getBattleByID(attacker.battleID);
|
||||
if(b != null)
|
||||
{
|
||||
b.sendMessageToAllPlayers(PacketBattleMessage.MessageType.ARROW_HIT, attacker.entity.getEntityId(), event.getEntity().getEntityId(), 0);
|
||||
}
|
||||
isValid = true;
|
||||
}
|
||||
}
|
||||
}
|
||||
AttackerViaBow next = removeQueue.poll();
|
||||
while(next != null)
|
||||
for(AttackerViaBow next = removeQueue.poll(); next != null; next = removeQueue.poll())
|
||||
{
|
||||
TurnBasedMinecraftMod.attackerViaBow.remove(next);
|
||||
next = removeQueue.poll();
|
||||
}
|
||||
}
|
||||
return isValid;
|
||||
|
|
|
@ -144,6 +144,14 @@ public class Battle
|
|||
playerCount.incrementAndGet();
|
||||
players.put(e.getEntityId(), newCombatant);
|
||||
}
|
||||
if(TurnBasedMinecraftMod.config.isFreezeCombatantsEnabled())
|
||||
{
|
||||
newCombatant.x = e.posX;
|
||||
newCombatant.y = e.posY;
|
||||
newCombatant.z = e.posZ;
|
||||
newCombatant.yaw = e.rotationYaw;
|
||||
newCombatant.pitch = e.rotationPitch;
|
||||
}
|
||||
}
|
||||
}
|
||||
if(sideB != null)
|
||||
|
@ -165,6 +173,14 @@ public class Battle
|
|||
playerCount.incrementAndGet();
|
||||
players.put(e.getEntityId(), newCombatant);
|
||||
}
|
||||
if(TurnBasedMinecraftMod.config.isFreezeCombatantsEnabled())
|
||||
{
|
||||
newCombatant.x = e.posX;
|
||||
newCombatant.y = e.posY;
|
||||
newCombatant.z = e.posZ;
|
||||
newCombatant.yaw = e.rotationYaw;
|
||||
newCombatant.pitch = e.rotationPitch;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -251,6 +267,14 @@ public class Battle
|
|||
undecidedCount.incrementAndGet();
|
||||
}
|
||||
}
|
||||
if(TurnBasedMinecraftMod.config.isFreezeCombatantsEnabled())
|
||||
{
|
||||
newCombatant.x = e.posX;
|
||||
newCombatant.y = e.posY;
|
||||
newCombatant.z = e.posZ;
|
||||
newCombatant.yaw = e.rotationYaw;
|
||||
newCombatant.pitch = e.rotationPitch;
|
||||
}
|
||||
if(newCombatant.entityInfo != null)
|
||||
{
|
||||
sendMessageToAllPlayers(PacketBattleMessage.MessageType.ENTERED, newCombatant.entity.getEntityId(), 0, id, newCombatant.entityInfo.category);
|
||||
|
@ -283,6 +307,14 @@ public class Battle
|
|||
undecidedCount.incrementAndGet();
|
||||
}
|
||||
}
|
||||
if(TurnBasedMinecraftMod.config.isFreezeCombatantsEnabled())
|
||||
{
|
||||
newCombatant.x = e.posX;
|
||||
newCombatant.y = e.posY;
|
||||
newCombatant.z = e.posZ;
|
||||
newCombatant.yaw = e.rotationYaw;
|
||||
newCombatant.pitch = e.rotationPitch;
|
||||
}
|
||||
if(newCombatant.entityInfo != null)
|
||||
{
|
||||
sendMessageToAllPlayers(PacketBattleMessage.MessageType.ENTERED, newCombatant.entity.getEntityId(), 0, id, newCombatant.entityInfo.category);
|
||||
|
@ -516,6 +548,18 @@ public class Battle
|
|||
}
|
||||
}
|
||||
|
||||
private void enforceFreezePositions()
|
||||
{
|
||||
for(Combatant c : sideA.values())
|
||||
{
|
||||
c.entity.setPositionAndRotation(c.x, c.y, c.z, c.yaw, c.pitch);
|
||||
}
|
||||
for(Combatant c : sideB.values())
|
||||
{
|
||||
c.entity.setPositionAndRotation(c.x, c.y, c.z, c.yaw, c.pitch);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* @return True if battle has ended
|
||||
*/
|
||||
|
@ -537,6 +581,10 @@ public class Battle
|
|||
{
|
||||
return true;
|
||||
}
|
||||
if(TurnBasedMinecraftMod.config.isFreezeCombatantsEnabled())
|
||||
{
|
||||
enforceFreezePositions();
|
||||
}
|
||||
switch(state)
|
||||
{
|
||||
case DECISION:
|
||||
|
@ -604,12 +652,10 @@ public class Battle
|
|||
break;
|
||||
case ACTION:
|
||||
{
|
||||
Combatant next = turnOrderQueue.poll();
|
||||
while(next != null)
|
||||
for(Combatant next = turnOrderQueue.poll(); next != null; next = turnOrderQueue.poll())
|
||||
{
|
||||
if(!next.entity.isEntityAlive())
|
||||
{
|
||||
next = turnOrderQueue.poll();
|
||||
continue;
|
||||
}
|
||||
|
||||
|
@ -643,9 +689,16 @@ public class Battle
|
|||
{
|
||||
final Entity nextEntity = next.entity;
|
||||
final Entity targetEntity = target.entity;
|
||||
final float yawDirection = Utility.yawDirection(next.entity.posX, next.entity.posZ, target.entity.posX, target.entity.posZ);
|
||||
final float pitchDirection = Utility.pitchDirection(next.entity.posX, next.entity.posY, next.entity.posZ, target.entity.posX, target.entity.posY, target.entity.posZ);
|
||||
if(TurnBasedMinecraftMod.config.isFreezeCombatantsEnabled())
|
||||
{
|
||||
next.yaw = yawDirection;
|
||||
next.pitch = pitchDirection;
|
||||
}
|
||||
next.entity.getServer().addScheduledTask(() -> {
|
||||
// have player look at attack target
|
||||
((EntityPlayerMP)nextEntity).connection.setPlayerLocation(nextEntity.posX, nextEntity.posY, nextEntity.posZ, Utility.yawDirection(nextEntity.posX, nextEntity.posZ, targetEntity.posX, targetEntity.posZ), Utility.pitchDirection(nextEntity.posX, nextEntity.posY, nextEntity.posZ, targetEntity.posX, targetEntity.posY, targetEntity.posZ));
|
||||
((EntityPlayerMP)nextEntity).connection.setPlayerLocation(nextEntity.posX, nextEntity.posY, nextEntity.posZ, yawDirection, pitchDirection);
|
||||
ItemBow itemBow = (ItemBow)heldItemStack.getItem();
|
||||
synchronized(TurnBasedMinecraftMod.attackerViaBow)
|
||||
{
|
||||
|
@ -659,7 +712,6 @@ public class Battle
|
|||
{
|
||||
sendMessageToAllPlayers(PacketBattleMessage.MessageType.BOW_NO_AMMO, next.entity.getEntityId(), 0, 0);
|
||||
}
|
||||
next = turnOrderQueue.poll();
|
||||
continue;
|
||||
}
|
||||
int hitChance = TurnBasedMinecraftMod.config.getPlayerAttackProbability();
|
||||
|
@ -683,9 +735,16 @@ public class Battle
|
|||
final Entity nextEntity = next.entity;
|
||||
final Entity targetEntity = target.entity;
|
||||
final EntityInfo targetEntityInfo = target.entityInfo;
|
||||
final float yawDirection = Utility.yawDirection(next.entity.posX, next.entity.posZ, target.entity.posX, target.entity.posZ);
|
||||
final float pitchDirection = Utility.pitchDirection(next.entity.posX, next.entity.posY, next.entity.posZ, target.entity.posX, target.entity.posY, target.entity.posZ);
|
||||
if(TurnBasedMinecraftMod.config.isFreezeCombatantsEnabled())
|
||||
{
|
||||
next.yaw = yawDirection;
|
||||
next.pitch = pitchDirection;
|
||||
}
|
||||
next.entity.getServer().addScheduledTask(() -> {
|
||||
// have player look at attack target
|
||||
((EntityPlayerMP)nextEntity).connection.setPlayerLocation(nextEntity.posX, nextEntity.posY, nextEntity.posZ, Utility.yawDirection(nextEntity.posX, nextEntity.posZ, targetEntity.posX, targetEntity.posZ), Utility.pitchDirection(nextEntity.posX, nextEntity.posY, nextEntity.posZ, targetEntity.posX, targetEntity.posY, targetEntity.posZ));
|
||||
((EntityPlayerMP)nextEntity).connection.setPlayerLocation(nextEntity.posX, nextEntity.posY, nextEntity.posZ, yawDirection, pitchDirection);
|
||||
TurnBasedMinecraftMod.attackingEntity = nextEntity;
|
||||
TurnBasedMinecraftMod.attackingDamage = 0;
|
||||
((EntityPlayer)nextEntity).attackTargetEntityWithCurrentItem(targetEntity);
|
||||
|
@ -746,7 +805,6 @@ public class Battle
|
|||
}
|
||||
if(target == null || !target.entity.isEntityAlive())
|
||||
{
|
||||
next = turnOrderQueue.poll();
|
||||
continue;
|
||||
}
|
||||
int hitChance = next.entityInfo.attackProbability;
|
||||
|
@ -965,7 +1023,6 @@ public class Battle
|
|||
sendMessageToAllPlayers(PacketBattleMessage.MessageType.SWITCHED_ITEM, next.entity.getEntityId(), 0, 1);
|
||||
break;
|
||||
}
|
||||
next = turnOrderQueue.poll();
|
||||
}
|
||||
for(Combatant c : sideA.values())
|
||||
{
|
||||
|
|
|
@ -19,6 +19,11 @@ public class Combatant
|
|||
public boolean isSideA;
|
||||
public int remainingDefenses;
|
||||
public int battleID;
|
||||
public double x;
|
||||
public double y;
|
||||
public double z;
|
||||
public float yaw;
|
||||
public float pitch;
|
||||
|
||||
public Combatant()
|
||||
{
|
||||
|
|
|
@ -37,6 +37,7 @@ public class Config
|
|||
private int maxInBattle = 8;
|
||||
private Set<String> musicBattleTypes;
|
||||
private Set<String> musicSillyTypes;
|
||||
private boolean freezeCombatantsInBattle = false;
|
||||
|
||||
public Config(Logger logger)
|
||||
{
|
||||
|
@ -163,6 +164,10 @@ public class Config
|
|||
{
|
||||
maxInBattle = Integer.parseInt(xmlReader.getElementText());
|
||||
}
|
||||
else if(xmlReader.getLocalName().equals("FreezeBattleCombatants"))
|
||||
{
|
||||
freezeCombatantsInBattle = !xmlReader.getElementText().toLowerCase().equals("false");
|
||||
}
|
||||
else if(xmlReader.getLocalName().equals("IgnoreBattleTypes"))
|
||||
{
|
||||
do
|
||||
|
@ -263,103 +268,108 @@ public class Config
|
|||
xmlReader.next();
|
||||
if(xmlReader.isStartElement())
|
||||
{
|
||||
String classType = xmlReader.getLocalName();
|
||||
EntityInfo eInfo = new EntityInfo();
|
||||
try
|
||||
if(xmlReader.getLocalName().equals("Entry"))
|
||||
{
|
||||
eInfo.classType = Class.forName(classType);
|
||||
} catch (ClassNotFoundException e)
|
||||
{
|
||||
logger.error("Failed to get class of name " + classType);
|
||||
}
|
||||
do
|
||||
{
|
||||
xmlReader.next();
|
||||
if(xmlReader.isStartElement())
|
||||
EntityInfo eInfo = new EntityInfo();
|
||||
do
|
||||
{
|
||||
if(xmlReader.getLocalName().equals("AttackPower"))
|
||||
xmlReader.next();
|
||||
if(xmlReader.isStartElement())
|
||||
{
|
||||
for(int i = 0; i < xmlReader.getAttributeCount(); ++i)
|
||||
if(xmlReader.getLocalName().equals("Name"))
|
||||
{
|
||||
if(xmlReader.getAttributeLocalName(i).equals("Probability"))
|
||||
try
|
||||
{
|
||||
eInfo.attackProbability = Integer.parseInt(xmlReader.getAttributeValue(i));
|
||||
}
|
||||
else if(xmlReader.getAttributeLocalName(i).equals("Variance"))
|
||||
eInfo.classType = Class.forName(xmlReader.getElementText());
|
||||
} catch (ClassNotFoundException e)
|
||||
{
|
||||
eInfo.attackVariance = Integer.parseInt(xmlReader.getAttributeValue(i));
|
||||
logger.error("Failed to get class of name " + xmlReader.getElementText());
|
||||
}
|
||||
}
|
||||
eInfo.attackPower = Integer.parseInt(xmlReader.getElementText());
|
||||
}
|
||||
else if(xmlReader.getLocalName().equals("AttackEffect"))
|
||||
{
|
||||
for(int i = 0; i < xmlReader.getAttributeCount(); ++i)
|
||||
else if(xmlReader.getLocalName().equals("AttackPower"))
|
||||
{
|
||||
if(xmlReader.getAttributeLocalName(i).equals("Probability"))
|
||||
for(int i = 0; i < xmlReader.getAttributeCount(); ++i)
|
||||
{
|
||||
eInfo.attackEffectProbability = Integer.parseInt(xmlReader.getAttributeValue(i));
|
||||
}
|
||||
}
|
||||
eInfo.attackEffect = EntityInfo.Effect.fromString(xmlReader.getElementText());
|
||||
}
|
||||
else if(xmlReader.getLocalName().equals("Evasion"))
|
||||
{
|
||||
eInfo.evasion = Integer.parseInt(xmlReader.getElementText());
|
||||
}
|
||||
else if(xmlReader.getLocalName().equals("DefenseDamage"))
|
||||
{
|
||||
for(int i = 0; i < xmlReader.getAttributeCount(); ++i)
|
||||
{
|
||||
if(xmlReader.getAttributeLocalName(i).equals("Probability"))
|
||||
{
|
||||
eInfo.defenseDamageProbability = Integer.parseInt(xmlReader.getAttributeValue(i));
|
||||
}
|
||||
}
|
||||
eInfo.defenseDamage = Integer.parseInt(xmlReader.getElementText());
|
||||
}
|
||||
else if(xmlReader.getLocalName().equals("Category"))
|
||||
{
|
||||
eInfo.category = xmlReader.getElementText().toLowerCase();
|
||||
}
|
||||
else if(xmlReader.getLocalName().equals("IgnoreBattle"))
|
||||
{
|
||||
if(xmlReader.getElementText().toLowerCase().equals("true"))
|
||||
{
|
||||
eInfo.ignoreBattle = true;
|
||||
}
|
||||
}
|
||||
else if(xmlReader.getLocalName().equals("Speed"))
|
||||
{
|
||||
eInfo.speed = Integer.parseInt(xmlReader.getElementText());
|
||||
}
|
||||
else if(xmlReader.getLocalName().equals("Decision"))
|
||||
{
|
||||
do
|
||||
{
|
||||
xmlReader.next();
|
||||
if(xmlReader.isStartElement())
|
||||
{
|
||||
if(xmlReader.getLocalName().equals("Attack"))
|
||||
if(xmlReader.getAttributeLocalName(i).equals("Probability"))
|
||||
{
|
||||
eInfo.decisionAttack = Integer.parseInt(xmlReader.getElementText());
|
||||
eInfo.attackProbability = Integer.parseInt(xmlReader.getAttributeValue(i));
|
||||
}
|
||||
else if(xmlReader.getLocalName().equals("Defend"))
|
||||
else if(xmlReader.getAttributeLocalName(i).equals("Variance"))
|
||||
{
|
||||
eInfo.decisionDefend = Integer.parseInt(xmlReader.getElementText());
|
||||
}
|
||||
else if(xmlReader.getLocalName().equals("Flee"))
|
||||
{
|
||||
eInfo.decisionFlee = Integer.parseInt(xmlReader.getElementText());
|
||||
eInfo.attackVariance = Integer.parseInt(xmlReader.getAttributeValue(i));
|
||||
}
|
||||
}
|
||||
} while(!(xmlReader.isEndElement() && xmlReader.getLocalName().equals("Decision")));
|
||||
eInfo.attackPower = Integer.parseInt(xmlReader.getElementText());
|
||||
}
|
||||
else if(xmlReader.getLocalName().equals("AttackEffect"))
|
||||
{
|
||||
for(int i = 0; i < xmlReader.getAttributeCount(); ++i)
|
||||
{
|
||||
if(xmlReader.getAttributeLocalName(i).equals("Probability"))
|
||||
{
|
||||
eInfo.attackEffectProbability = Integer.parseInt(xmlReader.getAttributeValue(i));
|
||||
}
|
||||
}
|
||||
eInfo.attackEffect = EntityInfo.Effect.fromString(xmlReader.getElementText());
|
||||
}
|
||||
else if(xmlReader.getLocalName().equals("Evasion"))
|
||||
{
|
||||
eInfo.evasion = Integer.parseInt(xmlReader.getElementText());
|
||||
}
|
||||
else if(xmlReader.getLocalName().equals("DefenseDamage"))
|
||||
{
|
||||
for(int i = 0; i < xmlReader.getAttributeCount(); ++i)
|
||||
{
|
||||
if(xmlReader.getAttributeLocalName(i).equals("Probability"))
|
||||
{
|
||||
eInfo.defenseDamageProbability = Integer.parseInt(xmlReader.getAttributeValue(i));
|
||||
}
|
||||
}
|
||||
eInfo.defenseDamage = Integer.parseInt(xmlReader.getElementText());
|
||||
}
|
||||
else if(xmlReader.getLocalName().equals("Category"))
|
||||
{
|
||||
eInfo.category = xmlReader.getElementText().toLowerCase();
|
||||
}
|
||||
else if(xmlReader.getLocalName().equals("IgnoreBattle"))
|
||||
{
|
||||
if(xmlReader.getElementText().toLowerCase().equals("true"))
|
||||
{
|
||||
eInfo.ignoreBattle = true;
|
||||
}
|
||||
}
|
||||
else if(xmlReader.getLocalName().equals("Speed"))
|
||||
{
|
||||
eInfo.speed = Integer.parseInt(xmlReader.getElementText());
|
||||
}
|
||||
else if(xmlReader.getLocalName().equals("Decision"))
|
||||
{
|
||||
do
|
||||
{
|
||||
xmlReader.next();
|
||||
if(xmlReader.isStartElement())
|
||||
{
|
||||
if(xmlReader.getLocalName().equals("Attack"))
|
||||
{
|
||||
eInfo.decisionAttack = Integer.parseInt(xmlReader.getElementText());
|
||||
}
|
||||
else if(xmlReader.getLocalName().equals("Defend"))
|
||||
{
|
||||
eInfo.decisionDefend = Integer.parseInt(xmlReader.getElementText());
|
||||
}
|
||||
else if(xmlReader.getLocalName().equals("Flee"))
|
||||
{
|
||||
eInfo.decisionFlee = Integer.parseInt(xmlReader.getElementText());
|
||||
}
|
||||
}
|
||||
} while(!(xmlReader.isEndElement() && xmlReader.getLocalName().equals("Decision")));
|
||||
}
|
||||
}
|
||||
} while(!(xmlReader.isEndElement() && xmlReader.getLocalName().equals("Entry")));
|
||||
if(eInfo.classType != null)
|
||||
{
|
||||
entityInfoMap.put(eInfo.classType.getName(), eInfo);
|
||||
}
|
||||
} while(!(xmlReader.isEndElement() && xmlReader.getLocalName().equals(classType)));
|
||||
if(eInfo.classType != null)
|
||||
{
|
||||
entityInfoMap.put(eInfo.classType.getName(), eInfo);
|
||||
}
|
||||
}
|
||||
} while(!(xmlReader.isEndElement() && xmlReader.getLocalName().equals("EntityStats")));
|
||||
|
@ -500,4 +510,9 @@ public class Config
|
|||
{
|
||||
return musicSillyTypes.contains(type.toLowerCase());
|
||||
}
|
||||
|
||||
public boolean isFreezeCombatantsEnabled()
|
||||
{
|
||||
return freezeCombatantsInBattle;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1,8 +1,10 @@
|
|||
<TurnBasedMinecraftConfig>
|
||||
<!-- If the mod has a newer version config, it will rename the existing config and place the new config -->
|
||||
<Version>2</Version>
|
||||
<Version>3</Version>
|
||||
<!-- If there are "MaxInBattle" amount of entities in battle, other entities cannot join until combatants leave battle. -->
|
||||
<MaxInBattle>8</MaxInBattle>
|
||||
<!-- If not set to "false", then when battle starts all combatants will remain in their starting position. -->
|
||||
<FreezeBattleCombatants>false</FreezeBattleCombatants>
|
||||
<!-- Types that will not initiate battle with player. They are listed as "Category" per EntiytStats entity.
|
||||
Note that items listed in "IgnoreBattleTypes" and "Category" are converted to lowercase before being compared. -->
|
||||
<IgnoreBattleTypes>
|
||||
|
@ -37,6 +39,7 @@
|
|||
<MinimumHitPercentage>4</MinimumHitPercentage>
|
||||
<!-- Battle stats for entities should be specified here. If an entity is not listed it cannot enter battle. -->
|
||||
<EntityStats>
|
||||
<!-- Name: The full class name of an entity. -->
|
||||
<!-- AttackPower: How much damage an entity does per attack. Usually has a "Probability" attribute between 0 and 100. Also may have a "Variance" attribute that varies the attack power by the specified amount randomly. -->
|
||||
<!-- AttackEffect: (Optional) Applies effect to target entity with "Probability" success rate. -->
|
||||
<!-- DefenseDamage: (Optional) Applies damage to an attacker when attacked with "Probability" success rate. -->
|
||||
|
@ -46,7 +49,8 @@
|
|||
<!-- IgnoreBattle: (Optional) Per entity setting to not enter turn-based-battle if value is "true". If "true" these stats will not apply to the entity as they are only used in turn-based-battle. -->
|
||||
<!-- Category: Sets the type of the entity, used by "IgnoreBattleTypes" to determine what types ignore battle. -->
|
||||
<!-- Decision: Lists percentages of what action taken by the entity, one of Attack, Defend, or Flee. If the sum is less than 100, the mob has a chance to do nothing with the remaining percentage -->
|
||||
<net.minecraft.entity.monster.EntityBlaze>
|
||||
<Entry>
|
||||
<Name>net.minecraft.entity.monster.EntityBlaze</Name>
|
||||
<AttackPower Probability="50">5</AttackPower>
|
||||
<AttackEffect Probability="75">fire</AttackEffect>
|
||||
<Evasion>5</Evasion>
|
||||
|
@ -57,8 +61,9 @@
|
|||
<Defend>0</Defend>
|
||||
<Flee>0</Flee>
|
||||
</Decision>
|
||||
</net.minecraft.entity.monster.EntityBlaze>
|
||||
<net.minecraft.entity.monster.EntityCaveSpider>
|
||||
</Entry>
|
||||
<Entry>
|
||||
<Name>net.minecraft.entity.monster.EntityCaveSpider</Name>
|
||||
<AttackPower Probability="75">2</AttackPower>
|
||||
<AttackEffect Probability="90">poison</AttackEffect>
|
||||
<Evasion>35</Evasion>
|
||||
|
@ -69,8 +74,9 @@
|
|||
<Defend>0</Defend>
|
||||
<Flee>0</Flee>
|
||||
</Decision>
|
||||
</net.minecraft.entity.monster.EntityCaveSpider>
|
||||
<net.minecraft.entity.monster.EntityCreeper>
|
||||
</Entry>
|
||||
<Entry>
|
||||
<Name>net.minecraft.entity.monster.EntityCreeper</Name>
|
||||
<IgnoreBattle>true</IgnoreBattle>
|
||||
<AttackPower Probability="17" Variance="7">15</AttackPower>
|
||||
<Evasion>5</Evasion>
|
||||
|
@ -81,8 +87,9 @@
|
|||
<Defend>0</Defend>
|
||||
<Flee>0</Flee>
|
||||
</Decision>
|
||||
</net.minecraft.entity.monster.EntityCreeper>
|
||||
<net.minecraft.entity.monster.EntityElderGuardian>
|
||||
</Entry>
|
||||
<Entry>
|
||||
<Name>net.minecraft.entity.monster.EntityElderGuardian</Name>
|
||||
<AttackPower Probability="65">8</AttackPower>
|
||||
<DefenseDamage Probability="35">2</DefenseDamage>
|
||||
<Evasion>25</Evasion>
|
||||
|
@ -93,8 +100,9 @@
|
|||
<Defend>20</Defend>
|
||||
<Flee>0</Flee>
|
||||
</Decision>
|
||||
</net.minecraft.entity.monster.EntityElderGuardian>
|
||||
<net.minecraft.entity.monster.EntityEnderman>
|
||||
</Entry>
|
||||
<Entry>
|
||||
<Name>net.minecraft.entity.monster.EntityEnderman</Name>
|
||||
<AttackPower Probability="80">7</AttackPower>
|
||||
<Evasion>40</Evasion>
|
||||
<Category>monster</Category>
|
||||
|
@ -104,8 +112,9 @@
|
|||
<Defend>0</Defend>
|
||||
<Flee>0</Flee>
|
||||
</Decision>
|
||||
</net.minecraft.entity.monster.EntityEnderman>
|
||||
<net.minecraft.entity.monster.EntityEndermite>
|
||||
</Entry>
|
||||
<Entry>
|
||||
<Name>net.minecraft.entity.monster.EntityEndermite</Name>
|
||||
<AttackPower Probability="80">2</AttackPower>
|
||||
<Evasion>40</Evasion>
|
||||
<Category>monster</Category>
|
||||
|
@ -115,8 +124,9 @@
|
|||
<Defend>0</Defend>
|
||||
<Flee>0</Flee>
|
||||
</Decision>
|
||||
</net.minecraft.entity.monster.EntityEndermite>
|
||||
<net.minecraft.entity.monster.EntityEvoker>
|
||||
</Entry>
|
||||
<Entry>
|
||||
<Name>net.minecraft.entity.monster.EntityEvoker</Name>
|
||||
<AttackPower Probability="60">6</AttackPower>
|
||||
<Evasion>35</Evasion>
|
||||
<Category>monster</Category>
|
||||
|
@ -126,8 +136,9 @@
|
|||
<Defend>0</Defend>
|
||||
<Flee>0</Flee>
|
||||
</Decision>
|
||||
</net.minecraft.entity.monster.EntityEvoker>
|
||||
<net.minecraft.entity.monster.EntityGhast>
|
||||
</Entry>
|
||||
<Entry>
|
||||
<Name>net.minecraft.entity.monster.EntityGhast</Name>
|
||||
<IgnoreBattle>true</IgnoreBattle>
|
||||
<AttackPower Probability="20">13</AttackPower>
|
||||
<Evasion>35</Evasion>
|
||||
|
@ -138,8 +149,9 @@
|
|||
<Defend>0</Defend>
|
||||
<Flee>25</Flee>
|
||||
</Decision>
|
||||
</net.minecraft.entity.monster.EntityGhast>
|
||||
<net.minecraft.entity.monster.EntityGiantZombie>
|
||||
</Entry>
|
||||
<Entry>
|
||||
<Name>net.minecraft.entity.monster.EntityGiantZombie</Name>
|
||||
<AttackPower Probability="35">11</AttackPower>
|
||||
<Evasion>2</Evasion>
|
||||
<Category>monster</Category>
|
||||
|
@ -149,8 +161,9 @@
|
|||
<Defend>0</Defend>
|
||||
<Flee>0</Flee>
|
||||
</Decision>
|
||||
</net.minecraft.entity.monster.EntityGiantZombie>
|
||||
<net.minecraft.entity.monster.EntityGuardian>
|
||||
</Entry>
|
||||
<Entry>
|
||||
<Name>net.minecraft.entity.monster.EntityGuardian</Name>
|
||||
<AttackPower Probability="55">6</AttackPower>
|
||||
<DefenseDamage Probability="30">2</DefenseDamage>
|
||||
<Evasion>25</Evasion>
|
||||
|
@ -161,8 +174,9 @@
|
|||
<Defend>20</Defend>
|
||||
<Flee>0</Flee>
|
||||
</Decision>
|
||||
</net.minecraft.entity.monster.EntityGuardian>
|
||||
<net.minecraft.entity.monster.EntityHusk>
|
||||
</Entry>
|
||||
<Entry>
|
||||
<Name>net.minecraft.entity.monster.EntityHusk</Name>
|
||||
<AttackPower Probability="70">3</AttackPower>
|
||||
<AttackEffect Probability="95">hunger</AttackEffect>
|
||||
<Evasion>5</Evasion>
|
||||
|
@ -173,8 +187,9 @@
|
|||
<Defend>0</Defend>
|
||||
<Flee>0</Flee>
|
||||
</Decision>
|
||||
</net.minecraft.entity.monster.EntityHusk>
|
||||
<net.minecraft.entity.monster.EntityIronGolem>
|
||||
</Entry>
|
||||
<Entry>
|
||||
<Name>net.minecraft.entity.monster.EntityIronGolem</Name>
|
||||
<AttackPower Probability="85" Variance="7">14</AttackPower>
|
||||
<Evasion>5</Evasion>
|
||||
<Category>monster</Category>
|
||||
|
@ -184,8 +199,9 @@
|
|||
<Defend>0</Defend>
|
||||
<Flee>0</Flee>
|
||||
</Decision>
|
||||
</net.minecraft.entity.monster.EntityIronGolem>
|
||||
<net.minecraft.entity.monster.EntityMagmaCube>
|
||||
</Entry>
|
||||
<Entry>
|
||||
<Name>net.minecraft.entity.monster.EntityMagmaCube</Name>
|
||||
<AttackPower Probability="35">3</AttackPower>
|
||||
<Evasion>12</Evasion>
|
||||
<Category>monster</Category>
|
||||
|
@ -195,8 +211,9 @@
|
|||
<Defend>0</Defend>
|
||||
<Flee>0</Flee>
|
||||
</Decision>
|
||||
</net.minecraft.entity.monster.EntityMagmaCube>
|
||||
<net.minecraft.entity.monster.EntityPigZombie>
|
||||
</Entry>
|
||||
<Entry>
|
||||
<Name>net.minecraft.entity.monster.EntityPigZombie</Name>
|
||||
<AttackPower Probability="70">8</AttackPower>
|
||||
<Evasion>10</Evasion>
|
||||
<Category>monster</Category>
|
||||
|
@ -206,8 +223,9 @@
|
|||
<Defend>0</Defend>
|
||||
<Flee>0</Flee>
|
||||
</Decision>
|
||||
</net.minecraft.entity.monster.EntityPigZombie>
|
||||
<net.minecraft.entity.monster.EntityPolarBear>
|
||||
</Entry>
|
||||
<Entry>
|
||||
<Name>net.minecraft.entity.monster.EntityPolarBear</Name>
|
||||
<AttackPower Probability="67">6</AttackPower>
|
||||
<Evasion>5</Evasion>
|
||||
<Category>animal</Category>
|
||||
|
@ -217,8 +235,9 @@
|
|||
<Defend>0</Defend>
|
||||
<Flee>0</Flee>
|
||||
</Decision>
|
||||
</net.minecraft.entity.monster.EntityPolarBear>
|
||||
<net.minecraft.entity.monster.EntityShulker>
|
||||
</Entry>
|
||||
<Entry>
|
||||
<Name>net.minecraft.entity.monster.EntityShulker</Name>
|
||||
<AttackPower Probability="80">4</AttackPower>
|
||||
<Evasion>15</Evasion>
|
||||
<Category>monster</Category>
|
||||
|
@ -228,8 +247,9 @@
|
|||
<Defend>0</Defend>
|
||||
<Flee>0</Flee>
|
||||
</Decision>
|
||||
</net.minecraft.entity.monster.EntityShulker>
|
||||
<net.minecraft.entity.monster.EntitySilverfish>
|
||||
</Entry>
|
||||
<Entry>
|
||||
<Name>net.minecraft.entity.monster.EntitySilverfish</Name>
|
||||
<AttackPower Probability="85">1</AttackPower>
|
||||
<Evasion>37</Evasion>
|
||||
<Category>monster</Category>
|
||||
|
@ -239,8 +259,9 @@
|
|||
<Defend>0</Defend>
|
||||
<Flee>0</Flee>
|
||||
</Decision>
|
||||
</net.minecraft.entity.monster.EntitySilverfish>
|
||||
<net.minecraft.entity.monster.EntitySkeleton>
|
||||
</Entry>
|
||||
<Entry>
|
||||
<Name>net.minecraft.entity.monster.EntitySkeleton</Name>
|
||||
<AttackPower Probability="75" Variance="1">3</AttackPower>
|
||||
<Evasion>13</Evasion>
|
||||
<Category>monster</Category>
|
||||
|
@ -250,8 +271,9 @@
|
|||
<Defend>0</Defend>
|
||||
<Flee>0</Flee>
|
||||
</Decision>
|
||||
</net.minecraft.entity.monster.EntitySkeleton>
|
||||
<net.minecraft.entity.monster.EntitySlime>
|
||||
</Entry>
|
||||
<Entry>
|
||||
<Name>net.minecraft.entity.monster.EntitySlime</Name>
|
||||
<AttackPower Probability="35">2</AttackPower>
|
||||
<Evasion>10</Evasion>
|
||||
<Category>monster</Category>
|
||||
|
@ -261,8 +283,9 @@
|
|||
<Defend>0</Defend>
|
||||
<Flee>0</Flee>
|
||||
</Decision>
|
||||
</net.minecraft.entity.monster.EntitySlime>
|
||||
<net.minecraft.entity.monster.EntitySnowman>
|
||||
</Entry>
|
||||
<Entry>
|
||||
<Name>net.minecraft.entity.monster.EntitySnowman</Name>
|
||||
<AttackPower Probability="80">0</AttackPower>
|
||||
<Evasion>5</Evasion>
|
||||
<Category>passive</Category>
|
||||
|
@ -272,8 +295,9 @@
|
|||
<Defend>0</Defend>
|
||||
<Flee>0</Flee>
|
||||
</Decision>
|
||||
</net.minecraft.entity.monster.EntitySnowman>
|
||||
<net.minecraft.entity.monster.EntitySpider>
|
||||
</Entry>
|
||||
<Entry>
|
||||
<Name>net.minecraft.entity.monster.EntitySpider</Name>
|
||||
<AttackPower Probability="70">2</AttackPower>
|
||||
<Evasion>25</Evasion>
|
||||
<Category>monster</Category>
|
||||
|
@ -283,8 +307,9 @@
|
|||
<Defend>0</Defend>
|
||||
<Flee>0</Flee>
|
||||
</Decision>
|
||||
</net.minecraft.entity.monster.EntitySpider>
|
||||
<net.minecraft.entity.monster.EntityStray>
|
||||
</Entry>
|
||||
<Entry>
|
||||
<Name>net.minecraft.entity.monster.EntityStray</Name>
|
||||
<AttackPower Probability="75" Variance="1">3</AttackPower>
|
||||
<AttackEffect Probability="90">slow</AttackEffect>
|
||||
<Evasion>13</Evasion>
|
||||
|
@ -295,8 +320,9 @@
|
|||
<Defend>0</Defend>
|
||||
<Flee>0</Flee>
|
||||
</Decision>
|
||||
</net.minecraft.entity.monster.EntityStray>
|
||||
<net.minecraft.entity.monster.EntityVex>
|
||||
</Entry>
|
||||
<Entry>
|
||||
<Name>net.minecraft.entity.monster.EntityVex</Name>
|
||||
<AttackPower Probability="65">9</AttackPower>
|
||||
<Evasion>30</Evasion>
|
||||
<Category>monster</Category>
|
||||
|
@ -306,8 +332,9 @@
|
|||
<Defend>0</Defend>
|
||||
<Flee>0</Flee>
|
||||
</Decision>
|
||||
</net.minecraft.entity.monster.EntityVex>
|
||||
<net.minecraft.entity.monster.EntityVindicator>
|
||||
</Entry>
|
||||
<Entry>
|
||||
<Name>net.minecraft.entity.monster.EntityVindicator</Name>
|
||||
<AttackPower Probability="70">13</AttackPower>
|
||||
<Evasion>10</Evasion>
|
||||
<Category>monster</Category>
|
||||
|
@ -317,8 +344,9 @@
|
|||
<Defend>0</Defend>
|
||||
<Flee>0</Flee>
|
||||
</Decision>
|
||||
</net.minecraft.entity.monster.EntityVindicator>
|
||||
<net.minecraft.entity.monster.EntityWitch>
|
||||
</Entry>
|
||||
<Entry>
|
||||
<Name>net.minecraft.entity.monster.EntityWitch</Name>
|
||||
<AttackPower Probability="75" Variance="1">5</AttackPower>
|
||||
<Evasion>8</Evasion>
|
||||
<Category>monster</Category>
|
||||
|
@ -328,8 +356,9 @@
|
|||
<Defend>0</Defend>
|
||||
<Flee>0</Flee>
|
||||
</Decision>
|
||||
</net.minecraft.entity.monster.EntityWitch>
|
||||
<net.minecraft.entity.monster.EntityWitherSkeleton>
|
||||
</Entry>
|
||||
<Entry>
|
||||
<Name>net.minecraft.entity.monster.EntityWitherSkeleton</Name>
|
||||
<AttackPower Probability="70">8</AttackPower>
|
||||
<AttackEffect Probability="90">wither</AttackEffect>
|
||||
<Evasion>7</Evasion>
|
||||
|
@ -340,8 +369,9 @@
|
|||
<Defend>0</Defend>
|
||||
<Flee>0</Flee>
|
||||
</Decision>
|
||||
</net.minecraft.entity.monster.EntityWitherSkeleton>
|
||||
<net.minecraft.entity.monster.EntityZombie>
|
||||
</Entry>
|
||||
<Entry>
|
||||
<Name>net.minecraft.entity.monster.EntityZombie</Name>
|
||||
<AttackPower Probability="70">3</AttackPower>
|
||||
<Evasion>5</Evasion>
|
||||
<Category>monster</Category>
|
||||
|
@ -351,8 +381,9 @@
|
|||
<Defend>0</Defend>
|
||||
<Flee>0</Flee>
|
||||
</Decision>
|
||||
</net.minecraft.entity.monster.EntityZombie>
|
||||
<net.minecraft.entity.monster.EntityZombieVillager>
|
||||
</Entry>
|
||||
<Entry>
|
||||
<Name>net.minecraft.entity.monster.EntityZombieVillager</Name>
|
||||
<AttackPower Probability="70">3</AttackPower>
|
||||
<Evasion>5</Evasion>
|
||||
<Category>monster</Category>
|
||||
|
@ -362,8 +393,9 @@
|
|||
<Defend>0</Defend>
|
||||
<Flee>0</Flee>
|
||||
</Decision>
|
||||
</net.minecraft.entity.monster.EntityZombieVillager>
|
||||
<net.minecraft.entity.passive.EntityBat>
|
||||
</Entry>
|
||||
<Entry>
|
||||
<Name>net.minecraft.entity.passive.EntityBat</Name>
|
||||
<AttackPower Probability="70">0</AttackPower>
|
||||
<Evasion>35</Evasion>
|
||||
<Category>passive</Category>
|
||||
|
@ -373,8 +405,9 @@
|
|||
<Defend>0</Defend>
|
||||
<Flee>90</Flee>
|
||||
</Decision>
|
||||
</net.minecraft.entity.passive.EntityBat>
|
||||
<net.minecraft.entity.passive.EntityChicken>
|
||||
</Entry>
|
||||
<Entry>
|
||||
<Name>net.minecraft.entity.passive.EntityChicken</Name>
|
||||
<AttackPower Probability="70">0</AttackPower>
|
||||
<Evasion>10</Evasion>
|
||||
<Category>passive</Category>
|
||||
|
@ -384,8 +417,9 @@
|
|||
<Defend>0</Defend>
|
||||
<Flee>90</Flee>
|
||||
</Decision>
|
||||
</net.minecraft.entity.passive.EntityChicken>
|
||||
<net.minecraft.entity.passive.EntityCow>
|
||||
</Entry>
|
||||
<Entry>
|
||||
<Name>net.minecraft.entity.passive.EntityCow</Name>
|
||||
<AttackPower Probability="50">0</AttackPower>
|
||||
<Evasion>1</Evasion>
|
||||
<Category>passive</Category>
|
||||
|
@ -395,8 +429,9 @@
|
|||
<Defend>10</Defend>
|
||||
<Flee>80</Flee>
|
||||
</Decision>
|
||||
</net.minecraft.entity.passive.EntityCow>
|
||||
<net.minecraft.entity.passive.EntityDonkey>
|
||||
</Entry>
|
||||
<Entry>
|
||||
<Name>net.minecraft.entity.passive.EntityDonkey</Name>
|
||||
<AttackPower Probability="70">0</AttackPower>
|
||||
<Evasion>10</Evasion>
|
||||
<Category>passive</Category>
|
||||
|
@ -406,8 +441,9 @@
|
|||
<Defend>0</Defend>
|
||||
<Flee>90</Flee>
|
||||
</Decision>
|
||||
</net.minecraft.entity.passive.EntityDonkey>
|
||||
<net.minecraft.entity.passive.EntityHorse>
|
||||
</Entry>
|
||||
<Entry>
|
||||
<Name>net.minecraft.entity.passive.EntityHorse</Name>
|
||||
<AttackPower Probability="70">0</AttackPower>
|
||||
<Evasion>10</Evasion>
|
||||
<Category>passive</Category>
|
||||
|
@ -417,8 +453,9 @@
|
|||
<Defend>0</Defend>
|
||||
<Flee>90</Flee>
|
||||
</Decision>
|
||||
</net.minecraft.entity.passive.EntityHorse>
|
||||
<net.minecraft.entity.passive.EntityLlama>
|
||||
</Entry>
|
||||
<Entry>
|
||||
<Name>net.minecraft.entity.passive.EntityLlama</Name>
|
||||
<AttackPower Probability="70">1</AttackPower>
|
||||
<Evasion>10</Evasion>
|
||||
<Category>passive</Category>
|
||||
|
@ -428,8 +465,9 @@
|
|||
<Defend>0</Defend>
|
||||
<Flee>25</Flee>
|
||||
</Decision>
|
||||
</net.minecraft.entity.passive.EntityLlama>
|
||||
<net.minecraft.entity.passive.EntityMooshroom>
|
||||
</Entry>
|
||||
<Entry>
|
||||
<Name>net.minecraft.entity.passive.EntityMooshroom</Name>
|
||||
<AttackPower Probability="70">0</AttackPower>
|
||||
<Evasion>1</Evasion>
|
||||
<Category>passive</Category>
|
||||
|
@ -439,8 +477,9 @@
|
|||
<Defend>10</Defend>
|
||||
<Flee>80</Flee>
|
||||
</Decision>
|
||||
</net.minecraft.entity.passive.EntityMooshroom>
|
||||
<net.minecraft.entity.passive.EntityMule>
|
||||
</Entry>
|
||||
<Entry>
|
||||
<Name>net.minecraft.entity.passive.EntityMule</Name>
|
||||
<AttackPower Probability="70">0</AttackPower>
|
||||
<Evasion>10</Evasion>
|
||||
<Category>passive</Category>
|
||||
|
@ -450,8 +489,9 @@
|
|||
<Defend>0</Defend>
|
||||
<Flee>90</Flee>
|
||||
</Decision>
|
||||
</net.minecraft.entity.passive.EntityMule>
|
||||
<net.minecraft.entity.passive.EntityOcelot>
|
||||
</Entry>
|
||||
<Entry>
|
||||
<Name>net.minecraft.entity.passive.EntityOcelot</Name>
|
||||
<AttackPower Probability="70" Variance="1">1</AttackPower>
|
||||
<Evasion>10</Evasion>
|
||||
<Category>passive</Category>
|
||||
|
@ -461,8 +501,9 @@
|
|||
<Defend>0</Defend>
|
||||
<Flee>90</Flee>
|
||||
</Decision>
|
||||
</net.minecraft.entity.passive.EntityOcelot>
|
||||
<net.minecraft.entity.passive.EntityParrot>
|
||||
</Entry>
|
||||
<Entry>
|
||||
<Name>net.minecraft.entity.passive.EntityParrot</Name>
|
||||
<AttackPower Probability="70">0</AttackPower>
|
||||
<Evasion>35</Evasion>
|
||||
<Category>passive</Category>
|
||||
|
@ -472,8 +513,9 @@
|
|||
<Defend>0</Defend>
|
||||
<Flee>90</Flee>
|
||||
</Decision>
|
||||
</net.minecraft.entity.passive.EntityParrot>
|
||||
<net.minecraft.entity.passive.EntityPig>
|
||||
</Entry>
|
||||
<Entry>
|
||||
<Name>net.minecraft.entity.passive.EntityPig</Name>
|
||||
<AttackPower Probability="70">0</AttackPower>
|
||||
<Evasion>10</Evasion>
|
||||
<Category>passive</Category>
|
||||
|
@ -483,8 +525,9 @@
|
|||
<Defend>5</Defend>
|
||||
<Flee>85</Flee>
|
||||
</Decision>
|
||||
</net.minecraft.entity.passive.EntityPig>
|
||||
<net.minecraft.entity.passive.EntityRabbit>
|
||||
</Entry>
|
||||
<Entry>
|
||||
<Name>net.minecraft.entity.passive.EntityRabbit</Name>
|
||||
<AttackPower Probability="70">0</AttackPower>
|
||||
<Evasion>40</Evasion>
|
||||
<Category>passive</Category>
|
||||
|
@ -494,8 +537,9 @@
|
|||
<Defend>0</Defend>
|
||||
<Flee>100</Flee>
|
||||
</Decision>
|
||||
</net.minecraft.entity.passive.EntityRabbit>
|
||||
<net.minecraft.entity.passive.EntitySheep>
|
||||
</Entry>
|
||||
<Entry>
|
||||
<Name>net.minecraft.entity.passive.EntitySheep</Name>
|
||||
<AttackPower Probability="70">0</AttackPower>
|
||||
<Evasion>5</Evasion>
|
||||
<Category>passive</Category>
|
||||
|
@ -505,8 +549,9 @@
|
|||
<Defend>0</Defend>
|
||||
<Flee>90</Flee>
|
||||
</Decision>
|
||||
</net.minecraft.entity.passive.EntitySheep>
|
||||
<net.minecraft.entity.passive.EntitySkeletonHorse>
|
||||
</Entry>
|
||||
<Entry>
|
||||
<Name>net.minecraft.entity.passive.EntitySkeletonHorse</Name>
|
||||
<AttackPower Probability="70">0</AttackPower>
|
||||
<Evasion>5</Evasion>
|
||||
<Category>passive</Category>
|
||||
|
@ -516,8 +561,9 @@
|
|||
<Defend>0</Defend>
|
||||
<Flee>90</Flee>
|
||||
</Decision>
|
||||
</net.minecraft.entity.passive.EntitySkeletonHorse>
|
||||
<net.minecraft.entity.passive.EntitySquid>
|
||||
</Entry>
|
||||
<Entry>
|
||||
<Name>net.minecraft.entity.passive.EntitySquid</Name>
|
||||
<AttackPower Probability="70">0</AttackPower>
|
||||
<Evasion>15</Evasion>
|
||||
<Category>passive</Category>
|
||||
|
@ -527,8 +573,9 @@
|
|||
<Defend>0</Defend>
|
||||
<Flee>90</Flee>
|
||||
</Decision>
|
||||
</net.minecraft.entity.passive.EntitySquid>
|
||||
<net.minecraft.entity.passive.EntityVillager>
|
||||
</Entry>
|
||||
<Entry>
|
||||
<Name>net.minecraft.entity.passive.EntityVillager</Name>
|
||||
<AttackPower Probability="70">0</AttackPower>
|
||||
<Evasion>5</Evasion>
|
||||
<Category>passive</Category>
|
||||
|
@ -538,8 +585,9 @@
|
|||
<Defend>10</Defend>
|
||||
<Flee>80</Flee>
|
||||
</Decision>
|
||||
</net.minecraft.entity.passive.EntityVillager>
|
||||
<net.minecraft.entity.passive.EntityWolf>
|
||||
</Entry>
|
||||
<Entry>
|
||||
<Name>net.minecraft.entity.passive.EntityWolf</Name>
|
||||
<AttackPower Probability="70">4</AttackPower>
|
||||
<Evasion>20</Evasion>
|
||||
<Category>animal</Category>
|
||||
|
@ -549,8 +597,9 @@
|
|||
<Defend>15</Defend>
|
||||
<Flee>5</Flee>
|
||||
</Decision>
|
||||
</net.minecraft.entity.passive.EntityWolf>
|
||||
<net.minecraft.entity.passive.EntityZombieHorse>
|
||||
</Entry>
|
||||
<Entry>
|
||||
<Name>net.minecraft.entity.passive.EntityZombieHorse</Name>
|
||||
<AttackPower Probability="70">0</AttackPower>
|
||||
<Evasion>8</Evasion>
|
||||
<Category>passive</Category>
|
||||
|
@ -560,8 +609,9 @@
|
|||
<Defend>0</Defend>
|
||||
<Flee>90</Flee>
|
||||
</Decision>
|
||||
</net.minecraft.entity.passive.EntityZombieHorse>
|
||||
<net.minecraft.entity.boss.EntityDragon>
|
||||
</Entry>
|
||||
<Entry>
|
||||
<Name>net.minecraft.entity.boss.EntityDragon</Name>
|
||||
<AttackPower Probability="70" Variance="2">10</AttackPower>
|
||||
<Evasion>27</Evasion>
|
||||
<Category>boss</Category>
|
||||
|
@ -571,8 +621,9 @@
|
|||
<Defend>0</Defend>
|
||||
<Flee>0</Flee>
|
||||
</Decision>
|
||||
</net.minecraft.entity.boss.EntityDragon>
|
||||
<net.minecraft.entity.boss.EntityWither>
|
||||
</Entry>
|
||||
<Entry>
|
||||
<Name>net.minecraft.entity.boss.EntityWither</Name>
|
||||
<AttackPower Probability="70">8</AttackPower>
|
||||
<Evasion>20</Evasion>
|
||||
<AttackEffect Probability="90">wither</AttackEffect>
|
||||
|
@ -583,6 +634,6 @@
|
|||
<Defend>0</Defend>
|
||||
<Flee>0</Flee>
|
||||
</Decision>
|
||||
</net.minecraft.entity.boss.EntityWither>
|
||||
</Entry>
|
||||
</EntityStats>
|
||||
</TurnBasedMinecraftConfig>
|
Loading…
Reference in a new issue