Use .toml instead of .xml for config

This commit is contained in:
Stephen Seo 2018-10-20 17:54:32 +09:00
parent faf7a02619
commit 05b3dc90b0
10 changed files with 1352 additions and 1019 deletions

View file

@ -1,3 +1,11 @@
# Version 1.6
Fix bug where player can start battle with self.
Change config to use ".toml" instead of ".xml".
Change how battle info text is displayed.
# Version 1.5
Fix proper consumption of food/potion items in battle.

View file

@ -5,13 +5,14 @@ buildscript {
}
dependencies {
classpath 'net.minecraftforge.gradle:ForgeGradle:2.3-SNAPSHOT'
classpath 'com.github.jengelman.gradle.plugins:shadow:4.0.1'
}
}
apply plugin: 'net.minecraftforge.gradle.forge'
//Only edit below this line, the above code adds and enables the necessary things for Forge to be setup.
apply plugin: 'com.github.johnrengelman.shadow'
version = "1.5"
group = "com.seodisparate.TurnBasedMinecraft" // http://maven.apache.org/guides/mini/guide-naming-conventions.html
version = "1.6"
group = "com.seodisparate.TurnBasedMinecraft"
archivesBaseName = "TurnBasedMinecraft"
sourceCompatibility = targetCompatibility = '1.8' // Need this here so eclipse task generates correctly.
@ -37,6 +38,7 @@ dependencies {
// or you may define them like so..
//compile "some.group:artifact:version:classifier"
//compile "some.group:artifact:version"
compile "net.consensys.cava:cava-toml:0.3.1"
// real examples
//compile 'com.mod-buildcraft:buildcraft:6.0.8:dev' // adds buildcraft to the dev env
@ -74,3 +76,14 @@ processResources {
exclude 'mcmod.info'
}
}
shadowJar {
classifier ""
relocate 'net.consensys.cava', 'shadow.turnbasedmc.net.consensys.cava'
relocate 'org.antlr.v4', 'shadow.turnbasedmc.org.antlr.v4'
relocate 'javax.annotation', 'shadow.turnbasedmc.javax.annotation'
}
reobf { shadowJar { mappingType = "SEARGE" } }
tasks.reobfShadowJar.mustRunAfter shadowJar

View file

@ -7,7 +7,9 @@ import net.minecraft.client.Minecraft;
import net.minecraft.client.settings.GameSettings;
import net.minecraft.entity.Entity;
import net.minecraft.util.SoundCategory;
import net.minecraft.util.text.ITextComponent;
import net.minecraft.util.text.TextComponentString;
import net.minecraft.util.text.TextFormatting;
public class ClientProxy extends CommonProxy
{
@ -158,7 +160,12 @@ public class ClientProxy extends CommonProxy
@Override
public void displayString(String message)
{
Minecraft.getMinecraft().ingameGUI.getChatGUI().printChatMessage(new TextComponentString(message));
ITextComponent prefix = new TextComponentString("TBM: ");
prefix.getStyle().setColor(TextFormatting.GREEN).setBold(true);
ITextComponent text = new TextComponentString(message);
prefix.appendSibling(text);
text.getStyle().setColor(TextFormatting.WHITE).setBold(false);
Minecraft.getMinecraft().player.sendMessage(prefix);
}
@Override

View file

@ -5,18 +5,18 @@ import net.minecraft.entity.Entity;
public class AttackerViaBow
{
public static long ATTACK_TIMEOUT = 10000000000L;
public Entity entity;
public long attackTime;
public int battleID;
public AttackerViaBow()
{
entity = null;
attackTime = 0;
battleID = -1;
}
public AttackerViaBow(Entity entity, int battleID)
{
this.entity = entity;

View file

@ -159,6 +159,65 @@ public class EntityInfo
return UNKNOWN;
}
}
public String toString()
{
switch(this)
{
case SPEED:
return "speed";
case SLOW:
return "slow";
case HASTE:
return "haste";
case MINING_FATIGUE:
return "mining_fatigue";
case STRENGTH:
return "strength";
case JUMP_BOOST:
return "jump_boost";
case NAUSEA:
return "nausea";
case REGENERATION:
return "regeneration";
case RESISTANCE:
return "resistance";
case FIRE_RESISTANCE:
return "fire_resistance";
case WATER_BREATHING:
return "water_breathing";
case INVISIBILITY:
return "invisibility";
case BLINDNESS:
return "blindness";
case NIGHT_VISION:
return "night_vision";
case HUNGER:
return "hunger";
case WEAKNESS:
return "weakness";
case POISON:
return "poison";
case WITHER:
return "wither";
case ABSORPTION:
return "absorption";
case SATURATION:
return "saturation";
case GLOWING:
return "glowing";
case LEVITATION:
return "levitation";
case LUCK:
return "luck";
case UNLUCK:
return "unluck";
case FIRE:
return "fire";
default:
return "unknown";
}
}
public PotionEffect getPotionEffect()
{

View file

@ -9,7 +9,7 @@ public class PlayerJoinEventHandler
@SubscribeEvent
public void entityJoinHandler(EntityJoinWorldEvent event)
{
if(event.getEntity().world.isRemote)
if(event.getWorld().isRemote)
{
return;
}

View file

@ -26,8 +26,8 @@ public class TurnBasedMinecraftMod
{
public static final String MODID = "com.seodisparate.turnbasedminecraft";
public static final String NAME = "Turn Based Minecraft Mod";
public static final String VERSION = "1.5";
public static final String CONFIG_FILENAME = "TBM_Config.xml";
public static final String VERSION = "1.6";
public static final String CONFIG_FILENAME = "TBM_Config.toml";
public static final String CONFIG_DIRECTORY = "config/TurnBasedMinecraft/";
public static final String CONFIG_FILE_PATH = CONFIG_DIRECTORY + CONFIG_FILENAME;
public static final String CONFIG_INTERNAL_PATH = "/assets/TurnBasedMinecraft/" + CONFIG_FILENAME;

View file

@ -0,0 +1,636 @@
# Please do not change this option, the mod uses this to keep track of what new
# changes to add to the config.
version = 1
[client_config]
# determines what categories use what type of music.
# Unknown categories sent by the server will default to "battle_music".
battle_music = ["monster", "animal", "boss", "player"]
silly_music = ["passive"]
# Minimum percentage of silly entities in battle to use silly music.
silly_music_threshold = 40
[server_config]
# Number of seconds that an entity cannot enter battle after having just left
# one. Minimum 1, maximum 10.
leave_battle_cooldown = 5
# Maximum distance for a monster to start battle by targeting a player or other
# entity in turn-based-battle. Minimum 5, maximum 50.
aggro_start_battle_max_distance = 8
# If true, only initiate battle on attack. If false, monsters targeting players
# also trigger battle.
old_battle_behavior = false
# If true, any player can disable/enable turn-based-battle for themselves with
# the commands "/tbm-enable" and "/tbm-disable".
anyone_can_disable_tbm_for_self = false
# Maximum amount of entities in one battle. If max is reached, no more entities
# will be added to battle until there are less than max entities.
max_in_battle = 8
# If true, all entities in battle will be frozen in place
freeze_battle_combatants = false
# Entity categories that will not initiate battle.
ignore_battle_types = ["passive", "boss"]
# Stats that apply to all players
player_speed = 50
player_haste_speed = 80
player_slow_speed = 20
player_attack_probability = 90
player_evasion = 10
# Number of attacks that a "defend" move will block
defense_duration = 1
# If speed is greater than fastest speed of entity on opposing side, good
# probability is used.
flee_good_probability = 90
flee_bad_probability = 40
# Minimum hit percentage for everyone. If option is set to less than 1,
# config will assume option of "1" anyway.
minimum_hit_percentage = 4
# Number of seconds to wait in battle for all players to make a decision.
# Minimum 5, maximum 60.
battle_turn_time_seconds = 15
# Each "server_config.entity" entry uses the following options:
# name: full class name of the entity
# attack_power: how much damage an entity does on successful attack
# attack_probability: percentage of attack success. (Usually calculated with enemy's evasion to determine actual percentage)
# attack_variance (optional): determines how much a successful attack's damage varies.
# attack_effect (optional): applies effect on hit success
# attack_effect_probability (optional): percentage of attack_effect being applied on hit success.
# defense_damage (optional): damage dealt to attacker when hit.
# defense_damage_probability (optional): percentage of defense_damage being applied on received hit.
# evasion: percentage of evading hit.
# speed: used to determine turn-order, and flee success rates.
# ignore_battle (optional): per-entity setting that causes that entity to not enter turn-based-battle.
# category: Determines type of entity. Used for server config for what groups do not enter turn-based-battle, and for client config for determining what type of battle music to play.
# decision_attack_probability: Percentage of entity choosing to attack on turn.
# decision_defend_probability: Percentage of entity choosing to defend on turn.
# decision_flee_probability: Percentage of entity choosing to flee on turn.
[[server_config.entity]]
name = "net.minecraft.entity.monster.EntityBlaze"
attack_power = 5
attack_probability = 50
attack_effect = "fire"
attack_effect_probability = 75
evasion = 5
category = "monster"
speed = 45
decision_attack_probability = 100
decision_defend_probability = 0
decision_flee_probability = 0
[[server_config.entity]]
name = "net.minecraft.entity.monster.EntityCaveSpider"
attack_power = 2
attack_probability = 75
attack_effect = "poison"
attack_effect_probability = 90
evasion = 35
category = "monster"
speed = 75
decision_attack_probability = 100
decision_defend_probability = 0
decision_flee_probability = 0
[[server_config.entity]]
name = "net.minecraft.entity.monster.EntityCreeper"
ignore_battle = true
attack_power = 15
attack_probability = 17
attack_variance = 7
evasion = 5
category = "monster"
speed = 25
decision_attack_probability = 100
decision_defend_probability = 0
decision_flee_probability = 0
[[server_config.entity]]
name = "net.minecraft.entity.monster.EntityElderGuardian"
attack_power = 8
attack_probability = 65
defense_damage = 2
defense_damage_probability = 35
evasion = 25
category = "monster"
speed = 45
decision_attack_probability = 80
decision_defend_probability = 20
decision_flee_probability = 0
[[server_config.entity]]
name = "net.minecraft.entity.monster.EntityEnderman"
attack_power = 7
attack_probability = 80
evasion = 40
category = "monster"
speed = 70
decision_attack_probability = 100
decision_defend_probability = 0
decision_flee_probability = 0
[[server_config.entity]]
name = "net.minecraft.entity.monster.EntityEndermite"
attack_power = 2
attack_probability = 80
evasion = 40
category = "monster"
speed = 35
decision_attack_probability = 100
decision_defend_probability = 0
decision_flee_probability = 0
[[server_config.entity]]
name = "net.minecraft.entity.monster.EntityEvoker"
attack_power = 6
attack_probability = 60
evasion = 35
category = "monster"
speed = 35
decision_attack_probability = 100
decision_defend_probability = 0
decision_flee_probability = 0
[[server_config.entity]]
name = "net.minecraft.entity.monster.EntityGhast"
ignore_battle = true
attack_power = 13
attack_probability = 20
evasion = 35
category = "monster"
speed = 60
decision_attack_probability = 75
decision_defend_probability = 0
decision_flee_probability = 25
[[server_config.entity]]
name = "net.minecraft.entity.monster.EntityGiantZombie"
attack_power = 11
attack_probability = 35
evasion = 2
category = "monster"
speed = 45
decision_attack_probability = 100
decision_defend_probability = 0
decision_flee_probability = 0
[[server_config.entity]]
name = "net.minecraft.entity.monster.EntityGuardian"
attack_power = 6
attack_probability = 55
defense_damage = 2
defense_damage_probability = 30
evasion = 25
category = "monster"
speed = 50
decision_attack_probability = 80
decision_defend_probability = 20
decision_flee_probability = 0
[[server_config.entity]]
name = "net.minecraft.entity.monster.EntityHusk"
attack_power = 3
attack_probability = 70
attack_effect = "hunger"
attack_effect_probability = 95
evasion = 5
category = "monster"
speed = 25
decision_attack_probability = 100
decision_defend_probability = 0
decision_flee_probability = 0
[[server_config.entity]]
name = "net.minecraft.entity.monster.EntityIronGolem"
attack_power = 14
attack_probability = 85
attack_variance = 7
evasion = 5
category = "monster"
speed = 45
decision_attack_probability = 100
decision_defend_probability = 0
decision_flee_probability = 0
[[server_config.entity]]
name = "net.minecraft.entity.monster.EntityMagmaCube"
attack_power = 3
attack_probability = 35
evasion = 12
category = "monster"
speed = 35
decision_attack_probability = 100
decision_defend_probability = 0
decision_flee_probability = 0
[[server_config.entity]]
name = "net.minecraft.entity.monster.EntityPigZombie"
attack_power = 8
attack_probability = 70
evasion = 10
category = "monster"
speed = 50
decision_attack_probability = 100
decision_defend_probability = 0
decision_flee_probability = 0
[[server_config.entity]]
name = "net.minecraft.entity.monster.EntityPolarBear"
attack_power = 6
attack_probability = 67
evasion = 5
category = "animal"
speed = 35
decision_attack_probability = 100
decision_defend_probability = 0
decision_flee_probability = 0
[[server_config.entity]]
name = "net.minecraft.entity.monster.EntityShulker"
attack_power = 4
attack_probability = 80
evasion = 15
category = "monster"
speed = 10
decision_attack_probability = 100
decision_defend_probability = 0
decision_flee_probability = 0
[[server_config.entity]]
name = "net.minecraft.entity.monster.EntitySilverfish"
attack_power = 1
attack_probability = 85
evasion = 37
category = "monster"
speed = 35
decision_attack_probability = 100
decision_defend_probability = 0
decision_flee_probability = 0
[[server_config.entity]]
name = "net.minecraft.entity.monster.EntitySkeleton"
attack_power = 3
attack_probability = 75
attack_variance = 1
evasion = 13
category = "monster"
speed = 30
decision_attack_probability = 100
decision_defend_probability = 0
decision_flee_probability = 0
[[server_config.entity]]
name = "net.minecraft.entity.monster.EntitySlime"
attack_power = 2
attack_probability = 35
evasion = 10
category = "monster"
speed = 30
decision_attack_probability = 100
decision_defend_probability = 0
decision_flee_probability = 0
[[server_config.entity]]
name = "net.minecraft.entity.monster.EntitySnowman"
attack_power = 0
attack_probability = 80
evasion = 5
category = "passive"
speed = 60
decision_attack_probability = 100
decision_defend_probability = 0
decision_flee_probability = 0
[[server_config.entity]]
name = "net.minecraft.entity.monster.EntitySpider"
attack_power = 2
attack_probability = 70
evasion = 25
category = "monster"
speed = 70
decision_attack_probability = 100
decision_defend_probability = 0
decision_flee_probability = 0
[[server_config.entity]]
name = "net.minecraft.entity.monster.EntityStray"
attack_power = 3
attack_probability = 75
attack_variance = 1
attack_effect = "slow"
attack_effect_probability = 90
evasion = 13
category = "monster"
speed = 30
decision_attack_probability = 100
decision_defend_probability = 0
decision_flee_probability = 0
[[server_config.entity]]
name = "net.minecraft.entity.monster.EntityVex"
attack_power = 9
attack_probability = 65
evasion = 30
category = "monster"
speed = 80
decision_attack_probability = 100
decision_defend_probability = 0
decision_flee_probability = 0
[[server_config.entity]]
name = "net.minecraft.entity.monster.EntityVindicator"
attack_power = 13
attack_probability = 70
evasion = 10
category = "monster"
speed = 35
decision_attack_probability = 100
decision_defend_probability = 0
decision_flee_probability = 0
[[server_config.entity]]
name = "net.minecraft.entity.monster.EntityWitch"
attack_power = 5
attack_probability = 75
attack_variance = 1
evasion = 8
category = "monster"
speed = 35
decision_attack_probability = 100
decision_defend_probability = 0
decision_flee_probability = 0
[[server_config.entity]]
name = "net.minecraft.entity.monster.EntityWitherSkeleton"
attack_power = 8
attack_probability = 70
attack_effect = "wither"
attack_effect_probability = 90
evasion = 7
category = "monster"
speed = 65
decision_attack_probability = 100
decision_defend_probability = 0
decision_flee_probability = 0
[[server_config.entity]]
name = "net.minecraft.entity.monster.EntityZombie"
attack_power = 3
attack_probability = 70
evasion = 5
category = "monster"
speed = 25
decision_attack_probability = 100
decision_defend_probability = 0
decision_flee_probability = 0
[[server_config.entity]]
name = "net.minecraft.entity.monster.EntityZombieVillager"
attack_power = 3
attack_probability = 70
evasion = 5
category = "monster"
speed = 25
decision_attack_probability = 100
decision_defend_probability = 0
decision_flee_probability = 0
[[server_config.entity]]
name = "net.minecraft.entity.passive.EntityBat"
attack_power = 0
attack_probability = 70
evasion = 35
category = "passive"
speed = 75
decision_attack_probability = 0
decision_defend_probability = 0
decision_flee_probability = 90
[[server_config.entity]]
name = "net.minecraft.entity.passive.EntityChicken"
attack_power = 0
attack_probability = 70
evasion = 10
category = "passive"
speed = 35
decision_attack_probability = 0
decision_defend_probability = 0
decision_flee_probability = 90
[[server_config.entity]]
name = "net.minecraft.entity.passive.EntityCow"
attack_power = 0
attack_probability = 50
evasion = 1
category = "passive"
speed = 20
decision_attack_probability = 0
decision_defend_probability = 10
decision_flee_probability = 80
[[server_config.entity]]
name = "net.minecraft.entity.passive.EntityDonkey"
attack_power = 0
attack_probability = 70
evasion = 10
category = "passive"
speed = 65
decision_attack_probability = 0
decision_defend_probability = 0
decision_flee_probability = 90
[[server_config.entity]]
name = "net.minecraft.entity.passive.EntityHorse"
attack_power = 0
attack_probability = 70
evasion = 10
category = "passive"
speed = 65
decision_attack_probability = 0
decision_defend_probability = 0
decision_flee_probability = 90
[[server_config.entity]]
name = "net.minecraft.entity.passive.EntityLlama"
attack_power = 1
attack_probability = 70
evasion = 10
category = "passive"
speed = 50
decision_attack_probability = 65
decision_defend_probability = 0
decision_flee_probability = 25
[[server_config.entity]]
name = "net.minecraft.entity.passive.EntityMooshroom"
attack_power = 0
attack_probability = 70
evasion = 1
category = "passive"
speed = 20
decision_attack_probability = 0
decision_defend_probability = 10
decision_flee_probability = 80
[[server_config.entity]]
name = "net.minecraft.entity.passive.EntityMule"
attack_power = 0
attack_probability = 70
evasion = 10
category = "passive"
speed = 50
decision_attack_probability = 0
decision_defend_probability = 0
decision_flee_probability = 90
[[server_config.entity]]
name = "net.minecraft.entity.passive.EntityOcelot"
attack_power = 1
attack_probability = 70
attack_variance = 1
evasion = 10
category = "passive"
speed = 75
decision_attack_probability = 0
decision_defend_probability = 0
decision_flee_probability = 90
[[server_config.entity]]
name = "net.minecraft.entity.passive.EntityParrot"
attack_power = 0
attack_probability = 70
evasion = 35
category = "passive"
speed = 70
decision_attack_probability = 0
decision_defend_probability = 0
decision_flee_probability = 90
[[server_config.entity]]
name = "net.minecraft.entity.passive.EntityPig"
attack_power = 0
attack_probability = 70
evasion = 10
category = "passive"
speed = 30
decision_attack_probability = 0
decision_defend_probability = 5
decision_flee_probability = 85
[[server_config.entity]]
name = "net.minecraft.entity.passive.EntityRabbit"
attack_power = 0
attack_probability = 70
evasion = 40
category = "passive"
speed = 75
decision_attack_probability = 0
decision_defend_probability = 0
decision_flee_probability = 100
[[server_config.entity]]
name = "net.minecraft.entity.passive.EntitySheep"
attack_power = 0
attack_probability = 70
evasion = 5
category = "passive"
speed = 30
decision_attack_probability = 0
decision_defend_probability = 0
decision_flee_probability = 90
[[server_config.entity]]
name = "net.minecraft.entity.passive.EntitySkeletonHorse"
attack_power = 0
attack_probability = 70
evasion = 5
category = "passive"
speed = 65
decision_attack_probability = 0
decision_defend_probability = 0
decision_flee_probability = 90
[[server_config.entity]]
name = "net.minecraft.entity.passive.EntitySquid"
attack_power = 0
attack_probability = 70
evasion = 15
category = "passive"
speed = 40
decision_attack_probability = 0
decision_defend_probability = 0
decision_flee_probability = 90
[[server_config.entity]]
name = "net.minecraft.entity.passive.EntityVillager"
attack_power = 0
attack_probability = 70
evasion = 5
category = "passive"
speed = 35
decision_attack_probability = 0
decision_defend_probability = 10
decision_flee_probability = 80
[[server_config.entity]]
name = "net.minecraft.entity.passive.EntityWolf"
attack_power = 4
attack_probability = 70
evasion = 20
category = "animal"
speed = 70
decision_attack_probability = 80
decision_defend_probability = 15
decision_flee_probability = 5
[[server_config.entity]]
name = "net.minecraft.entity.passive.EntityZombieHorse"
attack_power = 0
attack_probability = 70
evasion = 8
category = "passive"
speed = 65
decision_attack_probability = 0
decision_defend_probability = 0
decision_flee_probability = 90
[[server_config.entity]]
name = "net.minecraft.entity.boss.EntityDragon"
attack_power = 10
attack_probability = 70
attack_variance = 2
evasion = 27
category = "boss"
speed = 63
decision_attack_probability = 100
decision_defend_probability = 0
decision_flee_probability = 0
[[server_config.entity]]
name = "net.minecraft.entity.boss.EntityWither"
attack_power = 8
attack_probability = 70
attack_effect = "wither"
attack_effect_probability = 90
evasion = 20
category = "boss"
speed = 68
decision_attack_probability = 100
decision_defend_probability = 0
decision_flee_probability = 0

View file

@ -1,653 +0,0 @@
<TurnBasedMinecraftConfig>
<!-- If the mod has a newer version config, it will rename the existing config and place the new config -->
<Version>6</Version>
<!-- Number of seconds that an entity cannot enter battle after having just left one. Minimum 1, maximum 10-->
<LeaveBattleCooldown>5</LeaveBattleCooldown>
<!-- Maximum distance for a monster to start battle by targeting a player or other entity in turn-based-battle.
Minimum 5, maximum 50. -->
<AggroStartBattleDistance>8</AggroStartBattleDistance>
<!-- If not "false", uses old battle behavior where battles only start on attack/hit. Otherwise, battles can
start when a hostile mob targets a player or another entity in battle. -->
<OldBattleBehavior>false</OldBattleBehavior>
<!-- Determines who can disable turn-based-battle for themselves via command. Must be "op" or "any". If neither, defaults to "op"-->
<WhoCanDisableTurnBasedForSelf>op</WhoCanDisableTurnBasedForSelf>
<!-- 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>
<passive></passive>
<boss></boss>
</IgnoreBattleTypes>
<!-- BattleMusic determines what categories a type will play music for. -->
<!-- Music is placed in "config/TurnBasedMinecraft/Music/battle/" and "config/TurnBasedMinecraft/Music/silly/" -->
<BattleMusic>
<Normal>
<monster></monster>
<animal></animal>
<boss></boss>
<player></player>
</Normal>
<Silly>
<passive></passive>
</Silly>
</BattleMusic>
<PlayerStats>
<Speed>50</Speed>
<HasteSpeed>80</HasteSpeed> <!-- Speed used if the player entity has "speed" or "haste" effects -->
<SlowSpeed>20</SlowSpeed> <!-- Speed used if the player entity has "slow" effect -->
<AttackProbability>90</AttackProbability>
<Evasion>10</Evasion>
</PlayerStats>
<!-- Determines how many attacks a "defense" move can block before that entity's next turn. -->
<DefenseDuration>1</DefenseDuration>
<!-- Probability of escaping battle. If entity's speed is greater than the enemy team's speediest entity, then good probability is used. -->
<FleeGoodProbability>90</FleeGoodProbability>
<FleeBadProbability>40</FleeBadProbability>
<!-- Minimum hit percentage for every entity. If less than 1, it will be stored as 1 anyways. -->
<MinimumHitPercentage>4</MinimumHitPercentage>
<!-- Number of seconds to wait in battle for all players to make a decision. Minimum of 5 and maximum of 60. -->
<BattleTurnTimeSeconds>15</BattleTurnTimeSeconds>
<!-- Minimum percentage of silly entities in battle to use silly music -->
<SillyMusicThreshold>40</SillyMusicThreshold>
<!-- Battle stats for entities should be specified here. If an entity is not listed it cannot enter battle. -->
<!-- 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. -->
<!-- Evasion: Determines the percentage of evading attacks between 0 and 100. -->
<!-- Note that if the hit probability and evasion result in a percentage less than 1%, the hit chance will be changed ti 1% -->
<!-- Speed: Value in range of 0 to 100 that determines the order entities act in battle. Higher is sooner. Entities with same speed will take their turn as a group in random order (not at the same time). -->
<!-- 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 -->
<EntityEntry>
<Name>net.minecraft.entity.monster.EntityBlaze</Name>
<AttackPower Probability="50">5</AttackPower>
<AttackEffect Probability="75">fire</AttackEffect>
<Evasion>5</Evasion>
<Category>monster</Category>
<Speed>45</Speed>
<Decision>
<Attack>100</Attack>
<Defend>0</Defend>
<Flee>0</Flee>
</Decision>
</EntityEntry>
<EntityEntry>
<Name>net.minecraft.entity.monster.EntityCaveSpider</Name>
<AttackPower Probability="75">2</AttackPower>
<AttackEffect Probability="90">poison</AttackEffect>
<Evasion>35</Evasion>
<Category>monster</Category>
<Speed>75</Speed>
<Decision>
<Attack>100</Attack>
<Defend>0</Defend>
<Flee>0</Flee>
</Decision>
</EntityEntry>
<EntityEntry>
<Name>net.minecraft.entity.monster.EntityCreeper</Name>
<IgnoreBattle>true</IgnoreBattle>
<AttackPower Probability="17" Variance="7">15</AttackPower>
<Evasion>5</Evasion>
<Category>monster</Category>
<Speed>25</Speed>
<Decision>
<Attack>100</Attack>
<Defend>0</Defend>
<Flee>0</Flee>
</Decision>
</EntityEntry>
<EntityEntry>
<Name>net.minecraft.entity.monster.EntityElderGuardian</Name>
<AttackPower Probability="65">8</AttackPower>
<DefenseDamage Probability="35">2</DefenseDamage>
<Evasion>25</Evasion>
<Category>monster</Category>
<Speed>45</Speed>
<Decision>
<Attack>80</Attack>
<Defend>20</Defend>
<Flee>0</Flee>
</Decision>
</EntityEntry>
<EntityEntry>
<Name>net.minecraft.entity.monster.EntityEnderman</Name>
<AttackPower Probability="80">7</AttackPower>
<Evasion>40</Evasion>
<Category>monster</Category>
<Speed>70</Speed>
<Decision>
<Attack>100</Attack>
<Defend>0</Defend>
<Flee>0</Flee>
</Decision>
</EntityEntry>
<EntityEntry>
<Name>net.minecraft.entity.monster.EntityEndermite</Name>
<AttackPower Probability="80">2</AttackPower>
<Evasion>40</Evasion>
<Category>monster</Category>
<Speed>35</Speed>
<Decision>
<Attack>100</Attack>
<Defend>0</Defend>
<Flee>0</Flee>
</Decision>
</EntityEntry>
<EntityEntry>
<Name>net.minecraft.entity.monster.EntityEvoker</Name>
<AttackPower Probability="60">6</AttackPower>
<Evasion>35</Evasion>
<Category>monster</Category>
<Speed>35</Speed>
<Decision>
<Attack>100</Attack>
<Defend>0</Defend>
<Flee>0</Flee>
</Decision>
</EntityEntry>
<EntityEntry>
<Name>net.minecraft.entity.monster.EntityGhast</Name>
<IgnoreBattle>true</IgnoreBattle>
<AttackPower Probability="20">13</AttackPower>
<Evasion>35</Evasion>
<Category>monster</Category>
<Speed>60</Speed>
<Decision>
<Attack>75</Attack>
<Defend>0</Defend>
<Flee>25</Flee>
</Decision>
</EntityEntry>
<EntityEntry>
<Name>net.minecraft.entity.monster.EntityGiantZombie</Name>
<AttackPower Probability="35">11</AttackPower>
<Evasion>2</Evasion>
<Category>monster</Category>
<Speed>45</Speed>
<Decision>
<Attack>100</Attack>
<Defend>0</Defend>
<Flee>0</Flee>
</Decision>
</EntityEntry>
<EntityEntry>
<Name>net.minecraft.entity.monster.EntityGuardian</Name>
<AttackPower Probability="55">6</AttackPower>
<DefenseDamage Probability="30">2</DefenseDamage>
<Evasion>25</Evasion>
<Category>monster</Category>
<Speed>50</Speed>
<Decision>
<Attack>80</Attack>
<Defend>20</Defend>
<Flee>0</Flee>
</Decision>
</EntityEntry>
<EntityEntry>
<Name>net.minecraft.entity.monster.EntityHusk</Name>
<AttackPower Probability="70">3</AttackPower>
<AttackEffect Probability="95">hunger</AttackEffect>
<Evasion>5</Evasion>
<Category>monster</Category>
<Speed>25</Speed>
<Decision>
<Attack>100</Attack>
<Defend>0</Defend>
<Flee>0</Flee>
</Decision>
</EntityEntry>
<EntityEntry>
<Name>net.minecraft.entity.monster.EntityIronGolem</Name>
<AttackPower Probability="85" Variance="7">14</AttackPower>
<Evasion>5</Evasion>
<Category>monster</Category>
<Speed>45</Speed>
<Decision>
<Attack>100</Attack>
<Defend>0</Defend>
<Flee>0</Flee>
</Decision>
</EntityEntry>
<EntityEntry>
<Name>net.minecraft.entity.monster.EntityMagmaCube</Name>
<AttackPower Probability="35">3</AttackPower>
<Evasion>12</Evasion>
<Category>monster</Category>
<Speed>35</Speed>
<Decision>
<Attack>100</Attack>
<Defend>0</Defend>
<Flee>0</Flee>
</Decision>
</EntityEntry>
<EntityEntry>
<Name>net.minecraft.entity.monster.EntityPigZombie</Name>
<AttackPower Probability="70">8</AttackPower>
<Evasion>10</Evasion>
<Category>monster</Category>
<Speed>50</Speed>
<Decision>
<Attack>100</Attack>
<Defend>0</Defend>
<Flee>0</Flee>
</Decision>
</EntityEntry>
<EntityEntry>
<Name>net.minecraft.entity.monster.EntityPolarBear</Name>
<AttackPower Probability="67">6</AttackPower>
<Evasion>5</Evasion>
<Category>animal</Category>
<Speed>35</Speed>
<Decision>
<Attack>100</Attack>
<Defend>0</Defend>
<Flee>0</Flee>
</Decision>
</EntityEntry>
<EntityEntry>
<Name>net.minecraft.entity.monster.EntityShulker</Name>
<AttackPower Probability="80">4</AttackPower>
<Evasion>15</Evasion>
<Category>monster</Category>
<Speed>10</Speed>
<Decision>
<Attack>100</Attack>
<Defend>0</Defend>
<Flee>0</Flee>
</Decision>
</EntityEntry>
<EntityEntry>
<Name>net.minecraft.entity.monster.EntitySilverfish</Name>
<AttackPower Probability="85">1</AttackPower>
<Evasion>37</Evasion>
<Category>monster</Category>
<Speed>35</Speed>
<Decision>
<Attack>100</Attack>
<Defend>0</Defend>
<Flee>0</Flee>
</Decision>
</EntityEntry>
<EntityEntry>
<Name>net.minecraft.entity.monster.EntitySkeleton</Name>
<AttackPower Probability="75" Variance="1">3</AttackPower>
<Evasion>13</Evasion>
<Category>monster</Category>
<Speed>30</Speed>
<Decision>
<Attack>100</Attack>
<Defend>0</Defend>
<Flee>0</Flee>
</Decision>
</EntityEntry>
<EntityEntry>
<Name>net.minecraft.entity.monster.EntitySlime</Name>
<AttackPower Probability="35">2</AttackPower>
<Evasion>10</Evasion>
<Category>monster</Category>
<Speed>30</Speed>
<Decision>
<Attack>100</Attack>
<Defend>0</Defend>
<Flee>0</Flee>
</Decision>
</EntityEntry>
<EntityEntry>
<Name>net.minecraft.entity.monster.EntitySnowman</Name>
<AttackPower Probability="80">0</AttackPower>
<Evasion>5</Evasion>
<Category>passive</Category>
<Speed>60</Speed>
<Decision>
<Attack>100</Attack>
<Defend>0</Defend>
<Flee>0</Flee>
</Decision>
</EntityEntry>
<EntityEntry>
<Name>net.minecraft.entity.monster.EntitySpider</Name>
<AttackPower Probability="70">2</AttackPower>
<Evasion>25</Evasion>
<Category>monster</Category>
<Speed>70</Speed>
<Decision>
<Attack>100</Attack>
<Defend>0</Defend>
<Flee>0</Flee>
</Decision>
</EntityEntry>
<EntityEntry>
<Name>net.minecraft.entity.monster.EntityStray</Name>
<AttackPower Probability="75" Variance="1">3</AttackPower>
<AttackEffect Probability="90">slow</AttackEffect>
<Evasion>13</Evasion>
<Category>monster</Category>
<Speed>30</Speed>
<Decision>
<Attack>100</Attack>
<Defend>0</Defend>
<Flee>0</Flee>
</Decision>
</EntityEntry>
<EntityEntry>
<Name>net.minecraft.entity.monster.EntityVex</Name>
<AttackPower Probability="65">9</AttackPower>
<Evasion>30</Evasion>
<Category>monster</Category>
<Speed>80</Speed>
<Decision>
<Attack>100</Attack>
<Defend>0</Defend>
<Flee>0</Flee>
</Decision>
</EntityEntry>
<EntityEntry>
<Name>net.minecraft.entity.monster.EntityVindicator</Name>
<AttackPower Probability="70">13</AttackPower>
<Evasion>10</Evasion>
<Category>monster</Category>
<Speed>35</Speed>
<Decision>
<Attack>100</Attack>
<Defend>0</Defend>
<Flee>0</Flee>
</Decision>
</EntityEntry>
<EntityEntry>
<Name>net.minecraft.entity.monster.EntityWitch</Name>
<AttackPower Probability="75" Variance="1">5</AttackPower>
<Evasion>8</Evasion>
<Category>monster</Category>
<Speed>35</Speed>
<Decision>
<Attack>100</Attack>
<Defend>0</Defend>
<Flee>0</Flee>
</Decision>
</EntityEntry>
<EntityEntry>
<Name>net.minecraft.entity.monster.EntityWitherSkeleton</Name>
<AttackPower Probability="70">8</AttackPower>
<AttackEffect Probability="90">wither</AttackEffect>
<Evasion>7</Evasion>
<Category>monster</Category>
<Speed>65</Speed>
<Decision>
<Attack>100</Attack>
<Defend>0</Defend>
<Flee>0</Flee>
</Decision>
</EntityEntry>
<EntityEntry>
<Name>net.minecraft.entity.monster.EntityZombie</Name>
<AttackPower Probability="70">3</AttackPower>
<Evasion>5</Evasion>
<Category>monster</Category>
<Speed>25</Speed>
<Decision>
<Attack>100</Attack>
<Defend>0</Defend>
<Flee>0</Flee>
</Decision>
</EntityEntry>
<EntityEntry>
<Name>net.minecraft.entity.monster.EntityZombieVillager</Name>
<AttackPower Probability="70">3</AttackPower>
<Evasion>5</Evasion>
<Category>monster</Category>
<Speed>25</Speed>
<Decision>
<Attack>100</Attack>
<Defend>0</Defend>
<Flee>0</Flee>
</Decision>
</EntityEntry>
<EntityEntry>
<Name>net.minecraft.entity.passive.EntityBat</Name>
<AttackPower Probability="70">0</AttackPower>
<Evasion>35</Evasion>
<Category>passive</Category>
<Speed>75</Speed>
<Decision>
<Attack>0</Attack>
<Defend>0</Defend>
<Flee>90</Flee>
</Decision>
</EntityEntry>
<EntityEntry>
<Name>net.minecraft.entity.passive.EntityChicken</Name>
<AttackPower Probability="70">0</AttackPower>
<Evasion>10</Evasion>
<Category>passive</Category>
<Speed>35</Speed>
<Decision>
<Attack>0</Attack>
<Defend>0</Defend>
<Flee>90</Flee>
</Decision>
</EntityEntry>
<EntityEntry>
<Name>net.minecraft.entity.passive.EntityCow</Name>
<AttackPower Probability="50">0</AttackPower>
<Evasion>1</Evasion>
<Category>passive</Category>
<Speed>20</Speed>
<Decision>
<Attack>0</Attack>
<Defend>10</Defend>
<Flee>80</Flee>
</Decision>
</EntityEntry>
<EntityEntry>
<Name>net.minecraft.entity.passive.EntityDonkey</Name>
<AttackPower Probability="70">0</AttackPower>
<Evasion>10</Evasion>
<Category>passive</Category>
<Speed>65</Speed>
<Decision>
<Attack>0</Attack>
<Defend>0</Defend>
<Flee>90</Flee>
</Decision>
</EntityEntry>
<EntityEntry>
<Name>net.minecraft.entity.passive.EntityHorse</Name>
<AttackPower Probability="70">0</AttackPower>
<Evasion>10</Evasion>
<Category>passive</Category>
<Speed>65</Speed>
<Decision>
<Attack>0</Attack>
<Defend>0</Defend>
<Flee>90</Flee>
</Decision>
</EntityEntry>
<EntityEntry>
<Name>net.minecraft.entity.passive.EntityLlama</Name>
<AttackPower Probability="70">1</AttackPower>
<Evasion>10</Evasion>
<Category>passive</Category>
<Speed>50</Speed>
<Decision>
<Attack>65</Attack>
<Defend>0</Defend>
<Flee>25</Flee>
</Decision>
</EntityEntry>
<EntityEntry>
<Name>net.minecraft.entity.passive.EntityMooshroom</Name>
<AttackPower Probability="70">0</AttackPower>
<Evasion>1</Evasion>
<Category>passive</Category>
<Speed>20</Speed>
<Decision>
<Attack>0</Attack>
<Defend>10</Defend>
<Flee>80</Flee>
</Decision>
</EntityEntry>
<EntityEntry>
<Name>net.minecraft.entity.passive.EntityMule</Name>
<AttackPower Probability="70">0</AttackPower>
<Evasion>10</Evasion>
<Category>passive</Category>
<Speed>50</Speed>
<Decision>
<Attack>0</Attack>
<Defend>0</Defend>
<Flee>90</Flee>
</Decision>
</EntityEntry>
<EntityEntry>
<Name>net.minecraft.entity.passive.EntityOcelot</Name>
<AttackPower Probability="70" Variance="1">1</AttackPower>
<Evasion>10</Evasion>
<Category>passive</Category>
<Speed>75</Speed>
<Decision>
<Attack>0</Attack>
<Defend>0</Defend>
<Flee>90</Flee>
</Decision>
</EntityEntry>
<EntityEntry>
<Name>net.minecraft.entity.passive.EntityParrot</Name>
<AttackPower Probability="70">0</AttackPower>
<Evasion>35</Evasion>
<Category>passive</Category>
<Speed>70</Speed>
<Decision>
<Attack>0</Attack>
<Defend>0</Defend>
<Flee>90</Flee>
</Decision>
</EntityEntry>
<EntityEntry>
<Name>net.minecraft.entity.passive.EntityPig</Name>
<AttackPower Probability="70">0</AttackPower>
<Evasion>10</Evasion>
<Category>passive</Category>
<Speed>30</Speed>
<Decision>
<Attack>0</Attack>
<Defend>5</Defend>
<Flee>85</Flee>
</Decision>
</EntityEntry>
<EntityEntry>
<Name>net.minecraft.entity.passive.EntityRabbit</Name>
<AttackPower Probability="70">0</AttackPower>
<Evasion>40</Evasion>
<Category>passive</Category>
<Speed>75</Speed>
<Decision>
<Attack>0</Attack>
<Defend>0</Defend>
<Flee>100</Flee>
</Decision>
</EntityEntry>
<EntityEntry>
<Name>net.minecraft.entity.passive.EntitySheep</Name>
<AttackPower Probability="70">0</AttackPower>
<Evasion>5</Evasion>
<Category>passive</Category>
<Speed>30</Speed>
<Decision>
<Attack>0</Attack>
<Defend>0</Defend>
<Flee>90</Flee>
</Decision>
</EntityEntry>
<EntityEntry>
<Name>net.minecraft.entity.passive.EntitySkeletonHorse</Name>
<AttackPower Probability="70">0</AttackPower>
<Evasion>5</Evasion>
<Category>passive</Category>
<Speed>65</Speed>
<Decision>
<Attack>0</Attack>
<Defend>0</Defend>
<Flee>90</Flee>
</Decision>
</EntityEntry>
<EntityEntry>
<Name>net.minecraft.entity.passive.EntitySquid</Name>
<AttackPower Probability="70">0</AttackPower>
<Evasion>15</Evasion>
<Category>passive</Category>
<Speed>40</Speed>
<Decision>
<Attack>0</Attack>
<Defend>0</Defend>
<Flee>90</Flee>
</Decision>
</EntityEntry>
<EntityEntry>
<Name>net.minecraft.entity.passive.EntityVillager</Name>
<AttackPower Probability="70">0</AttackPower>
<Evasion>5</Evasion>
<Category>passive</Category>
<Speed>35</Speed>
<Decision>
<Attack>0</Attack>
<Defend>10</Defend>
<Flee>80</Flee>
</Decision>
</EntityEntry>
<EntityEntry>
<Name>net.minecraft.entity.passive.EntityWolf</Name>
<AttackPower Probability="70">4</AttackPower>
<Evasion>20</Evasion>
<Category>animal</Category>
<Speed>70</Speed>
<Decision>
<Attack>80</Attack>
<Defend>15</Defend>
<Flee>5</Flee>
</Decision>
</EntityEntry>
<EntityEntry>
<Name>net.minecraft.entity.passive.EntityZombieHorse</Name>
<AttackPower Probability="70">0</AttackPower>
<Evasion>8</Evasion>
<Category>passive</Category>
<Speed>65</Speed>
<Decision>
<Attack>0</Attack>
<Defend>0</Defend>
<Flee>90</Flee>
</Decision>
</EntityEntry>
<EntityEntry>
<Name>net.minecraft.entity.boss.EntityDragon</Name>
<AttackPower Probability="70" Variance="2">10</AttackPower>
<Evasion>27</Evasion>
<Category>boss</Category>
<Speed>63</Speed>
<Decision>
<Attack>100</Attack>
<Defend>0</Defend>
<Flee>0</Flee>
</Decision>
</EntityEntry>
<EntityEntry>
<Name>net.minecraft.entity.boss.EntityWither</Name>
<AttackPower Probability="70">8</AttackPower>
<Evasion>20</Evasion>
<AttackEffect Probability="90">wither</AttackEffect>
<Category>boss</Category>
<Speed>68</Speed>
<Decision>
<Attack>100</Attack>
<Defend>0</Defend>
<Flee>0</Flee>
</Decision>
</EntityEntry>
</TurnBasedMinecraftConfig>