From 7a99b63d7cdcf11dca005c52024f6353f9691e19 Mon Sep 17 00:00:00 2001 From: JoelStoner <12479157+JoelGodOfwar@users.noreply.github.com> Date: Wed, 19 Jul 2023 23:51:28 -0500 Subject: [PATCH] Add files via upload --- change_log.txt | 10 +- pom.xml | 10 +- .../github/joelgodofwar/mmh/MoreMobHeads.java | 2980 ++++----- .../joelgodofwar/mmh/enums/MobHeads.java | 675 +- .../mmh/handlers/EventHandler_1_19_R1.java | 4146 ++++++------ .../mmh/handlers/EventHandler_1_20_R1.java | 5804 ++++++++++------- .../joelgodofwar/mmh/util/ChatColorUtils.java | 64 +- .../joelgodofwar/mmh/util/StrUtils.java | 18 +- src/main/resources/chance_config.yml | 559 +- src/main/resources/lang/cs_CZ_mobnames.yml | 7 +- src/main/resources/lang/de_DE_mobnames.yml | 7 +- src/main/resources/lang/en_US_mobnames.yml | 10 +- src/main/resources/lang/es_ES_mobnames.yml | 7 +- src/main/resources/lang/es_MX_mobnames.yml | 7 +- src/main/resources/lang/fr_FR_mobnames.yml | 7 +- src/main/resources/lang/hu_HU_mobnames.yml | 7 +- src/main/resources/lang/it_IT_mobnames.yml | 7 +- src/main/resources/lang/ja_JP_mobnames.yml | 7 +- src/main/resources/lang/ko_KR_mobnames.yml | 7 +- src/main/resources/lang/lang_en_US.properties | 2 +- src/main/resources/lang/lol_US_mobnames.yml | 7 +- src/main/resources/lang/my_MY_mobnames.yml | 7 +- src/main/resources/lang/nl_NL_mobnames.yml | 7 +- src/main/resources/lang/pl_PL_mobnames.yml | 7 +- src/main/resources/lang/pt_BR_mobnames.yml | 7 +- src/main/resources/lang/ru_RU_mobnames.yml | 7 +- src/main/resources/lang/sv_SV_mobnames.yml | 7 +- src/main/resources/lang/tr_TR_mobnames.yml | 7 +- src/main/resources/lang/zh_CN_mobnames.yml | 9 +- src/main/resources/lang/zh_TW_mobnames.yml | 7 +- src/main/resources/messages.yml | 12 +- src/main/resources/plugin.yml | 5 +- 32 files changed, 7719 insertions(+), 6711 deletions(-) diff --git a/change_log.txt b/change_log.txt index a34bbab..c4340bc 100644 --- a/change_log.txt +++ b/change_log.txt @@ -1,6 +1,14 @@ 1.0.32 D1 Added TNT and End Crystal(Hands, Arrow, Snowball, Trident) as possible weapons in the beheading messages. -D2 +D2 Changed to a per player random system, this should make the odds more accurate. +D3 Changed Wither and Vex to be able to drop more than 1 head. Wither up to 3, Vex up to 2. +D4 Fixed a naming issue with Wither heads. +D5 Fixed default chance value to be 13% and not 0.13%. Fixed chance_config.yml values to be whole(1.0=1%) instead of fractional(0.01=1%). +D6 Fixing color code conversion for beheading messages. Fixed some damage sources. +D7 Fixed beheading weapon detection. messages.yml will now auto update, preserving old messages. +D8 Fixced GiveMH with several mob names. Added new Wither/Vex coding to 1.19 EventHandler. + Killed by lore can now display color codes. Can be changed in countrycode_mobnames.yml file. + If your en_US_mobnames.yml does not have "killedby: Killed By ", delete your lang folder, mmh will repopulate it. 1.0.31 D1 Added a String variable for configVersion. This fixes an issue with the chance_config.yml resetting on /mmh reload command. D2 Updated langauge files to I18n, Updated Version Checker, Added 22 named Tropical Fish. diff --git a/pom.xml b/pom.xml index 0360f62..c031825 100644 --- a/pom.xml +++ b/pom.xml @@ -2,7 +2,7 @@ 4.0.0 MoreMobHeads MoreMobHeads - 1.15_1.0.32.D1-DEV + 1.15_1.0.32.D8-DEV More Mob Heads Drops mob heads when a mob is killed. @@ -24,8 +24,8 @@ maven-compiler-plugin 3.1 - 1.8 - 1.8 + 11 + 11 @@ -101,7 +101,7 @@ lib.github.joelgodofwar MoreMobHeadsLib - 0.1.4-SNAPSHOT + 0.1.5-SNAPSHOT org.spigotmc @@ -113,7 +113,7 @@ org.bstats bstats-bukkit - 3.0.0 + 3.0.2 compile diff --git a/src/com/github/joelgodofwar/mmh/MoreMobHeads.java b/src/com/github/joelgodofwar/mmh/MoreMobHeads.java index e724c23..5a93f0c 100644 --- a/src/com/github/joelgodofwar/mmh/MoreMobHeads.java +++ b/src/com/github/joelgodofwar/mmh/MoreMobHeads.java @@ -46,6 +46,7 @@ import org.bukkit.block.Block; import org.bukkit.block.BlockState; import org.bukkit.block.Skull; import org.bukkit.block.TileState; +import org.bukkit.configuration.ConfigurationSection; import org.bukkit.configuration.InvalidConfigurationException; import org.bukkit.configuration.file.FileConfiguration; import org.bukkit.configuration.file.YamlConfiguration; @@ -112,6 +113,7 @@ import com.github.joelgodofwar.mmh.handlers.EventHandler_1_19_R1; import com.github.joelgodofwar.mmh.handlers.EventHandler_1_20_R1; import com.github.joelgodofwar.mmh.i18n.Translator; import com.github.joelgodofwar.mmh.util.Ansi; +import com.github.joelgodofwar.mmh.util.ChatColorUtils; import com.github.joelgodofwar.mmh.util.Metrics; import com.github.joelgodofwar.mmh.util.StrUtils; import com.github.joelgodofwar.mmh.util.Utils; @@ -144,6 +146,7 @@ public class MoreMobHeads extends JavaPlugin implements Listener{ public static boolean UpdateCheck; public String DownloadLink = "https://www.spigotmc.org/resources/moremobheads.73997"; /** end update checker variables */ + public boolean isDev = false; public static boolean debug = false; public static String daLang; //String updateURL = "https://github.com/JoelGodOfwar/MoreMobHeads/raw/master/versioncheck/1.14/version.txt"; @@ -169,7 +172,8 @@ public class MoreMobHeads extends JavaPlugin implements Listener{ File chanceFile; public YmlConfiguration chanceConfig; public YmlConfiguration oldchanceConfig; - public YmlConfiguration beheadingMessages; + public YmlConfiguration beheadingMessages = new YmlConfiguration(); + public YamlConfiguration oldMessages; File mobnameFile; FileConfiguration mobname; double defpercent = 0.013; @@ -191,13 +195,14 @@ public class MoreMobHeads extends JavaPlugin implements Listener{ File debugFile; Random random = new Random(); public String configVersion = "1.0.21"; - //public String langVersion = "1.0.20"; - public String chanceVersion = "1.0.22"; + public String messagesVersion = "1.0.2"; + public String chanceVersion = "1.0.25"; String pluginName = THIS_NAME; Translator lang2; private Set triggeredPlayers = new HashSet<>(); HashMap namedTropicalFish = new HashMap<>(); - + private Map chanceRandoms = new HashMap<>(); + @Override // TODO: onEnable public void onEnable(){ long startTime = System.currentTimeMillis(); @@ -207,6 +212,7 @@ public class MoreMobHeads extends JavaPlugin implements Listener{ debug = getConfig().getBoolean("debug", false); daLang = getConfig().getString("lang", "en_US"); oldconfig = new YamlConfiguration(); + oldMessages = new YamlConfiguration(); lang2 = new Translator(daLang, getDataFolder().toString()); THIS_NAME = this.getDescription().getName(); THIS_VERSION = this.getDescription().getVersion(); @@ -215,19 +221,19 @@ public class MoreMobHeads extends JavaPlugin implements Listener{ }else { pluginName = THIS_NAME; } - + datafolder = this.getDataFolder().toString(); colorful_console = getConfig().getBoolean("console.colorful_console", true); silent_console = getConfig().getBoolean("console.silent_console", false); - + loading(Ansi.GREEN + "**************************************" + Ansi.RESET); loading(Ansi.YELLOW + THIS_NAME + " v" + THIS_VERSION + Ansi.RESET + " Loading..."); - + debugFile = new File(this.getDataFolder() + File.separator + "logs" + File.separator + "mmh_debug.log"); if(!debugFile.exists()){ - saveResource("logs" + File.separatorChar + "mmh_debug.log", true); - } - + saveResource("logs" + File.separatorChar + "mmh_debug.log", true); + } + /** DEV check **/ File jarfile = this.getFile().getAbsoluteFile(); if(jarfile.toString().contains("-DEV")){ @@ -235,7 +241,7 @@ public class MoreMobHeads extends JavaPlugin implements Listener{ logDebug("Jar file contains -DEV, debug set to true"); //log("jarfile contains dev, debug set to true."); } - + /** Version Check */ if( !(Double.parseDouble( getMCVersion().substring(0, 4) ) >= 1.14) ){ // !getMCVersion().startsWith("1.14")&&!getMCVersion().startsWith("1.15")&&!getMCVersion().startsWith("1.16")&&!getMCVersion().startsWith("1.17") @@ -246,7 +252,7 @@ public class MoreMobHeads extends JavaPlugin implements Listener{ Bukkit.getPluginManager().disablePlugin(this); return; } - + /** Check for config */ try{ if(!getDataFolder().exists()){ @@ -266,7 +272,7 @@ public class MoreMobHeads extends JavaPlugin implements Listener{ stacktraceInfo(); e.printStackTrace(); } - consoleLog("Loading config file..."); + consoleLog("Loading config file..."); try { oldconfig.load(new File(getDataFolder() + "" + File.separatorChar + "config.yml")); } catch (Exception e2) { @@ -278,20 +284,15 @@ public class MoreMobHeads extends JavaPlugin implements Listener{ if(checkconfigversion != null){ log("config.yml, Expected version:[" + configVersion + "], Read version:[" + checkconfigversion + "]\nThese should be the same."); if(!checkconfigversion.equalsIgnoreCase(configVersion)){ - boolean isOldFormat; try { copyFile_Java7(getDataFolder() + "" + File.separatorChar + "config.yml",getDataFolder() + "" + File.separatorChar + "old_config.yml"); } catch (IOException e) { stacktraceInfo(); e.printStackTrace(); } - if(config.get("colorful_console", null) != null){ - isOldFormat = true; - }else{ - isOldFormat = false; - } + saveResource("config.yml", true); - + try { config.load(new File(getDataFolder(), "config.yml")); } catch (IOException | InvalidConfigurationException e1) { @@ -305,97 +306,50 @@ public class MoreMobHeads extends JavaPlugin implements Listener{ stacktraceInfo(); e1.printStackTrace(); } - if(isOldFormat){ - config.set("auto_update_check", oldconfig.get("auto_update_check", true)); - config.set("debug", oldconfig.get("debug", false)); - config.set("lang", oldconfig.get("lang", "en_US")); - config.set("announce.players.enabled", oldconfig.get("announce.players.enabled", true)); - config.set("announce.players.displayname", oldconfig.get("announce.players.displayname", true)); - config.set("announce.mobs.enabled", oldconfig.get("announce.mobs.enabled", true)); - config.set("announce.mobs.displayname", oldconfig.get("announce.mobs.displayname", true)); - config.set("console.colorful_console", oldconfig.get("colorful_console", true));// - config.set("console.silent_console", oldconfig.get("silent_console", false)); - config.set("console.longpluginname", oldconfig.get("longpluginname", true)); - config.set("vanilla_heads.creepers", oldconfig.get("creeper_vanilla_heads", false)); - config.set("vanilla_heads.ender_dragon", oldconfig.get("ender_dragon_vanilla_heads", false)); - config.set("vanilla_heads.skeleton", oldconfig.get("skeleton_vanilla_heads", false)); - config.set("vanilla_heads.wither_skeleton", oldconfig.get("wither_skeleton_vanilla_heads", false)); - config.set("vanilla_heads.zombie", oldconfig.get("zombie_vanilla_heads", false)); - config.set("world.whitelist", oldconfig.get("world.whitelist", "")); - config.set("world.blacklist", oldconfig.get("world.blacklist", "")); - config.set("mob.whitelist", oldconfig.get("mob.whitelist", "")); - config.set("mob.blacklist", oldconfig.get("mob.blacklist", "")); - config.set("mob.nametag", oldconfig.get("mob.nametag", false)); - config.set("lore.show_killer", oldconfig.get("show_killer", true)); - config.set("lore.show_plugin_name", oldconfig.get("show_plugin_name", true)); - config.set("wandering_trades.custom_wandering_trader", oldconfig.get("custom_wandering_trader", true)); - config.set("wandering_trades.player_heads.enabled", oldconfig.get("wandering_trades.player_heads.enabled", true)); - config.set("wandering_trades.player_heads.min", oldconfig.get("wandering_trader_min_player_heads", 0)); - config.set("wandering_trades.player_heads.max", oldconfig.get("wandering_trader_max_player_heads", 5)); - config.set("wandering_trades.block_heads.enabled", oldconfig.get("wandering_trades.block_heads.enabled", true)); - config.set("wandering_trades.block_heads.pre_116.min", oldconfig.get("wandering_trader_min_block_heads", 0)); - config.set("wandering_trades.block_heads.pre_116.max", oldconfig.get("wandering_trader_max_block_heads", 5)); - config.set("wandering_trades.block_heads.is_116.min", oldconfig.get("wandering_trader_min_block_heads", 0)); - config.set("wandering_trades.block_heads.is_116.max", oldconfig.get("wandering_trader_max_block_heads", 5)); - config.set("wandering_trades.block_heads.is_117.min", oldconfig.get("wandering_trader_min_block_heads", 0)); - config.set("wandering_trades.block_heads.is_117.max", oldconfig.get("wandering_trader_max_block_heads", 5)); - - config.set("wandering_trades.custom_trades.enabled", oldconfig.get("wandering_trader_custom_trades_enabled", false)); - config.set("wandering_trades.custom_trades.min", oldconfig.get("wandering_trader_min_custom_trades", 0)); - config.set("wandering_trades.custom_trades.max", oldconfig.get("wandering_trader_max_custom_trades", 5)); - config.set("apply_looting", oldconfig.get("apply_looting", true)); - config.set("whitelist.enforce", oldconfig.get("enforce_whitelist", true)); - config.set("whitelist.player_head_whitelist", oldconfig.get("player_head_whitelist", "names_go_here")); - config.set("blacklist.enforce", oldconfig.get("enforce_blacklist", true)); - config.set("blacklist.player_head_blacklist", oldconfig.get("player_head_blacklist", "names_go_here")); - config.set("event.piston_extend", oldconfig.get("piston_extend", true)); - }else{ - config.set("auto_update_check", oldconfig.get("auto_update_check", true)); - config.set("debug", oldconfig.get("debug", false)); - config.set("lang", oldconfig.get("lang", "en_US")); - config.set("announce.players.enabled", oldconfig.get("announce.players.enabled", true)); - config.set("announce.players.displayname", oldconfig.get("announce.players.displayname", true)); - config.set("announce.mobs.enabled", oldconfig.get("announce.mobs.enabled", true)); - config.set("announce.mobs.displayname", oldconfig.get("announce.mobs.displayname", true)); - config.set("console.colorful_console", oldconfig.get("console.colorful_console", true)); - config.set("console.silent_console", oldconfig.get("console.silent_console", false)); - config.set("console.longpluginname", oldconfig.get("longpluginname", true)); - config.set("vanilla_heads.creepers", oldconfig.get("vanilla_heads.creepers", false)); - config.set("vanilla_heads.ender_dragon", oldconfig.get("vanilla_heads.ender_dragon", false)); - config.set("vanilla_heads.skeleton", oldconfig.get("vanilla_heads.skeleton", false)); - config.set("vanilla_heads.wither_skeleton", oldconfig.get("vanilla_heads.wither_skeleton", false)); - config.set("vanilla_heads.zombie", oldconfig.get("vanilla_heads.zombie", false)); - config.set("world.whitelist", oldconfig.get("world.whitelist", "")); - config.set("world.blacklist", oldconfig.get("world.blacklist", "")); - config.set("mob.whitelist", oldconfig.get("mob.whitelist", "")); - config.set("mob.blacklist", oldconfig.get("mob.blacklist", "")); - config.set("mob.nametag", oldconfig.get("mob.nametag", false)); - config.set("lore.show_killer", oldconfig.get("lore.show_killer", true)); - config.set("lore.show_plugin_name", oldconfig.get("lore.show_plugin_name", true)); - config.set("wandering_trades.custom_wandering_trader", oldconfig.get("wandering_trades.custom_wandering_trader", true)); - config.set("wandering_trades.player_heads.enabled", oldconfig.get("wandering_trades.player_heads.enabled", true)); - config.set("wandering_trades.player_heads.min", oldconfig.get("wandering_trades.player_heads.min", 0)); - config.set("wandering_trades.player_heads.max", oldconfig.get("wandering_trades.player_heads.max", 5)); - config.set("wandering_trades.block_heads.enabled", oldconfig.get("wandering_trades.block_heads.enabled", true)); - config.set("wandering_trades.block_heads.pre_116.min", oldconfig.get("wandering_trader_min_block_heads", 0)); - config.set("wandering_trades.block_heads.pre_116.max", oldconfig.get("wandering_trader_max_block_heads", 5)); - config.set("wandering_trades.block_heads.is_116.min", oldconfig.get("wandering_trader_min_block_heads", 0)); - config.set("wandering_trades.block_heads.is_116.max", oldconfig.get("wandering_trader_max_block_heads", 5)); - config.set("wandering_trades.block_heads.is_117.min", oldconfig.get("wandering_trader_min_block_heads", 0)); - config.set("wandering_trades.block_heads.is_117.max", oldconfig.get("wandering_trader_max_block_heads", 5)); - - config.set("wandering_trades.custom_trades.enabled", oldconfig.get("wandering_trades.custom_trades.enabled", false)); - config.set("wandering_trades.custom_trades.min", oldconfig.get("wandering_trades.custom_trades.min", 0)); - config.set("wandering_trades.custom_trades.max", oldconfig.get("wandering_trades.custom_trades.max", 5)); - config.set("apply_looting", oldconfig.get("apply_looting", true)); - config.set("whitelist.enforce", oldconfig.get("whitelist.enforce", true)); - config.set("whitelist.player_head_whitelist", oldconfig.get("whitelist.player_head_whitelist", "names_go_here")); - config.set("blacklist.enforce", oldconfig.get("enforce_blacklist", true)); - config.set("blacklist.player_head_blacklist", oldconfig.get("blacklist.player_head_blacklist", "names_go_here")); - config.set("event.piston_extend", oldconfig.get("piston_extend", true)); - } - //config.set("", oldconfig.get("", true)); - + config.set("auto_update_check", oldconfig.get("auto_update_check", true)); + config.set("debug", oldconfig.get("debug", false)); + config.set("lang", oldconfig.get("lang", "en_US")); + config.set("announce.players.enabled", oldconfig.get("announce.players.enabled", true)); + config.set("announce.players.displayname", oldconfig.get("announce.players.displayname", true)); + config.set("announce.mobs.enabled", oldconfig.get("announce.mobs.enabled", true)); + config.set("announce.mobs.displayname", oldconfig.get("announce.mobs.displayname", true)); + config.set("console.colorful_console", oldconfig.get("console.colorful_console", true)); + config.set("console.silent_console", oldconfig.get("console.silent_console", false)); + config.set("console.longpluginname", oldconfig.get("longpluginname", true)); + config.set("vanilla_heads.creepers", oldconfig.get("vanilla_heads.creepers", false)); + config.set("vanilla_heads.ender_dragon", oldconfig.get("vanilla_heads.ender_dragon", false)); + config.set("vanilla_heads.skeleton", oldconfig.get("vanilla_heads.skeleton", false)); + config.set("vanilla_heads.wither_skeleton", oldconfig.get("vanilla_heads.wither_skeleton", false)); + config.set("vanilla_heads.zombie", oldconfig.get("vanilla_heads.zombie", false)); + config.set("world.whitelist", oldconfig.get("world.whitelist", "")); + config.set("world.blacklist", oldconfig.get("world.blacklist", "")); + config.set("mob.whitelist", oldconfig.get("mob.whitelist", "")); + config.set("mob.blacklist", oldconfig.get("mob.blacklist", "")); + config.set("mob.nametag", oldconfig.get("mob.nametag", false)); + config.set("lore.show_killer", oldconfig.get("lore.show_killer", true)); + config.set("lore.show_plugin_name", oldconfig.get("lore.show_plugin_name", true)); + config.set("wandering_trades.custom_wandering_trader", oldconfig.get("wandering_trades.custom_wandering_trader", true)); + config.set("wandering_trades.player_heads.enabled", oldconfig.get("wandering_trades.player_heads.enabled", true)); + config.set("wandering_trades.player_heads.min", oldconfig.get("wandering_trades.player_heads.min", 0)); + config.set("wandering_trades.player_heads.max", oldconfig.get("wandering_trades.player_heads.max", 5)); + config.set("wandering_trades.block_heads.enabled", oldconfig.get("wandering_trades.block_heads.enabled", true)); + config.set("wandering_trades.block_heads.pre_116.min", oldconfig.get("wandering_trader_min_block_heads", 0)); + config.set("wandering_trades.block_heads.pre_116.max", oldconfig.get("wandering_trader_max_block_heads", 5)); + config.set("wandering_trades.block_heads.is_116.min", oldconfig.get("wandering_trader_min_block_heads", 0)); + config.set("wandering_trades.block_heads.is_116.max", oldconfig.get("wandering_trader_max_block_heads", 5)); + config.set("wandering_trades.block_heads.is_117.min", oldconfig.get("wandering_trader_min_block_heads", 0)); + config.set("wandering_trades.block_heads.is_117.max", oldconfig.get("wandering_trader_max_block_heads", 5)); + + config.set("wandering_trades.custom_trades.enabled", oldconfig.get("wandering_trades.custom_trades.enabled", false)); + config.set("wandering_trades.custom_trades.min", oldconfig.get("wandering_trades.custom_trades.min", 0)); + config.set("wandering_trades.custom_trades.max", oldconfig.get("wandering_trades.custom_trades.max", 5)); + config.set("apply_looting", oldconfig.get("apply_looting", true)); + config.set("whitelist.enforce", oldconfig.get("whitelist.enforce", true)); + config.set("whitelist.player_head_whitelist", oldconfig.get("whitelist.player_head_whitelist", "names_go_here")); + config.set("blacklist.enforce", oldconfig.get("enforce_blacklist", true)); + config.set("blacklist.player_head_blacklist", oldconfig.get("blacklist.player_head_blacklist", "names_go_here")); + config.set("event.piston_extend", oldconfig.get("piston_extend", true)); + try { config.save(new File(getDataFolder(), "config.yml")); } catch (IOException e) { @@ -418,23 +372,73 @@ public class MoreMobHeads extends JavaPlugin implements Listener{ oldconfig = null; } /** end config check */ - - consoleLog("Loading messages.yml..."); - - File file = new File(getDataFolder(), "messages.yml"); - if(debug){logDebug("" + file);} - if(!file.exists()){ - log(Level.INFO, "messages.yml not found, creating!"); - saveResource("messages.yml", true); - } - beheadingMessages = new YmlConfiguration(); + + consoleLog("Loading messages file..."); try { - beheadingMessages.load(new File(getDataFolder(), "messages.yml")); - } catch (IOException | InvalidConfigurationException e1) { + oldMessages.load(new File(getDataFolder() + "" + File.separatorChar + "messages.yml")); + } catch (Exception e) { + logWarn("Could not load messages.yml"); stacktraceInfo(); - e1.printStackTrace(); + e.printStackTrace(); } - + + String checkmessagesversion = oldMessages.getString("version", "1.0.0"); + if (checkmessagesversion != null) { + log("messages.yml, Expected version:[" + messagesVersion + "], Read version:[" + checkmessagesversion + "]\nThese should be the same."); + if (!checkmessagesversion.equalsIgnoreCase(messagesVersion)) { + try { + copyFile_Java7(getDataFolder() + "" + File.separatorChar + "messages.yml", getDataFolder() + "" + File.separatorChar + "old_messages.yml"); + } catch (IOException e) { + stacktraceInfo(); + e.printStackTrace(); + } + saveResource("messages.yml", true); + + try { + beheadingMessages.load(new File(getDataFolder(), "messages.yml")); + } catch (IOException | InvalidConfigurationException e1) { + logWarn("Could not load messages.yml"); + stacktraceInfo(); + e1.printStackTrace(); + } + try { + oldMessages.load(new File(getDataFolder(), "old_messages.yml")); + } catch (IOException | InvalidConfigurationException e1) { + stacktraceInfo(); + e1.printStackTrace(); + } + + // Update messages + ConfigurationSection oldMessagesSection = oldMessages.getConfigurationSection("messages"); + //ConfigurationSection messagesSection = beheadingMessages.createSection("messages"); + + for (String messageKey : oldMessagesSection.getKeys(false)) { + String messageValue = oldMessagesSection.getString(messageKey); + beheadingMessages.set("messages." + messageKey, messageValue.replace("", "%killerName%") + .replace("", "%entityName%") + .replace("", "%weaponName%")); + } + + try { + beheadingMessages.save(new File(getDataFolder(), "messages.yml")); + } catch (IOException e) { + logWarn("Could not save old messages to messages.yml"); + stacktraceInfo(); + e.printStackTrace(); + } + log(Level.INFO, "messages.yml Updated! Old messages saved as old_messages.yml"); + } else { + try { + beheadingMessages.load(new File(getDataFolder(), "messages.yml")); + } catch (IOException | InvalidConfigurationException e1) { + logWarn("Could not load messages.yml"); + stacktraceInfo(); + e1.printStackTrace(); + } + } + oldMessages = null; + } + if(getConfig().getBoolean("wandering_trades.custom_wandering_trader", true)){ /** Trader heads load */ playerFile = new File(getDataFolder() + "" + File.separatorChar + "player_heads.yml");//\ @@ -444,7 +448,7 @@ public class MoreMobHeads extends JavaPlugin implements Listener{ log(Level.INFO, "player_heads.yml not found! copied player_heads.yml to " + getDataFolder() + ""); //ConfigAPI.copy(getResource("lang.yml"), langFile); // copies the yaml from your jar to the folder /plugin/ } - consoleLog("Loading player_heads file..."); + consoleLog("Loading player_heads file..."); playerHeads = new YamlConfiguration(); try { playerHeads.load(playerFile); @@ -452,8 +456,8 @@ public class MoreMobHeads extends JavaPlugin implements Listener{ stacktraceInfo(); e.printStackTrace(); } - - + + /** Custom Trades load */ customFile = new File(getDataFolder() + "" + File.separatorChar + "custom_trades.yml");//\ if(debug){logDebug("customFile=" + customFile.getPath());} @@ -462,7 +466,7 @@ public class MoreMobHeads extends JavaPlugin implements Listener{ log(Level.INFO, "custom_trades.yml not found! copied custom_trades.yml to " + getDataFolder() + ""); //ConfigAPI.copy(getResource("lang.yml"), langFile); // copies the yaml from your jar to the folder /plugin/ } - consoleLog("Loading custom_trades file..."); + consoleLog("Loading custom_trades file..."); traderCustom = new YamlConfiguration(); try { traderCustom.load(customFile); @@ -471,7 +475,7 @@ public class MoreMobHeads extends JavaPlugin implements Listener{ e.printStackTrace(); } } - + /** chanceConfig load */ chanceFile = new File(getDataFolder() + "" + File.separatorChar + "chance_config.yml");//\ if(debug){logDebug("chanceFile=" + chanceFile.getPath());} @@ -480,7 +484,7 @@ public class MoreMobHeads extends JavaPlugin implements Listener{ log(Level.INFO, "chance_config.yml not found! copied chance_config.yml to " + getDataFolder() + ""); //ConfigAPI.copy(getResource("lang.yml"), langFile); // copies the yaml from your jar to the folder /plugin/ } - consoleLog("Loading chance_config file..."); + consoleLog("Loading chance_config file..."); chanceConfig = new YmlConfiguration(); oldchanceConfig = new YmlConfiguration(); try { @@ -493,20 +497,21 @@ public class MoreMobHeads extends JavaPlugin implements Listener{ String checkchanceConfigversion = chanceConfig.getString("version", "1.0.0"); if(checkchanceConfigversion != null){ if(!checkchanceConfigversion.equalsIgnoreCase(chanceVersion)){ + logDebug("Expected v: " + chanceVersion + "got v: " + checkchanceConfigversion ); try { copyFile_Java7(getDataFolder() + "" + File.separatorChar + "chance_config.yml",getDataFolder() + "" + File.separatorChar + "old_chance_config.yml"); } catch (IOException e) { stacktraceInfo(); e.printStackTrace(); } - + saveResource("chance_config.yml", true); copyChance(getDataFolder() + "" + File.separatorChar + "old_chance_config.yml", chanceFile.getPath()); log(Level.INFO, "chance_config.yml updated."); } } - - + + /** Mob names translation */ langNameFile = new File(getDataFolder() + "" + File.separatorChar + "lang" + File.separatorChar, daLang + "_mobnames.yml");//\ if(debug){logDebug("langFilePath=" + langNameFile.getPath());} @@ -534,7 +539,7 @@ public class MoreMobHeads extends JavaPlugin implements Listener{ log(Level.INFO, "lang_mobnames file not found! copied cs_CZ_mobnames.yml, de_DE_mobnames.yml, en_US_mobnames.yml, es_ES_mobnames.yml, es_MX_mobnames.yml, fr_FR_mobnames.yml, hu_HU_mobnames.yml, it_IT_mobnames.yml, ja_JP_mobnames.yml, ko_KR_mobnames.yml, lol_US_mobnames.yml, my_MY_mobnames.yml, nl_NL_mobnames.yml, pl_PL_mobnames.yml, pt_BR_mobnames.yml, ru_RU_mobnames.yml, sv_SV_mobnames.yml, tr_TR_mobnames.yml, zh_CN_mobnames.yml, zh_TW_mobnames.yml to " + getDataFolder() + "" + File.separatorChar + "lang"); //ConfigAPI.copy(getResource("lang.yml"), langFile); // copies the yaml from your jar to the folder /plugin/ } - consoleLog("Loading language based mobname file..."); + consoleLog("Loading language based mobname file..."); langName = new YamlConfiguration(); try { langName.load(langNameFile); @@ -543,7 +548,7 @@ public class MoreMobHeads extends JavaPlugin implements Listener{ e.printStackTrace(); } /** Mob Names update check */ - String checklangnameConfigversion = langName.getString("allay", "outdated"); + String checklangnameConfigversion = langName.getString("vex.angry", "outdated"); if(checklangnameConfigversion != null){ if(checklangnameConfigversion.equalsIgnoreCase("outdated")){ log(Level.INFO, "lang_mobnames file outdated! Updating."); @@ -577,23 +582,23 @@ public class MoreMobHeads extends JavaPlugin implements Listener{ } } /** end Mob names translation */ - + world_whitelist = config.getString("world.whitelist", ""); world_blacklist = config.getString("world.blacklist", ""); mob_whitelist = config.getString("mob.whitelist", ""); mob_blacklist = config.getString("mob.blacklist", ""); - + getServer().getPluginManager().registerEvents(this, this); - + String jarfilename = this.getFile().getAbsoluteFile().toString(); loading(Ansi.GREEN + " ( " + Ansi.YELLOW + "-<[ PLEASE INCLUDE THIS WITH ANY ISSUE REPORTS ]>-" + Ansi.RESET); loading(Ansi.GREEN + " ) " + Ansi.WHITE + "This server is running " + Bukkit.getName() + " version " + Bukkit.getVersion() + " (Implementing API version " + Bukkit.getBukkitVersion() + ")" + Ansi.RESET); loading(Ansi.GREEN + " ( " + Ansi.WHITE + "vardebug=" + debug + " debug=" + getConfig().get("debug","error") + " in " + this.getDataFolder() + File.separatorChar + "config.yml" + Ansi.RESET); loading(Ansi.GREEN + " ) " + Ansi.WHITE + "jarfilename=" + StrUtils.Right(jarfilename, jarfilename.length() - jarfilename.lastIndexOf(File.separatorChar)) + Ansi.RESET); loading(Ansi.GREEN + " ( " + Ansi.YELLOW + "-<[ PLEASE INCLUDE THIS WITH ANY ISSUE REPORTS ]>-" + Ansi.RESET); - + //Bukkit.getServer().dispatchCommand(Bukkit.getConsoleSender(), "version"); - if(getConfig().getBoolean("debug")==true&&!(jarfile.toString().contains("-DEV"))){ + if((getConfig().getBoolean("debug")==true)&&!(jarfile.toString().contains("-DEV"))){ logDebug("Config.yml DUMP - INCLUDE THIS WITH ANY ISSUE REPORT VVV"); dumpConfig(getConfig()); /**logDebug("auto_update_check=" + getConfig().getBoolean("auto_update_check")); @@ -629,32 +634,34 @@ public class MoreMobHeads extends JavaPlugin implements Listener{ logDebug("event.piston_extend=" + getConfig().getString("event.piston_extend"));//*/ logDebug("Config.yml DUMP - INCLUDE THIS WITH ANY ISSUE REPORT ^^^"); } - - /** Register EventHandler */ + + /** Register EventHandler */ String packageName = this.getServer().getClass().getPackage().getName(); - String version = packageName.substring(packageName.lastIndexOf('.') + 2); - if(debug)logDebug("version=" + version); - if( version.contains("1_16_R") || version.contains("1_15_R1") || version.contains("1_14_R1") ){ - getServer().getPluginManager().registerEvents( new EventHandler_1_16_R2(this), this); - getCommand("mmh").setExecutor(new EventHandler_1_16_R2(this)); + String version = packageName.substring(packageName.lastIndexOf('.') + 2); + if(debug) { + logDebug("version=" + version); + } + if( version.contains("1_16_R") || version.contains("1_15_R1") || version.contains("1_14_R1") ){ + getServer().getPluginManager().registerEvents( new EventHandler_1_16_R2(this), this); + getCommand("mmh").setExecutor(new EventHandler_1_16_R2(this)); }else if( version.contains("1_17_R1") || version.contains("1_18_R1") || version.contains("1_18_R2")){ getServer().getPluginManager().registerEvents( new EventHandler_1_17_R1(this), this); //getCommand("mmh").setExecutor(new EventHandler_1_17_R1(this)); - + }else if( version.contains("1_19_R") ){ getServer().getPluginManager().registerEvents( new EventHandler_1_19_R1(this), this); //getCommand("mmh").setExecutor(new EventHandler_1_17_R1(this)); - + }else if( version.contains("1_20_R") ){ getServer().getPluginManager().registerEvents( new EventHandler_1_20_R1(this), this); //getCommand("mmh").setExecutor(new EventHandler_1_17_R1(this)); - + }else{ logWarn("Not compatible with this version of Minecraft:" + version); getServer().getPluginManager().disablePlugin(this); } - - namedTropicalFish.put("STRIPEY-ORANGE-GRAY", "ANEMONE"); + + namedTropicalFish.put("STRIPEY-ORANGE-GRAY", "ANEMONE"); namedTropicalFish.put("FLOPPER-GRAY-GRAY", "BLACK_TANG"); namedTropicalFish.put("FLOPPER-GRAY-BLUE", "BLUE_TANG"); namedTropicalFish.put("CLAYFISH-WHITE-GRAY", "BUTTERFLYFISH"); @@ -676,8 +683,8 @@ public class MoreMobHeads extends JavaPlugin implements Listener{ namedTropicalFish.put("SUNSTREAK-GRAY-WHITE", "TRIGGERFISH"); namedTropicalFish.put("DASHER-CYAN-YELLOW", "YELLOWTAIL_PARROTFISH"); namedTropicalFish.put("FLOPPER-YELLOW-YELLOW", "YELLOW_TANG"); - - /** Update Checker */ + + /** Update Checker */ if(UpdateCheck){ loading("Checking for updates..."); try { @@ -687,7 +694,7 @@ public class MoreMobHeads extends JavaPlugin implements Listener{ UpdateAvailable = true; // TODO: Update Checker UColdVers = updater.oldVersion(); UCnewVers = updater.newVersion(); - + loading("*!*!*!*!*!*!*!*!*!*!*!*!*!*!*!*!*!*!*!*!*!*!*!*!*!*!*!*"); loading("* " + get("mmh.version.message").toString().replace("", THIS_NAME) ); loading("* " + get("mmh.version.old_vers") + ChatColor.RED + UColdVers ); @@ -718,204 +725,204 @@ public class MoreMobHeads extends JavaPlugin implements Listener{ loading("*!*!*!*!*!*!*!*!*!*!*!*!*!*!*!*!*!*!*!*!*!*!*!*!*!*!*!*"); } /** end update checker */ - - - + + + consoleInfo("Enabled - Loading took " + LoadTime(startTime)); - + Metrics metrics = new Metrics(this, 6128); // New chart here // myPlugins() metrics.addCustomChart(new Metrics.AdvancedPie("my_other_plugins", new Callable>() { - @Override - public Map call() throws Exception { - Map valueMap = new HashMap<>(); - - if(getServer().getPluginManager().getPlugin("DragonDropElytra") != null){valueMap.put("DragonDropElytra", 1);} - if(getServer().getPluginManager().getPlugin("NoEndermanGrief") != null){valueMap.put("NoEndermanGrief", 1);} - if(getServer().getPluginManager().getPlugin("PortalHelper") != null){valueMap.put("PortalHelper", 1);} - if(getServer().getPluginManager().getPlugin("ShulkerRespawner") != null){valueMap.put("ShulkerRespawner", 1);} - //if(getServer().getPluginManager().getPlugin("MoreMobHeads") != null){valueMap.put("MoreMobHeads", 1);} - if(getServer().getPluginManager().getPlugin("SilenceMobs") != null){valueMap.put("SilenceMobs", 1);} - if(getServer().getPluginManager().getPlugin("SinglePlayerSleep") != null){valueMap.put("SinglePlayerSleep", 1);} - if(getServer().getPluginManager().getPlugin("VillagerWorkstationHighlights") != null){valueMap.put("VillagerWorkstationHighlights", 1);} - if(getServer().getPluginManager().getPlugin("RotationalWrench") != null){valueMap.put("RotationalWrench", 1);} - return valueMap; - } - })); + @Override + public Map call() throws Exception { + Map valueMap = new HashMap<>(); + + if(getServer().getPluginManager().getPlugin("DragonDropElytra") != null){valueMap.put("DragonDropElytra", 1);} + if(getServer().getPluginManager().getPlugin("NoEndermanGrief") != null){valueMap.put("NoEndermanGrief", 1);} + if(getServer().getPluginManager().getPlugin("PortalHelper") != null){valueMap.put("PortalHelper", 1);} + if(getServer().getPluginManager().getPlugin("ShulkerRespawner") != null){valueMap.put("ShulkerRespawner", 1);} + //if(getServer().getPluginManager().getPlugin("MoreMobHeads") != null){valueMap.put("MoreMobHeads", 1);} + if(getServer().getPluginManager().getPlugin("SilenceMobs") != null){valueMap.put("SilenceMobs", 1);} + if(getServer().getPluginManager().getPlugin("SinglePlayerSleep") != null){valueMap.put("SinglePlayerSleep", 1);} + if(getServer().getPluginManager().getPlugin("VillagerWorkstationHighlights") != null){valueMap.put("VillagerWorkstationHighlights", 1);} + if(getServer().getPluginManager().getPlugin("RotationalWrench") != null){valueMap.put("RotationalWrench", 1);} + return valueMap; + } + })); metrics.addCustomChart(new Metrics.AdvancedPie("vanilla_heads", new Callable>() { @Override public Map call() throws Exception { - Map valueMap = new HashMap<>(); - //int varTotal = myPlugins(); - valueMap.put("CREEPER " + getConfig().getString("vanilla_heads.creeper").toUpperCase(), 1); - valueMap.put("ENDER_DRAGON " + getConfig().getString("vanilla_heads.ender_dragon").toUpperCase(), 1); - valueMap.put("SKELETON " + getConfig().getString("vanilla_heads.skeleton").toUpperCase(), 1); - valueMap.put("WITHER_SKELETON " + getConfig().getString("vanilla_heads.wither_skeleton").toUpperCase(), 1); - valueMap.put("ZOMBIE " + getConfig().getString("vanilla_heads.zombie").toUpperCase(), 1); - return valueMap; - } - })); + Map valueMap = new HashMap<>(); + //int varTotal = myPlugins(); + valueMap.put("CREEPER " + getConfig().getString("vanilla_heads.creeper").toUpperCase(), 1); + valueMap.put("ENDER_DRAGON " + getConfig().getString("vanilla_heads.ender_dragon").toUpperCase(), 1); + valueMap.put("SKELETON " + getConfig().getString("vanilla_heads.skeleton").toUpperCase(), 1); + valueMap.put("WITHER_SKELETON " + getConfig().getString("vanilla_heads.wither_skeleton").toUpperCase(), 1); + valueMap.put("ZOMBIE " + getConfig().getString("vanilla_heads.zombie").toUpperCase(), 1); + return valueMap; + } + })); metrics.addCustomChart(new Metrics.SimplePie("auto_update_check", new Callable() { - @Override - public String call() throws Exception { - return "" + getConfig().getString("auto_update_check").toUpperCase(); - } - })); + @Override + public String call() throws Exception { + return "" + getConfig().getString("auto_update_check").toUpperCase(); + } + })); // add to site metrics.addCustomChart(new Metrics.SimplePie("var_debug", new Callable() { - @Override - public String call() throws Exception { - return "" + getConfig().getString("debug").toUpperCase(); - } - })); + @Override + public String call() throws Exception { + return "" + getConfig().getString("debug").toUpperCase(); + } + })); metrics.addCustomChart(new Metrics.SimplePie("var_lang", new Callable() { - @Override - public String call() throws Exception { - return "" + getConfig().getString("lang").toUpperCase(); - } - })); + @Override + public String call() throws Exception { + return "" + getConfig().getString("lang").toUpperCase(); + } + })); metrics.addCustomChart(new Metrics.SimplePie("whitelist.enforce", new Callable() { - @Override - public String call() throws Exception { - return "" + getConfig().getString("whitelist.enforce").toUpperCase(); - } - })); + @Override + public String call() throws Exception { + return "" + getConfig().getString("whitelist.enforce").toUpperCase(); + } + })); metrics.addCustomChart(new Metrics.SimplePie("blacklist.enforce", new Callable() { - @Override - public String call() throws Exception { - return "" + getConfig().getString("blacklist.enforce").toUpperCase(); - } - })); + @Override + public String call() throws Exception { + return "" + getConfig().getString("blacklist.enforce").toUpperCase(); + } + })); metrics.addCustomChart(new Metrics.SimplePie("custom_wandering_trader", new Callable() { - @Override - public String call() throws Exception { - return "" + getConfig().getString("wandering_trades.custom_wandering_trader").toUpperCase(); - } - })); + @Override + public String call() throws Exception { + return "" + getConfig().getString("wandering_trades.custom_wandering_trader").toUpperCase(); + } + })); metrics.addCustomChart(new Metrics.SimplePie("player_heads", new Callable() { - @Override - public String call() throws Exception { - return "" + getConfig().getString("wandering_trades.player_heads.enabled").toUpperCase(); - } - })); + @Override + public String call() throws Exception { + return "" + getConfig().getString("wandering_trades.player_heads.enabled").toUpperCase(); + } + })); metrics.addCustomChart(new Metrics.SimplePie("block_heads", new Callable() { - @Override - public String call() throws Exception { - return "" + getConfig().getString("wandering_trades.block_heads.enabled").toUpperCase(); - } - })); + @Override + public String call() throws Exception { + return "" + getConfig().getString("wandering_trades.block_heads.enabled").toUpperCase(); + } + })); metrics.addCustomChart(new Metrics.SimplePie("custom_trades", new Callable() { - @Override - public String call() throws Exception { - return "" + getConfig().getString("wandering_trades.custom_trades.enabled").toUpperCase(); - } - })); + @Override + public String call() throws Exception { + return "" + getConfig().getString("wandering_trades.custom_trades.enabled").toUpperCase(); + } + })); metrics.addCustomChart(new Metrics.SimplePie("apply_looting", new Callable() { - @Override - public String call() throws Exception { - return "" + getConfig().getString("apply_looting").toUpperCase(); - } - })); + @Override + public String call() throws Exception { + return "" + getConfig().getString("apply_looting").toUpperCase(); + } + })); metrics.addCustomChart(new Metrics.SimplePie("show_killer", new Callable() { - @Override - public String call() throws Exception { - return "" + getConfig().getString("lore.show_killer").toUpperCase(); - } - })); + @Override + public String call() throws Exception { + return "" + getConfig().getString("lore.show_killer").toUpperCase(); + } + })); metrics.addCustomChart(new Metrics.SimplePie("show_plugin_name", new Callable() { - @Override - public String call() throws Exception { - return "" + getConfig().getString("lore.show_plugin_name").toUpperCase(); - } - })); + @Override + public String call() throws Exception { + return "" + getConfig().getString("lore.show_plugin_name").toUpperCase(); + } + })); } @Override // TODO: onDisable public void onDisable(){ consoleInfo("Disabled"); } - + public void consoleInfo(String state) { loading(Ansi.GREEN + "**************************************" + Ansi.RESET); loading(Ansi.YELLOW + THIS_NAME + " v" + THIS_VERSION + Ansi.RESET + " is " + state); loading(Ansi.GREEN + "**************************************" + Ansi.RESET); } - + public void loading(String string) { if(!colorful_console) { string = Ansi.stripAnsi(string); } logger.info(string); } - + public void log(String string) { if(!colorful_console) { string = Ansi.stripAnsi(string); } log(Level.INFO, string); } - + public void log(Level level, String string){// TODO: log if(!colorful_console) { string = Ansi.stripAnsi(string); } logger.log(level, ChatColor.YELLOW + THIS_NAME + " v" + THIS_VERSION + ChatColor.RESET + " " + string ); } - + public void log(Level level, String string, Throwable thrown){// TODO: log if(!colorful_console) { string = Ansi.stripAnsi(string); } logger.log(level, ChatColor.YELLOW + THIS_NAME + " v" + THIS_VERSION + ChatColor.RESET + " " + string ); } - + public void logDebug(String dalog){ DateFormat dateFormat = new SimpleDateFormat("HH:mm:ss"); //"dd/MM HH:mm:ss" - String date = dateFormat.format(new Date()); - String message = "[" + date + "] [v" + THIS_VERSION + "] [DEBUG]: " + ChatColor.stripColor(dalog); - try { - FileWriter writer = new FileWriter(debugFile.toString(), true); - BufferedWriter bw = new BufferedWriter(writer); - bw.append(message + "\n"); - bw.close(); - } catch (IOException e) { - e.printStackTrace(); - } - log(Level.INFO, Ansi.RESET + "[" + Ansi.LIGHT_BLUE + "DEBUG" + Ansi.RESET + "]" + dalog + Ansi.RESET ); + String date = dateFormat.format(new Date()); + String message = "[" + date + "] [v" + THIS_VERSION + "] [DEBUG]: " + ChatColor.stripColor(dalog); + try { + FileWriter writer = new FileWriter(debugFile.toString(), true); + BufferedWriter bw = new BufferedWriter(writer); + bw.append(message + "\n"); + bw.close(); + } catch (IOException e) { + e.printStackTrace(); + } + log(Level.INFO, Ansi.RESET + "[" + Ansi.LIGHT_BLUE + "DEBUG" + Ansi.RESET + "]" + dalog + Ansi.RESET ); //log(Ansi.RED + "[DEBUG] " + Ansi.RESET + dalog); } public void logWarn(String dalog){ DateFormat dateFormat = new SimpleDateFormat("dd/MM HH:mm:ss"); - String date = dateFormat.format(new Date()); - String message = "[" + date + "] [WARN]: " + dalog; - logger.warning(message + "\n"); - try { - FileWriter writer = new FileWriter(debugFile, true); - BufferedWriter bw = new BufferedWriter(writer); - bw.append(message); - bw.close(); - } catch (IOException e) { - e.printStackTrace(); - } - + String date = dateFormat.format(new Date()); + String message = "[" + date + "] [WARN]: " + dalog; + logger.warning(message + "\n"); + try { + FileWriter writer = new FileWriter(debugFile, true); + BufferedWriter bw = new BufferedWriter(writer); + bw.append(message); + bw.close(); + } catch (IOException e) { + e.printStackTrace(); + } + log(Level.WARNING, Ansi.RESET + "[" + Ansi.LIGHT_YELLOW + "WARNING" + Ansi.RESET + "] " + dalog + Ansi.RESET); } - + public static String getMCVersion() { String strVersion = Bukkit.getVersion(); strVersion = strVersion.substring(strVersion.indexOf("MC: "), strVersion.length()); strVersion = strVersion.replace("MC: ", "").replace(")", ""); return strVersion; } - - + + public void giveMobHead(LivingEntity mob, String name){ ItemStack helmet = new ItemStack(Material.PLAYER_HEAD, 1); SkullMeta meta = (SkullMeta)helmet.getItemMeta(); - meta.setDisplayName(name + "'s Head"); + meta.setDisplayName(name + "'s Head"); meta.setOwner(name); //.setOwner(name); - helmet.setItemMeta(meta);// e2d4c388-42d5-4a96-b4c9-623df7f5e026 + helmet.setItemMeta(meta);// e2d4c388-42d5-4a96-b4c9-623df7f5e026 mob.getEquipment().setHelmet(helmet); helmet.setItemMeta(meta); mob.getEquipment().setHelmet(helmet); @@ -925,25 +932,25 @@ public class MoreMobHeads extends JavaPlugin implements Listener{ pdc.set(NAMETAG_KEY, PersistentDataType.STRING, "nametag"); } } - + public void givePlayerHead(Player player, String playerName){ ItemStack playerHead = new ItemStack(Material.PLAYER_HEAD, 1); SkullMeta meta = (SkullMeta)playerHead.getItemMeta(); - meta.setDisplayName(playerName + "'s Head"); + meta.setDisplayName(playerName + "'s Head"); meta.setOwner(playerName); //.setOwner(name); ArrayList lore = new ArrayList(); if(getConfig().getBoolean("lore.show_plugin_name", true)){ lore.add(ChatColor.AQUA + "" + THIS_NAME); } meta.setLore(lore); - playerHead.setItemMeta(meta);// e2d4c388-42d5-4a96-b4c9-623df7f5e026 + playerHead.setItemMeta(meta);// e2d4c388-42d5-4a96-b4c9-623df7f5e026 //player.getEquipment().setHelmet(playerHead); - + playerHead.setItemMeta(meta); - + player.getWorld().dropItemNaturally(player.getLocation(), MoreMobHeadsLib.addSound( playerHead, EntityType.PLAYER)); } - + public void giveBlockHead(Player player, String blockName) { if(debug) {logDebug("giveBlockHead START");} ItemStack blockStack = null; @@ -971,21 +978,22 @@ public class MoreMobHeads extends JavaPlugin implements Listener{ /** Add translation for this line. ***************************************************************************************************** */ player.sendMessage(THIS_NAME + " v" + THIS_VERSION + " Sorry could not find \"" + blockName + "\""); // TODO: Add translation for this line. } - if( blockStack != null && blockStack.getType() != Material.AIR ) { + if( (blockStack != null) && (blockStack.getType() != Material.AIR) ) { player.getWorld().dropItemNaturally(player.getLocation(), blockStack); if(debug) {logDebug("GBH BlockHead given to " + player.getName());} } if(debug) {logDebug("giveBlockHead END");} } - + public boolean isInventoryFull(Player p) { - return !(p.getInventory().firstEmpty() == -1); + return !(p.getInventory().firstEmpty() == -1); } - + @EventHandler public void onPlayerInteractEvent(PlayerInteractEntityEvent event){// TODO: PlayerInteractEntityEvent - if(!(event.getPlayer() instanceof Player)) + if(!(event.getPlayer() instanceof Player)) { return; + } try{ Player player = event.getPlayer(); if(player.hasPermission("moremobheads.nametag")){ @@ -1003,23 +1011,23 @@ public class MoreMobHeads extends JavaPlugin implements Listener{ name = player.getInventory().getItemInOffHand().getItemMeta().getDisplayName(); if(debug){logDebug("PIEE " + player.getDisplayName() + " Off hand name=" + name);}; } - - /** experimental code */ + + /** experimental code */ /*ItemStack itemstack = player.getInventory().getItemInOffHand(); getConfig().set("itemstack", itemstack); saveConfig();*/ - // log("itemstack set"); - + // log("itemstack set"); + //player.getInventory().addItem(getConfig().getItemStack("itemstack")); - + /*Villager villager = (Villager) mob; List recipes = new ArrayList(); MerchantRecipe recipe = new MerchantRecipe(getConfig().getItemStack("itemstack"), 1); recipe.addIngredient(new ItemStack(Material.EMERALD)); recipes.add(recipe); villager.setRecipes(recipes);*/ - /** experimental code */ - + /** experimental code */ + //player.sendMessage("Testing"); if(material.equals(Material.NAME_TAG)||material2.equals(Material.NAME_TAG)){ if(getServer().getPluginManager().getPlugin("SilenceMobs") != null){ @@ -1033,7 +1041,7 @@ public class MoreMobHeads extends JavaPlugin implements Listener{ if(debug) {log("canwearhead=" + NameTag.canWearHead(mob));} if(NameTag.canWearHead(mob)){ // Piglin, drowned, husk, pillager, stray - + //log("mob=" + mob.getType().toString()); /**if(getConfig().getBoolean("enforce_whitelist", false)){ // if(getConfig().getString("whitelist.player_head_whitelist", "").toLowerCase().contains(name.toLowerCase())){ @@ -1082,16 +1090,12 @@ public class MoreMobHeads extends JavaPlugin implements Listener{ } } } - }else { - if(debug) {log("mob.nametag=false");} - } - }else{ - //ZombieVillager mob = (ZombieVillager) event.getRightClicked(); - if(debug) {log("moremobheads.nametag=false");} - //player.sendMessage(mob.getName() + " profession= " + mob.getVillagerProfession()); + } else if(debug) {log("mob.nametag=false");} } - //ZombieVillager mob = (ZombieVillager) event.getRightClicked(); - + else //ZombieVillager mob = (ZombieVillager) event.getRightClicked(); + if(debug) {log("moremobheads.nametag=false");} + //player.sendMessage(mob.getName() + " profession= " + mob.getVillagerProfession()); + //player.sendMessage(mob.getName() + " profession= " + mob.getVillagerProfession()); }catch (Exception e){ stacktraceInfo(); @@ -1099,7 +1103,7 @@ public class MoreMobHeads extends JavaPlugin implements Listener{ } } - + public ItemStack dropMobHead(Entity entity, String name, Player killer){// TODO: dropMobHead ItemStack helmet = new ItemStack(Material.PLAYER_HEAD, 1); SkullMeta meta = (SkullMeta)helmet.getItemMeta(); @@ -1107,8 +1111,8 @@ public class MoreMobHeads extends JavaPlugin implements Listener{ meta.setDisplayName(name + "'s Head"); ArrayList lore = new ArrayList(); if(getConfig().getBoolean("lore.show_killer", true)){ - String killed_by = (String) get("mmh.message.lore_killed_by", "Killed by "); - lore.add(ChatColor.RESET + killed_by.replace("", "" + ChatColor.RESET + ChatColor.YELLOW + killer.getDisplayName()) ); + String killed_by = ChatColorUtils.setColors( langName.getString("killedby", "Killed By ") ); + lore.add(ChatColor.RESET + killed_by.replace("", "" + killer.getDisplayName()) ); //lore.add(ChatColor.RESET + "Killed by " + ChatColor.RESET + ChatColor.YELLOW + killer.getDisplayName()); } if(getConfig().getBoolean("lore.show_plugin_name", true)){ @@ -1121,11 +1125,20 @@ public class MoreMobHeads extends JavaPlugin implements Listener{ entity.getWorld().dropItemNaturally(entity.getLocation(), helmet); return helmet; } - + public boolean DropIt(EntityDeathEvent event, double chancepercent){// TODO: DropIt + if(event.getEntity().getKiller() instanceof Creeper) { + Creeper creeper = (Creeper) event.getEntity().getKiller(); + if(creeper.isPowered()) { + return true; + }else { + return false; + } + } + Player player = event.getEntity().getKiller(); ItemStack itemstack = event.getEntity().getKiller().getInventory().getItemInMainHand(); if(itemstack != null){ - if(debug){logDebug("DI itemstack=" + itemstack.getType().toString() + " line:1023");} + if(debug){logDebug("DI itemstack=" + itemstack.getType().toString());} int enchantmentlevel = 0; if(getConfig().getBoolean("apply_looting", true)){ enchantmentlevel = itemstack.getEnchantmentLevel(Enchantment.LOOT_BONUS_MOBS); @@ -1133,119 +1146,103 @@ public class MoreMobHeads extends JavaPlugin implements Listener{ if(chancepercent == 0){ enchantmentlevel = 0; } - if(debug){logDebug("DI enchantmentlevel=" + enchantmentlevel + " line:1031");} - double enchantmentlevelpercent = ((double)enchantmentlevel / 100); - if(debug){logDebug("DI enchantmentlevelpercent=" + enchantmentlevelpercent + " line:1033");} - double chance = Math.random(); - if(debug){logDebug("DI chance=" + chance + " line:1035");} - - if(debug){logDebug("DI chancepercent=" + chancepercent + " line:1037");} + if(debug){logDebug("DI enchantmentlevel=" + enchantmentlevel);} + double enchantmentlevelpercent = enchantmentlevel; + if(debug){logDebug("DI enchantmentlevelpercent=" + enchantmentlevelpercent);} + Random chanceRandom = chanceRandoms.computeIfAbsent(player, p -> new Random(p.getUniqueId().hashCode())); + double chance = chanceRandom.nextDouble() * 100; + if(debug){logDebug("DI chance=" + chance);} + if(debug){logDebug("DI chancepercent=" + chancepercent);} chancepercent = chancepercent + enchantmentlevelpercent; - if(debug){logDebug("DI chancepercent2=" + chancepercent + " line:1039");} - if (chancepercent > chance){ + if(debug){logDebug("DI chancepercent2=" + chancepercent);} + if ((chancepercent >= chance) || isDev){ return true; } } return false; } - + public boolean DropIt2( double chancepercent){// TODO: DropIt - int enchantmentlevel = 0; - if(chancepercent == 0){ - enchantmentlevel = 0; - } - if(debug){logDebug("DI enchantmentlevel=" + enchantmentlevel + " line:1031");} - double enchantmentlevelpercent = ((double)enchantmentlevel / 100); - if(debug){logDebug("DI enchantmentlevelpercent=" + enchantmentlevelpercent + " line:1033");} - double chance = Math.random(); - if(debug){logDebug("DI chance=" + chance + " line:1035");} - - if(debug){logDebug("DI chancepercent=" + chancepercent + " line:1037");} - chancepercent = chancepercent + enchantmentlevelpercent; - if(debug){logDebug("DI chancepercent2=" + chancepercent + " line:1039");} - if (chancepercent > chance){ - return true; - } - return false; + double chance = Math.random() * 100; + if(debug){logDebug("DI2 chance=" + chance); + logDebug("DI2 chancepercent=" + chancepercent);} + return chancepercent >= chance; } - - - - public int randomBetween(int min, int max){ + + public int randomBetween(int min, int max) { Random r = new Random(); - int random = r.nextInt(max + 1); - if((min + random) > max){ - return max; - } - return min + random; + int random = r.nextInt((max - min) + 1) + min; + return random; } - + @EventHandler public void onPlayerJoinEvent(PlayerJoinEvent event) // TODO: OnPlayerJoin - { - Player player = event.getPlayer(); - //if(p.isOp() && UpdateCheck||p.hasPermission("moremobheads.showUpdateAvailable")){ - /** Notify Ops */ - if(UpdateAvailable&&(player.isOp()||player.hasPermission("moremobheads.showUpdateAvailable"))){ - String links = "[\"\",{\"text\":\"\",\"bold\":true,\"color\":\"gold\",\"clickEvent\":{\"action\":\"open_url\",\"value\":\"/history\"},\"hoverEvent\":{\"action\":\"show_text\",\"contents\":\"\"}},{\"text\":\" \",\"hoverEvent\":{\"action\":\"show_text\",\"contents\":\"\"}},{\"text\":\"| \"},{\"text\":\"\",\"bold\":true,\"color\":\"gold\",\"clickEvent\":{\"action\":\"open_url\",\"value\":\"https://ko-fi.com/joelgodofwar\"},\"hoverEvent\":{\"action\":\"show_text\",\"contents\":\"\"}},{\"text\":\" | \"},{\"text\":\"\",\"bold\":true,\"color\":\"gold\",\"clickEvent\":{\"action\":\"open_url\",\"value\":\"/updates\"},\"hoverEvent\":{\"action\":\"show_text\",\"contents\":\"\"}}]"; - links = links.replace("", DownloadLink).replace("", get("mmh.version.download")) - .replace("", get("mmh.version.donate")).replace("", get("mmh.version.please_update")) - .replace("", get("mmh.version.donate.message")).replace("", get("mmh.version.notes")) - .replace("", get("mmh.version.notes.message")); - String versions = "" + ChatColor.GRAY + get("mmh.version.new_vers") + ": " + ChatColor.GREEN + "{nVers} | " + get("mmh.version.old_vers") + ": " + ChatColor.RED + "{oVers}"; - player.sendMessage("" + ChatColor.GRAY + get("mmh.version.message").toString().replace("", ChatColor.GOLD + THIS_NAME + ChatColor.GRAY) ); - Utils.sendJson(player, links); - player.sendMessage(versions.replace("{nVers}", UCnewVers).replace("{oVers}", UColdVers)); - } - DateTimeFormatter dtf = DateTimeFormatter.ofPattern("MM/dd"); - LocalDate localDate = LocalDate.now(); - String daDay = dtf.format(localDate); + { + Player player = event.getPlayer(); + //if(p.isOp() && UpdateCheck||p.hasPermission("moremobheads.showUpdateAvailable")){ + /** Notify Ops */ + if(UpdateAvailable&&(player.isOp()||player.hasPermission("moremobheads.showUpdateAvailable"))){ + String links = "[\"\",{\"text\":\"\",\"bold\":true,\"color\":\"gold\",\"clickEvent\":{\"action\":\"open_url\",\"value\":\"/history\"},\"hoverEvent\":{\"action\":\"show_text\",\"contents\":\"\"}},{\"text\":\" \",\"hoverEvent\":{\"action\":\"show_text\",\"contents\":\"\"}},{\"text\":\"| \"},{\"text\":\"\",\"bold\":true,\"color\":\"gold\",\"clickEvent\":{\"action\":\"open_url\",\"value\":\"https://ko-fi.com/joelgodofwar\"},\"hoverEvent\":{\"action\":\"show_text\",\"contents\":\"\"}},{\"text\":\" | \"},{\"text\":\"\",\"bold\":true,\"color\":\"gold\",\"clickEvent\":{\"action\":\"open_url\",\"value\":\"/updates\"},\"hoverEvent\":{\"action\":\"show_text\",\"contents\":\"\"}}]"; + links = links.replace("", DownloadLink).replace("", get("mmh.version.download")) + .replace("", get("mmh.version.donate")).replace("", get("mmh.version.please_update")) + .replace("", get("mmh.version.donate.message")).replace("", get("mmh.version.notes")) + .replace("", get("mmh.version.notes.message")); + String versions = "" + ChatColor.GRAY + get("mmh.version.new_vers") + ": " + ChatColor.GREEN + "{nVers} | " + get("mmh.version.old_vers") + ": " + ChatColor.RED + "{oVers}"; + player.sendMessage("" + ChatColor.GRAY + get("mmh.version.message").toString().replace("", ChatColor.GOLD + THIS_NAME + ChatColor.GRAY) ); + Utils.sendJson(player, links); + player.sendMessage(versions.replace("{nVers}", UCnewVers).replace("{oVers}", UColdVers)); + } + DateTimeFormatter dtf = DateTimeFormatter.ofPattern("MM/dd"); + LocalDate localDate = LocalDate.now(); + String daDay = dtf.format(localDate); - if (daDay.equals("04/16")) { - String playerId = player.getUniqueId().toString(); - if (!triggeredPlayers.contains(playerId)) { - if (isPluginRequired(THIS_NAME)) { - player.sendTitle("Happy Birthday Mom", "I miss you - 4/16/1954-12/23/2022", 10, 70, 20); - } - triggeredPlayers.add(playerId); - } - } - if(player.getDisplayName().equals("JoelYahwehOfWar")||player.getDisplayName().equals("JoelGodOfWar")){ - player.sendMessage(THIS_NAME + " " + THIS_VERSION + " Hello father!"); - //p.sendMessage("seed=" + p.getWorld().getSeed()); + if (daDay.equals("04/16")) { + String playerId = player.getUniqueId().toString(); + if (!triggeredPlayers.contains(playerId)) { + if (isPluginRequired(THIS_NAME)) { + player.sendTitle("Happy Birthday Mom", "I miss you - 4/16/1954-12/23/2022", 10, 70, 20); + } + triggeredPlayers.add(playerId); } + } + if(player.getDisplayName().equals("JoelYahwehOfWar")||player.getDisplayName().equals("JoelGodOfWar")){ + player.sendMessage(THIS_NAME + " " + THIS_VERSION + " Hello father!"); + //p.sendMessage("seed=" + p.getWorld().getSeed()); + } } public void sendJson(Player player, String string) { - Bukkit.getServer().dispatchCommand(Bukkit.getConsoleSender(), "tellraw \"" + player.getName() + - "\" " + string); + Bukkit.getServer().dispatchCommand(Bukkit.getConsoleSender(), "tellraw \"" + player.getName() + + "\" " + string); } - + public void makeHead(EntityDeathEvent event, Material material){// TODO: makeHead - ItemStack itemstack = event.getEntity().getKiller().getInventory().getItemInMainHand(); - if(itemstack != null){ - if(debug){logDebug("itemstack=" + itemstack.getType().toString() + " line:954");} - int enchantmentlevel = itemstack.getEnchantmentLevel(Enchantment.LOOT_BONUS_MOBS);//.containsEnchantment(Enchantment.LOOT_BONUS_MOBS); - if(debug){logDebug("enchantmentlevel=" + enchantmentlevel + " line:956");} - double enchantmentlevelpercent = ((double)enchantmentlevel / 100); - if(debug){logDebug("enchantmentlevelpercent=" + enchantmentlevelpercent + " line:958");} - double chance = Math.random(); - if(debug){logDebug("chance=" + chance + " line:960");} - double chancepercent = 0.25; /** Set to check config.yml later*/ - if(debug){logDebug("chancepercent=" + chancepercent + " line:962");} - chancepercent = chancepercent + enchantmentlevelpercent; - if(debug){logDebug("chancepercent2=" + chancepercent + " line:964");} - if(chancepercent > 0.00 && chancepercent < 0.99){ - if (chancepercent > chance){ - event.getDrops().add(new ItemStack(material, 1)); - } + ItemStack itemstack = event.getEntity().getKiller().getInventory().getItemInMainHand(); + if(itemstack != null){ + if(debug){logDebug("itemstack=" + itemstack.getType().toString() + " line:954");} + int enchantmentlevel = itemstack.getEnchantmentLevel(Enchantment.LOOT_BONUS_MOBS);//.containsEnchantment(Enchantment.LOOT_BONUS_MOBS); + if(debug){logDebug("enchantmentlevel=" + enchantmentlevel + " line:956");} + double enchantmentlevelpercent = ((double)enchantmentlevel / 100); + if(debug){logDebug("enchantmentlevelpercent=" + enchantmentlevelpercent + " line:958");} + double chance = Math.random(); + if(debug){logDebug("chance=" + chance + " line:960");} + double chancepercent = 0.25; /** Set to check config.yml later*/ + if(debug){logDebug("chancepercent=" + chancepercent + " line:962");} + chancepercent = chancepercent + enchantmentlevelpercent; + if(debug){logDebug("chancepercent2=" + chancepercent + " line:964");} + if((chancepercent > 0.00) && (chancepercent < 0.99)){ + if (chancepercent > chance){ + event.getDrops().add(new ItemStack(material, 1)); } } + } } - + public ItemStack makeTraderSkull(String textureCode, String headName, String uuid, int amount){// TODO: maketraderSkull ItemStack item = new ItemStack(Material.PLAYER_HEAD, amount); - if(textureCode == null) return item; + if(textureCode == null) { + return item; + } SkullMeta meta = (SkullMeta) item.getItemMeta(); GameProfile profile = new GameProfile(UUID.nameUUIDFromBytes(textureCode.getBytes()), textureCode); @@ -1259,98 +1256,104 @@ public class MoreMobHeads extends JavaPlugin implements Listener{ } meta.setLore(lore); meta.setLore(lore); - + //meta.setOwningPlayer(Bukkit.getOfflinePlayer(ownerUUID)); meta.setDisplayName(headName); item.setItemMeta(meta); return item; } - + public ItemStack makeSkull(String textureCode, String headName, Player killer){// TODO: makeSkull - ItemStack item = new ItemStack(Material.PLAYER_HEAD); - if(textureCode == null) return item; - SkullMeta meta = (SkullMeta) item.getItemMeta(); - - GameProfile profile = new GameProfile(UUID.nameUUIDFromBytes(textureCode.getBytes()), textureCode); - profile.getProperties().put("textures", new Property("textures", textureCode)); - profile.getProperties().put("display", new Property("Name", headName)); - //profile.getProperties().put("BlockEntityTag", new Property("note_block_sound", "minecraft:entity.camel.ambient")); - - setGameProfile(meta, profile); - ArrayList lore = new ArrayList(); - - if(getConfig().getBoolean("lore.show_killer", true)){ - lore.add(ChatColor.RESET + get("mmh.message.lore_killed_by").replace("", ChatColor.YELLOW + killer.getName()) ); - } - if(getConfig().getBoolean("lore.show_plugin_name", true)){ - lore.add(ChatColor.AQUA + "MoreMobHeads"); - } - meta.setLore(lore); - meta.setLore(lore); - - //meta.setOwningPlayer(Bukkit.getOfflinePlayer(ownerUUID)); - meta.setDisplayName(headName); - item.setItemMeta(meta); + ItemStack item = new ItemStack(Material.PLAYER_HEAD); + if(textureCode == null) { return item; + } + SkullMeta meta = (SkullMeta) item.getItemMeta(); + + GameProfile profile = new GameProfile(UUID.nameUUIDFromBytes(textureCode.getBytes()), textureCode); + profile.getProperties().put("textures", new Property("textures", textureCode)); + profile.getProperties().put("display", new Property("Name", headName)); + //profile.getProperties().put("BlockEntityTag", new Property("note_block_sound", "minecraft:entity.camel.ambient")); + + setGameProfile(meta, profile); + ArrayList lore = new ArrayList(); + + if(getConfig().getBoolean("lore.show_killer", true)){ + lore.add(ChatColor.RESET + ChatColorUtils.setColors( langName.getString("killedby", "Killed By ").replace("", killer.getName()) ) ); + } + if(getConfig().getBoolean("lore.show_plugin_name", true)){ + lore.add(ChatColor.AQUA + "MoreMobHeads"); + } + meta.setLore(lore); + meta.setLore(lore); + + //meta.setOwningPlayer(Bukkit.getOfflinePlayer(ownerUUID)); + meta.setDisplayName(headName); + item.setItemMeta(meta); + return item; } - + public ItemStack makeSkulls(String textureCode, String headName, int amount){ - ItemStack item = new ItemStack(Material.PLAYER_HEAD, amount); - if(textureCode == null) return item; - SkullMeta meta = (SkullMeta) item.getItemMeta(); - - GameProfile profile = new GameProfile(UUID.nameUUIDFromBytes(textureCode.getBytes()), textureCode); - profile.getProperties().put("textures", new Property("textures", textureCode)); - profile.getProperties().put("display", new Property("Name", headName)); - setGameProfile(meta, profile); - ArrayList lore = new ArrayList(); - - if(getConfig().getBoolean("lore.show_plugin_name", true)){ - lore.add(ChatColor.AQUA + "MoreMobHeads"); - } - meta.setLore(lore); - meta.setLore(lore); - - //meta.setOwningPlayer(Bukkit.getOfflinePlayer(ownerUUID)); - meta.setDisplayName(headName); - item.setItemMeta(meta); + ItemStack item = new ItemStack(Material.PLAYER_HEAD, amount); + if(textureCode == null) { return item; + } + SkullMeta meta = (SkullMeta) item.getItemMeta(); + + GameProfile profile = new GameProfile(UUID.nameUUIDFromBytes(textureCode.getBytes()), textureCode); + profile.getProperties().put("textures", new Property("textures", textureCode)); + profile.getProperties().put("display", new Property("Name", headName)); + setGameProfile(meta, profile); + ArrayList lore = new ArrayList(); + + if(getConfig().getBoolean("lore.show_plugin_name", true)){ + lore.add(ChatColor.AQUA + "MoreMobHeads"); + } + meta.setLore(lore); + meta.setLore(lore); + + //meta.setOwningPlayer(Bukkit.getOfflinePlayer(ownerUUID)); + meta.setDisplayName(headName); + item.setItemMeta(meta); + return item; } private static Field fieldProfileItem; public static void setGameProfile(SkullMeta meta, GameProfile profile){ - try{ - if(fieldProfileItem == null) fieldProfileItem = meta.getClass().getDeclaredField("profile"); - fieldProfileItem.setAccessible(true); - fieldProfileItem.set(meta, profile); + try{ + if(fieldProfileItem == null) { + fieldProfileItem = meta.getClass().getDeclaredField("profile"); } - catch(NoSuchFieldException e){ - stacktraceInfoStatic(); - e.printStackTrace();} - catch(SecurityException e){ - stacktraceInfoStatic(); - e.printStackTrace();} - catch(IllegalArgumentException e){ - stacktraceInfoStatic(); - e.printStackTrace();} - catch(IllegalAccessException e){ - stacktraceInfoStatic(); - e.printStackTrace();} + fieldProfileItem.setAccessible(true); + fieldProfileItem.set(meta, profile); + } + catch(NoSuchFieldException e){ + stacktraceInfoStatic(); + e.printStackTrace();} + catch(SecurityException e){ + stacktraceInfoStatic(); + e.printStackTrace();} + catch(IllegalArgumentException e){ + stacktraceInfoStatic(); + e.printStackTrace();} + catch(IllegalAccessException e){ + stacktraceInfoStatic(); + e.printStackTrace();} } - + public boolean isInteger(String s){ - try{ - Integer.parseInt(s); - return true; - }catch (NumberFormatException ex){ - return false; - } + try{ + Integer.parseInt(s); + return true; + }catch (NumberFormatException ex){ + return false; + } } - + //@SuppressWarnings("unused") @EventHandler public void OnTake(EntityPickupItemEvent e){ - /** //ItemStack item = new ItemStack(7); + /** //ItemStack item = new ItemStack(7); LivingEntity entity = e.getEntity(); Item item = e.getItem(); if(entity instanceof Player){ @@ -1440,7 +1443,7 @@ public class MoreMobHeads extends JavaPlugin implements Listener{ } //log("test4");*/ } - + public String isPlayerHead(String string){ try{ playerFile = new File(getDataFolder() + "" + File.separatorChar + "player_heads.yml");//\ @@ -1471,7 +1474,7 @@ public class MoreMobHeads extends JavaPlugin implements Listener{ //playerHeads return null; } - + public String isBlockHead(String string){ // TODO: isBlockHead try{ if(!(Double.parseDouble(StrUtils.Left(getMCVersion(), 4)) >= 1.16)){ @@ -1511,18 +1514,18 @@ public class MoreMobHeads extends JavaPlugin implements Listener{ //blockHeads return null; } - + public String isBlockHead2(String string){ try{ if(!(Double.parseDouble(StrUtils.Left(getMCVersion(), 4)) >= 1.16)){ // checks if the yaml does not exist - return null; + return null; } blockFile1162 = new File(getDataFolder() + "" + File.separatorChar + "block_heads_1_16_2.yml"); if(getMCVersion().startsWith("1.16")||getMCVersion().startsWith("1.17")){ if(!blockFile1162.exists()){ return null; } - + } int numOfCustomTrades = blockHeads2.getInt("blocks.number", 0) + 1; if(debug){logDebug("iBH2 string=" + string);} @@ -1548,18 +1551,18 @@ public class MoreMobHeads extends JavaPlugin implements Listener{ //blockHeads return null; } - + public String isBlockHead3(String string){ try{ if(!(Double.parseDouble(StrUtils.Left(getMCVersion(), 4)) >= 1.16)){ // checks if the yaml does not exist - return null; + return null; } blockFile117 = new File(getDataFolder() + "" + File.separatorChar + "block_heads_1_17.yml"); if(getMCVersion().startsWith("1.16")||getMCVersion().startsWith("1.17")){ if(!blockFile117.exists()){ return null; } - + } int numOfCustomTrades = blockHeads3.getInt("blocks.number", 0) + 1; if(debug){logDebug("iBH3 string=" + string);} @@ -1585,8 +1588,8 @@ public class MoreMobHeads extends JavaPlugin implements Listener{ //blockHeads return null; } - - + + public int isBlockHeadName(String string){ // TODO: isBlockHeadName if(debug){logDebug("iBHN START");} try{ @@ -1644,18 +1647,18 @@ public class MoreMobHeads extends JavaPlugin implements Listener{ try{ double mcVer = Double.parseDouble(StrUtils.Left(getMCVersion(), 4)); if(!(mcVer >= 1.16)){ // checks if the yaml does not exist - return -1; + return -1; }else if(mcVer == 1.16) { blockFile1162 = new File(getDataFolder() + "" + File.separatorChar + "block_heads_1_16_2.yml"); }else if(mcVer >= 1.17) { blockFile1162 = new File(getDataFolder() + "" + File.separatorChar + "block_heads_1_17_2.yml"); } - + if(getMCVersion().startsWith("1.16")||getMCVersion().startsWith("1.17")){ if(!blockFile1162.exists()){ return -1; } - + } if(debug){logDebug("iBH blockFile1162=" + blockFile1162.toString());} if(blockHeads2.getInt("blocks.number", 0) == 0) { @@ -1694,24 +1697,24 @@ public class MoreMobHeads extends JavaPlugin implements Listener{ if(debug){logDebug("iBHN2 END Failure!");} return -1; } - + public int isBlockHeadName3(String string){ if(debug){logDebug("iBHN3 START");} try{ double mcVer = Double.parseDouble(StrUtils.Left(getMCVersion(), 4)); if(!(mcVer >= 1.16)){ // checks if the yaml does not exist - return -1; + return -1; }else if(mcVer == 1.16) { return -1; }else if(mcVer >= 1.17) { blockFile117 = new File(getDataFolder() + "" + File.separatorChar + "block_heads_1_17_3.yml"); } - + if(getMCVersion().startsWith("1.16")||getMCVersion().startsWith("1.17")){ if(!blockFile117.exists()){ return -1; } - + } if(debug){logDebug("iBHN3 blockFile117=" + blockFile117.toString());} if(blockHeads3.getInt("blocks.number", 0) == 0) { @@ -1752,24 +1755,24 @@ public class MoreMobHeads extends JavaPlugin implements Listener{ if(debug){logDebug("iBHN3 END Failure!");} return -1; } - + public int isBlockHeadName4(String string){ if(debug){logDebug("iBHN4 START");} try{ double mcVer = Double.parseDouble(StrUtils.Left(getMCVersion(), 4)); if(!(mcVer >= 1.16)){ // checks if the yaml does not exist - return -1; + return -1; }else if(mcVer == 1.16) { return -1; }else if(mcVer == 1.19) { blockFile119 = new File(getDataFolder() + "" + File.separatorChar + "block_heads_1_19.yml"); } - + if(getMCVersion().startsWith("1.19")){ if(!blockFile119.exists()){ return -1; } - + } if(debug){logDebug("iBHN4 blockFile119=" + blockFile119.toString());} if(blockHeads4.getInt("blocks.number", 0) == 0) { @@ -1810,13 +1813,13 @@ public class MoreMobHeads extends JavaPlugin implements Listener{ if(debug){logDebug("iBHN4 END Failure!");} return -1; } - + public int isBlockHeadName5(String string){ if(debug){logDebug("iBHN5 START");} try{ double mcVer = Double.parseDouble(StrUtils.Left(getMCVersion(), 4)); if(!(mcVer >= 1.16)){ // checks if the yaml does not exist - return -1; + return -1; }else if(mcVer == 1.16) { return -1; }else if(mcVer == 1.19) { @@ -1824,12 +1827,12 @@ public class MoreMobHeads extends JavaPlugin implements Listener{ }else if(mcVer == 1.20) { blockFile120 = new File(getDataFolder() + "" + File.separatorChar + "block_heads_1_20.yml"); } - + if(getMCVersion().startsWith("1.20")){ if(!blockFile120.exists()){ return -1; } - + } if(debug){logDebug("iBHN5 blockFile120=" + blockFile120.toString());} if(blockHeads5.getInt("blocks.number", 0) == 0) { @@ -1874,12 +1877,12 @@ public class MoreMobHeads extends JavaPlugin implements Listener{ //overwrite the destination file if it exists, and copy // the file attributes, including the rwx permissions CopyOption[] options = new CopyOption[]{ - StandardCopyOption.REPLACE_EXISTING, - StandardCopyOption.COPY_ATTRIBUTES - }; + StandardCopyOption.REPLACE_EXISTING, + StandardCopyOption.COPY_ATTRIBUTES + }; Files.copy(FROM, TO, options); } - + public void copyChance(String file, String file2){ chanceConfig = new YmlConfiguration(); oldchanceConfig = new YmlConfiguration(); @@ -1891,284 +1894,284 @@ public class MoreMobHeads extends JavaPlugin implements Listener{ e.printStackTrace(); } log(Level.INFO, "Copying values frome old_chance_config.yml to chance_config.yml"); - chanceConfig.set("chance_percent.player" , oldchanceConfig.get("chance_percent.player", "0.50")); - chanceConfig.set("chance_percent.named_mob" , oldchanceConfig.get("chance_percent.named_mob", "0.10")); - chanceConfig.set("chance_percent.allay" , oldchanceConfig.get("chance_percent.allay", "0.20")); - chanceConfig.set("chance_percent.axolotl.blue" , oldchanceConfig.get("chance_percent.axolotl.blue", "1.00")); - chanceConfig.set("chance_percent.axolotl.cyan" , oldchanceConfig.get("chance_percent.axolotl.cyan", "0.20")); - chanceConfig.set("chance_percent.axolotl.gold" , oldchanceConfig.get("chance_percent.axolotl.gold", "0.20")); - chanceConfig.set("chance_percent.axolotl.lucy" , oldchanceConfig.get("chance_percent.axolotl.lucy", "0.20")); - chanceConfig.set("chance_percent.axolotl.wild" , oldchanceConfig.get("chance_percent.axolotl.wild", "0.20")); - chanceConfig.set("chance_percent.bat" , oldchanceConfig.get("chance_percent.bat", "0.10")); - chanceConfig.set("chance_percent.bee.angry_pollinated" , oldchanceConfig.get("chance_percent.bee.angry_pollinated", "0.20")); - chanceConfig.set("chance_percent.bee.angry" , oldchanceConfig.get("chance_percent.bee.angry", "0.20")); - chanceConfig.set("chance_percent.bee.pollinated" , oldchanceConfig.get("chance_percent.bee.pollinated", "0.20")); - chanceConfig.set("chance_percent.bee.chance_percent" , oldchanceConfig.get("chance_percent.bee.chance_percent", "0.20")); - chanceConfig.set("chance_percent.blaze" , oldchanceConfig.get("chance_percent.blaze", "0.005")); - chanceConfig.set("chance_percent.camel" , oldchanceConfig.get("chance_percent.camel", "0.27")); - chanceConfig.set("chance_percent.cat.all_black" , oldchanceConfig.get("chance_percent.cat.all_black", "0.33")); - chanceConfig.set("chance_percent.cat.black" , oldchanceConfig.get("chance_percent.cat.black", "0.33")); - chanceConfig.set("chance_percent.cat.british_shorthair" , oldchanceConfig.get("chance_percent.cat.british_shorthair", "0.33")); - chanceConfig.set("chance_percent.cat.calico" , oldchanceConfig.get("chance_percent.cat.calico", "0.33")); - chanceConfig.set("chance_percent.cat.jellie" , oldchanceConfig.get("chance_percent.cat.jellie", "0.33")); - chanceConfig.set("chance_percent.cat.persian" , oldchanceConfig.get("chance_percent.cat.persian", "0.33")); - chanceConfig.set("chance_percent.cat.ragdoll" , oldchanceConfig.get("chance_percent.cat.ragdoll", "0.33")); - chanceConfig.set("chance_percent.cat.red" , oldchanceConfig.get("chance_percent.cat.red", "0.33")); - chanceConfig.set("chance_percent.cat.siamese" , oldchanceConfig.get("chance_percent.cat.siamese", "0.33")); - chanceConfig.set("chance_percent.cat.tabby" , oldchanceConfig.get("chance_percent.cat.tabby", "0.33")); - chanceConfig.set("chance_percent.cat.white" , oldchanceConfig.get("chance_percent.cat.white", "0.33")); - - chanceConfig.set("chance_percent.cave_spider" , oldchanceConfig.get("chance_percent.cave_spider", "0.005")); - chanceConfig.set("chance_percent.chicken" , oldchanceConfig.get("chance_percent.chicken", "0.01")); - chanceConfig.set("chance_percent.cod" , oldchanceConfig.get("chance_percent.cod", "0.10")); - chanceConfig.set("chance_percent.cow" , oldchanceConfig.get("chance_percent.cow", "0.01")); - chanceConfig.set("chance_percent.creeper" , oldchanceConfig.get("chance_percent.creeper", "0.50")); - chanceConfig.set("chance_percent.creeper_charged" , oldchanceConfig.get("chance_percent.creeper_charged", "1.00")); - chanceConfig.set("chance_percent.dolphin" , oldchanceConfig.get("chance_percent.dolphin", "0.33")); - chanceConfig.set("chance_percent.donkey" , oldchanceConfig.get("chance_percent.donkey", "0.20")); - chanceConfig.set("chance_percent.drowned" , oldchanceConfig.get("chance_percent.drowned", "0.05")); - chanceConfig.set("chance_percent.elder_guardian" , oldchanceConfig.get("chance_percent.elder_guardian", "1.00")); - chanceConfig.set("chance_percent.ender_dragon" , oldchanceConfig.get("chance_percent.ender_dragon", "1.00")); - chanceConfig.set("chance_percent.enderman" , oldchanceConfig.get("chance_percent.enderman", "0.005")); - chanceConfig.set("chance_percent.endermite" , oldchanceConfig.get("chance_percent.endermite", "0.10")); - chanceConfig.set("chance_percent.evoker" , oldchanceConfig.get("chance_percent.evoker", "0.25")); - chanceConfig.set("chance_percent.fox.red" , oldchanceConfig.get("chance_percent.fox.red", "0.10")); - chanceConfig.set("chance_percent.fox.snow" , oldchanceConfig.get("chance_percent.fox.snow", "0.10")); - chanceConfig.set("chance_percent.frog.cold" , oldchanceConfig.get("chance_percent.frog.cold", "0.20")); - chanceConfig.set("chance_percent.frog.temperate" , oldchanceConfig.get("chance_percent.frog.temperate", "0.20")); - chanceConfig.set("chance_percent.frog.warm" , oldchanceConfig.get("chance_percent.frog.warm", "0.20")); - chanceConfig.set("chance_percent.ghast" , oldchanceConfig.get("chance_percent.ghast", "0.0625")); - chanceConfig.set("chance_percent.giant" , oldchanceConfig.get("chance_percent.giant", "0.025")); - chanceConfig.set("chance_percent.glow_squid" , oldchanceConfig.get("chance_percent.glow_squid", "0.10")); - chanceConfig.set("chance_percent.goat.mormal" , oldchanceConfig.get("chance_percent.goat.normal", "0.01")); - chanceConfig.set("chance_percent.goat.screaming" , oldchanceConfig.get("chance_percent.goat.screaming", "1.00")); - chanceConfig.set("chance_percent.guardian" , oldchanceConfig.get("chance_percent.guardian", "0.005")); - chanceConfig.set("chance_percent.hoglin" , oldchanceConfig.get("chance_percent.hoglin", "0.03")); - chanceConfig.set("chance_percent.horse.black" , oldchanceConfig.get("chance_percent.horse.black", "0.27")); - chanceConfig.set("chance_percent.horse.brown" , oldchanceConfig.get("chance_percent.horse.brown", "0.27")); - chanceConfig.set("chance_percent.horse.chestnut" , oldchanceConfig.get("chance_percent.horse.chestnut", "0.27")); - chanceConfig.set("chance_percent.horse.creamy" , oldchanceConfig.get("chance_percent.horse.creamy", "0.27")); - chanceConfig.set("chance_percent.horse.dark_brown" , oldchanceConfig.get("chance_percent.horse.dark_brown", "0.27")); - chanceConfig.set("chance_percent.horse.gray" , oldchanceConfig.get("chance_percent.horse.gray", "0.27")); - chanceConfig.set("chance_percent.horse.white" , oldchanceConfig.get("chance_percent.horse.white", "0.27")); - chanceConfig.set("chance_percent.husk" , oldchanceConfig.get("chance_percent.husk", "0.06")); - chanceConfig.set("chance_percent.illusioner" , oldchanceConfig.get("chance_percent.illusioner", "0.25")); - chanceConfig.set("chance_percent.iron_golem" , oldchanceConfig.get("chance_percent.iron_golem", "0.05")); - chanceConfig.set("chance_percent.llama.brown" , oldchanceConfig.get("chance_percent.llama.brown", "0.24")); - chanceConfig.set("chance_percent.llama.creamy" , oldchanceConfig.get("chance_percent.llama.creamy", "0.24")); - chanceConfig.set("chance_percent.llama.gray" , oldchanceConfig.get("chance_percent.llama.gray", "0.24")); - chanceConfig.set("chance_percent.llama.white" , oldchanceConfig.get("chance_percent.llama.white", "0.24")); - chanceConfig.set("chance_percent.magma_cube" , oldchanceConfig.get("chance_percent.magma_cube", "0.005")); - chanceConfig.set("chance_percent.mule" , oldchanceConfig.get("chance_percent.mule", "0.20")); - chanceConfig.set("chance_percent.mushroom_cow.red" , oldchanceConfig.get("chance_percent.mushroom_cow.red", "0.10")); - chanceConfig.set("chance_percent.mushroom_cow.brown" , oldchanceConfig.get("chance_percent.mushroom_cow.brown", "0.10")); - chanceConfig.set("chance_percent.ocelot" , oldchanceConfig.get("chance_percent.cat.wild_ocelot", "0.20")); - chanceConfig.set("chance_percent.panda.aggressive" , oldchanceConfig.get("chance_percent.panda.aggressive", "0.27")); - chanceConfig.set("chance_percent.panda.brown" , oldchanceConfig.get("chance_percent.panda.brown", "0.27")); - chanceConfig.set("chance_percent.panda.lazy" , oldchanceConfig.get("chance_percent.panda.lazy", "0.27")); - chanceConfig.set("chance_percent.panda.normal" , oldchanceConfig.get("chance_percent.panda.normal", "0.27")); - chanceConfig.set("chance_percent.panda.playful" , oldchanceConfig.get("chance_percent.panda.playful", "0.27")); - chanceConfig.set("chance_percent.panda.weak" , oldchanceConfig.get("chance_percent.panda.weak", "0.27")); - chanceConfig.set("chance_percent.panda.worried" , oldchanceConfig.get("chance_percent.panda.worried", "0.27")); - chanceConfig.set("chance_percent.parrot.blue" , oldchanceConfig.get("chance_percent.parrot.blue", "0.25")); - chanceConfig.set("chance_percent.parrot.cyan" , oldchanceConfig.get("chance_percent.parrot.cyan", "0.25")); - chanceConfig.set("chance_percent.parrot.gray" , oldchanceConfig.get("chance_percent.parrot.gray", "0.25")); - chanceConfig.set("chance_percent.parrot.green" , oldchanceConfig.get("chance_percent.parrot.green", "0.25")); - chanceConfig.set("chance_percent.parrot.red" , oldchanceConfig.get("chance_percent.parrot.red", "0.25")); - chanceConfig.set("chance_percent.phantom" , oldchanceConfig.get("chance_percent.phantom", "0.10")); - chanceConfig.set("chance_percent.pig" , oldchanceConfig.get("chance_percent.pig", "0.01")); - chanceConfig.set("chance_percent.piglin" , oldchanceConfig.get("chance_percent.piglin", "0.04")); - chanceConfig.set("chance_percent.pig_zombie" , oldchanceConfig.get("chance_percent.pig_zombie", "0.005")); - chanceConfig.set("chance_percent.pillager" , oldchanceConfig.get("chance_percent.pillager", "0.025")); - chanceConfig.set("chance_percent.polar_bear" , oldchanceConfig.get("chance_percent.polar_bear", "0.20")); - chanceConfig.set("chance_percent.pufferfish" , oldchanceConfig.get("chance_percent.pufferfish", "0.15")); - chanceConfig.set("chance_percent.rabbit.black" , oldchanceConfig.get("chance_percent.rabbit.black", "0.26")); - chanceConfig.set("chance_percent.rabbit.black_and_white" , oldchanceConfig.get("chance_percent.rabbit.black_and_white", "0.26")); - chanceConfig.set("chance_percent.rabbit.brown" , oldchanceConfig.get("chance_percent.rabbit.brown", "0.26")); - chanceConfig.set("chance_percent.rabbit.gold" , oldchanceConfig.get("chance_percent.rabbit.gold", "0.26")); - chanceConfig.set("chance_percent.rabbit.salt_and_pepper" , oldchanceConfig.get("chance_percent.rabbit.salt_and_pepper", "0.26")); - chanceConfig.set("chance_percent.rabbit.the_killer_bunny" , oldchanceConfig.get("chance_percent.rabbit.the_killer_bunny", "1.00")); - chanceConfig.set("chance_percent.rabbit.toast" , oldchanceConfig.get("chance_percent.rabbit.toast", "0.26")); - chanceConfig.set("chance_percent.rabbit.white" , oldchanceConfig.get("chance_percent.rabbit.white", "0.26")); - chanceConfig.set("chance_percent.ravager" , oldchanceConfig.get("chance_percent.ravager", "0.25")); - chanceConfig.set("chance_percent.salmon" , oldchanceConfig.get("chance_percent.salmon", "0.10")); - chanceConfig.set("chance_percent.sheep.black" , oldchanceConfig.get("chance_percent.sheep.black", "0.0175")); - chanceConfig.set("chance_percent.sheep.blue" , oldchanceConfig.get("chance_percent.sheep.blue", "0.0175")); - chanceConfig.set("chance_percent.sheep.brown" , oldchanceConfig.get("chance_percent.sheep.brown", "0.0175")); - chanceConfig.set("chance_percent.sheep.cyan" , oldchanceConfig.get("chance_percent.sheep.cyan", "0.0175")); - chanceConfig.set("chance_percent.sheep.gray" , oldchanceConfig.get("chance_percent.sheep.gray", "0.0175")); - chanceConfig.set("chance_percent.sheep.green" , oldchanceConfig.get("chance_percent.sheep.green", "0.0175")); - chanceConfig.set("chance_percent.sheep.jeb_" , oldchanceConfig.get("chance_percent.sheep.jeb_", "0.0175")); - chanceConfig.set("chance_percent.sheep.light_blue" , oldchanceConfig.get("chance_percent.sheep.light_blue", "0.0175")); - chanceConfig.set("chance_percent.sheep.light_gray" , oldchanceConfig.get("chance_percent.sheep.light_gray", "0.0175")); - chanceConfig.set("chance_percent.sheep.lime" , oldchanceConfig.get("chance_percent.sheep.lime", "0.0175")); - chanceConfig.set("chance_percent.sheep.magenta" , oldchanceConfig.get("chance_percent.sheep.magenta", "0.0175")); - chanceConfig.set("chance_percent.sheep.orange" , oldchanceConfig.get("chance_percent.sheep.orange", "0.0175")); - chanceConfig.set("chance_percent.sheep.pink" , oldchanceConfig.get("chance_percent.sheep.pink", "0.0175")); - chanceConfig.set("chance_percent.sheep.purple" , oldchanceConfig.get("chance_percent.sheep.purple", "0.0175")); - chanceConfig.set("chance_percent.sheep.red" , oldchanceConfig.get("chance_percent.sheep.red", "0.0175")); - chanceConfig.set("chance_percent.sheep.white" , oldchanceConfig.get("chance_percent.sheep.white", "0.0175")); - chanceConfig.set("chance_percent.sheep.yellow" , oldchanceConfig.get("chance_percent.sheep.yellow", "0.0175")); - chanceConfig.set("chance_percent.shulker" , oldchanceConfig.get("chance_percent.shulker", "0.05")); - chanceConfig.set("chance_percent.silverfish" , oldchanceConfig.get("chance_percent.silverfish", "0.05")); - chanceConfig.set("chance_percent.skeleton" , oldchanceConfig.get("chance_percent.skeleton", "0.025")); - chanceConfig.set("chance_percent.skeleton_horse" , oldchanceConfig.get("chance_percent.skeleton_horse", "0.20")); - chanceConfig.set("chance_percent.slime" , oldchanceConfig.get("chance_percent.slime", "0.005")); - chanceConfig.set("chance_percent.sniffer" , oldchanceConfig.get("chance_percent.sniffer", "0.50")); - chanceConfig.set("chance_percent.snowman" , oldchanceConfig.get("chance_percent.snowman", "0.05")); - chanceConfig.set("chance_percent.spider" , oldchanceConfig.get("chance_percent.spider", "0.005")); - chanceConfig.set("chance_percent.squid" , oldchanceConfig.get("chance_percent.squid", "0.05")); - chanceConfig.set("chance_percent.stray" , oldchanceConfig.get("chance_percent.stray", "0.06")); - chanceConfig.set("chance_percent.strider" , oldchanceConfig.get("chance_percent.strider", "0.10")); - chanceConfig.set("chance_percent.tadpole" , oldchanceConfig.get("chance_percent.tadpole", "0.10")); - chanceConfig.set("chance_percent.trader_llama.brown" , oldchanceConfig.get("chance_percent.trader_llama.brown", "0.24")); - chanceConfig.set("chance_percent.trader_llama.creamy" , oldchanceConfig.get("chance_percent.trader_llama.creamy", "0.24")); - chanceConfig.set("chance_percent.trader_llama.gray" , oldchanceConfig.get("chance_percent.trader_llama.gray", "0.24")); - chanceConfig.set("chance_percent.trader_llama.white" , oldchanceConfig.get("chance_percent.trader_llama.white", "0.24")); - chanceConfig.set("chance_percent.tropical_fish.tropical_fish" , oldchanceConfig.get("chance_percent.tropical_fish.tropical_fish", "0.10")); - chanceConfig.set("chance_percent.tropical_fish.anemone" , oldchanceConfig.get("chance_percent.tropical_fish.anemone", "0.50")); - chanceConfig.set("chance_percent.tropical_fish.black_tang" , oldchanceConfig.get("chance_percent.tropical_fish.black_tang", "0.50")); - chanceConfig.set("chance_percent.tropical_fish.blue_tang" , oldchanceConfig.get("chance_percent.tropical_fish.blue_tang", "0.50")); - chanceConfig.set("chance_percent.tropical_fish.butterflyfish" , oldchanceConfig.get("chance_percent.tropical_fish.butterflyfish", "0.50")); - chanceConfig.set("chance_percent.tropical_fish.cichlid" , oldchanceConfig.get("chance_percent.tropical_fish.cichlid", "0.50")); - chanceConfig.set("chance_percent.tropical_fish.clownfish" , oldchanceConfig.get("chance_percent.tropical_fish.clownfish", "0.50")); - chanceConfig.set("chance_percent.tropical_fish.cotton_candy_betta" , oldchanceConfig.get("chance_percent.tropical_fish.cotton_candy_betta", "0.50")); - chanceConfig.set("chance_percent.tropical_fish.dottyback" , oldchanceConfig.get("chance_percent.tropical_fish.dottyback", "0.50")); - chanceConfig.set("chance_percent.tropical_fish.emperor_red_snapper" , oldchanceConfig.get("chance_percent.tropical_fish.emperor_red_snapper", "0.50")); - chanceConfig.set("chance_percent.tropical_fish.goatfish" , oldchanceConfig.get("chance_percent.tropical_fish.goatfish", "0.50")); - chanceConfig.set("chance_percent.tropical_fish.moorish_idol" , oldchanceConfig.get("chance_percent.tropical_fish.moorish_idol", "0.50")); - chanceConfig.set("chance_percent.tropical_fish.ornate_butterflyfish", oldchanceConfig.get("chance_percent.tropical_fish.ornate_butterflyfish", "0.50")); - chanceConfig.set("chance_percent.tropical_fish.parrotfish" , oldchanceConfig.get("chance_percent.tropical_fish.parrotfish", "0.50")); - chanceConfig.set("chance_percent.tropical_fish.queen_angelfish" , oldchanceConfig.get("chance_percent.tropical_fish.queen_angelfish", "0.50")); - chanceConfig.set("chance_percent.tropical_fish.red_cichlid" , oldchanceConfig.get("chance_percent.tropical_fish.red_cichlid", "0.50")); - chanceConfig.set("chance_percent.tropical_fish.red_lipped_blenny" , oldchanceConfig.get("chance_percent.tropical_fish.red_lipped_blenny", "0.50")); - chanceConfig.set("chance_percent.tropical_fish.red_snapper" , oldchanceConfig.get("chance_percent.tropical_fish.red_snapper", "0.50")); - chanceConfig.set("chance_percent.tropical_fish.threadfin" , oldchanceConfig.get("chance_percent.tropical_fish.threadfin", "0.50")); - chanceConfig.set("chance_percent.tropical_fish.tomato_clownfish" , oldchanceConfig.get("chance_percent.tropical_fish.tomato_clownfish", "0.50")); - chanceConfig.set("chance_percent.tropical_fish.triggerfish" , oldchanceConfig.get("chance_percent.tropical_fish.triggerfish", "0.50")); - chanceConfig.set("chance_percent.tropical_fish.yellow_parrotfish" , oldchanceConfig.get("chance_percent.tropical_fish.yellow_parrotfish", "0.50")); - chanceConfig.set("chance_percent.tropical_fish.yellow_tang" , oldchanceConfig.get("chance_percent.tropical_fish.yellow_tang", "0.50")); - - chanceConfig.set("chance_percent.turtle" , oldchanceConfig.get("chance_percent.turtle", "0.10")); - chanceConfig.set("chance_percent.vex" , oldchanceConfig.get("chance_percent.vex", "0.10")); - chanceConfig.set("chance_percent.villager.desert.armorer" , oldchanceConfig.get("chance_percent.villager.desert.armorer", "1.00")); - chanceConfig.set("chance_percent.villager.desert.butcher" , oldchanceConfig.get("chance_percent.villager.desert.butcher", "1.00")); - chanceConfig.set("chance_percent.villager.desert.cartographer" , oldchanceConfig.get("chance_percent.villager.desert.cartographer", "1.00")); - chanceConfig.set("chance_percent.villager.desert.cleric" , oldchanceConfig.get("chance_percent.villager.desert.cleric", "1.00")); - chanceConfig.set("chance_percent.villager.desert.farmer" , oldchanceConfig.get("chance_percent.villager.desert.farmer", "1.00")); - chanceConfig.set("chance_percent.villager.desert.fisherman" , oldchanceConfig.get("chance_percent.villager.desert.fisherman", "1.00")); - chanceConfig.set("chance_percent.villager.desert.fletcher" , oldchanceConfig.get("chance_percent.villager.desert.fletcher", "1.00")); - chanceConfig.set("chance_percent.villager.desert.leatherworker" , oldchanceConfig.get("chance_percent.villager.desert.leatherworker", "1.00")); - chanceConfig.set("chance_percent.villager.desert.librarian" , oldchanceConfig.get("chance_percent.villager.desert.librarian", "1.00")); - chanceConfig.set("chance_percent.villager.desert.mason" , oldchanceConfig.get("chance_percent.villager.desert.mason", "1.00")); - chanceConfig.set("chance_percent.villager.desert.nitwit" , oldchanceConfig.get("chance_percent.villager.desert.nitwit", "1.00")); - chanceConfig.set("chance_percent.villager.desert.none" , oldchanceConfig.get("chance_percent.villager.desert.none", "1.00")); - chanceConfig.set("chance_percent.villager.desert.shepherd" , oldchanceConfig.get("chance_percent.villager.desert.shepherd", "1.00")); - chanceConfig.set("chance_percent.villager.desert.toolsmith" , oldchanceConfig.get("chance_percent.villager.desert.toolsmith", "1.00")); - chanceConfig.set("chance_percent.villager.desert.weaponsmith" , oldchanceConfig.get("chance_percent.villager.desert.weaponsmith", "1.00")); - chanceConfig.set("chance_percent.villager.jungle.armorer" , oldchanceConfig.get("chance_percent.villager.jungle.armorer", "1.00")); - chanceConfig.set("chance_percent.villager.jungle.butcher" , oldchanceConfig.get("chance_percent.villager.jungle.butcher", "1.00")); - chanceConfig.set("chance_percent.villager.jungle.cartographer" , oldchanceConfig.get("chance_percent.villager.jungle.cartographer", "1.00")); - chanceConfig.set("chance_percent.villager.jungle.cleric" , oldchanceConfig.get("chance_percent.villager.jungle.cleric", "1.00")); - chanceConfig.set("chance_percent.villager.jungle.farmer" , oldchanceConfig.get("chance_percent.villager.jungle.farmer", "1.00")); - chanceConfig.set("chance_percent.villager.jungle.fisherman" , oldchanceConfig.get("chance_percent.villager.jungle.fisherman", "1.00")); - chanceConfig.set("chance_percent.villager.jungle.fletcher" , oldchanceConfig.get("chance_percent.villager.jungle.fletcher", "1.00")); - chanceConfig.set("chance_percent.villager.jungle.leatherworker" , oldchanceConfig.get("chance_percent.villager.jungle.leatherworker", "1.00")); - chanceConfig.set("chance_percent.villager.jungle.librarian" , oldchanceConfig.get("chance_percent.villager.jungle.librarian", "1.00")); - chanceConfig.set("chance_percent.villager.jungle.mason" , oldchanceConfig.get("chance_percent.villager.jungle.mason", "1.00")); - chanceConfig.set("chance_percent.villager.jungle.nitwit" , oldchanceConfig.get("chance_percent.villager.jungle.nitwit", "1.00")); - chanceConfig.set("chance_percent.villager.jungle.none" , oldchanceConfig.get("chance_percent.villager.jungle.none", "1.00")); - chanceConfig.set("chance_percent.villager.jungle.shepherd" , oldchanceConfig.get("chance_percent.villager.jungle.shepherd", "1.00")); - chanceConfig.set("chance_percent.villager.jungle.toolsmith" , oldchanceConfig.get("chance_percent.villager.jungle.toolsmith", "1.00")); - chanceConfig.set("chance_percent.villager.jungle.weaponsmith" , oldchanceConfig.get("chance_percent.villager.jungle.weaponsmith", "1.00")); - chanceConfig.set("chance_percent.villager.plains.armorer" , oldchanceConfig.get("chance_percent.villager.plains.armorer", "1.00")); - chanceConfig.set("chance_percent.villager.plains.butcher" , oldchanceConfig.get("chance_percent.villager.plains.butcher", "1.00")); - chanceConfig.set("chance_percent.villager.plains.cartographer" , oldchanceConfig.get("chance_percent.villager.plains.cartographer", "1.00")); - chanceConfig.set("chance_percent.villager.plains.cleric" , oldchanceConfig.get("chance_percent.villager.plains.cleric", "1.00")); - chanceConfig.set("chance_percent.villager.plains.farmer" , oldchanceConfig.get("chance_percent.villager.plains.farmer", "1.00")); - chanceConfig.set("chance_percent.villager.plains.fisherman" , oldchanceConfig.get("chance_percent.villager.plains.fisherman", "1.00")); - chanceConfig.set("chance_percent.villager.plains.fletcher" , oldchanceConfig.get("chance_percent.villager.plains.fletcher", "1.00")); - chanceConfig.set("chance_percent.villager.plains.leatherworker" , oldchanceConfig.get("chance_percent.villager.plains.leatherworker", "1.00")); - chanceConfig.set("chance_percent.villager.plains.librarian" , oldchanceConfig.get("chance_percent.villager.plains.librarian", "1.00")); - chanceConfig.set("chance_percent.villager.plains.mason" , oldchanceConfig.get("chance_percent.villager.plains.mason", "1.00")); - chanceConfig.set("chance_percent.villager.plains.nitwit" , oldchanceConfig.get("chance_percent.villager.plains.nitwit", "1.00")); - chanceConfig.set("chance_percent.villager.plains.none" , oldchanceConfig.get("chance_percent.villager.plains.none", "1.00")); - chanceConfig.set("chance_percent.villager.plains.shepherd" , oldchanceConfig.get("chance_percent.villager.plains.shepherd", "1.00")); - chanceConfig.set("chance_percent.villager.plains.toolsmith" , oldchanceConfig.get("chance_percent.villager.plains.toolsmith", "1.00")); - chanceConfig.set("chance_percent.villager.plains.weaponsmith" , oldchanceConfig.get("chance_percent.villager.plains.weaponsmith", "1.00")); - chanceConfig.set("chance_percent.villager.savanna.armorer" , oldchanceConfig.get("chance_percent.villager.savanna.armorer", "1.00")); - chanceConfig.set("chance_percent.villager.savanna.butcher" , oldchanceConfig.get("chance_percent.villager.savanna.butcher", "1.00")); - chanceConfig.set("chance_percent.villager.savanna.cartographer" , oldchanceConfig.get("chance_percent.villager.savanna.cartographer", "1.00")); - chanceConfig.set("chance_percent.villager.savanna.cleric" , oldchanceConfig.get("chance_percent.villager.savanna.cleric", "1.00")); - chanceConfig.set("chance_percent.villager.savanna.farmer" , oldchanceConfig.get("chance_percent.villager.savanna.farmer", "1.00")); - chanceConfig.set("chance_percent.villager.savanna.fisherman" , oldchanceConfig.get("chance_percent.villager.savanna.fisherman", "1.00")); - chanceConfig.set("chance_percent.villager.savanna.fletcher" , oldchanceConfig.get("chance_percent.villager.savanna.fletcher", "1.00")); - chanceConfig.set("chance_percent.villager.savanna.leatherworker" , oldchanceConfig.get("chance_percent.villager.savanna.leatherworker", "1.00")); - chanceConfig.set("chance_percent.villager.savanna.librarian" , oldchanceConfig.get("chance_percent.villager.savanna.librarian", "1.00")); - chanceConfig.set("chance_percent.villager.savanna.mason" , oldchanceConfig.get("chance_percent.villager.savanna.mason", "1.00")); - chanceConfig.set("chance_percent.villager.savanna.nitwit" , oldchanceConfig.get("chance_percent.villager.savanna.nitwit", "1.00")); - chanceConfig.set("chance_percent.villager.savanna.none" , oldchanceConfig.get("chance_percent.villager.savanna.none", "1.00")); - chanceConfig.set("chance_percent.villager.savanna.shepherd" , oldchanceConfig.get("chance_percent.villager.savanna.shepherd", "1.00")); - chanceConfig.set("chance_percent.villager.savanna.toolsmith" , oldchanceConfig.get("chance_percent.villager.savanna.toolsmith", "1.00")); - chanceConfig.set("chance_percent.villager.savanna.weaponsmith" , oldchanceConfig.get("chance_percent.villager.savanna.weaponsmith", "1.00")); - chanceConfig.set("chance_percent.villager.snow.armorer" , oldchanceConfig.get("chance_percent.villager.snow.armorer", "1.00")); - chanceConfig.set("chance_percent.villager.snow.butcher" , oldchanceConfig.get("chance_percent.villager.snow.butcher", "1.00")); - chanceConfig.set("chance_percent.villager.snow.cartographer" , oldchanceConfig.get("chance_percent.villager.snow.cartographer", "1.00")); - chanceConfig.set("chance_percent.villager.snow.cleric" , oldchanceConfig.get("chance_percent.villager.snow.cleric", "1.00")); - chanceConfig.set("chance_percent.villager.snow.farmer" , oldchanceConfig.get("chance_percent.villager.snow.farmer", "1.00")); - chanceConfig.set("chance_percent.villager.snow.fisherman" , oldchanceConfig.get("chance_percent.villager.snow.fisherman", "1.00")); - chanceConfig.set("chance_percent.villager.snow.fletcher" , oldchanceConfig.get("chance_percent.villager.snow.fletcher", "1.00")); - chanceConfig.set("chance_percent.villager.snow.leatherworker" , oldchanceConfig.get("chance_percent.villager.snow.leatherworker", "1.00")); - chanceConfig.set("chance_percent.villager.snow.librarian" , oldchanceConfig.get("chance_percent.villager.snow.librarian", "1.00")); - chanceConfig.set("chance_percent.villager.snow.mason" , oldchanceConfig.get("chance_percent.villager.snow.mason", "1.00")); - chanceConfig.set("chance_percent.villager.snow.nitwit" , oldchanceConfig.get("chance_percent.villager.snow.nitwit", "1.00")); - chanceConfig.set("chance_percent.villager.snow.none" , oldchanceConfig.get("chance_percent.villager.snow.none", "1.00")); - chanceConfig.set("chance_percent.villager.snow.shepherd" , oldchanceConfig.get("chance_percent.villager.snow.shepherd", "1.00")); - chanceConfig.set("chance_percent.villager.snow.toolsmith" , oldchanceConfig.get("chance_percent.villager.snow.toolsmith", "1.00")); - chanceConfig.set("chance_percent.villager.snow.weaponsmith" , oldchanceConfig.get("chance_percent.villager.snow.weaponsmith", "1.00")); - chanceConfig.set("chance_percent.villager.swamp.armorer" , oldchanceConfig.get("chance_percent.villager.swamp.armorer", "1.00")); - chanceConfig.set("chance_percent.villager.swamp.butcher" , oldchanceConfig.get("chance_percent.villager.swamp.butcher", "1.00")); - chanceConfig.set("chance_percent.villager.swamp.cartographer" , oldchanceConfig.get("chance_percent.villager.swamp.cartographer", "1.00")); - chanceConfig.set("chance_percent.villager.swamp.cleric" , oldchanceConfig.get("chance_percent.villager.swamp.cleric", "1.00")); - chanceConfig.set("chance_percent.villager.swamp.farmer" , oldchanceConfig.get("chance_percent.villager.swamp.farmer", "1.00")); - chanceConfig.set("chance_percent.villager.swamp.fisherman" , oldchanceConfig.get("chance_percent.villager.swamp.fisherman", "1.00")); - chanceConfig.set("chance_percent.villager.swamp.fletcher" , oldchanceConfig.get("chance_percent.villager.swamp.fletcher", "1.00")); - chanceConfig.set("chance_percent.villager.swamp.leatherworker" , oldchanceConfig.get("chance_percent.villager.swamp.leatherworker", "1.00")); - chanceConfig.set("chance_percent.villager.swamp.librarian" , oldchanceConfig.get("chance_percent.villager.swamp.librarian", "1.00")); - chanceConfig.set("chance_percent.villager.swamp.mason" , oldchanceConfig.get("chance_percent.villager.swamp.mason", "1.00")); - chanceConfig.set("chance_percent.villager.swamp.nitwit" , oldchanceConfig.get("chance_percent.villager.swamp.nitwit", "1.00")); - chanceConfig.set("chance_percent.villager.swamp.none" , oldchanceConfig.get("chance_percent.villager.swamp.none", "1.00")); - chanceConfig.set("chance_percent.villager.swamp.shepherd" , oldchanceConfig.get("chance_percent.villager.swamp.shepherd", "1.00")); - chanceConfig.set("chance_percent.villager.swamp.toolsmith" , oldchanceConfig.get("chance_percent.villager.swamp.toolsmith", "1.00")); - chanceConfig.set("chance_percent.villager.swamp.weaponsmith" , oldchanceConfig.get("chance_percent.villager.swamp.weaponsmith", "1.00")); - chanceConfig.set("chance_percent.villager.taiga.armorer" , oldchanceConfig.get("chance_percent.villager.taiga.armorer", "1.00")); - chanceConfig.set("chance_percent.villager.taiga.butcher" , oldchanceConfig.get("chance_percent.villager.taiga.butcher", "1.00")); - chanceConfig.set("chance_percent.villager.taiga.cartographer" , oldchanceConfig.get("chance_percent.villager.taiga.cartographer", "1.00")); - chanceConfig.set("chance_percent.villager.taiga.cleric" , oldchanceConfig.get("chance_percent.villager.taiga.cleric", "1.00")); - chanceConfig.set("chance_percent.villager.taiga.farmer" , oldchanceConfig.get("chance_percent.villager.taiga.farmer", "1.00")); - chanceConfig.set("chance_percent.villager.taiga.fisherman" , oldchanceConfig.get("chance_percent.villager.taiga.fisherman", "1.00")); - chanceConfig.set("chance_percent.villager.taiga.fletcher" , oldchanceConfig.get("chance_percent.villager.taiga.fletcher", "1.00")); - chanceConfig.set("chance_percent.villager.taiga.leatherworker" , oldchanceConfig.get("chance_percent.villager.taiga.leatherworker", "1.00")); - chanceConfig.set("chance_percent.villager.taiga.librarian" , oldchanceConfig.get("chance_percent.villager.taiga.librarian", "1.00")); - chanceConfig.set("chance_percent.villager.taiga.mason" , oldchanceConfig.get("chance_percent.villager.taiga.mason", "1.00")); - chanceConfig.set("chance_percent.villager.taiga.nitwit" , oldchanceConfig.get("chance_percent.villager.taiga.nitwit", "1.00")); - chanceConfig.set("chance_percent.villager.taiga.none" , oldchanceConfig.get("chance_percent.villager.taiga.none", "1.00")); - chanceConfig.set("chance_percent.villager.taiga.shepherd" , oldchanceConfig.get("chance_percent.villager.taiga.shepherd", "1.00")); - chanceConfig.set("chance_percent.villager.taiga.toolsmith" , oldchanceConfig.get("chance_percent.villager.taiga.toolsmith", "1.00")); - chanceConfig.set("chance_percent.villager.taiga.weaponsmith" , oldchanceConfig.get("chance_percent.villager.taiga.weaponsmith", "1.00")); - chanceConfig.set("chance_percent.vindicator" , oldchanceConfig.get("chance_percent.vindicator", "0.05")); - chanceConfig.set("chance_percent.wandering_trader" , oldchanceConfig.get("chance_percent.wandering_trader", "1.00")); - chanceConfig.set("chance_percent.warden" , oldchanceConfig.get("chance_percent.warden", "1.00")); - chanceConfig.set("chance_percent.witch" , oldchanceConfig.get("chance_percent.witch", "0.005")); - chanceConfig.set("chance_percent.wither" , oldchanceConfig.get("chance_percent.wither", "1.00")); - chanceConfig.set("chance_percent.wither_skeleton" , oldchanceConfig.get("chance_percent.wither_skeleton", "0.025")); - chanceConfig.set("chance_percent.wolf" , oldchanceConfig.get("chance_percent.wolf", "0.02")); - chanceConfig.set("chance_percent.zoglin" , oldchanceConfig.get("chance_percent.zoglin", "0.20")); - chanceConfig.set("chance_percent.zombie" , oldchanceConfig.get("chance_percent.zombie", "0.025")); - chanceConfig.set("chance_percent.zombie_horse" , oldchanceConfig.get("chance_percent.zombie_horse", "1.00")); - chanceConfig.set("chance_percent.zombie_pigman" , oldchanceConfig.get("chance_percent.zombie_pigman", "0.005")); - chanceConfig.set("chance_percent.zombified_piglin" , oldchanceConfig.get("chance_percent.zombified_piglin", "0.005")); - chanceConfig.set("chance_percent.zombie_villager" , oldchanceConfig.get("chance_percent.zombie_villager", "0.50")); + chanceConfig.set("chance_percent.player" , oldchanceConfig.getDouble("chance_percent.player", 50.0) ); + chanceConfig.set("chance_percent.named_mob" , oldchanceConfig.getDouble("chance_percent.named_mob", 10.0) ); + chanceConfig.set("chance_percent.allay" , oldchanceConfig.getDouble("chance_percent.allay", 20.0) ); + chanceConfig.set("chance_percent.axolotl.blue" , oldchanceConfig.getDouble("chance_percent.axolotl.blue", 100.0) ); + chanceConfig.set("chance_percent.axolotl.cyan" , oldchanceConfig.getDouble("chance_percent.axolotl.cyan", 20.0) ); + chanceConfig.set("chance_percent.axolotl.gold" , oldchanceConfig.getDouble("chance_percent.axolotl.gold", 20.0) ); + chanceConfig.set("chance_percent.axolotl.lucy" , oldchanceConfig.getDouble("chance_percent.axolotl.lucy", 20.0) ); + chanceConfig.set("chance_percent.axolotl.wild" , oldchanceConfig.getDouble("chance_percent.axolotl.wild", 20.0) ); + chanceConfig.set("chance_percent.bat" , oldchanceConfig.getDouble("chance_percent.bat", 10.0) ); + chanceConfig.set("chance_percent.bee.angry_pollinated" , oldchanceConfig.getDouble("chance_percent.bee.angry_pollinated", 20.0) ); + chanceConfig.set("chance_percent.bee.angry" , oldchanceConfig.getDouble("chance_percent.bee.angry", 20.0) ); + chanceConfig.set("chance_percent.bee.pollinated" , oldchanceConfig.getDouble("chance_percent.bee.pollinated", 20.0) ); + chanceConfig.set("chance_percent.bee.chance_percent" , oldchanceConfig.getDouble("chance_percent.bee.normal", 20.0) ); + chanceConfig.set("chance_percent.blaze" , oldchanceConfig.getDouble("chance_percent.blaze", 0.5) ); + chanceConfig.set("chance_percent.camel" , oldchanceConfig.getDouble("chance_percent.camel", 27.0) ); + chanceConfig.set("chance_percent.cat.all_black" , oldchanceConfig.getDouble("chance_percent.cat.all_black", 33.0) ); + chanceConfig.set("chance_percent.cat.black" , oldchanceConfig.getDouble("chance_percent.cat.black", 33.0) ); + chanceConfig.set("chance_percent.cat.british_shorthair" , oldchanceConfig.getDouble("chance_percent.cat.british_shorthair", 33.0) ); + chanceConfig.set("chance_percent.cat.calico" , oldchanceConfig.getDouble("chance_percent.cat.calico", 33.0) ); + chanceConfig.set("chance_percent.cat.jellie" , oldchanceConfig.getDouble("chance_percent.cat.jellie", 33.0) ); + chanceConfig.set("chance_percent.cat.persian" , oldchanceConfig.getDouble("chance_percent.cat.persian", 33.0) ); + chanceConfig.set("chance_percent.cat.ragdoll" , oldchanceConfig.getDouble("chance_percent.cat.ragdoll", 33.0) ); + chanceConfig.set("chance_percent.cat.red" , oldchanceConfig.getDouble("chance_percent.cat.red", 33.0) ); + chanceConfig.set("chance_percent.cat.siamese" , oldchanceConfig.getDouble("chance_percent.cat.siamese", 33.0) ); + chanceConfig.set("chance_percent.cat.tabby" , oldchanceConfig.getDouble("chance_percent.cat.tabby", 33.0) ); + chanceConfig.set("chance_percent.cat.white" , oldchanceConfig.getDouble("chance_percent.cat.white", 33.0) ); + + chanceConfig.set("chance_percent.cave_spider" , oldchanceConfig.getDouble("chance_percent.cave_spider", 0.5) ); + chanceConfig.set("chance_percent.chicken" , oldchanceConfig.getDouble("chance_percent.chicken", 1.0) ); + chanceConfig.set("chance_percent.cod" , oldchanceConfig.getDouble("chance_percent.cod", 10.0) ); + chanceConfig.set("chance_percent.cow" , oldchanceConfig.getDouble("chance_percent.cow", 1.0) ); + chanceConfig.set("chance_percent.creeper" , oldchanceConfig.getDouble("chance_percent.creeper", 50.0) ); + chanceConfig.set("chance_percent.creeper_charged" , oldchanceConfig.getDouble("chance_percent.creeper_charged", 100.0) ); + chanceConfig.set("chance_percent.dolphin" , oldchanceConfig.getDouble("chance_percent.dolphin", 33.0) ); + chanceConfig.set("chance_percent.donkey" , oldchanceConfig.getDouble("chance_percent.donkey", 20.0) ); + chanceConfig.set("chance_percent.drowned" , oldchanceConfig.getDouble("chance_percent.drowned", 5.0) ); + chanceConfig.set("chance_percent.elder_guardian" , oldchanceConfig.getDouble("chance_percent.elder_guardian", 100.0) ); + chanceConfig.set("chance_percent.ender_dragon" , oldchanceConfig.getDouble("chance_percent.ender_dragon", 100.0) ); + chanceConfig.set("chance_percent.enderman" , oldchanceConfig.getDouble("chance_percent.enderman", 0.5) ); + chanceConfig.set("chance_percent.endermite" , oldchanceConfig.getDouble("chance_percent.endermite", 10.0) ); + chanceConfig.set("chance_percent.evoker" , oldchanceConfig.getDouble("chance_percent.evoker", 25.0) ); + chanceConfig.set("chance_percent.fox.red" , oldchanceConfig.getDouble("chance_percent.fox.red", 10.0) ); + chanceConfig.set("chance_percent.fox.snow" , oldchanceConfig.getDouble("chance_percent.fox.snow", 20.0) ); + chanceConfig.set("chance_percent.frog.cold" , oldchanceConfig.getDouble("chance_percent.frog.cold", 20.0) ); + chanceConfig.set("chance_percent.frog.temperate" , oldchanceConfig.getDouble("chance_percent.frog.temperate", 20.0) ); + chanceConfig.set("chance_percent.frog.warm" , oldchanceConfig.getDouble("chance_percent.frog.warm", 20.0) ); + chanceConfig.set("chance_percent.ghast" , oldchanceConfig.getDouble("chance_percent.ghast", 6.25) ); + chanceConfig.set("chance_percent.giant" , oldchanceConfig.getDouble("chance_percent.giant", 2.5) ); + chanceConfig.set("chance_percent.glow_squid" , oldchanceConfig.getDouble("chance_percent.glow_squid", 5.0) ); + chanceConfig.set("chance_percent.goat.mormal" , oldchanceConfig.getDouble("chance_percent.goat.normal", 1.0) ); + chanceConfig.set("chance_percent.goat.screaming" , oldchanceConfig.getDouble("chance_percent.goat.screaming", 100.0) ); + chanceConfig.set("chance_percent.guardian" , oldchanceConfig.getDouble("chance_percent.guardian", 0.5) ); + chanceConfig.set("chance_percent.hoglin" , oldchanceConfig.getDouble("chance_percent.hoglin", 3.0) ); + chanceConfig.set("chance_percent.horse.black" , oldchanceConfig.getDouble("chance_percent.horse.black", 27.0) ); + chanceConfig.set("chance_percent.horse.brown" , oldchanceConfig.getDouble("chance_percent.horse.brown", 27.0) ); + chanceConfig.set("chance_percent.horse.chestnut" , oldchanceConfig.getDouble("chance_percent.horse.chestnut", 27.0) ); + chanceConfig.set("chance_percent.horse.creamy" , oldchanceConfig.getDouble("chance_percent.horse.creamy", 27.0) ); + chanceConfig.set("chance_percent.horse.dark_brown" , oldchanceConfig.getDouble("chance_percent.horse.dark_brown", 27.0) ); + chanceConfig.set("chance_percent.horse.gray" , oldchanceConfig.getDouble("chance_percent.horse.gray", 27.0) ); + chanceConfig.set("chance_percent.horse.white" , oldchanceConfig.getDouble("chance_percent.horse.white", 27.0) ); + chanceConfig.set("chance_percent.husk" , oldchanceConfig.getDouble("chance_percent.husk", 6.0) ); + chanceConfig.set("chance_percent.illusioner" , oldchanceConfig.getDouble("chance_percent.illusioner", 25.0) ); + chanceConfig.set("chance_percent.iron_golem" , oldchanceConfig.getDouble("chance_percent.iron_golem", 5.0) ); + chanceConfig.set("chance_percent.llama.brown" , oldchanceConfig.getDouble("chance_percent.llama.brown", 24.0) ); + chanceConfig.set("chance_percent.llama.creamy" , oldchanceConfig.getDouble("chance_percent.llama.creamy", 24.0) ); + chanceConfig.set("chance_percent.llama.gray" , oldchanceConfig.getDouble("chance_percent.llama.gray", 24.0) ); + chanceConfig.set("chance_percent.llama.white" , oldchanceConfig.getDouble("chance_percent.llama.white", 24.0) ); + chanceConfig.set("chance_percent.magma_cube" , oldchanceConfig.getDouble("chance_percent.magma_cube", 0.5) ); + chanceConfig.set("chance_percent.mule" , oldchanceConfig.getDouble("chance_percent.mule", 20.0) ); + chanceConfig.set("chance_percent.mushroom_cow.red" , oldchanceConfig.getDouble("chance_percent.mushroom_cow.red", 1.0) ); + chanceConfig.set("chance_percent.mushroom_cow.brown" , oldchanceConfig.getDouble("chance_percent.mushroom_cow.brown", 10.0) ); + chanceConfig.set("chance_percent.ocelot" , oldchanceConfig.getDouble("chance_percent.ocelot", 20.0) ); + chanceConfig.set("chance_percent.panda.aggressive" , oldchanceConfig.getDouble("chance_percent.panda.aggressive", 27.0) ); + chanceConfig.set("chance_percent.panda.brown" , oldchanceConfig.getDouble("chance_percent.panda.brown", 27.0) ); + chanceConfig.set("chance_percent.panda.lazy" , oldchanceConfig.getDouble("chance_percent.panda.lazy", 27.0) ); + chanceConfig.set("chance_percent.panda.normal" , oldchanceConfig.getDouble("chance_percent.panda.normal", 27.0) ); + chanceConfig.set("chance_percent.panda.playful" , oldchanceConfig.getDouble("chance_percent.panda.playful", 27.0) ); + chanceConfig.set("chance_percent.panda.weak" , oldchanceConfig.getDouble("chance_percent.panda.weak", 27.0) ); + chanceConfig.set("chance_percent.panda.worried" , oldchanceConfig.getDouble("chance_percent.panda.worried", 27.0) ); + chanceConfig.set("chance_percent.parrot.blue" , oldchanceConfig.getDouble("chance_percent.parrot.blue", 25.0) ); + chanceConfig.set("chance_percent.parrot.cyan" , oldchanceConfig.getDouble("chance_percent.parrot.cyan", 25.0) ); + chanceConfig.set("chance_percent.parrot.gray" , oldchanceConfig.getDouble("chance_percent.parrot.gray", 25.0) ); + chanceConfig.set("chance_percent.parrot.green" , oldchanceConfig.getDouble("chance_percent.parrot.green", 25.0) ); + chanceConfig.set("chance_percent.parrot.red" , oldchanceConfig.getDouble("chance_percent.parrot.red", 25.0) ); + chanceConfig.set("chance_percent.phantom" , oldchanceConfig.getDouble("chance_percent.phantom", 10.0) ); + chanceConfig.set("chance_percent.pig" , oldchanceConfig.getDouble("chance_percent.pig", 1.0) ); + chanceConfig.set("chance_percent.piglin" , oldchanceConfig.getDouble("chance_percent.piglin", 4.0) ); + chanceConfig.set("chance_percent.pig_zombie" , oldchanceConfig.getDouble("chance_percent.pig_zombie", 0.5) ); + chanceConfig.set("chance_percent.pillager" , oldchanceConfig.getDouble("chance_percent.pillager", 2.5) ); + chanceConfig.set("chance_percent.polar_bear" , oldchanceConfig.getDouble("chance_percent.polar_bear", 20.0) ); + chanceConfig.set("chance_percent.pufferfish" , oldchanceConfig.getDouble("chance_percent.pufferfish", 15.0) ); + chanceConfig.set("chance_percent.rabbit.black" , oldchanceConfig.getDouble("chance_percent.rabbit.black", 26.0) ); + chanceConfig.set("chance_percent.rabbit.black_and_white" , oldchanceConfig.getDouble("chance_percent.rabbit.black_and_white", 26.0) ); + chanceConfig.set("chance_percent.rabbit.brown" , oldchanceConfig.getDouble("chance_percent.rabbit.brown", 26.0) ); + chanceConfig.set("chance_percent.rabbit.gold" , oldchanceConfig.getDouble("chance_percent.rabbit.gold", 26.0) ); + chanceConfig.set("chance_percent.rabbit.salt_and_pepper" , oldchanceConfig.getDouble("chance_percent.rabbit.salt_and_pepper", 26.0) ); + chanceConfig.set("chance_percent.rabbit.the_killer_bunny" , oldchanceConfig.getDouble("chance_percent.rabbit.the_killer_bunny", 100.0) ); + chanceConfig.set("chance_percent.rabbit.toast" , oldchanceConfig.getDouble("chance_percent.rabbit.toast", 26.0) ); + chanceConfig.set("chance_percent.rabbit.white" , oldchanceConfig.getDouble("chance_percent.rabbit.white", 26.0) ); + chanceConfig.set("chance_percent.ravager" , oldchanceConfig.getDouble("chance_percent.ravager", 25.0) ); + chanceConfig.set("chance_percent.salmon" , oldchanceConfig.getDouble("chance_percent.salmon", 10.0) ); + chanceConfig.set("chance_percent.sheep.black" , oldchanceConfig.getDouble("chance_percent.sheep.black", 1.75) ); + chanceConfig.set("chance_percent.sheep.blue" , oldchanceConfig.getDouble("chance_percent.sheep.blue", 1.75) ); + chanceConfig.set("chance_percent.sheep.brown" , oldchanceConfig.getDouble("chance_percent.sheep.brown", 1.75) ); + chanceConfig.set("chance_percent.sheep.cyan" , oldchanceConfig.getDouble("chance_percent.sheep.cyan", 1.75) ); + chanceConfig.set("chance_percent.sheep.gray" , oldchanceConfig.getDouble("chance_percent.sheep.gray", 1.75) ); + chanceConfig.set("chance_percent.sheep.green" , oldchanceConfig.getDouble("chance_percent.sheep.green", 1.75) ); + chanceConfig.set("chance_percent.sheep.jeb_" , oldchanceConfig.getDouble("chance_percent.sheep.jeb_", 10.0) ); + chanceConfig.set("chance_percent.sheep.light_blue" , oldchanceConfig.getDouble("chance_percent.sheep.light_blue", 1.75) ); + chanceConfig.set("chance_percent.sheep.light_gray" , oldchanceConfig.getDouble("chance_percent.sheep.light_gray", 1.75) ); + chanceConfig.set("chance_percent.sheep.lime" , oldchanceConfig.getDouble("chance_percent.sheep.lime", 1.75) ); + chanceConfig.set("chance_percent.sheep.magenta" , oldchanceConfig.getDouble("chance_percent.sheep.magenta", 1.75) ); + chanceConfig.set("chance_percent.sheep.orange" , oldchanceConfig.getDouble("chance_percent.sheep.orange", 1.75) ); + chanceConfig.set("chance_percent.sheep.pink" , oldchanceConfig.getDouble("chance_percent.sheep.pink", 1.75) ); + chanceConfig.set("chance_percent.sheep.purple" , oldchanceConfig.getDouble("chance_percent.sheep.purple", 1.75) ); + chanceConfig.set("chance_percent.sheep.red" , oldchanceConfig.getDouble("chance_percent.sheep.red", 1.75) ); + chanceConfig.set("chance_percent.sheep.white" , oldchanceConfig.getDouble("chance_percent.sheep.white", 1.75) ); + chanceConfig.set("chance_percent.sheep.yellow" , oldchanceConfig.getDouble("chance_percent.sheep.yellow", 1.75) ); + chanceConfig.set("chance_percent.shulker" , oldchanceConfig.getDouble("chance_percent.shulker", 5.0) ); + chanceConfig.set("chance_percent.silverfish" , oldchanceConfig.getDouble("chance_percent.silverfish", 5.0) ); + chanceConfig.set("chance_percent.skeleton" , oldchanceConfig.getDouble("chance_percent.skeleton", 2.5) ); + chanceConfig.set("chance_percent.skeleton_horse" , oldchanceConfig.getDouble("chance_percent.skeleton_horse", 20.0) ); + chanceConfig.set("chance_percent.slime" , oldchanceConfig.getDouble("chance_percent.slime", 0.5) ); + chanceConfig.set("chance_percent.sniffer" , oldchanceConfig.getDouble("chance_percent.sniffer", 50.0) ); + chanceConfig.set("chance_percent.snowman" , oldchanceConfig.getDouble("chance_percent.snowman", 5.0) ); + chanceConfig.set("chance_percent.spider" , oldchanceConfig.getDouble("chance_percent.spider", 0.5) ); + chanceConfig.set("chance_percent.squid" , oldchanceConfig.getDouble("chance_percent.squid", 5.0) ); + chanceConfig.set("chance_percent.stray" , oldchanceConfig.getDouble("chance_percent.stray", 6.0) ); + chanceConfig.set("chance_percent.strider" , oldchanceConfig.getDouble("chance_percent.strider", 10.0) ); + chanceConfig.set("chance_percent.tadpole" , oldchanceConfig.getDouble("chance_percent.tadpole", 10.0) ); + chanceConfig.set("chance_percent.trader_llama.brown" , oldchanceConfig.getDouble("chance_percent.trader_llama.brown", 24.0) ); + chanceConfig.set("chance_percent.trader_llama.creamy" , oldchanceConfig.getDouble("chance_percent.trader_llama.creamy", 24.0) ); + chanceConfig.set("chance_percent.trader_llama.gray" , oldchanceConfig.getDouble("chance_percent.trader_llama.gray", 24.0) ); + chanceConfig.set("chance_percent.trader_llama.white" , oldchanceConfig.getDouble("chance_percent.trader_llama.white", 24.0) ); + chanceConfig.set("chance_percent.tropical_fish.tropical_fish" , oldchanceConfig.getDouble("chance_percent.tropical_fish.tropical_fish", 10.0) ); + chanceConfig.set("chance_percent.tropical_fish.anemone" , oldchanceConfig.getDouble("chance_percent.tropical_fish.anemone", 50.0) ); + chanceConfig.set("chance_percent.tropical_fish.black_tang" , oldchanceConfig.getDouble("chance_percent.tropical_fish.black_tang", 50.0) ); + chanceConfig.set("chance_percent.tropical_fish.blue_tang" , oldchanceConfig.getDouble("chance_percent.tropical_fish.blue_tang", 50.0) ); + chanceConfig.set("chance_percent.tropical_fish.butterflyfish" , oldchanceConfig.getDouble("chance_percent.tropical_fish.butterflyfish", 50.0) ); + chanceConfig.set("chance_percent.tropical_fish.cichlid" , oldchanceConfig.getDouble("chance_percent.tropical_fish.cichlid", 50.0) ); + chanceConfig.set("chance_percent.tropical_fish.clownfish" , oldchanceConfig.getDouble("chance_percent.tropical_fish.clownfish", 50.0) ); + chanceConfig.set("chance_percent.tropical_fish.cotton_candy_betta" , oldchanceConfig.getDouble("chance_percent.tropical_fish.cotton_candy_betta", 50.0) ); + chanceConfig.set("chance_percent.tropical_fish.dottyback" , oldchanceConfig.getDouble("chance_percent.tropical_fish.dottyback", 50.0) ); + chanceConfig.set("chance_percent.tropical_fish.emperor_red_snapper" , oldchanceConfig.getDouble("chance_percent.tropical_fish.emperor_red_snapper", 50.0) ); + chanceConfig.set("chance_percent.tropical_fish.goatfish" , oldchanceConfig.getDouble("chance_percent.tropical_fish.goatfish", 50.0) ); + chanceConfig.set("chance_percent.tropical_fish.moorish_idol" , oldchanceConfig.getDouble("chance_percent.tropical_fish.moorish_idol", 50.0) ); + chanceConfig.set("chance_percent.tropical_fish.ornate_butterflyfish" , oldchanceConfig.getDouble("chance_percent.tropical_fish.ornate_butterflyfish", 50.0) ); + chanceConfig.set("chance_percent.tropical_fish.parrotfish" , oldchanceConfig.getDouble("chance_percent.tropical_fish.parrotfish", 50.0) ); + chanceConfig.set("chance_percent.tropical_fish.queen_angelfish" , oldchanceConfig.getDouble("chance_percent.tropical_fish.queen_angelfish", 50.0) ); + chanceConfig.set("chance_percent.tropical_fish.red_cichlid" , oldchanceConfig.getDouble("chance_percent.tropical_fish.red_cichlid", 50.0) ); + chanceConfig.set("chance_percent.tropical_fish.red_lipped_blenny" , oldchanceConfig.getDouble("chance_percent.tropical_fish.red_lipped_blenny", 50.0) ); + chanceConfig.set("chance_percent.tropical_fish.red_snapper" , oldchanceConfig.getDouble("chance_percent.tropical_fish.red_snapper", 50.0) ); + chanceConfig.set("chance_percent.tropical_fish.threadfin" , oldchanceConfig.getDouble("chance_percent.tropical_fish.threadfin", 50.0) ); + chanceConfig.set("chance_percent.tropical_fish.tomato_clownfish" , oldchanceConfig.getDouble("chance_percent.tropical_fish.tomato_clownfish", 50.0) ); + chanceConfig.set("chance_percent.tropical_fish.triggerfish" , oldchanceConfig.getDouble("chance_percent.tropical_fish.triggerfish", 50.0) ); + chanceConfig.set("chance_percent.tropical_fish.yellowtail_parrotfish" , oldchanceConfig.getDouble("chance_percent.tropical_fish.yellow_parrotfish", 50.0) ); + chanceConfig.set("chance_percent.tropical_fish.yellow_tang" , oldchanceConfig.getDouble("chance_percent.tropical_fish.yellow_tang", 50.0) ); + + chanceConfig.set("chance_percent.turtle" , oldchanceConfig.getDouble("chance_percent.turtle", 10.0) ); + chanceConfig.set("chance_percent.vex" , oldchanceConfig.getDouble("chance_percent.vex", 10.0) ); + chanceConfig.set("chance_percent.villager.desert.armorer" , oldchanceConfig.getDouble("chance_percent.villager.desert.armorer", 100.0) ); + chanceConfig.set("chance_percent.villager.desert.butcher" , oldchanceConfig.getDouble("chance_percent.villager.desert.butcher", 100.0) ); + chanceConfig.set("chance_percent.villager.desert.cartographer" , oldchanceConfig.getDouble("chance_percent.villager.desert.cartographer", 100.0) ); + chanceConfig.set("chance_percent.villager.desert.cleric" , oldchanceConfig.getDouble("chance_percent.villager.desert.cleric", 100.0) ); + chanceConfig.set("chance_percent.villager.desert.farmer" , oldchanceConfig.getDouble("chance_percent.villager.desert.farmer", 100.0) ); + chanceConfig.set("chance_percent.villager.desert.fisherman" , oldchanceConfig.getDouble("chance_percent.villager.desert.fisherman", 100.0) ); + chanceConfig.set("chance_percent.villager.desert.fletcher" , oldchanceConfig.getDouble("chance_percent.villager.desert.fletcher", 100.0) ); + chanceConfig.set("chance_percent.villager.desert.leatherworker" , oldchanceConfig.getDouble("chance_percent.villager.desert.leatherworker", 100.0) ); + chanceConfig.set("chance_percent.villager.desert.librarian" , oldchanceConfig.getDouble("chance_percent.villager.desert.librarian", 100.0) ); + chanceConfig.set("chance_percent.villager.desert.mason" , oldchanceConfig.getDouble("chance_percent.villager.desert.mason", 100.0) ); + chanceConfig.set("chance_percent.villager.desert.nitwit" , oldchanceConfig.getDouble("chance_percent.villager.desert.nitwit", 100.0) ); + chanceConfig.set("chance_percent.villager.desert.none" , oldchanceConfig.getDouble("chance_percent.villager.desert.none", 100.0) ); + chanceConfig.set("chance_percent.villager.desert.shepherd" , oldchanceConfig.getDouble("chance_percent.villager.desert.shepherd", 100.0) ); + chanceConfig.set("chance_percent.villager.desert.toolsmith" , oldchanceConfig.getDouble("chance_percent.villager.desert.toolsmith", 100.0) ); + chanceConfig.set("chance_percent.villager.desert.weaponsmith" , oldchanceConfig.getDouble("chance_percent.villager.desert.weaponsmith", 100.0) ); + chanceConfig.set("chance_percent.villager.jungle.armorer" , oldchanceConfig.getDouble("chance_percent.villager.jungle.armorer", 100.0) ); + chanceConfig.set("chance_percent.villager.jungle.butcher" , oldchanceConfig.getDouble("chance_percent.villager.jungle.butcher", 100.0) ); + chanceConfig.set("chance_percent.villager.jungle.cartographer" , oldchanceConfig.getDouble("chance_percent.villager.jungle.cartographer", 100.0) ); + chanceConfig.set("chance_percent.villager.jungle.cleric" , oldchanceConfig.getDouble("chance_percent.villager.jungle.cleric", 100.0) ); + chanceConfig.set("chance_percent.villager.jungle.farmer" , oldchanceConfig.getDouble("chance_percent.villager.jungle.farmer", 100.0) ); + chanceConfig.set("chance_percent.villager.jungle.fisherman" , oldchanceConfig.getDouble("chance_percent.villager.jungle.fisherman", 100.0) ); + chanceConfig.set("chance_percent.villager.jungle.fletcher" , oldchanceConfig.getDouble("chance_percent.villager.jungle.fletcher", 100.0) ); + chanceConfig.set("chance_percent.villager.jungle.leatherworker" , oldchanceConfig.getDouble("chance_percent.villager.jungle.leatherworker", 100.0) ); + chanceConfig.set("chance_percent.villager.jungle.librarian" , oldchanceConfig.getDouble("chance_percent.villager.jungle.librarian", 100.0) ); + chanceConfig.set("chance_percent.villager.jungle.mason" , oldchanceConfig.getDouble("chance_percent.villager.jungle.mason", 100.0) ); + chanceConfig.set("chance_percent.villager.jungle.nitwit" , oldchanceConfig.getDouble("chance_percent.villager.jungle.nitwit", 100.0) ); + chanceConfig.set("chance_percent.villager.jungle.none" , oldchanceConfig.getDouble("chance_percent.villager.jungle.none", 100.0) ); + chanceConfig.set("chance_percent.villager.jungle.shepherd" , oldchanceConfig.getDouble("chance_percent.villager.jungle.shepherd", 100.0) ); + chanceConfig.set("chance_percent.villager.jungle.toolsmith" , oldchanceConfig.getDouble("chance_percent.villager.jungle.toolsmith", 100.0) ); + chanceConfig.set("chance_percent.villager.jungle.weaponsmith" , oldchanceConfig.getDouble("chance_percent.villager.jungle.weaponsmith", 100.0) ); + chanceConfig.set("chance_percent.villager.plains.armorer" , oldchanceConfig.getDouble("chance_percent.villager.plains.armorer", 100.0) ); + chanceConfig.set("chance_percent.villager.plains.butcher" , oldchanceConfig.getDouble("chance_percent.villager.plains.butcher", 100.0) ); + chanceConfig.set("chance_percent.villager.plains.cartographer" , oldchanceConfig.getDouble("chance_percent.villager.plains.cartographer", 100.0) ); + chanceConfig.set("chance_percent.villager.plains.cleric" , oldchanceConfig.getDouble("chance_percent.villager.plains.cleric", 100.0) ); + chanceConfig.set("chance_percent.villager.plains.farmer" , oldchanceConfig.getDouble("chance_percent.villager.plains.farmer", 100.0) ); + chanceConfig.set("chance_percent.villager.plains.fisherman" , oldchanceConfig.getDouble("chance_percent.villager.plains.fisherman", 100.0) ); + chanceConfig.set("chance_percent.villager.plains.fletcher" , oldchanceConfig.getDouble("chance_percent.villager.plains.fletcher", 100.0) ); + chanceConfig.set("chance_percent.villager.plains.leatherworker" , oldchanceConfig.getDouble("chance_percent.villager.plains.leatherworker", 100.0) ); + chanceConfig.set("chance_percent.villager.plains.librarian" , oldchanceConfig.getDouble("chance_percent.villager.plains.librarian", 100.0) ); + chanceConfig.set("chance_percent.villager.plains.mason" , oldchanceConfig.getDouble("chance_percent.villager.plains.mason", 100.0) ); + chanceConfig.set("chance_percent.villager.plains.nitwit" , oldchanceConfig.getDouble("chance_percent.villager.plains.nitwit", 100.0) ); + chanceConfig.set("chance_percent.villager.plains.none" , oldchanceConfig.getDouble("chance_percent.villager.plains.none", 100.0) ); + chanceConfig.set("chance_percent.villager.plains.shepherd" , oldchanceConfig.getDouble("chance_percent.villager.plains.shepherd", 100.0) ); + chanceConfig.set("chance_percent.villager.plains.toolsmith" , oldchanceConfig.getDouble("chance_percent.villager.plains.toolsmith", 100.0) ); + chanceConfig.set("chance_percent.villager.plains.weaponsmith" , oldchanceConfig.getDouble("chance_percent.villager.plains.weaponsmith", 100.0) ); + chanceConfig.set("chance_percent.villager.savanna.armorer" , oldchanceConfig.getDouble("chance_percent.villager.savanna.armorer", 100.0) ); + chanceConfig.set("chance_percent.villager.savanna.butcher" , oldchanceConfig.getDouble("chance_percent.villager.savanna.butcher", 100.0) ); + chanceConfig.set("chance_percent.villager.savanna.cartographer" , oldchanceConfig.getDouble("chance_percent.villager.savanna.cartographer", 100.0) ); + chanceConfig.set("chance_percent.villager.savanna.cleric" , oldchanceConfig.getDouble("chance_percent.villager.savanna.cleric", 100.0) ); + chanceConfig.set("chance_percent.villager.savanna.farmer" , oldchanceConfig.getDouble("chance_percent.villager.savanna.farmer", 100.0) ); + chanceConfig.set("chance_percent.villager.savanna.fisherman" , oldchanceConfig.getDouble("chance_percent.villager.savanna.fisherman", 100.0) ); + chanceConfig.set("chance_percent.villager.savanna.fletcher" , oldchanceConfig.getDouble("chance_percent.villager.savanna.fletcher", 100.0) ); + chanceConfig.set("chance_percent.villager.savanna.leatherworker" , oldchanceConfig.getDouble("chance_percent.villager.savanna.leatherworker", 100.0) ); + chanceConfig.set("chance_percent.villager.savanna.librarian" , oldchanceConfig.getDouble("chance_percent.villager.savanna.librarian", 100.0) ); + chanceConfig.set("chance_percent.villager.savanna.mason" , oldchanceConfig.getDouble("chance_percent.villager.savanna.mason", 100.0) ); + chanceConfig.set("chance_percent.villager.savanna.nitwit" , oldchanceConfig.getDouble("chance_percent.villager.savanna.nitwit", 100.0) ); + chanceConfig.set("chance_percent.villager.savanna.none" , oldchanceConfig.getDouble("chance_percent.villager.savanna.none", 100.0) ); + chanceConfig.set("chance_percent.villager.savanna.shepherd" , oldchanceConfig.getDouble("chance_percent.villager.savanna.shepherd", 100.0) ); + chanceConfig.set("chance_percent.villager.savanna.toolsmith" , oldchanceConfig.getDouble("chance_percent.villager.savanna.toolsmith", 100.0) ); + chanceConfig.set("chance_percent.villager.savanna.weaponsmith" , oldchanceConfig.getDouble("chance_percent.villager.savanna.weaponsmith", 100.0) ); + chanceConfig.set("chance_percent.villager.snow.armorer" , oldchanceConfig.getDouble("chance_percent.villager.snow.armorer", 100.0) ); + chanceConfig.set("chance_percent.villager.snow.butcher" , oldchanceConfig.getDouble("chance_percent.villager.snow.butcher", 100.0) ); + chanceConfig.set("chance_percent.villager.snow.cartographer" , oldchanceConfig.getDouble("chance_percent.villager.snow.cartographer", 100.0) ); + chanceConfig.set("chance_percent.villager.snow.cleric" , oldchanceConfig.getDouble("chance_percent.villager.snow.cleric", 100.0) ); + chanceConfig.set("chance_percent.villager.snow.farmer" , oldchanceConfig.getDouble("chance_percent.villager.snow.farmer", 100.0) ); + chanceConfig.set("chance_percent.villager.snow.fisherman" , oldchanceConfig.getDouble("chance_percent.villager.snow.fisherman", 100.0) ); + chanceConfig.set("chance_percent.villager.snow.fletcher" , oldchanceConfig.getDouble("chance_percent.villager.snow.fletcher", 100.0) ); + chanceConfig.set("chance_percent.villager.snow.leatherworker" , oldchanceConfig.getDouble("chance_percent.villager.snow.leatherworker", 100.0) ); + chanceConfig.set("chance_percent.villager.snow.librarian" , oldchanceConfig.getDouble("chance_percent.villager.snow.librarian", 100.0) ); + chanceConfig.set("chance_percent.villager.snow.mason" , oldchanceConfig.getDouble("chance_percent.villager.snow.mason", 100.0) ); + chanceConfig.set("chance_percent.villager.snow.nitwit" , oldchanceConfig.getDouble("chance_percent.villager.snow.nitwit", 100.0) ); + chanceConfig.set("chance_percent.villager.snow.none" , oldchanceConfig.getDouble("chance_percent.villager.snow.none", 100.0) ); + chanceConfig.set("chance_percent.villager.snow.shepherd" , oldchanceConfig.getDouble("chance_percent.villager.snow.shepherd", 100.0) ); + chanceConfig.set("chance_percent.villager.snow.toolsmith" , oldchanceConfig.getDouble("chance_percent.villager.snow.toolsmith", 100.0) ); + chanceConfig.set("chance_percent.villager.snow.weaponsmith" , oldchanceConfig.getDouble("chance_percent.villager.snow.weaponsmith", 100.0) ); + chanceConfig.set("chance_percent.villager.swamp.armorer" , oldchanceConfig.getDouble("chance_percent.villager.swamp.armorer", 100.0) ); + chanceConfig.set("chance_percent.villager.swamp.butcher" , oldchanceConfig.getDouble("chance_percent.villager.swamp.butcher", 100.0) ); + chanceConfig.set("chance_percent.villager.swamp.cartographer" , oldchanceConfig.getDouble("chance_percent.villager.swamp.cartographer", 100.0) ); + chanceConfig.set("chance_percent.villager.swamp.cleric" , oldchanceConfig.getDouble("chance_percent.villager.swamp.cleric", 100.0) ); + chanceConfig.set("chance_percent.villager.swamp.farmer" , oldchanceConfig.getDouble("chance_percent.villager.swamp.farmer", 100.0) ); + chanceConfig.set("chance_percent.villager.swamp.fisherman" , oldchanceConfig.getDouble("chance_percent.villager.swamp.fisherman", 100.0) ); + chanceConfig.set("chance_percent.villager.swamp.fletcher" , oldchanceConfig.getDouble("chance_percent.villager.swamp.fletcher", 100.0) ); + chanceConfig.set("chance_percent.villager.swamp.leatherworker" , oldchanceConfig.getDouble("chance_percent.villager.swamp.leatherworker", 100.0) ); + chanceConfig.set("chance_percent.villager.swamp.librarian" , oldchanceConfig.getDouble("chance_percent.villager.swamp.librarian", 100.0) ); + chanceConfig.set("chance_percent.villager.swamp.mason" , oldchanceConfig.getDouble("chance_percent.villager.swamp.mason", 100.0) ); + chanceConfig.set("chance_percent.villager.swamp.nitwit" , oldchanceConfig.getDouble("chance_percent.villager.swamp.nitwit", 100.0) ); + chanceConfig.set("chance_percent.villager.swamp.none" , oldchanceConfig.getDouble("chance_percent.villager.swamp.none", 100.0) ); + chanceConfig.set("chance_percent.villager.swamp.shepherd" , oldchanceConfig.getDouble("chance_percent.villager.swamp.shepherd", 100.0) ); + chanceConfig.set("chance_percent.villager.swamp.toolsmith" , oldchanceConfig.getDouble("chance_percent.villager.swamp.toolsmith", 100.0) ); + chanceConfig.set("chance_percent.villager.swamp.weaponsmith" , oldchanceConfig.getDouble("chance_percent.villager.swamp.weaponsmith", 100.0) ); + chanceConfig.set("chance_percent.villager.taiga.armorer" , oldchanceConfig.getDouble("chance_percent.villager.taiga.armorer", 100.0) ); + chanceConfig.set("chance_percent.villager.taiga.butcher" , oldchanceConfig.getDouble("chance_percent.villager.taiga.butcher", 100.0) ); + chanceConfig.set("chance_percent.villager.taiga.cartographer" , oldchanceConfig.getDouble("chance_percent.villager.taiga.cartographer", 100.0) ); + chanceConfig.set("chance_percent.villager.taiga.cleric" , oldchanceConfig.getDouble("chance_percent.villager.taiga.cleric", 100.0) ); + chanceConfig.set("chance_percent.villager.taiga.farmer" , oldchanceConfig.getDouble("chance_percent.villager.taiga.farmer", 100.0) ); + chanceConfig.set("chance_percent.villager.taiga.fisherman" , oldchanceConfig.getDouble("chance_percent.villager.taiga.fisherman", 100.0) ); + chanceConfig.set("chance_percent.villager.taiga.fletcher" , oldchanceConfig.getDouble("chance_percent.villager.taiga.fletcher", 100.0) ); + chanceConfig.set("chance_percent.villager.taiga.leatherworker" , oldchanceConfig.getDouble("chance_percent.villager.taiga.leatherworker", 100.0) ); + chanceConfig.set("chance_percent.villager.taiga.librarian" , oldchanceConfig.getDouble("chance_percent.villager.taiga.librarian", 100.0) ); + chanceConfig.set("chance_percent.villager.taiga.mason" , oldchanceConfig.getDouble("chance_percent.villager.taiga.mason", 100.0) ); + chanceConfig.set("chance_percent.villager.taiga.nitwit" , oldchanceConfig.getDouble("chance_percent.villager.taiga.nitwit", 100.0) ); + chanceConfig.set("chance_percent.villager.taiga.none" , oldchanceConfig.getDouble("chance_percent.villager.taiga.none", 100.0) ); + chanceConfig.set("chance_percent.villager.taiga.shepherd" , oldchanceConfig.getDouble("chance_percent.villager.taiga.shepherd", 100.0) ); + chanceConfig.set("chance_percent.villager.taiga.toolsmith" , oldchanceConfig.getDouble("chance_percent.villager.taiga.toolsmith", 100.0) ); + chanceConfig.set("chance_percent.villager.taiga.weaponsmith" , oldchanceConfig.getDouble("chance_percent.villager.taiga.weaponsmith", 100.0) ); + chanceConfig.set("chance_percent.vindicator" , oldchanceConfig.getDouble("chance_percent.vindicator", 5.0) ); + chanceConfig.set("chance_percent.wandering_trader" , oldchanceConfig.getDouble("chance_percent.wandering_trader", 100.0) ); + chanceConfig.set("chance_percent.warden" , oldchanceConfig.getDouble("chance_percent.warden", 100.0) ); + chanceConfig.set("chance_percent.witch" , oldchanceConfig.getDouble("chance_percent.witch", 0.5) ); + chanceConfig.set("chance_percent.wither" , oldchanceConfig.getDouble("chance_percent.wither", 100.0) ); + chanceConfig.set("chance_percent.wither_skeleton" , oldchanceConfig.getDouble("chance_percent.wither_skeleton", 2.5) ); + chanceConfig.set("chance_percent.wolf" , oldchanceConfig.getDouble("chance_percent.wolf", 20.0) ); + chanceConfig.set("chance_percent.zoglin" , oldchanceConfig.getDouble("chance_percent.zoglin", 20.0) ); + chanceConfig.set("chance_percent.zombie" , oldchanceConfig.getDouble("chance_percent.zombie", 2.5) ); + chanceConfig.set("chance_percent.zombie_horse" , oldchanceConfig.getDouble("chance_percent.zombie_horse", 100.0) ); + chanceConfig.set("chance_percent.zombie_pigman" , oldchanceConfig.getDouble("chance_percent.zombie_pigman", 0.5) ); + chanceConfig.set("chance_percent.zombified_piglin" , oldchanceConfig.getDouble("chance_percent.zombified_piglin", 0.5) ); + chanceConfig.set("chance_percent.zombie_villager" , oldchanceConfig.getDouble("chance_percent.zombie_villager", 50.0) ); try { chanceConfig.save(file2); } catch (IOException e) { @@ -2178,7 +2181,7 @@ public class MoreMobHeads extends JavaPlugin implements Listener{ log(Level.INFO, "chance_config.yml has been updated!"); oldchanceConfig = null; } - + public void stacktraceInfo(){ logger.info(THIS_NAME + " v" + THIS_VERSION + " Include this with the stacktrace when reporting issues."); logger.info(THIS_NAME + " v" + THIS_VERSION + " This server is running " + Bukkit.getName() + " version " + Bukkit.getVersion() + " (Implementing API version " + Bukkit.getBukkitVersion() + ")"); @@ -2194,153 +2197,179 @@ public class MoreMobHeads extends JavaPlugin implements Listener{ debug = true; logger.info(THIS_NAME + " v" + THIS_VERSION + " DEBUG has been set as true until plugin reload or /mmh td, or /mmh reload."); } - + // Persistent Heads private final NamespacedKey NAME_KEY = new NamespacedKey(this, "head_name"); - private final NamespacedKey LORE_KEY = new NamespacedKey(this, "head_lore"); - private final PersistentDataType LORE_PDT = new JsonDataType<>(String[].class); - //@SuppressWarnings("unused") + private final NamespacedKey LORE_KEY = new NamespacedKey(this, "head_lore"); + private final PersistentDataType LORE_PDT = new JsonDataType<>(String[].class); + //@SuppressWarnings("unused") //private final PersistentDataType LORE_PDT2 = new JsonDataType<>(String.class); - //private final NamespacedKey DISPLAY_KEY = new NamespacedKey(this, "head_display"); - //private final NamespacedKey SKULLOWNER_KEY = new NamespacedKey(this, "head_skullowner"); - - // TODO: Persistent Heads - @EventHandler(priority = EventPriority.LOWEST) - public void onBlockPlaceEvent(BlockPlaceEvent event) { - @Nonnull ItemStack headItem = event.getItemInHand(); - if (headItem.getType() != Material.PLAYER_HEAD) return; - ItemMeta meta = headItem.getItemMeta(); - if (meta == null) return; - @Nonnull String name = meta.getDisplayName(); - @Nullable List lore = meta.getLore(); - @Nonnull Block block = event.getBlockPlaced(); - // NOTE: Not using snapshots is broken: https://github.com/PaperMC/Paper/issues/3913 - BlockStateSnapshotResult blockStateSnapshotResult = PaperLib.getBlockState(block, true); - TileState skullState = (TileState) blockStateSnapshotResult.getState(); - @Nonnull PersistentDataContainer skullPDC = skullState.getPersistentDataContainer(); - skullPDC.set(NAME_KEY, PersistentDataType.STRING, name); - if (lore != null) skullPDC.set(LORE_KEY, LORE_PDT, lore.toArray(new String[0])); - if (blockStateSnapshotResult.isSnapshot()) skullState.update(); - String strLore = "no lore"; - if(lore != null){ strLore = lore.toString(); } - if(debug) {log(Level.INFO, "Player " + event.getPlayer().getName() + " placed a head named \"" + name + "\" with lore=\'" + strLore + "\' at " + event.getBlockPlaced().getLocation());}; - } + //private final NamespacedKey DISPLAY_KEY = new NamespacedKey(this, "head_display"); + //private final NamespacedKey SKULLOWNER_KEY = new NamespacedKey(this, "head_skullowner"); - @EventHandler(priority = EventPriority.LOWEST) - public void onBlockDropItemEvent(BlockDropItemEvent event) { - @Nonnull BlockState blockState = event.getBlockState(); - Material blockType = blockState.getType(); - if (blockType != Material.PLAYER_HEAD && blockType != Material.PLAYER_WALL_HEAD) return; - TileState skullState = (TileState) blockState; - @Nonnull PersistentDataContainer skullPDC = skullState.getPersistentDataContainer(); - @Nullable String name = skullPDC.get(NAME_KEY, PersistentDataType.STRING); - @Nullable String[] lore = skullPDC.get(LORE_KEY, LORE_PDT); - if (name == null) return; - for (Item item: event.getItems()) { // Ideally should only be one... - @Nonnull ItemStack itemstack = item.getItemStack(); - if (itemstack.getType() == Material.PLAYER_HEAD) { - @Nullable ItemMeta meta = itemstack.getItemMeta(); - if (meta == null) continue; // This shouldn't happen - meta.setDisplayName(name); - if (lore != null) meta.setLore(Arrays.asList(lore)); - itemstack.setItemMeta(meta); - } - } - if(debug) {log(Level.INFO, "BDIE - Persistent head completed.");}; - } - - /** - * Prevents player from removing player-head NBT by water logging them - */ - @EventHandler(priority = EventPriority.LOWEST) - public void onPlayerBucketEmpty(PlayerBucketEmptyEvent event) { - handleBlock(event.getBlock(), event, false); - } - - /** - * Prevents player from removing player-head NBT using running water - */ - @EventHandler(priority = EventPriority.LOWEST) - public void onLiquidFlow(BlockFromToEvent event) { - handleBlock(event.getToBlock(), event, true); - } - - /* - * Prevents explosion from removing player-head NBT using an explosion - */ - @EventHandler(priority = EventPriority.MONITOR, ignoreCancelled = true) - public void onBlockExplosion(BlockExplodeEvent event) { - handleExplosionEvent(event.blockList(), event.getYield()); - } - - /* - * Prevents entity from removing player-head NBT using an explosion - */ - @EventHandler(priority = EventPriority.MONITOR, ignoreCancelled = true) - public void onEntityExplosion(EntityExplodeEvent event) { - handleExplosionEvent(event.blockList(), event.getYield()); - } - - /* - * Prevents piston extending from removing NBT data. - */ - @EventHandler(priority = EventPriority.LOWEST) - public void onPistonExtendEvent(BlockPistonExtendEvent event) { - if(!config.getBoolean("event.piston_extend", true)) { - return; - } - List blocks = event.getBlocks(); - Iterator iter = blocks.iterator(); - try { - while (iter.hasNext()) { - Block block = iter.next(); - if (block.getState() instanceof Skull) { //if (block.getState() instanceof Skull && random.nextFloat() <= explosionYield) - handleBlock(block, null, false); - iter.remove(); - } - } - }catch(Exception e) { - - } - } - - @SuppressWarnings("unused") + // TODO: Persistent Heads + @EventHandler(priority = EventPriority.LOWEST) + public void onBlockPlaceEvent(BlockPlaceEvent event) { + @Nonnull ItemStack headItem = event.getItemInHand(); + if (headItem.getType() != Material.PLAYER_HEAD) { + return; + } + ItemMeta meta = headItem.getItemMeta(); + if (meta == null) { + return; + } + @Nonnull String name = meta.getDisplayName(); + @Nullable List lore = meta.getLore(); + @Nonnull Block block = event.getBlockPlaced(); + // NOTE: Not using snapshots is broken: https://github.com/PaperMC/Paper/issues/3913 + BlockStateSnapshotResult blockStateSnapshotResult = PaperLib.getBlockState(block, true); + TileState skullState = (TileState) blockStateSnapshotResult.getState(); + @Nonnull PersistentDataContainer skullPDC = skullState.getPersistentDataContainer(); + skullPDC.set(NAME_KEY, PersistentDataType.STRING, name); + if (lore != null) { + skullPDC.set(LORE_KEY, LORE_PDT, lore.toArray(new String[0])); + } + if (blockStateSnapshotResult.isSnapshot()) { + skullState.update(); + } + String strLore = "no lore"; + if(lore != null){ strLore = lore.toString(); } + if(debug) {log(Level.INFO, "Player " + event.getPlayer().getName() + " placed a head named \"" + name + "\" with lore=\'" + strLore + "\' at " + event.getBlockPlaced().getLocation());}; + } + + @EventHandler(priority = EventPriority.LOWEST) + public void onBlockDropItemEvent(BlockDropItemEvent event) { + @Nonnull BlockState blockState = event.getBlockState(); + Material blockType = blockState.getType(); + if ((blockType != Material.PLAYER_HEAD) && (blockType != Material.PLAYER_WALL_HEAD)) { + return; + } + TileState skullState = (TileState) blockState; + @Nonnull PersistentDataContainer skullPDC = skullState.getPersistentDataContainer(); + @Nullable String name = skullPDC.get(NAME_KEY, PersistentDataType.STRING); + @Nullable String[] lore = skullPDC.get(LORE_KEY, LORE_PDT); + if (name == null) { + return; + } + for (Item item: event.getItems()) { // Ideally should only be one... + @Nonnull ItemStack itemstack = item.getItemStack(); + if (itemstack.getType() == Material.PLAYER_HEAD) { + @Nullable ItemMeta meta = itemstack.getItemMeta(); + if (meta == null) + { + continue; // This shouldn't happen + } + meta.setDisplayName(name); + if (lore != null) { + meta.setLore(Arrays.asList(lore)); + } + itemstack.setItemMeta(meta); + } + } + if(debug) {log(Level.INFO, "BDIE - Persistent head completed.");}; + } + + /** + * Prevents player from removing player-head NBT by water logging them + */ + @EventHandler(priority = EventPriority.LOWEST) + public void onPlayerBucketEmpty(PlayerBucketEmptyEvent event) { + handleBlock(event.getBlock(), event, false); + } + + /** + * Prevents player from removing player-head NBT using running water + */ + @EventHandler(priority = EventPriority.LOWEST) + public void onLiquidFlow(BlockFromToEvent event) { + handleBlock(event.getToBlock(), event, true); + } + + /* + * Prevents explosion from removing player-head NBT using an explosion + */ + @EventHandler(priority = EventPriority.MONITOR, ignoreCancelled = true) + public void onBlockExplosion(BlockExplodeEvent event) { + handleExplosionEvent(event.blockList(), event.getYield()); + } + + /* + * Prevents entity from removing player-head NBT using an explosion + */ + @EventHandler(priority = EventPriority.MONITOR, ignoreCancelled = true) + public void onEntityExplosion(EntityExplodeEvent event) { + handleExplosionEvent(event.blockList(), event.getYield()); + } + + /* + * Prevents piston extending from removing NBT data. + */ + @EventHandler(priority = EventPriority.LOWEST) + public void onPistonExtendEvent(BlockPistonExtendEvent event) { + if(!config.getBoolean("event.piston_extend", true)) { + return; + } + List blocks = event.getBlocks(); + Iterator iter = blocks.iterator(); + try { + while (iter.hasNext()) { + Block block = iter.next(); + if (block.getState() instanceof Skull) { //if (block.getState() instanceof Skull && random.nextFloat() <= explosionYield) + handleBlock(block, null, false); + iter.remove(); + } + } + }catch(Exception e) { + + } + } + + @SuppressWarnings("unused") private void handleExplosionEvent(@Nonnull final List blocksExploded, final float explosionYield) { - final Random random = ThreadLocalRandom.current(); - Iterator iter = blocksExploded.iterator(); - try { - while (iter.hasNext()) { - Block block = iter.next(); - if (block.getState() instanceof Skull) { //if (block.getState() instanceof Skull && random.nextFloat() <= explosionYield) - handleBlock(block, null, false); - iter.remove(); - } - } - }catch(Exception e) { - - } - } - - private void handleBlock(Block block, Cancellable event, boolean cancelEvent) { - @Nonnull BlockState blockState = block.getState(); - if (blockState.getType() != Material.PLAYER_HEAD && blockState.getType() != Material.PLAYER_WALL_HEAD) return; - Skull skullState = (Skull) blockState; - @Nonnull PersistentDataContainer skullPDC = skullState.getPersistentDataContainer(); - @Nullable String name = skullPDC.get(NAME_KEY, PersistentDataType.STRING); - @Nullable String[] lore = skullPDC.get(LORE_KEY, LORE_PDT); - if (name == null) return; - @Nonnull Optional skullStack = block.getDrops().stream().filter(is -> is.getType() == Material.PLAYER_HEAD).findAny(); - if (skullStack.isPresent()) { - if (updateDrop(block, name, lore, skullStack.get())) return; // This shouldn't happen - if (cancelEvent) event.setCancelled(true); - } + final Random random = ThreadLocalRandom.current(); + Iterator iter = blocksExploded.iterator(); + try { + while (iter.hasNext()) { + Block block = iter.next(); + if (block.getState() instanceof Skull) { //if (block.getState() instanceof Skull && random.nextFloat() <= explosionYield) + handleBlock(block, null, false); + iter.remove(); + } + } + }catch(Exception e) { - BlockState blockState1 = block.getWorld().getBlockAt(block.getLocation()).getState(); - blockState1.update(true, true); - if(debug) {log(Level.INFO, "HB - Persistent head completed.");}; - } - - /**@EventHandler(priority = EventPriority.LOWEST) + } + } + + private void handleBlock(Block block, Cancellable event, boolean cancelEvent) { + @Nonnull BlockState blockState = block.getState(); + if ((blockState.getType() != Material.PLAYER_HEAD) && (blockState.getType() != Material.PLAYER_WALL_HEAD)) { + return; + } + Skull skullState = (Skull) blockState; + @Nonnull PersistentDataContainer skullPDC = skullState.getPersistentDataContainer(); + @Nullable String name = skullPDC.get(NAME_KEY, PersistentDataType.STRING); + @Nullable String[] lore = skullPDC.get(LORE_KEY, LORE_PDT); + if (name == null) { + return; + } + @Nonnull Optional skullStack = block.getDrops().stream().filter(is -> is.getType() == Material.PLAYER_HEAD).findAny(); + if (skullStack.isPresent()) { + if (updateDrop(block, name, lore, skullStack.get())) + { + return; // This shouldn't happen + } + if (cancelEvent) { + event.setCancelled(true); + } + } + + BlockState blockState1 = block.getWorld().getBlockAt(block.getLocation()).getState(); + blockState1.update(true, true); + if(debug) {log(Level.INFO, "HB - Persistent head completed.");}; + } + + /**@EventHandler(priority = EventPriority.LOWEST) public void onBlockExplodeEvent(BlockExplodeEvent event) { List a = event.blockList(); for (Block block: event.blockList()) { // Ideally should only be one... @@ -2354,45 +2383,58 @@ public class MoreMobHeads extends JavaPlugin implements Listener{ if (name == null) return; block.breakNaturally(); } - + }//*/ - - @SuppressWarnings("unused") + + @SuppressWarnings("unused") private void handleEvent(Supplier blockSupplier, Cancellable event, boolean cancelEvent) { - Block block = blockSupplier.get(); - @Nonnull BlockState blockState = block.getState(); - if (blockState.getType() != Material.PLAYER_HEAD && blockState.getType() != Material.PLAYER_WALL_HEAD) return; - Skull skullState = (Skull) blockState; - @Nonnull PersistentDataContainer skullPDC = skullState.getPersistentDataContainer(); - @Nullable String name = skullPDC.get(NAME_KEY, PersistentDataType.STRING); - @Nullable String[] lore = skullPDC.get(LORE_KEY, LORE_PDT); - if (name == null) return; - @Nonnull Optional skullStack = block.getDrops().stream().filter(is -> is.getType() == Material.PLAYER_HEAD).findAny(); - if (skullStack.isPresent()) { - if (updateDrop(block, name, lore, skullStack.get())) return; // This shouldn't happen - if (cancelEvent) event.setCancelled(true); - } + Block block = blockSupplier.get(); + @Nonnull BlockState blockState = block.getState(); + if ((blockState.getType() != Material.PLAYER_HEAD) && (blockState.getType() != Material.PLAYER_WALL_HEAD)) { + return; + } + Skull skullState = (Skull) blockState; + @Nonnull PersistentDataContainer skullPDC = skullState.getPersistentDataContainer(); + @Nullable String name = skullPDC.get(NAME_KEY, PersistentDataType.STRING); + @Nullable String[] lore = skullPDC.get(LORE_KEY, LORE_PDT); + if (name == null) { + return; + } + @Nonnull Optional skullStack = block.getDrops().stream().filter(is -> is.getType() == Material.PLAYER_HEAD).findAny(); + if (skullStack.isPresent()) { + if (updateDrop(block, name, lore, skullStack.get())) + { + return; // This shouldn't happen + } + if (cancelEvent) { + event.setCancelled(true); + } + } - BlockState blockState1 = block.getWorld().getBlockAt(block.getLocation()).getState(); - blockState1.update(true, true); - if(debug) {log(Level.INFO, "HE - Persistent head completed.");}; - } + BlockState blockState1 = block.getWorld().getBlockAt(block.getLocation()).getState(); + blockState1.update(true, true); + if(debug) {log(Level.INFO, "HE - Persistent head completed.");}; + } - private boolean updateDrop(Block block, @Nullable String name, @Nullable String[] lore, @Nonnull ItemStack itemstack) { - @Nullable ItemMeta meta = itemstack.getItemMeta(); - if (meta == null) return true; - meta.setDisplayName(name); - if (lore != null) meta.setLore(Arrays.asList(lore)); - itemstack.setItemMeta(meta); + private boolean updateDrop(Block block, @Nullable String name, @Nullable String[] lore, @Nonnull ItemStack itemstack) { + @Nullable ItemMeta meta = itemstack.getItemMeta(); + if (meta == null) { + return true; + } + meta.setDisplayName(name); + if (lore != null) { + meta.setLore(Arrays.asList(lore)); + } + itemstack.setItemMeta(meta); + + block.getWorld().dropItemNaturally(block.getLocation(), itemstack); + block.getDrops().clear(); + block.setType(Material.AIR); + if(debug) {log(Level.INFO, "UD - Persistent head completed.");}; + return false; + } + // Persistent Heads - block.getWorld().dropItemNaturally(block.getLocation(), itemstack); - block.getDrops().clear(); - block.setType(Material.AIR); - if(debug) {log(Level.INFO, "UD - Persistent head completed.");}; - return false; - } - // Persistent Heads - /**@EventHandler() public void onPlayerBucketEmpty(PlayerBucketEmptyEvent event) { Block block = event.getBlock(); @@ -2417,7 +2459,7 @@ public class MoreMobHeads extends JavaPlugin implements Listener{ meta.setDisplayName(name); if (lore != null) meta.setLore(Arrays.asList(lore)); itemstack.setItemMeta(meta); - + block.getWorld().dropItemNaturally(block.getLocation(), itemstack); block.getDrops().clear(); block.setType(Material.AIR); @@ -2426,12 +2468,12 @@ public class MoreMobHeads extends JavaPlugin implements Listener{ BlockState blockS = block.getWorld().getBlockAt(loc).getState(); blockS.update(true, true); } - + @EventHandler public void onLiquidFlow(BlockFromToEvent event) { Block block = event.getToBlock(); Location loc = block.getLocation(); - + @Nonnull BlockState blockState = block.getState(); Material blockType = blockState.getType(); if (blockType != Material.PLAYER_HEAD && blockType != Material.PLAYER_WALL_HEAD) return; @@ -2449,7 +2491,7 @@ public class MoreMobHeads extends JavaPlugin implements Listener{ meta.setDisplayName(name); if (lore != null) meta.setLore(Arrays.asList(lore)); itemstack.setItemMeta(meta); - + block.getWorld().dropItemNaturally(block.getLocation(), itemstack); block.getDrops().clear(); block.setType(Material.AIR); @@ -2459,104 +2501,104 @@ public class MoreMobHeads extends JavaPlugin implements Listener{ BlockState blockS = block.getWorld().getBlockAt(loc).getState(); blockS.update(true, true); }// */ - - @SuppressWarnings("unused") + + @SuppressWarnings("unused") public ItemStack fixHeadStack(ItemStack offHand, ItemStack mainHand){ - NBTItem nbti = new NBTItem(offHand); - Set SkullKeys = nbti.getKeys(); - int damage = nbti.getInteger("Damage"); - NBTCompound display = nbti.getCompound("display"); - NBTCompound SkullOwner = nbti.getCompound("SkullOwner"); - if(debug){logDebug("FHS Offhand damage=" + damage);} - if(debug){logDebug("FHS Offhand display=" + display.toString());} - if(debug){logDebug("FHS Offhand SkullOwner=" + SkullOwner.toString());} - - NBTItem nbti2 = new NBTItem(mainHand); - Set SkullKeys2 = nbti2.getKeys(); - int damage2 = nbti2.getInteger("Damage"); - NBTCompound display2 = nbti2.getCompound("display"); - NBTCompound SkullOwner2 = nbti2.getCompound("SkullOwner"); - if(debug){logDebug("FHS Mainhand damage=" + damage2);} - if(debug){logDebug("FHS Mainhand display=" + display2.toString());} - if(debug){logDebug("FHS Mainhand SkullOwner=" + SkullOwner2.toString());} - - if( display.equals(display2) && SkullOwner.equals(SkullOwner2) && damage != damage2){ - ItemStack is = new ItemStack(offHand); - is.setAmount(mainHand.getAmount()); - if(debug){logDebug("FHS d=d2, so=so2, d!=D2 - return offhand");} - return is; - }else if( !display.equals(display2) && SkullOwner.equals(SkullOwner2) && ((damage == damage2)||(damage != damage2))){ - ItemStack is = new ItemStack(offHand); - is.setAmount(mainHand.getAmount()); - if(debug){logDebug("FHS d!=d2, so=so2, d ignored - return offhand");} - return is; - }else if( display.equals(display2) && SkullOwner.equals(SkullOwner2) && damage == damage2){ - if(debug){logDebug("FHS d=d2, so=so2, d=d2 - return mainhand");} - return mainHand; - } - return null; + NBTItem nbti = new NBTItem(offHand); + Set SkullKeys = nbti.getKeys(); + int damage = nbti.getInteger("Damage"); + NBTCompound display = nbti.getCompound("display"); + NBTCompound SkullOwner = nbti.getCompound("SkullOwner"); + if(debug){logDebug("FHS Offhand damage=" + damage);} + if(debug){logDebug("FHS Offhand display=" + display.toString());} + if(debug){logDebug("FHS Offhand SkullOwner=" + SkullOwner.toString());} + + NBTItem nbti2 = new NBTItem(mainHand); + Set SkullKeys2 = nbti2.getKeys(); + int damage2 = nbti2.getInteger("Damage"); + NBTCompound display2 = nbti2.getCompound("display"); + NBTCompound SkullOwner2 = nbti2.getCompound("SkullOwner"); + if(debug){logDebug("FHS Mainhand damage=" + damage2);} + if(debug){logDebug("FHS Mainhand display=" + display2.toString());} + if(debug){logDebug("FHS Mainhand SkullOwner=" + SkullOwner2.toString());} + + if( display.equals(display2) && SkullOwner.equals(SkullOwner2) && (damage != damage2)){ + ItemStack is = new ItemStack(offHand); + is.setAmount(mainHand.getAmount()); + if(debug){logDebug("FHS d=d2, so=so2, d!=D2 - return offhand");} + return is; + }else if( !display.equals(display2) && SkullOwner.equals(SkullOwner2) && ((damage == damage2)||(damage != damage2))){ + ItemStack is = new ItemStack(offHand); + is.setAmount(mainHand.getAmount()); + if(debug){logDebug("FHS d!=d2, so=so2, d ignored - return offhand");} + return is; + }else if( display.equals(display2) && SkullOwner.equals(SkullOwner2) && (damage == damage2)){ + if(debug){logDebug("FHS d=d2, so=so2, d=d2 - return mainhand");} + return mainHand; + } + return null; } - public ItemStack fixHeadNBT(String textureValue, String displayName, ArrayList lore) { - //String textureValue = "eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvNWY1MjQxNjZmN2NlODhhNTM3MTU4NzY2YTFjNTExZTMyMmE5M2E1ZTExZGJmMzBmYTZlODVlNzhkYTg2MWQ4In19fQ=="; // Pulled from the head link, scroll to the bottom and the "Other Value" field has this texture id. + public ItemStack fixHeadNBT(String textureValue, String displayName, ArrayList lore) { + //String textureValue = "eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvNWY1MjQxNjZmN2NlODhhNTM3MTU4NzY2YTFjNTExZTMyMmE5M2E1ZTExZGJmMzBmYTZlODVlNzhkYTg2MWQ4In19fQ=="; // Pulled from the head link, scroll to the bottom and the "Other Value" field has this texture id. - ItemStack head = new ItemStack(Material.PLAYER_HEAD, 1); // Creating the ItemStack, your input may vary. - NBTItem nbti = new NBTItem(head); // Creating the wrapper. + ItemStack head = new ItemStack(Material.PLAYER_HEAD, 1); // Creating the ItemStack, your input may vary. + NBTItem nbti = new NBTItem(head); // Creating the wrapper. - NBTCompound disp = nbti.addCompound("display"); - disp.setString("Name", displayName); // Setting the name of the Item - if(lore.isEmpty()) { - if(getConfig().getBoolean("lore.show_plugin_name", true)){ + NBTCompound disp = nbti.addCompound("display"); + disp.setString("Name", displayName); // Setting the name of the Item + if(lore.isEmpty()) { + if(getConfig().getBoolean("lore.show_plugin_name", true)){ lore.add(ChatColor.AQUA + "MoreMobHeads"); } - } - if(!lore.isEmpty()) { - NBTList l = disp.getStringList("Lore"); - l.add(lore); // Adding a bit of lore. - } - - NBTCompound skull = nbti.addCompound("SkullOwner"); // Getting the compound, that way we can set the skin information - skull.setString("Name", displayName); // Owner's name - //skull.setString("Id", uuid); - // The UUID, note that skulls with the same UUID but different textures will misbehave and only one texture will load - // (They'll share it), if skulls have different UUIDs and same textures they won't stack. See UUID.randomUUID(); + } + if(!lore.isEmpty()) { + NBTList l = disp.getStringList("Lore"); + l.add(lore); // Adding a bit of lore. + } - NBTListCompound texture = skull.addCompound("Properties").getCompoundList("textures").addCompound(); - texture.setString("Value", textureValue); + NBTCompound skull = nbti.addCompound("SkullOwner"); // Getting the compound, that way we can set the skin information + skull.setString("Name", displayName); // Owner's name + //skull.setString("Id", uuid); + // The UUID, note that skulls with the same UUID but different textures will misbehave and only one texture will load + // (They'll share it), if skulls have different UUIDs and same textures they won't stack. See UUID.randomUUID(); - head = nbti.getItem(); // Refresh the ItemStack - return head; - } - - public ItemStack makeHead(String textureValue, String displayName, String uuid, @Nullable ArrayList lore) { - ItemStack head = new ItemStack(Material.PLAYER_HEAD, 1); // Creating the ItemStack, your input may vary. - NBTItem nbti = new NBTItem(head); // Creating the wrapper. + NBTListCompound texture = skull.addCompound("Properties").getCompoundList("textures").addCompound(); + texture.setString("Value", textureValue); - NBTCompound disp = nbti.addCompound("display"); - disp.setString("Name", displayName); // Setting the name of the Item + head = nbti.getItem(); // Refresh the ItemStack + return head; + } - if(lore.isEmpty()) { - if(getConfig().getBoolean("lore.show_plugin_name", true)){ + public ItemStack makeHead(String textureValue, String displayName, String uuid, @Nullable ArrayList lore) { + ItemStack head = new ItemStack(Material.PLAYER_HEAD, 1); // Creating the ItemStack, your input may vary. + NBTItem nbti = new NBTItem(head); // Creating the wrapper. + + NBTCompound disp = nbti.addCompound("display"); + disp.setString("Name", displayName); // Setting the name of the Item + + if(lore.isEmpty()) { + if(getConfig().getBoolean("lore.show_plugin_name", true)){ lore.add(ChatColor.AQUA + "MoreMobHeads"); } - } - if(!lore.isEmpty()) { - NBTList l = disp.getStringList("Lore"); - l.add(lore); // Adding a bit of lore. - } + } + if(!lore.isEmpty()) { + NBTList l = disp.getStringList("Lore"); + l.add(lore); // Adding a bit of lore. + } - NBTCompound skull = nbti.addCompound("SkullOwner"); // Getting the compound, that way we can set the skin information - skull.setString("Name", displayName); // Owner's name - skull.setString("Id", uuid); + NBTCompound skull = nbti.addCompound("SkullOwner"); // Getting the compound, that way we can set the skin information + skull.setString("Name", displayName); // Owner's name + skull.setString("Id", uuid); - NBTListCompound texture = skull.addCompound("Properties").getCompoundList("textures").addCompound(); - texture.setString("Value", textureValue); + NBTListCompound texture = skull.addCompound("Properties").getCompoundList("textures").addCompound(); + texture.setString("Value", textureValue); - head = nbti.getItem(); // Refresh the ItemStack - return head; - } - - public void configReload() { //TODO: configReload - oldconfig = new YamlConfiguration(); + head = nbti.getItem(); // Refresh the ItemStack + return head; + } + + public void configReload() { //TODO: configReload + oldconfig = new YamlConfiguration(); log(Level.INFO, "Checking config file version..."); try { oldconfig.load(new File(getDataFolder() + "" + File.separatorChar + "config.yml")); @@ -2575,7 +2617,7 @@ public class MoreMobHeads extends JavaPlugin implements Listener{ e.printStackTrace(); } saveResource("config.yml", true); - + try { config.load(new File(getDataFolder(), "config.yml")); } catch (IOException | InvalidConfigurationException e1) { @@ -2617,7 +2659,7 @@ public class MoreMobHeads extends JavaPlugin implements Listener{ config.set("wandering_trades.block_heads.is_116.max", oldconfig.get("wandering_trader_max_block_heads", 5)); config.set("wandering_trades.block_heads.is_117.min", oldconfig.get("wandering_trader_min_block_heads", 0)); config.set("wandering_trades.block_heads.is_117.max", oldconfig.get("wandering_trader_max_block_heads", 5)); - + config.set("wandering_trades.custom_trades.enabled", oldconfig.get("wandering_trades.custom_trades.enabled", false)); config.set("wandering_trades.custom_trades.min", oldconfig.get("wandering_trades.custom_trades.min", 0)); config.set("wandering_trades.custom_trades.max", oldconfig.get("wandering_trades.custom_trades.max", 5)); @@ -2627,7 +2669,7 @@ public class MoreMobHeads extends JavaPlugin implements Listener{ config.set("blacklist.enforce", oldconfig.get("enforce_blacklist", true)); config.set("blacklist.player_head_blacklist", oldconfig.get("blacklist.player_head_blacklist", "names_go_here")); //config.set("", oldconfig.get("", true)); - + try { config.save(new File(getDataFolder(), "config.yml")); } catch (IOException e) { @@ -2663,136 +2705,136 @@ public class MoreMobHeads extends JavaPlugin implements Listener{ stacktraceInfo(); e1.printStackTrace(); } - + world_whitelist = config.getString("world.whitelist", ""); world_blacklist = config.getString("world.blacklist", ""); mob_whitelist = config.getString("mob.whitelist", ""); mob_blacklist = config.getString("mob.blacklist", ""); colorful_console = getConfig().getBoolean("console.colorful_console", true); - + //if(getConfig().getBoolean("wandering_trades.custom_wandering_trader", true)){ - /** Trader heads load */ - playerFile = new File(getDataFolder() + "" + File.separatorChar + "player_heads.yml");//\ - if(debug){logDebug("player_heads=" + playerFile.getPath());} - if(!playerFile.exists()){ // checks if the yaml does not exist - saveResource("player_heads.yml", true); - log(Level.INFO, "player_heads.yml not found! copied player_heads.yml to " + getDataFolder() + ""); - //ConfigAPI.copy(getResource("lang.yml"), langFile); // copies the yaml from your jar to the folder /plugin/ - } + /** Trader heads load */ + playerFile = new File(getDataFolder() + "" + File.separatorChar + "player_heads.yml");//\ + if(debug){logDebug("player_heads=" + playerFile.getPath());} + if(!playerFile.exists()){ // checks if the yaml does not exist + saveResource("player_heads.yml", true); + log(Level.INFO, "player_heads.yml not found! copied player_heads.yml to " + getDataFolder() + ""); + //ConfigAPI.copy(getResource("lang.yml"), langFile); // copies the yaml from your jar to the folder /plugin/ + } log(Level.INFO, "Loading player_heads file..."); - playerHeads = new YamlConfiguration(); - try { - playerHeads.load(playerFile); - } catch (IOException | InvalidConfigurationException e) { - stacktraceInfo(); - e.printStackTrace(); - } + playerHeads = new YamlConfiguration(); + try { + playerHeads.load(playerFile); + } catch (IOException | InvalidConfigurationException e) { + stacktraceInfo(); + e.printStackTrace(); + } log(Level.INFO, "" + playerHeads.getInt("players.number") + " player_heads Loaded..."); log("MC Version=" + getMCVersion()); - if(!getMCVersion().startsWith("1.16")&&!getMCVersion().startsWith("1.17")&&!getMCVersion().startsWith("1.18")){ - blockFile = new File(getDataFolder() + "" + File.separatorChar + "block_heads.yml");//\ - if(debug){logDebug("block_heads=" + blockFile.getPath());} - if(!blockFile.exists()){ // checks if the yaml does not exist - saveResource("block_heads.yml", true); - log(Level.INFO, "block_heads.yml not found! copied block_heads.yml to " + getDataFolder() + ""); - //ConfigAPI.copy(getResource("lang.yml"), langFile); // copies the yaml from your jar to the folder /plugin/ - } - } - blockFile116 = new File(getDataFolder() + "" + File.separatorChar + "block_heads_1_16.yml"); - blockFile1162 = new File(getDataFolder() + "" + File.separatorChar + "block_heads_1_16_2.yml"); - blockFile117 = new File(getDataFolder() + "" + File.separatorChar + "block_heads_1_17_3.yml"); - blockFile119 = new File(getDataFolder() + "" + File.separatorChar + "block_heads_1_19.yml"); - - - if(getMCVersion().startsWith("1.16")){ - if(debug){logDebug("block_heads_1_16=" + blockFile116.getPath());} - if(debug){logDebug("block_heads_1_16_2=" + blockFile1162.getPath());} - if(!blockFile116.exists()){ - saveResource("block_heads_1_16.yml", true); - log(Level.INFO, "block_heads_1_16.yml not found! copied block_heads_1_16.yml to " + getDataFolder() + ""); - } - if(!blockFile1162.exists()){ - saveResource("block_heads_1_16_2.yml", true); - log(Level.INFO, "block_heads_1_16_2.yml not found! copied block_heads_1_16_2.yml to " + getDataFolder() + ""); - } - blockFile = new File(getDataFolder() + "" + File.separatorChar + "block_heads_1_16.yml"); - log(Level.INFO, "Loading block_heads_1_16 files..."); - }else if( getMCVersion().startsWith("1.17") || getMCVersion().startsWith("1.18") || getMCVersion().startsWith("1.19") ){ - if(debug){logDebug("block_heads_1_17=" + blockFile116.getPath());} - if(debug){logDebug("block_heads_1_17_2=" + blockFile1162.getPath());} - if(!blockFile116.exists()){ - saveResource("block_heads_1_17.yml", true); - log(Level.INFO, "block_heads_1_17.yml not found! copied block_heads_1_17.yml to " + getDataFolder() + ""); - } - if(!blockFile1162.exists()){ - saveResource("block_heads_1_17_2.yml", true); - log(Level.INFO, "block_heads_1_17_2.yml not found! copied block_heads_1_17_2.yml to " + getDataFolder() + ""); - } - if(!blockFile117.exists()){ - saveResource("block_heads_1_17_3.yml", true); - log(Level.INFO, "block_heads_1_17_3.yml not found! copied block_heads_1_17_3.yml to " + getDataFolder() + ""); - } - if(!blockFile119.exists()){ - saveResource("block_heads_1_19.yml", true); - log(Level.INFO, "block_heads_1_19.yml not found! copied block_heads_1_19.yml to " + getDataFolder() + ""); - } - blockFile = new File(getDataFolder() + "" + File.separatorChar + "block_heads_1_17.yml"); - blockFile1162 = new File(getDataFolder() + "" + File.separatorChar + "block_heads_1_17_2.yml"); - log(Level.INFO, "Loading block_heads_1_17 files..."); - }else{ - } - log(Level.INFO, "Loading block_heads file..."); - - blockHeads = new YamlConfiguration(); - try { - blockHeads.load(blockFile); - } catch (IOException | InvalidConfigurationException e1) { - stacktraceInfo(); - e1.printStackTrace(); - } - - blockHeads2 = new YamlConfiguration(); - try { - blockHeads2.load(blockFile1162); - } catch (IOException | InvalidConfigurationException e1) { - stacktraceInfo(); - e1.printStackTrace(); - } - if(Double.parseDouble(getMCVersion().substring(0, 4)) >= 1.17) { - blockHeads3 = new YamlConfiguration(); - try { - blockHeads3.load(blockFile117); - } catch (IOException | InvalidConfigurationException e1) { - stacktraceInfo(); - e1.printStackTrace(); - } - - blockHeads4 = new YamlConfiguration(); - try { - blockHeads4.load(blockFile119); - } catch (IOException | InvalidConfigurationException e1) { - stacktraceInfo(); - e1.printStackTrace(); - } - } - - /** Custom Trades load */ - customFile = new File(getDataFolder() + "" + File.separatorChar + "custom_trades.yml");//\ - if(debug){logDebug("customFile=" + customFile.getPath());} - if(!customFile.exists()){ // checks if the yaml does not exist - saveResource("custom_trades.yml", true); - log(Level.INFO, "custom_trades.yml not found! copied custom_trades.yml to " + getDataFolder() + ""); + if(!getMCVersion().startsWith("1.16")&&!getMCVersion().startsWith("1.17")&&!getMCVersion().startsWith("1.18")){ + blockFile = new File(getDataFolder() + "" + File.separatorChar + "block_heads.yml");//\ + if(debug){logDebug("block_heads=" + blockFile.getPath());} + if(!blockFile.exists()){ // checks if the yaml does not exist + saveResource("block_heads.yml", true); + log(Level.INFO, "block_heads.yml not found! copied block_heads.yml to " + getDataFolder() + ""); //ConfigAPI.copy(getResource("lang.yml"), langFile); // copies the yaml from your jar to the folder /plugin/ } - log(Level.INFO, "Loading custom_trades file..."); - traderCustom = new YamlConfiguration(); - try { - traderCustom.load(customFile); - } catch (IOException | InvalidConfigurationException e) { - stacktraceInfo(); - e.printStackTrace(); + } + blockFile116 = new File(getDataFolder() + "" + File.separatorChar + "block_heads_1_16.yml"); + blockFile1162 = new File(getDataFolder() + "" + File.separatorChar + "block_heads_1_16_2.yml"); + blockFile117 = new File(getDataFolder() + "" + File.separatorChar + "block_heads_1_17_3.yml"); + blockFile119 = new File(getDataFolder() + "" + File.separatorChar + "block_heads_1_19.yml"); + + + if(getMCVersion().startsWith("1.16")){ + if(debug){logDebug("block_heads_1_16=" + blockFile116.getPath());} + if(debug){logDebug("block_heads_1_16_2=" + blockFile1162.getPath());} + if(!blockFile116.exists()){ + saveResource("block_heads_1_16.yml", true); + log(Level.INFO, "block_heads_1_16.yml not found! copied block_heads_1_16.yml to " + getDataFolder() + ""); } + if(!blockFile1162.exists()){ + saveResource("block_heads_1_16_2.yml", true); + log(Level.INFO, "block_heads_1_16_2.yml not found! copied block_heads_1_16_2.yml to " + getDataFolder() + ""); + } + blockFile = new File(getDataFolder() + "" + File.separatorChar + "block_heads_1_16.yml"); + log(Level.INFO, "Loading block_heads_1_16 files..."); + }else if( getMCVersion().startsWith("1.17") || getMCVersion().startsWith("1.18") || getMCVersion().startsWith("1.19") ){ + if(debug){logDebug("block_heads_1_17=" + blockFile116.getPath());} + if(debug){logDebug("block_heads_1_17_2=" + blockFile1162.getPath());} + if(!blockFile116.exists()){ + saveResource("block_heads_1_17.yml", true); + log(Level.INFO, "block_heads_1_17.yml not found! copied block_heads_1_17.yml to " + getDataFolder() + ""); + } + if(!blockFile1162.exists()){ + saveResource("block_heads_1_17_2.yml", true); + log(Level.INFO, "block_heads_1_17_2.yml not found! copied block_heads_1_17_2.yml to " + getDataFolder() + ""); + } + if(!blockFile117.exists()){ + saveResource("block_heads_1_17_3.yml", true); + log(Level.INFO, "block_heads_1_17_3.yml not found! copied block_heads_1_17_3.yml to " + getDataFolder() + ""); + } + if(!blockFile119.exists()){ + saveResource("block_heads_1_19.yml", true); + log(Level.INFO, "block_heads_1_19.yml not found! copied block_heads_1_19.yml to " + getDataFolder() + ""); + } + blockFile = new File(getDataFolder() + "" + File.separatorChar + "block_heads_1_17.yml"); + blockFile1162 = new File(getDataFolder() + "" + File.separatorChar + "block_heads_1_17_2.yml"); + log(Level.INFO, "Loading block_heads_1_17 files..."); + }else{ + } + log(Level.INFO, "Loading block_heads file..."); + + blockHeads = new YamlConfiguration(); + try { + blockHeads.load(blockFile); + } catch (IOException | InvalidConfigurationException e1) { + stacktraceInfo(); + e1.printStackTrace(); + } + + blockHeads2 = new YamlConfiguration(); + try { + blockHeads2.load(blockFile1162); + } catch (IOException | InvalidConfigurationException e1) { + stacktraceInfo(); + e1.printStackTrace(); + } + if(Double.parseDouble(getMCVersion().substring(0, 4)) >= 1.17) { + blockHeads3 = new YamlConfiguration(); + try { + blockHeads3.load(blockFile117); + } catch (IOException | InvalidConfigurationException e1) { + stacktraceInfo(); + e1.printStackTrace(); + } + + blockHeads4 = new YamlConfiguration(); + try { + blockHeads4.load(blockFile119); + } catch (IOException | InvalidConfigurationException e1) { + stacktraceInfo(); + e1.printStackTrace(); + } + } + + /** Custom Trades load */ + customFile = new File(getDataFolder() + "" + File.separatorChar + "custom_trades.yml");//\ + if(debug){logDebug("customFile=" + customFile.getPath());} + if(!customFile.exists()){ // checks if the yaml does not exist + saveResource("custom_trades.yml", true); + log(Level.INFO, "custom_trades.yml not found! copied custom_trades.yml to " + getDataFolder() + ""); + //ConfigAPI.copy(getResource("lang.yml"), langFile); // copies the yaml from your jar to the folder /plugin/ + } + log(Level.INFO, "Loading custom_trades file..."); + traderCustom = new YamlConfiguration(); + try { + traderCustom.load(customFile); + } catch (IOException | InvalidConfigurationException e) { + stacktraceInfo(); + e.printStackTrace(); + } log(Level.INFO, "Loading chance_config file..."); chanceFile = new File(getDataFolder() + "" + File.separatorChar + "chance_config.yml"); @@ -2807,256 +2849,256 @@ public class MoreMobHeads extends JavaPlugin implements Listener{ debug = getConfig().getBoolean("debug", false); daLang = getConfig().getString("lang", "en_US"); lang2 = new Translator(daLang, getDataFolder().toString()); - } - - public String getTextureFromEntity(LivingEntity entity) { - String name = entity.getName().toUpperCase(); - switch (name) { - case "CREEPER": - Creeper creeper = (Creeper) entity; - double cchance = chanceConfig.getDouble("chance_percent.creeper", defpercent); - if(creeper.isPowered()) { - name = "CREEPER_CHARGED"; - cchance = 1.00; - } - if(DropIt2(cchance)){ - return MobHeads.valueOf(name).getTexture().toString(); - } - break; - case "ZOMBIE": - if(DropIt2(chanceConfig.getDouble("chance_percent.zombie", defpercent))){ - return MobHeads.valueOf(name).getTexture().toString(); - } - break; - case "SKELETON": - if(DropIt2(chanceConfig.getDouble("chance_percent.skeleton", defpercent))){ + } + + public String getTextureFromEntity(LivingEntity entity) { + String name = entity.getName().toUpperCase(); + switch (name) { + case "CREEPER": + Creeper creeper = (Creeper) entity; + double cchance = chanceConfig.getDouble("chance_percent.creeper", defpercent); + if(creeper.isPowered()) { + name = "CREEPER_CHARGED"; + cchance = 1.00; + } + if(DropIt2(cchance)){ + return MobHeads.valueOf(name).getTexture().toString(); + } + break; + case "ZOMBIE": + if(DropIt2(chanceConfig.getDouble("chance_percent.zombie", defpercent))){ + return MobHeads.valueOf(name).getTexture().toString(); + } + break; + case "SKELETON": + if(DropIt2(chanceConfig.getDouble("chance_percent.skeleton", defpercent))){ + return MobHeads.valueOf(name).getTexture().toString(); + } + break; + case "WITHER_SKELETON": + if(DropIt2(chanceConfig.getDouble("chance_percent.wither_skeleton", defpercent))){ + return MobHeads.valueOf(name).getTexture().toString(); + } + break; + case "ENDER_DRAGON": + if(DropIt2(chanceConfig.getDouble("chance_percent.ender_dragon", defpercent))){ + return MobHeads.valueOf(name).getTexture().toString(); + } + break; + case "TROPICAL_FISH": + TropicalFish daFish = (TropicalFish) entity; + DyeColor daFishBody = daFish.getBodyColor(); + DyeColor daFishPatternColor = daFish.getPatternColor(); + Pattern daFishPattern = daFish.getPattern(); + String daFishType = getNamedTropicalFishName(daFishPattern, daFishBody, daFishPatternColor ); + if(DropIt2(chanceConfig.getDouble("TROPICAL_FISH." + daFishType, defpercent))){ + return TropicalFishHeads.valueOf(daFishType).getTexture().toString(); + } + if(debug){logDebug("Skeleton Head Dropped");} + break;//*/ + case "WITHER": + //Wither wither = (Wither) event.getEntity(); + int random = randomBetween(1, 4); + if(DropIt2(chanceConfig.getDouble("chance_percent.wither", defpercent))){ + return MobHeads.valueOf(name + "_" + random).getTexture().toString(); + } + break; + case "WOLF": + Wolf wolf = (Wolf) entity; + if(DropIt2(chanceConfig.getDouble("chance_percent." + name.toLowerCase(), defpercent))){ + if(wolf.isAngry()){ + return MobHeads.valueOf(name + "_ANGRY").getTexture().toString(); + }else{ return MobHeads.valueOf(name).getTexture().toString(); } - break; - case "WITHER_SKELETON": - if(DropIt2(chanceConfig.getDouble("chance_percent.wither_skeleton", defpercent))){ - return MobHeads.valueOf(name).getTexture().toString(); + } + break; + case "FOX": + Fox dafox = (Fox) entity; + String dafoxtype = dafox.getFoxType().toString(); + if(DropIt2(chanceConfig.getDouble("chance_percent.fox." + dafoxtype.toString().toLowerCase(), defpercent))){ + return MobHeads.valueOf(name + "_" + dafoxtype).getTexture().toString(); + } + + break; + case "CAT": + Cat dacat = (Cat) entity; + String dacattype = dacat.getCatType().toString(); + if(DropIt2(chanceConfig.getDouble("chance_percent.cat." + dacattype.toLowerCase(), defpercent))){ + return CatHeads.valueOf(dacattype).getTexture().toString(); + } + break; + case "OCELOT": + if(DropIt2(chanceConfig.getDouble("chance_percent." + name.toLowerCase(), defpercent))){ + return MobHeads.valueOf(name).getTexture().toString(); + } + + break; + case "BEE": + Bee daBee = (Bee) entity; + int daAnger = daBee.getAnger(); + boolean daNectar = daBee.hasNectar(); + if((daAnger >= 1)&&(daNectar == true)){ + if(DropIt2(chanceConfig.getDouble("chance_percent.bee.angry_pollinated", defpercent))){ + return MobHeads.valueOf("BEE_ANGRY_POLLINATED").getTexture().toString(); } - break; - case "ENDER_DRAGON": - if(DropIt2(chanceConfig.getDouble("chance_percent.ender_dragon", defpercent))){ - return MobHeads.valueOf(name).getTexture().toString(); + }else if((daAnger >= 1)&&(daNectar == false)){ + if(DropIt2(chanceConfig.getDouble("chance_percent.bee.angry", defpercent))){ + return MobHeads.valueOf("BEE_ANGRY").getTexture().toString(); } - break; - case "TROPICAL_FISH": - TropicalFish daFish = (TropicalFish) entity; - DyeColor daFishBody = daFish.getBodyColor(); - DyeColor daFishPatternColor = daFish.getPatternColor(); - Pattern daFishPattern = daFish.getPattern(); - String daFishType = getNamedTropicalFishName(daFishPattern, daFishBody, daFishPatternColor ); - if(DropIt2(chanceConfig.getDouble("TROPICAL_FISH." + daFishType, defpercent))){ - return TropicalFishHeads.valueOf(daFishType).getTexture().toString(); + }else if((daAnger == 0)&&(daNectar == true)){ + if(DropIt2(chanceConfig.getDouble("chance_percent.bee.pollinated", defpercent))){ + return MobHeads.valueOf("BEE_POLLINATED").getTexture().toString(); } - if(debug){logDebug("Skeleton Head Dropped");} - break;//*/ - case "WITHER": - //Wither wither = (Wither) event.getEntity(); - int random = randomBetween(1, 4); - if(DropIt2(chanceConfig.getDouble("chance_percent.wither", defpercent))){ - return MobHeads.valueOf(name + "_" + random).getTexture().toString(); + }else if((daAnger == 0)&&(daNectar == false)){ + if(DropIt2(chanceConfig.getDouble("chance_percent.bee.chance_percent", defpercent))){ + return MobHeads.valueOf("BEE").getTexture().toString(); } - break; - case "WOLF": - Wolf wolf = (Wolf) entity; - if(DropIt2(chanceConfig.getDouble("chance_percent." + name.toLowerCase(), defpercent))){ - if(wolf.isAngry()){ - return MobHeads.valueOf(name + "_ANGRY").getTexture().toString(); - }else{ - return MobHeads.valueOf(name).getTexture().toString(); - } + } + break; + case "LLAMA": + Llama daLlama = (Llama) entity; + String daLlamaColor = daLlama.getColor().toString(); + //log(name + "_" + daLlamaColor); + if(DropIt2(chanceConfig.getDouble("chance_percent.llama." + daLlamaColor.toLowerCase(), defpercent))){ + return LlamaHeads.valueOf(name + "_" + daLlamaColor).getTexture().toString(); + } + break; + case "HORSE": + Horse daHorse = (Horse) entity; + String daHorseColor = daHorse.getColor().toString(); + //.replace("g", "G").replace("wh", "Wh").replace("_", " ") + " Horse Head"; + if(DropIt2(chanceConfig.getDouble("chance_percent.horse." + daHorseColor.toLowerCase(), defpercent))){ + return HorseHeads.valueOf(name + "_" + daHorseColor).getTexture().toString(); + } + break; + case "MOOSHROOM": + name = "MUSHROOM_COW"; + case "MUSHROOM_COW": + MushroomCow daMushroom = (MushroomCow) entity; + String daCowVariant = daMushroom.getVariant().toString(); + if(DropIt2(chanceConfig.getDouble("chance_percent.mushroom_cow." + daCowVariant.toLowerCase(), defpercent))){ + return MobHeads.valueOf(name + "_" + daCowVariant).getTexture().toString(); + } + break; + case "PANDA": + Panda daPanda = (Panda) entity; + String daPandaGene = daPanda.getMainGene().toString(); + String daPandaName = daPandaGene.toLowerCase().replace("br", "Br").replace("ag", "Ag").replace("la", "La") + .replace("no", "No").replace("p", "P").replace("we", "We").replace("wo", "Wo") + " Panda Head"; + if(daPandaGene.equalsIgnoreCase("normal")){daPandaName.replace("normal ", "");} + if(DropIt2(chanceConfig.getDouble("chance_percent.panda." + daPandaGene.toLowerCase(), defpercent))){ + return MobHeads.valueOf(name + "_" + daPandaGene).getTexture().toString(); + } + break; + case "PARROT": + Parrot daParrot = (Parrot) entity; + String daParrotVariant = daParrot.getVariant().toString(); + if(DropIt2(chanceConfig.getDouble("chance_percent.parrot." + daParrotVariant.toLowerCase(), defpercent))){ + return MobHeads.valueOf(name + "_" + daParrotVariant).getTexture().toString(); + } + break; + case "RABBIT": + String daRabbitType; + Rabbit daRabbit = (Rabbit) entity; + daRabbitType = daRabbit.getRabbitType().toString(); + if(daRabbit.getCustomName() != null){ + if(daRabbit.getCustomName().contains("Toast")){ + daRabbitType = "Toast"; } - break; - case "FOX": - Fox dafox = (Fox) entity; - String dafoxtype = dafox.getFoxType().toString(); - if(DropIt2(chanceConfig.getDouble("chance_percent.fox." + dafoxtype.toString().toLowerCase(), defpercent))){ - return MobHeads.valueOf(name + "_" + dafoxtype).getTexture().toString(); + } + if(DropIt2(chanceConfig.getDouble("chance_percent.rabbit." + daRabbitType.toLowerCase(), defpercent))){ + return RabbitHeads.valueOf(name + "_" + daRabbitType).getTexture().toString(); + } + break; + case "VILLAGER": + Villager daVillager = (Villager) entity; // Location jobsite = daVillager.getMemory(MemoryKey.JOB_SITE); + String daVillagerType = daVillager.getVillagerType().toString(); + String daVillagerProfession = daVillager.getProfession().toString(); + if(DropIt2(chanceConfig.getDouble("chance_percent.villager." + daVillagerType.toLowerCase() + "." + daVillagerProfession.toLowerCase(), defpercent))){ + return VillagerHeads.valueOf(name + "_" + daVillagerProfession + "_" + daVillagerType).getTexture().toString(); + } + break; + case "ZOMBIE_VILLAGER": + ZombieVillager daZombieVillager = (ZombieVillager) entity; + String daZombieVillagerProfession = daZombieVillager.getVillagerProfession().toString(); + if(DropIt2(chanceConfig.getDouble("chance_percent.zombie_villager", defpercent))){ + return ZombieVillagerHeads.valueOf(name + "_" + daZombieVillagerProfession).getTexture().toString(); + } + break; + case "SHEEP": + Sheep daSheep = (Sheep) entity; + String daSheepColor = daSheep.getColor().toString(); + + if(daSheep.getCustomName() != null){ + if(daSheep.getCustomName().contains("jeb_")){ + daSheepColor = "jeb_"; + }else{ + daSheepColor = daSheep.getColor().toString(); } - - break; - case "CAT": - Cat dacat = (Cat) entity; - String dacattype = dacat.getCatType().toString(); - if(DropIt2(chanceConfig.getDouble("chance_percent.cat." + dacattype.toLowerCase(), defpercent))){ - return CatHeads.valueOf(dacattype).getTexture().toString(); - } - break; - case "OCELOT": - if(DropIt2(chanceConfig.getDouble("chance_percent." + name.toLowerCase(), defpercent))){ - return MobHeads.valueOf(name).getTexture().toString(); - } - - break; - case "BEE": - Bee daBee = (Bee) entity; - int daAnger = daBee.getAnger(); - boolean daNectar = daBee.hasNectar(); - if(daAnger >= 1&&daNectar == true){ - if(DropIt2(chanceConfig.getDouble("chance_percent.bee.angry_pollinated", defpercent))){ - return MobHeads.valueOf("BEE_ANGRY_POLLINATED").getTexture().toString(); - } - }else if(daAnger >= 1&&daNectar == false){ - if(DropIt2(chanceConfig.getDouble("chance_percent.bee.angry", defpercent))){ - return MobHeads.valueOf("BEE_ANGRY").getTexture().toString(); - } - }else if(daAnger == 0&&daNectar == true){ - if(DropIt2(chanceConfig.getDouble("chance_percent.bee.pollinated", defpercent))){ - return MobHeads.valueOf("BEE_POLLINATED").getTexture().toString(); - } - }else if(daAnger == 0&&daNectar == false){ - if(DropIt2(chanceConfig.getDouble("chance_percent.bee.chance_percent", defpercent))){ - return MobHeads.valueOf("BEE").getTexture().toString(); - } - } - break; - case "LLAMA": - Llama daLlama = (Llama) entity; - String daLlamaColor = daLlama.getColor().toString(); - //log(name + "_" + daLlamaColor); - if(DropIt2(chanceConfig.getDouble("chance_percent.llama." + daLlamaColor.toLowerCase(), defpercent))){ - return LlamaHeads.valueOf(name + "_" + daLlamaColor).getTexture().toString(); - } - break; - case "HORSE": - Horse daHorse = (Horse) entity; - String daHorseColor = daHorse.getColor().toString(); - //.replace("g", "G").replace("wh", "Wh").replace("_", " ") + " Horse Head"; - if(DropIt2(chanceConfig.getDouble("chance_percent.horse." + daHorseColor.toLowerCase(), defpercent))){ - return HorseHeads.valueOf(name + "_" + daHorseColor).getTexture().toString(); - } - break; - case "MOOSHROOM": - name = "MUSHROOM_COW"; - case "MUSHROOM_COW": - MushroomCow daMushroom = (MushroomCow) entity; - String daCowVariant = daMushroom.getVariant().toString(); - if(DropIt2(chanceConfig.getDouble("chance_percent.mushroom_cow." + daCowVariant.toLowerCase(), defpercent))){ - return MobHeads.valueOf(name + "_" + daCowVariant).getTexture().toString(); - } - break; - case "PANDA": - Panda daPanda = (Panda) entity; - String daPandaGene = daPanda.getMainGene().toString(); - String daPandaName = daPandaGene.toLowerCase().replace("br", "Br").replace("ag", "Ag").replace("la", "La") - .replace("no", "No").replace("p", "P").replace("we", "We").replace("wo", "Wo") + " Panda Head"; - if(daPandaGene.equalsIgnoreCase("normal")){daPandaName.replace("normal ", "");} - if(DropIt2(chanceConfig.getDouble("chance_percent.panda." + daPandaGene.toLowerCase(), defpercent))){ - return MobHeads.valueOf(name + "_" + daPandaGene).getTexture().toString(); - } - break; - case "PARROT": - Parrot daParrot = (Parrot) entity; - String daParrotVariant = daParrot.getVariant().toString(); - if(DropIt2(chanceConfig.getDouble("chance_percent.parrot." + daParrotVariant.toLowerCase(), defpercent))){ - return MobHeads.valueOf(name + "_" + daParrotVariant).getTexture().toString(); - } - break; - case "RABBIT": - String daRabbitType; - Rabbit daRabbit = (Rabbit) entity; - daRabbitType = daRabbit.getRabbitType().toString(); - if(daRabbit.getCustomName() != null){ - if(daRabbit.getCustomName().contains("Toast")){ - daRabbitType = "Toast"; - } - } - if(DropIt2(chanceConfig.getDouble("chance_percent.rabbit." + daRabbitType.toLowerCase(), defpercent))){ - return RabbitHeads.valueOf(name + "_" + daRabbitType).getTexture().toString(); - } - break; - case "VILLAGER": - Villager daVillager = (Villager) entity; // Location jobsite = daVillager.getMemory(MemoryKey.JOB_SITE); - String daVillagerType = daVillager.getVillagerType().toString(); - String daVillagerProfession = daVillager.getProfession().toString(); - if(DropIt2(chanceConfig.getDouble("chance_percent.villager." + daVillagerType.toLowerCase() + "." + daVillagerProfession.toLowerCase(), defpercent))){ - return VillagerHeads.valueOf(name + "_" + daVillagerProfession + "_" + daVillagerType).getTexture().toString(); - } - break; - case "ZOMBIE_VILLAGER": - ZombieVillager daZombieVillager = (ZombieVillager) entity; - String daZombieVillagerProfession = daZombieVillager.getVillagerProfession().toString(); - if(DropIt2(chanceConfig.getDouble("chance_percent.zombie_villager", defpercent))){ - return ZombieVillagerHeads.valueOf(name + "_" + daZombieVillagerProfession).getTexture().toString(); - } - break; - case "SHEEP": - Sheep daSheep = (Sheep) entity; - String daSheepColor = daSheep.getColor().toString(); - - if(daSheep.getCustomName() != null){ - if(daSheep.getCustomName().contains("jeb_")){ - daSheepColor = "jeb_"; - }else{ - daSheepColor = daSheep.getColor().toString(); - } - } - if(DropIt2(chanceConfig.getDouble("chance_percent.sheep." + daSheepColor.toLowerCase(), defpercent))){ - return SheepHeads.valueOf(name + "_" + daSheepColor).getTexture().toString(); - } - break; + } + if(DropIt2(chanceConfig.getDouble("chance_percent.sheep." + daSheepColor.toLowerCase(), defpercent))){ + return SheepHeads.valueOf(name + "_" + daSheepColor).getTexture().toString(); + } + break; /**case "STRIDER": Strider strider = (Strider) entity; - + break;*/ - case "TRADER_LLAMA": - TraderLlama daTraderLlama = (TraderLlama) entity; - String daTraderLlamaColor = daTraderLlama.getColor().toString(); - if(DropIt2(chanceConfig.getDouble("chance_percent.trader_llama." + daTraderLlamaColor.toLowerCase(), defpercent))){ - return LlamaHeads.valueOf(name + "_" + daTraderLlamaColor).getTexture().toString(); - } - break; - case "AXOLOTL": - Axolotl daAxolotl = (Axolotl) entity; - String daAxolotlVariant = daAxolotl.getVariant().toString(); - if(DropIt2(chanceConfig.getDouble("chance_percent.axolotl." + daAxolotlVariant.toLowerCase(), defpercent))){ - return MobHeads117.valueOf(name + "_" + daAxolotlVariant).getTexture().toString(); - } - break; - case "GOAT": - Goat daGoat = (Goat) entity; - String daGoatVariant; - if(daGoat.isScreaming()) { - // Giving screaming goat head - daGoatVariant = "SCREAMING"; - }else { - // give goat head - daGoatVariant = "NORMAL"; - } - if(DropIt2(chanceConfig.getDouble("chance_percent.goat." + daGoatVariant.toLowerCase(), defpercent))){ - return MobHeads117.valueOf(name + "_" + daGoatVariant).getTexture().toString(); - } - break; - default: - //makeSkull(MobHeads.valueOf(name).getTexture(), name); - if(DropIt2(chanceConfig.getDouble("chance_percent." + name.toLowerCase(), defpercent))){ - return MobHeads.valueOf(name).getTexture().toString(); - } - break; + case "TRADER_LLAMA": + TraderLlama daTraderLlama = (TraderLlama) entity; + String daTraderLlamaColor = daTraderLlama.getColor().toString(); + if(DropIt2(chanceConfig.getDouble("chance_percent.trader_llama." + daTraderLlamaColor.toLowerCase(), defpercent))){ + return LlamaHeads.valueOf(name + "_" + daTraderLlamaColor).getTexture().toString(); } + break; + case "AXOLOTL": + Axolotl daAxolotl = (Axolotl) entity; + String daAxolotlVariant = daAxolotl.getVariant().toString(); + if(DropIt2(chanceConfig.getDouble("chance_percent.axolotl." + daAxolotlVariant.toLowerCase(), defpercent))){ + return MobHeads117.valueOf(name + "_" + daAxolotlVariant).getTexture().toString(); + } + break; + case "GOAT": + Goat daGoat = (Goat) entity; + String daGoatVariant; + if(daGoat.isScreaming()) { + // Giving screaming goat head + daGoatVariant = "SCREAMING"; + }else { + // give goat head + daGoatVariant = "NORMAL"; + } + if(DropIt2(chanceConfig.getDouble("chance_percent.goat." + daGoatVariant.toLowerCase(), defpercent))){ + return MobHeads117.valueOf(name + "_" + daGoatVariant).getTexture().toString(); + } + break; + default: + //makeSkull(MobHeads.valueOf(name).getTexture(), name); + if(DropIt2(chanceConfig.getDouble("chance_percent." + name.toLowerCase(), defpercent))){ + return MobHeads.valueOf(name).getTexture().toString(); + } + break; + } return "eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvZWI3YWY5ZTQ0MTEyMTdjN2RlOWM2MGFjYmQzYzNmZDY1MTk3ODMzMzJhMWIzYmM1NmZiZmNlOTA3MjFlZjM1In19fQ=="; - } - - public String getTexturefromEntityType(EntityType entityType, boolean randef) { - String name = entityType.toString(); - switch (name) { - case "CREEPER": + } + + public String getTexturefromEntityType(EntityType entityType, boolean randef) { + String name = entityType.toString(); + switch (name) { + case "CREEPER": double cchance = chanceConfig.getDouble("chance_percent.creeper", defpercent); if(randef) { name = "CREEPER_CHARGED"; cchance = 1.00; } if(DropIt2(cchance)){ - return MobHeads.valueOf(name).getTexture().toString(); + return MobHeads.valueOf(name).getTexture().toString(); } break; case "ZOMBIE": if(DropIt2(chanceConfig.getDouble("chance_percent.zombie", defpercent))){ - return MobHeads.valueOf(name).getTexture().toString(); + return MobHeads.valueOf(name).getTexture().toString(); } break; case "SKELETON": @@ -3121,7 +3163,7 @@ public class MoreMobHeads extends JavaPlugin implements Listener{ if(DropIt2(chanceConfig.getDouble("chance_percent.fox." + dafoxtype[randomfox].toString().toLowerCase(), defpercent))){ return MobHeads.valueOf(name + "_" + dafoxtype[randomfox]).getTexture().toString(); } - + break; case "CAT": int randomcat; @@ -3140,7 +3182,7 @@ public class MoreMobHeads extends JavaPlugin implements Listener{ if(DropIt2(chanceConfig.getDouble("chance_percent." + name.toLowerCase(), defpercent))){ return MobHeads.valueOf(name).getTexture().toString(); } - + break; case "BEE": int randombee; @@ -3149,23 +3191,23 @@ public class MoreMobHeads extends JavaPlugin implements Listener{ }else { randombee = 1; } - if(randombee == 4){ - if(DropIt2(chanceConfig.getDouble("chance_percent.bee.angry_pollinated", defpercent))){ - return MobHeads.valueOf("BEE_ANGRY_POLLINATED").getTexture().toString(); - } - }else if(randombee == 3){ - if(DropIt2(chanceConfig.getDouble("chance_percent.bee.angry", defpercent))){ - return MobHeads.valueOf("BEE_ANGRY").getTexture().toString(); - } - }else if(randombee == 2){ - if(DropIt2(chanceConfig.getDouble("chance_percent.bee.pollinated", defpercent))){ - return MobHeads.valueOf("BEE_POLLINATED").getTexture().toString(); - } - }else if(randombee == 1){ - if(DropIt2(chanceConfig.getDouble("chance_percent.bee.chance_percent", defpercent))){ - return MobHeads.valueOf("BEE").getTexture().toString(); - } + if(randombee == 4){ + if(DropIt2(chanceConfig.getDouble("chance_percent.bee.angry_pollinated", defpercent))){ + return MobHeads.valueOf("BEE_ANGRY_POLLINATED").getTexture().toString(); } + }else if(randombee == 3){ + if(DropIt2(chanceConfig.getDouble("chance_percent.bee.angry", defpercent))){ + return MobHeads.valueOf("BEE_ANGRY").getTexture().toString(); + } + }else if(randombee == 2){ + if(DropIt2(chanceConfig.getDouble("chance_percent.bee.pollinated", defpercent))){ + return MobHeads.valueOf("BEE_POLLINATED").getTexture().toString(); + } + }else if(randombee == 1){ + if(DropIt2(chanceConfig.getDouble("chance_percent.bee.chance_percent", defpercent))){ + return MobHeads.valueOf("BEE").getTexture().toString(); + } + } break; case "LLAMA": String[] daLlamaColor = {"BROWN","CREAMY","GRAY","WHITE"}; @@ -3176,7 +3218,7 @@ public class MoreMobHeads extends JavaPlugin implements Listener{ randomllama = 4; } //log(name + "_" + daLlamaColor); - if(DropIt2(chanceConfig.getDouble("chance_percent.llama." + daLlamaColor[randomllama].toLowerCase(), defpercent))){ + if(DropIt2(chanceConfig.getDouble("chance_percent.llama." + daLlamaColor[randomllama].toLowerCase(), defpercent))){ return LlamaHeads.valueOf(name + "_" + daLlamaColor[randomllama]).getTexture().toString(); } break; @@ -3200,13 +3242,13 @@ public class MoreMobHeads extends JavaPlugin implements Listener{ }else { randomhorse = 1; } - //.replace("g", "G").replace("wh", "Wh").replace("_", " ") + " Horse Head"; + //.replace("g", "G").replace("wh", "Wh").replace("_", " ") + " Horse Head"; if(DropIt2(chanceConfig.getDouble("chance_percent.horse." + daHorseColor[randomhorse].toLowerCase(), defpercent))){ return HorseHeads.valueOf(name + "_" + daHorseColor).getTexture().toString(); } break; case "MOOSHROOM": - name = "MUSHROOM_COW"; + name = "MUSHROOM_COW"; case "MUSHROOM_COW": String[] daCowVariant = {"BROWN","RED"}; int randomcow; @@ -3268,7 +3310,7 @@ public class MoreMobHeads extends JavaPlugin implements Listener{ randomviltyp = 2; randomvilpro = 11; } - if(DropIt2(chanceConfig.getDouble("chance_percent.villager." + daVillagerType[randomviltyp].toLowerCase() + "." + + if(DropIt2(chanceConfig.getDouble("chance_percent.villager." + daVillagerType[randomviltyp].toLowerCase() + "." + daVillagerProfession[randomvilpro].toLowerCase(), defpercent))){ return VillagerHeads.valueOf(name + "_" + daVillagerProfession[randomvilpro] + "_" + daVillagerType[randomviltyp]).getTexture().toString(); } @@ -3299,9 +3341,9 @@ public class MoreMobHeads extends JavaPlugin implements Listener{ return SheepHeads.valueOf(name + "_" + daSheepColor[randomshe]).getTexture().toString(); } break;//*/ - /**case "STRIDER": + /**case "STRIDER": Strider strider = (Strider) entity; - + break;*/ case "AXOLOTL": String[] daAxolotlVariant = {"BLUE","CYAN","GOLD","LUCY","WILD"}; @@ -3333,71 +3375,71 @@ public class MoreMobHeads extends JavaPlugin implements Listener{ return MobHeads.valueOf(name).getTexture().toString(); } break; - - } - return "eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvZWI3YWY5ZTQ0MTEyMTdjN2RlOWM2MGFjYmQzYzNmZDY1MTk3ODMzMzJhMWIzYmM1NmZiZmNlOTA3MjFlZjM1In19fQ=="; - }//*/ - - public boolean chance25oftrue() { - //For 25% chance of true - return (random.nextInt(4) == 0) ? true : false; - } - public void consoleLog(String string) { - if(!silent_console) { - loading(string); - } - } - - public String LoadTime(long startTime) { - long elapsedTime = System.currentTimeMillis() - startTime; - long minutes = TimeUnit.MILLISECONDS.toMinutes(elapsedTime); - long seconds = TimeUnit.MILLISECONDS.toSeconds(elapsedTime) % 60; - long milliseconds = elapsedTime % 1000; - - if (minutes > 0) { - return String.format("%d min %d s %d ms.", minutes, seconds, milliseconds); - } else if (seconds > 0) { - return String.format("%d s %d ms.", seconds, milliseconds); - } else { - return String.format("%d ms.", elapsedTime); - } + + } + return "eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvZWI3YWY5ZTQ0MTEyMTdjN2RlOWM2MGFjYmQzYzNmZDY1MTk3ODMzMzJhMWIzYmM1NmZiZmNlOTA3MjFlZjM1In19fQ=="; + }//*/ + + public boolean chance25oftrue() { + //For 25% chance of true + return (random.nextInt(4) == 0) ? true : false; } - + public void consoleLog(String string) { + if(!silent_console) { + loading(string); + } + } + + public String LoadTime(long startTime) { + long elapsedTime = System.currentTimeMillis() - startTime; + long minutes = TimeUnit.MILLISECONDS.toMinutes(elapsedTime); + long seconds = TimeUnit.MILLISECONDS.toSeconds(elapsedTime) % 60; + long milliseconds = elapsedTime % 1000; + + if (minutes > 0) { + return String.format("%d min %d s %d ms.", minutes, seconds, milliseconds); + } else if (seconds > 0) { + return String.format("%d s %d ms.", seconds, milliseconds); + } else { + return String.format("%d ms.", elapsedTime); + } + } + @SuppressWarnings("static-access") public String get(String key, String... defaultValue) { return lang2.get(key, defaultValue); } - + public boolean isPluginRequired(String pluginName) { - String[] requiredPlugins = {"SinglePlayerSleep", "MoreMobHeads", "NoEndermanGrief", "ShulkerRespawner", "DragonDropElytra", "RotationalWrench", "SilenceMobs", "VillagerWorkstationHighlights"}; - for (String requiredPlugin : requiredPlugins) { - if (getServer().getPluginManager().getPlugin(requiredPlugin) != null && getServer().getPluginManager().isPluginEnabled(requiredPlugin)) { - if (requiredPlugin.equals(pluginName)) { - return true; - } else { - return false; - } - } - } - return true; + String[] requiredPlugins = {"SinglePlayerSleep", "MoreMobHeads", "NoEndermanGrief", "ShulkerRespawner", "DragonDropElytra", "RotationalWrench", "SilenceMobs", "VillagerWorkstationHighlights"}; + for (String requiredPlugin : requiredPlugins) { + if ((getServer().getPluginManager().getPlugin(requiredPlugin) != null) && getServer().getPluginManager().isPluginEnabled(requiredPlugin)) { + if (requiredPlugin.equals(pluginName)) { + return true; + } else { + return false; + } + } + } + return true; } - + public void dumpConfig(FileConfiguration config) { - for (String key : config.getKeys(true)) { - Object value = config.get(key); - if (value != null && value.getClass().isArray()) { - value = Arrays.asList((Object[]) value); - } - log(key + "=" + value); - } + for (String key : config.getKeys(true)) { + Object value = config.get(key); + if ((value != null) && value.getClass().isArray()) { + value = Arrays.asList((Object[]) value); + } + log(key + "=" + value); + } } - + public String getNamedTropicalFishName(Pattern pattern, DyeColor color1, DyeColor color2) { - String key = pattern.name() + "-" + color1.name() + "-" + color2.name(); - log("key=" + key); - log("namedTropicalFish=" + namedTropicalFish.isEmpty()); - return namedTropicalFish.getOrDefault(key, "TROPICAL_FISH"); + String key = pattern.name() + "-" + color1.name() + "-" + color2.name(); + log("key=" + key); + log("namedTropicalFish=" + namedTropicalFish.isEmpty()); + return namedTropicalFish.getOrDefault(key, "TROPICAL_FISH"); } - + } diff --git a/src/com/github/joelgodofwar/mmh/enums/MobHeads.java b/src/com/github/joelgodofwar/mmh/enums/MobHeads.java index ae8c687..3d759f6 100644 --- a/src/com/github/joelgodofwar/mmh/enums/MobHeads.java +++ b/src/com/github/joelgodofwar/mmh/enums/MobHeads.java @@ -3,402 +3,399 @@ package com.github.joelgodofwar.mmh.enums; public enum MobHeads { PLAYER(//used for unknown player heads "Player", "player", "a1ae4481-f3f0-4af9-a83e-75d3a7f87853", - "eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvZWI3YWY5ZTQ0MTEyMTdjN2RlOWM2MGFjYmQzYzNmZDY1MTk3ODMzMzJhMWIzYmM1NmZiZmNlOTA3MjFlZjM1In19fQ==" - ), - ARMOR_STAND( - "Armor Stand", "armor_stand", "912657c1-58f0-4a6c-b388-9666a0aaa750", - "eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvMjY0MzZmNTc5MWMwZTY1OTQ3MWE0OWE5MWY4MzZjOWZkMzA5YzI4YjA4MzI2NGJkOTJiYTVlOWJkM2E3NjhiOCJ9fX0=" - ), + "eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvZWI3YWY5ZTQ0MTEyMTdjN2RlOWM2MGFjYmQzYzNmZDY1MTk3ODMzMzJhMWIzYmM1NmZiZmNlOTA3MjFlZjM1In19fQ==" + ), + ARMOR_STAND( + "Armor Stand", "armor_stand", "912657c1-58f0-4a6c-b388-9666a0aaa750", + "eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvMjY0MzZmNTc5MWMwZTY1OTQ3MWE0OWE5MWY4MzZjOWZkMzA5YzI4YjA4MzI2NGJkOTJiYTVlOWJkM2E3NjhiOCJ9fX0=" + ), BAT( - "Bat", "bat", "19e2f141-789d-4d5e-9cdd-8fbf54af2611", - "eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvYTczNjU1MzZmOTc4MzIzYjUyYzVkZTQ1ZDhmMjhlMTY0NjgxNWQ1OTA3OGY1MjdhNzMyODM5YTM4OGJlYjQ5YyJ9fX0=" - ), - BEE( - "Bee", "bee.none", "77342662-8870-445a-869f-f0aef1406b3d", - "eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvNTlhYzE2ZjI5NmI0NjFkMDVlYTA3ODVkNDc3MDMzZTUyNzM1OGI0ZjMwYzI2NmFhMDJmMDIwMTU3ZmZjYTczNiJ9fX0=" - ), - BEE_POLLINATED( - "Pollinated Bee", "bee.pollinated", "7766f1ce-53ca-4557-80e3-0539d2f7d909", - "eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvYjcyN2QwYWIwM2Y1Y2QwMjJmODcwNWQzZjdmMTMzY2E0OTIwZWFlOGUxZTQ3YjUwNzQ0MzNhMTM3ZTY5MWU0ZSJ9fX0=" - ), - BEE_ANGRY( - "Angry Bee", "bee.angry", "14feb823-becc-4799-a97d-e529110e11a0", - "eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvZTQwMDIyM2YxZmE1NDc0MWQ0MjFkN2U4MDQ2NDA5ZDVmM2UxNWM3ZjQzNjRiMWI3Mzk5NDAyMDhmM2I2ODZkNCJ9fX0=" - ), - BEE_ANGRY_POLLINATED( - "Angry Pollinated Bee", "bee.angry_pollinated", "a148a6aa-24ea-49b6-b2be-4e1d1d130757", - "eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvZTZiNzRlMDUyYjc0Mjg4Nzk5YmE2ZDlmMzVjNWQwMjIxY2Y4YjA0MzMxNTQ3ZWMyZjY4ZDczNTk3YWUyYzliIn19fQ==" - ), + "Bat", "bat", "19e2f141-789d-4d5e-9cdd-8fbf54af2611", + "eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvYTczNjU1MzZmOTc4MzIzYjUyYzVkZTQ1ZDhmMjhlMTY0NjgxNWQ1OTA3OGY1MjdhNzMyODM5YTM4OGJlYjQ5YyJ9fX0=" + ), + BEE( + "Bee", "bee.none", "77342662-8870-445a-869f-f0aef1406b3d", + "eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvNTlhYzE2ZjI5NmI0NjFkMDVlYTA3ODVkNDc3MDMzZTUyNzM1OGI0ZjMwYzI2NmFhMDJmMDIwMTU3ZmZjYTczNiJ9fX0=" + ), + BEE_POLLINATED( + "Pollinated Bee", "bee.pollinated", "7766f1ce-53ca-4557-80e3-0539d2f7d909", + "eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvYjcyN2QwYWIwM2Y1Y2QwMjJmODcwNWQzZjdmMTMzY2E0OTIwZWFlOGUxZTQ3YjUwNzQ0MzNhMTM3ZTY5MWU0ZSJ9fX0=" + ), + BEE_ANGRY( + "Angry Bee", "bee.angry", "14feb823-becc-4799-a97d-e529110e11a0", + "eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvZTQwMDIyM2YxZmE1NDc0MWQ0MjFkN2U4MDQ2NDA5ZDVmM2UxNWM3ZjQzNjRiMWI3Mzk5NDAyMDhmM2I2ODZkNCJ9fX0=" + ), + BEE_ANGRY_POLLINATED( + "Angry Pollinated Bee", "bee.angry_pollinated", "a148a6aa-24ea-49b6-b2be-4e1d1d130757", + "eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvZTZiNzRlMDUyYjc0Mjg4Nzk5YmE2ZDlmMzVjNWQwMjIxY2Y4YjA0MzMxNTQ3ZWMyZjY4ZDczNTk3YWUyYzliIn19fQ==" + ), BLAZE( - "Blaze", "blaze", "ca339549-96da-4f39-8cb8-ebd5c27b83a3", - "eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvZGVlMjNkYzdhMTBjNmE4N2VmOTM3NDU0YzBlOTRlZDQyYzIzYWE2NDFhOTFlZDg0NzBhMzA0MmQwNWM1MmM1MiJ9fX0=" - ), - CAVE_SPIDER( - "Cave Spider", "cave_spider", "c1c239ec-22c2-4d2e-ad15-8eb2d2770bcd", - "eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvYWY4NDNiYjdhOTg0ZTczNGFiNzZhODhjOWExYTBmNWE0MGJmNzk1MjQ4MDlhODUxMWJmMzJkMDU3NTI2ZjdmMyJ9fX0=" - ), - CHICKEN( - "Chicken", "chicken", "fadbdff9-a3e6-471a-8dc3-23e23f9c7acf", - "eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvNDJhZjZlNTg0N2VlYTA5OWUxYjBhYjhjMjBhOWU1ZjNjNzE5MDE1OGJkYTU0ZTI4MTMzZDliMjcxZWMwY2I0YiJ9fX0=" - ), - COD( - "Cod", "cod", "d8645871-ea91-4742-a0a3-0f86dc49653b", - "eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvZjI0NmUxOWIzMmNmNzg0NTQ5NDQ3ZTA3Yjk2MDcyZTFmNjU2ZDc4ZTkzY2NjYTU2Mzc0ODVlNjc0OTczNDY1MiJ9fX0=" - ), - COW( - "Cow", "cow", "1208f5e1-a040-4a4f-8462-372ffb1cd83d", - "eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvNjNkNjIxMTAwZmVhNTg4MzkyMmU3OGJiNDQ4MDU2NDQ4Yzk4M2UzZjk3ODQxOTQ4YTJkYTc0N2Q2YjA4YjhhYiJ9fX0=" - ), + "Blaze", "blaze", "ca339549-96da-4f39-8cb8-ebd5c27b83a3", + "eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvZGVlMjNkYzdhMTBjNmE4N2VmOTM3NDU0YzBlOTRlZDQyYzIzYWE2NDFhOTFlZDg0NzBhMzA0MmQwNWM1MmM1MiJ9fX0=" + ), + CAVE_SPIDER( + "Cave Spider", "cave_spider", "c1c239ec-22c2-4d2e-ad15-8eb2d2770bcd", + "eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvYWY4NDNiYjdhOTg0ZTczNGFiNzZhODhjOWExYTBmNWE0MGJmNzk1MjQ4MDlhODUxMWJmMzJkMDU3NTI2ZjdmMyJ9fX0=" + ), + CHICKEN( + "Chicken", "chicken", "fadbdff9-a3e6-471a-8dc3-23e23f9c7acf", + "eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvNDJhZjZlNTg0N2VlYTA5OWUxYjBhYjhjMjBhOWU1ZjNjNzE5MDE1OGJkYTU0ZTI4MTMzZDliMjcxZWMwY2I0YiJ9fX0=" + ), + COD( + "Cod", "cod", "d8645871-ea91-4742-a0a3-0f86dc49653b", + "eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvZjI0NmUxOWIzMmNmNzg0NTQ5NDQ3ZTA3Yjk2MDcyZTFmNjU2ZDc4ZTkzY2NjYTU2Mzc0ODVlNjc0OTczNDY1MiJ9fX0=" + ), + COW( + "Cow", "cow", "1208f5e1-a040-4a4f-8462-372ffb1cd83d", + "eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvNjNkNjIxMTAwZmVhNTg4MzkyMmU3OGJiNDQ4MDU2NDQ4Yzk4M2UzZjk3ODQxOTQ4YTJkYTc0N2Q2YjA4YjhhYiJ9fX0=" + ), CREEPER( "Creeper", "creeper", "c66c91fd-6fb5-414f-b70e-39c19edf3d28", - "eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvOGVhZjg1MmMyYjczOGU5ODY0OThlZGFlYmZlMGZmZWE5ZTkxM2ZkNGJhZmIyNWJlYmZlZDVhYjNmZGFmYWY3NCJ9fX0=" - ), + "eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvOGVhZjg1MmMyYjczOGU5ODY0OThlZGFlYmZlMGZmZWE5ZTkxM2ZkNGJhZmIyNWJlYmZlZDVhYjNmZGFmYWY3NCJ9fX0=" + ), CREEPER_CHARGED( - "Charged Creeper", "charged_creeper", "011c00c6-86da-11eb-8dcd-0242ac130003", - "eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvYTkyZmI3NTM4YWQxYWQwOTRiMDQ0MjYzNTM4OTlmMzVjYzI0OWU3MzU0MzY1ZDcwOWU5OGE5ZGNiMmM4MWU0NCJ9fX0=" - ), + "Charged Creeper", "creeper_charged", "011c00c6-86da-11eb-8dcd-0242ac130003", + "eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvYTkyZmI3NTM4YWQxYWQwOTRiMDQ0MjYzNTM4OTlmMzVjYzI0OWU3MzU0MzY1ZDcwOWU5OGE5ZGNiMmM4MWU0NCJ9fX0=" + ), DOLPHIN( - "Dolphin", "dolphin", "9cd54916-35e6-4728-aac8-1850cb91d051", - "eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvOGU5Njg4Yjk1MGQ4ODBiNTViN2FhMmNmY2Q3NmU1YTBmYTk0YWFjNmQxNmY3OGU4MzNmNzQ0M2VhMjlmZWQzIn19fQ==" - ), - DONKEY( - "Donkey", "donkey", "96bc6d6d-3599-49fa-b044-353f288da370", - "eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvNGUyNWVlOTI3M2FkNTc5ZDQ0YmY0MDZmNmY2Mjk1NTg2NDgxZWExOThmZDU3MjA3NmNkMGM1ODgyZGE3ZTZjYyJ9fX0=" - ), - DROWNED( - "Drowned", "drowned", "937deebb-00ac-4304-adbf-d7968421a4a2", - "eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvYzNmN2NjZjYxZGJjM2Y5ZmU5YTYzMzNjZGUwYzBlMTQzOTllYjJlZWE3MWQzNGNmMjIzYjNhY2UyMjA1MSJ9fX0=" - ), + "Dolphin", "dolphin", "9cd54916-35e6-4728-aac8-1850cb91d051", + "eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvOGU5Njg4Yjk1MGQ4ODBiNTViN2FhMmNmY2Q3NmU1YTBmYTk0YWFjNmQxNmY3OGU4MzNmNzQ0M2VhMjlmZWQzIn19fQ==" + ), + DONKEY( + "Donkey", "donkey", "96bc6d6d-3599-49fa-b044-353f288da370", + "eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvNGUyNWVlOTI3M2FkNTc5ZDQ0YmY0MDZmNmY2Mjk1NTg2NDgxZWExOThmZDU3MjA3NmNkMGM1ODgyZGE3ZTZjYyJ9fX0=" + ), + DROWNED( + "Drowned", "drowned", "937deebb-00ac-4304-adbf-d7968421a4a2", + "eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvYzNmN2NjZjYxZGJjM2Y5ZmU5YTYzMzNjZGUwYzBlMTQzOTllYjJlZWE3MWQzNGNmMjIzYjNhY2UyMjA1MSJ9fX0=" + ), ELDER_GUARDIAN( - "Elder Guardian", "elder_guardian", "fe2a7a7e-d140-4996-9922-e1fb124fb9f7", - "eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvNGEyZDY0ZjRhMDBlOWM4NWY2NzI2MmVkY2FjYjg0NTIzNTgxYWUwZjM3YmRhYjIyZGQ3MDQ1MjRmNjJlMTY5ZiJ9fX0=" - ), + "Elder Guardian", "elder_guardian", "fe2a7a7e-d140-4996-9922-e1fb124fb9f7", + "eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvNGEyZDY0ZjRhMDBlOWM4NWY2NzI2MmVkY2FjYjg0NTIzNTgxYWUwZjM3YmRhYjIyZGQ3MDQ1MjRmNjJlMTY5ZiJ9fX0=" + ), ENDER_DRAGON( "Ender Dragon", "ender_dragon", "069773eb-ed19-4a82-8ea7-b38a7224e10b", - "eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvNzRlY2MwNDA3ODVlNTQ2NjNlODU1ZWYwNDg2ZGE3MjE1NGQ2OWJiNGI3NDI0YjczODFjY2Y5NWIwOTVhIn19fQ==" - ), + "eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvNzRlY2MwNDA3ODVlNTQ2NjNlODU1ZWYwNDg2ZGE3MjE1NGQ2OWJiNGI3NDI0YjczODFjY2Y5NWIwOTVhIn19fQ==" + ), ENDERMAN( - "Enderman", "enderman", "e229ba57-ec25-4501-87cb-af52d6ee7497", - "eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvN2E1OWJiMGE3YTMyOTY1YjNkOTBkOGVhZmE4OTlkMTgzNWY0MjQ1MDllYWRkNGU2YjcwOWFkYTUwYjljZiJ9fX0=" - ), + "Enderman", "enderman", "e229ba57-ec25-4501-87cb-af52d6ee7497", + "eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvN2E1OWJiMGE3YTMyOTY1YjNkOTBkOGVhZmE4OTlkMTgzNWY0MjQ1MDllYWRkNGU2YjcwOWFkYTUwYjljZiJ9fX0=" + ), ENDERMITE( - "Endermite", "endermite", "64ce8824-aa7d-456e-a46d-7a03b9fdf5fd", - "eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvOGM2YjY1YzIyYjQ0NjViYTY3OTNiMjE5NWNkNTA4NGNlODNiODhkY2E2ZTU1ZWI5NDg0NTQwYWNkNzM1MmE1MCJ9fX0=" - ), + "Endermite", "endermite", "64ce8824-aa7d-456e-a46d-7a03b9fdf5fd", + "eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvOGM2YjY1YzIyYjQ0NjViYTY3OTNiMjE5NWNkNTA4NGNlODNiODhkY2E2ZTU1ZWI5NDg0NTQwYWNkNzM1MmE1MCJ9fX0=" + ), EVOKER( - "Evoker", "evoker", "3b8e7675-6d30-45b9-8a39-bde80cff58ff", - "eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvMzkwZmJkODhmNjU5ZDM5NjNjNjhjYmJjYjdjNzEyMWQ4MTk1YThiZTY1YmJkMmJmMTI1N2QxZjY5YmNjYzBjNyJ9fX0=" - ), + "Evoker", "evoker", "3b8e7675-6d30-45b9-8a39-bde80cff58ff", + "eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvMzkwZmJkODhmNjU5ZDM5NjNjNjhjYmJjYjdjNzEyMWQ4MTk1YThiZTY1YmJkMmJmMTI1N2QxZjY5YmNjYzBjNyJ9fX0=" + ), FOX_RED( - "Red Fox", "fox.red", "237a2651-7da8-457a-aaea-3714bcc196a2", - "eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvZDdlMDA0MzExMWJjNTcwOTA4NTYyNTkxNTU1NzFjNzkwNmU3MDcwNDZkZjA0MWI4YjU3MjcwNGM0NTFmY2Q4MiJ9fX0=" - ), - FOX_SNOW( - "Snow Fox", "fox.snow", "b28c7bb1-b6a9-497b-8a2d-336876e85a9d", - "eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvNDE0MzYzNzdlYjRjNGI0ZTM5ZmIwZTFlZDg4OTlmYjYxZWUxODE0YTkxNjliOGQwODcyOWVmMDFkYzg1ZDFiYSJ9fX0=" - ), + "Red Fox", "fox.red", "237a2651-7da8-457a-aaea-3714bcc196a2", + "eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvZDdlMDA0MzExMWJjNTcwOTA4NTYyNTkxNTU1NzFjNzkwNmU3MDcwNDZkZjA0MWI4YjU3MjcwNGM0NTFmY2Q4MiJ9fX0=" + ), + FOX_SNOW( + "Snow Fox", "fox.snow", "b28c7bb1-b6a9-497b-8a2d-336876e85a9d", + "eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvNDE0MzYzNzdlYjRjNGI0ZTM5ZmIwZTFlZDg4OTlmYjYxZWUxODE0YTkxNjliOGQwODcyOWVmMDFkYzg1ZDFiYSJ9fX0=" + ), GHAST( - "Ghast", "ghast", "7af3876e-0427-45c5-97ae-7119688cdecf", - "eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvYzUzZGUzMWEyZDAwNDFhNmVmNzViZjdhNmM4NDY4NDY0ZGIxYWFhNjIwMWViYjFhNjAxM2VkYjIyNDVjNzYwNyJ9fX0=" - ), + "Ghast", "ghast", "7af3876e-0427-45c5-97ae-7119688cdecf", + "eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvYzUzZGUzMWEyZDAwNDFhNmVmNzViZjdhNmM4NDY4NDY0ZGIxYWFhNjIwMWViYjFhNjAxM2VkYjIyNDVjNzYwNyJ9fX0=" + ), GIANT( - "Giant", "giant", "a1c8704d-e52f-4f9d-8c7b-764cc9ded430", - "eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvYzA5ZTE2YmNjZDlhNDgyMmZhNzU0MTZhZTM4YTdhOTg3ODZlMjE5ZGRhNjc5YzViMTI3ZTNhMmVmY2ZjIn19fQ==" - ), + "Giant", "giant", "a1c8704d-e52f-4f9d-8c7b-764cc9ded430", + "eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvYzA5ZTE2YmNjZDlhNDgyMmZhNzU0MTZhZTM4YTdhOTg3ODZlMjE5ZGRhNjc5YzViMTI3ZTNhMmVmY2ZjIn19fQ==" + ), GLOW_SQUID( - "Glow Squid", "glow_squid", "0bbea5a5-e69e-4dce-8ce7-23c0586b6ac2", - "eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvZmU3ZWUwY2U5YjE3NjMwZGM1YmQ3NDc0N2VjNGFiODkwYWIxOWYxZTAzZjE4MmQzM2ZkY2Q5YThkMWI0ZTk1OSJ9fX0=" - ), + "Glow Squid", "glow_squid", "0bbea5a5-e69e-4dce-8ce7-23c0586b6ac2", + "eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvZmU3ZWUwY2U5YjE3NjMwZGM1YmQ3NDc0N2VjNGFiODkwYWIxOWYxZTAzZjE4MmQzM2ZkY2Q5YThkMWI0ZTk1OSJ9fX0=" + ), GOAT( "Goat", "goat", "243ec988-847f-11eb-8dcd-0242ac130003", "eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvNWY5OWYxOTM0MGVmMjkyYWFkMGMyOGFhNzVhMjNmNDI1OTY4OTMyOGMyZTBmYTE1MmMxMmYzMWY1YTliOWEyMCJ9fX0=" - ), + ), GUARDIAN( - "Guardian", "guardian", "5212ce39-d2a0-48d4-8c3d-b588fb970fcf", - "eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvZTJiYTM0NDE2NjcwNDU0YjFhMjA0OTZmODBiOTM5ODUyOWY0OTAwM2ZjNjEzZWI5MzAyNDhlYTliNWQxYTM5MSJ9fX0=" - ), - HOGLIN( - "Hoglin", "hoglin", "", - "eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvNGE3ZTI4OGUzNTQ0NWI1MjhjNDAxZWJjNzkwZjU1MWY2ZGM3NDkxYzBkZTY2YjYzNjI2YzUxNzU5MWJkNTViNCJ9fX0=" - ), + "Guardian", "guardian", "5212ce39-d2a0-48d4-8c3d-b588fb970fcf", + "eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvZTJiYTM0NDE2NjcwNDU0YjFhMjA0OTZmODBiOTM5ODUyOWY0OTAwM2ZjNjEzZWI5MzAyNDhlYTliNWQxYTM5MSJ9fX0=" + ), + HOGLIN( + "Hoglin", "hoglin", "", + "eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvNGE3ZTI4OGUzNTQ0NWI1MjhjNDAxZWJjNzkwZjU1MWY2ZGM3NDkxYzBkZTY2YjYzNjI2YzUxNzU5MWJkNTViNCJ9fX0=" + ), HUSK( - "Husk", "husk", "9bfd4d16-7232-49d3-bfd8-c965e57ba899", - "eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvNzMzODMxOGJjOTFhMzZjZDVhYjZhYTg4NWM5YTRlZTJiZGFjZGFhNWM2NmIyYTk5ZGZiMGE1NjA5ODNmMjQ4MCJ9fX0=" - ), + "Husk", "husk", "9bfd4d16-7232-49d3-bfd8-c965e57ba899", + "eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvNzMzODMxOGJjOTFhMzZjZDVhYjZhYTg4NWM5YTRlZTJiZGFjZGFhNWM2NmIyYTk5ZGZiMGE1NjA5ODNmMjQ4MCJ9fX0=" + ), ILLUSIONER( - "Illusioner", "illusioner", "f108e349-dced-4aa1-a8b7-708b728780ad", - "eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvZDM4MjcwMWM2N2Q2YzU0YzkwNzU1ODg5MWRjMTc2MjI1MTEyNTE4NzcxZTA2MWM1ZDhiZDkxODQ3OWU2YmRkOCJ9fX0=" - ), + "Illusioner", "illusioner", "f108e349-dced-4aa1-a8b7-708b728780ad", + "eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvZDM4MjcwMWM2N2Q2YzU0YzkwNzU1ODg5MWRjMTc2MjI1MTEyNTE4NzcxZTA2MWM1ZDhiZDkxODQ3OWU2YmRkOCJ9fX0=" + ), IRON_GOLEM( - "Iron Golem", "iron_golem", "675bf087-86a1-48b3-b800-1f7d6042a585", - "eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvZmU3YzA3MTlmYWJlMTE2ZGNlNjA1MTk5YmNhZGM2OWE1Mzg4NjA4NjRlZjE1NzA2OTgzZmY2NjI4MjJkOWZlMyJ9fX0=" - ), + "Iron Golem", "iron_golem", "675bf087-86a1-48b3-b800-1f7d6042a585", + "eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvZmU3YzA3MTlmYWJlMTE2ZGNlNjA1MTk5YmNhZGM2OWE1Mzg4NjA4NjRlZjE1NzA2OTgzZmY2NjI4MjJkOWZlMyJ9fX0=" + ), MAGMA_CUBE( - "Magma Cube", "magma_cube", "58014cd9-af29-4ad0-ad62-2e9b16f749bb", - "eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvYjgxNzE4ZDQ5ODQ4NDdhNGFkM2VjMDgxYTRlYmZmZDE4Mzc0MzIzOWFlY2FiNjAzMjIxMzhhNzI2MDk4MTJjMyJ9fX0=" - ), + "Magma Cube", "magma_cube", "58014cd9-af29-4ad0-ad62-2e9b16f749bb", + "eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvYjgxNzE4ZDQ5ODQ4NDdhNGFkM2VjMDgxYTRlYmZmZDE4Mzc0MzIzOWFlY2FiNjAzMjIxMzhhNzI2MDk4MTJjMyJ9fX0=" + ), MULE( - "Mule", "mule", "59c3af02-e6d8-481c-b0e3-46d09044b17a", - "eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvNDFjMjI0YTEwMzFiZTQzNGQyNWFlMTg4NWJmNGZmNDAwYzk4OTRjNjliZmVmNTZhNDkzNTRjNTYyNWMwYzA5YyJ9fX0=" - ), - MUSHROOM_COW_BROWN( - "Brown Mushroom", "mushroom_cow.brown", "e206ac29-ae69-475b-909a-fb523d894336", - "eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvN2U2NDY2MzAyYTVhYjQzOThiNGU0NzczNDk4MDhlNWQ5NDAyZWEzYWQ4ZmM0MmUyNDQ2ZTRiZWQwYTVlZDVlIn19fQ==" - ), - MUSHROOM_COW_RED( - "Red Mushroom", "mushroom_cow.red", "b769f2da-e5a8-4882-b15b-d68618904a63", - "eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvZGE4MDYwNmU4MmM2NDJmMTQxNTg3NzMzZTMxODBhZTU3ZjY0NjQ0MmM5ZmZmZDRlNTk5NzQ1N2UzNDMxMWEyOSJ9fX0=" - ), + "Mule", "mule", "59c3af02-e6d8-481c-b0e3-46d09044b17a", + "eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvNDFjMjI0YTEwMzFiZTQzNGQyNWFlMTg4NWJmNGZmNDAwYzk4OTRjNjliZmVmNTZhNDkzNTRjNTYyNWMwYzA5YyJ9fX0=" + ), + MUSHROOM_COW_BROWN( + "Brown Mushroom", "mushroom_cow.brown", "e206ac29-ae69-475b-909a-fb523d894336", + "eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvN2U2NDY2MzAyYTVhYjQzOThiNGU0NzczNDk4MDhlNWQ5NDAyZWEzYWQ4ZmM0MmUyNDQ2ZTRiZWQwYTVlZDVlIn19fQ==" + ), + MUSHROOM_COW_RED( + "Red Mushroom", "mushroom_cow.red", "b769f2da-e5a8-4882-b15b-d68618904a63", + "eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvZGE4MDYwNmU4MmM2NDJmMTQxNTg3NzMzZTMxODBhZTU3ZjY0NjQ0MmM5ZmZmZDRlNTk5NzQ1N2UzNDMxMWEyOSJ9fX0=" + ), OCELOT( - "Ocelot", "cat.wild_ocelot", "7f372b3d-c0fb-46df-ae19-4a9ee7584ae5", - "eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvOTE3NWNjNDNlYThhZTIwMTY4YTFmMTcwODEwYjRkYTRkOWI0ZWJkM2M5OTc2ZTlmYzIyZTlmOTk1YzNjYmMzYyJ9fX0=" - ), - PANDA_AGGRESSIVE( - "Aggressive Panda", "panda.aggressive", "6a83c5a7-4cac-49d7-bf88-75b657bf8cb6", - "eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvZTU0NmU0MzZkMTY2YjE3ZjA1MjFiZDg1MzhlYTEzY2Q2ZWUzYjVkZjEwMmViMzJlM2U0MjVjYjI4NWQ0NDA2MyJ9fX0=" - ), - PANDA_BROWN( - "Drown Panda", "panda.brown", "e19e8aae-3bf4-4c7a-83bc-9a8c9f6ad544", - "eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvMWQ1ZjZkNjEyNjcyODY3MWI0NGMxYzc3NWY5OTYxNzQyNGUzMzYxMWI1ZDMxYWQyYWNmZjI4MDRlYjk2ZWIwNiJ9fX0=" - ), - PANDA_LAZY( - "Lazy Panda", "panda.lazy", "fd7a7d59-7ffe-46dc-b90d-665a0e4d9287", - "eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvNTg3ZjFmNWRiMmUyNGRmNGRhYWVkNDY4NWQ2YWVlNWRlYjdjZGQwMjk2MzBmMDA3OWMxZjhlMWY5NzQxYWNmZCJ9fX0=" - ), - PANDA_NORMAL( - "Panda", "panda.normal", "bf7435c9-b7eb-49e9-8887-60697f8081b9", - "eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvNTlkZjQ3ZTAxNWQ1YzFjNjhkNzJiZTExYmI2NTYzODBmYzZkYjUzM2FhYjM4OTQxYTkxYjFkM2Q1ZTM5NjQ5NyJ9fX0=" - ), - PANDA_PLAYFUL( - "Playful Panda", "panda.playful", "4bfdf3fe-943e-455c-8c84-009e9567f352", - "eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvOGNhZGQ0YmYzYzRjYWNlOTE2NjgwZTFmZWY5MGI1ZDE2YWQ2NjQzOTUxNzI1NjY4YmE2YjQ5OTZiNjljYTE0MCJ9fX0=" - ), - PANDA_WEAK( - "Weak Panda", "panda.weak", "041da468-5fce-470a-ace5-8023cb3f42fa", - "eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvY2M1NmEzNTVmYmUwZTJmYmQyOGU4NWM0ZDgxNWZmYTVkMWY5ZDVmODc5OGRiYzI1OWZmODhjNGFkZGIyMDJhZSJ9fX0=" - ), - PANDA_WORRIED( - "Worried Panda", "panda.worried", "7dc74b79-71bb-40ce-9feb-9d7f83311aa7", - "eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvZmI4NmZkMWJmOGNiY2UyM2JjMDhmYjkwNjkxNzE3NjExYWRkYzg1YWI4MjNiNzcxNGFlYzk4YTU2NjBlZmYxNSJ9fX0=" - ), + "Ocelot", "cat.wild_ocelot", "7f372b3d-c0fb-46df-ae19-4a9ee7584ae5", + "eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvOTE3NWNjNDNlYThhZTIwMTY4YTFmMTcwODEwYjRkYTRkOWI0ZWJkM2M5OTc2ZTlmYzIyZTlmOTk1YzNjYmMzYyJ9fX0=" + ), + PANDA_AGGRESSIVE( + "Aggressive Panda", "panda.aggressive", "6a83c5a7-4cac-49d7-bf88-75b657bf8cb6", + "eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvZTU0NmU0MzZkMTY2YjE3ZjA1MjFiZDg1MzhlYTEzY2Q2ZWUzYjVkZjEwMmViMzJlM2U0MjVjYjI4NWQ0NDA2MyJ9fX0=" + ), + PANDA_BROWN( + "Drown Panda", "panda.brown", "e19e8aae-3bf4-4c7a-83bc-9a8c9f6ad544", + "eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvMWQ1ZjZkNjEyNjcyODY3MWI0NGMxYzc3NWY5OTYxNzQyNGUzMzYxMWI1ZDMxYWQyYWNmZjI4MDRlYjk2ZWIwNiJ9fX0=" + ), + PANDA_LAZY( + "Lazy Panda", "panda.lazy", "fd7a7d59-7ffe-46dc-b90d-665a0e4d9287", + "eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvNTg3ZjFmNWRiMmUyNGRmNGRhYWVkNDY4NWQ2YWVlNWRlYjdjZGQwMjk2MzBmMDA3OWMxZjhlMWY5NzQxYWNmZCJ9fX0=" + ), + PANDA_NORMAL( + "Panda", "panda.normal", "bf7435c9-b7eb-49e9-8887-60697f8081b9", + "eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvNTlkZjQ3ZTAxNWQ1YzFjNjhkNzJiZTExYmI2NTYzODBmYzZkYjUzM2FhYjM4OTQxYTkxYjFkM2Q1ZTM5NjQ5NyJ9fX0=" + ), + PANDA_PLAYFUL( + "Playful Panda", "panda.playful", "4bfdf3fe-943e-455c-8c84-009e9567f352", + "eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvOGNhZGQ0YmYzYzRjYWNlOTE2NjgwZTFmZWY5MGI1ZDE2YWQ2NjQzOTUxNzI1NjY4YmE2YjQ5OTZiNjljYTE0MCJ9fX0=" + ), + PANDA_WEAK( + "Weak Panda", "panda.weak", "041da468-5fce-470a-ace5-8023cb3f42fa", + "eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvY2M1NmEzNTVmYmUwZTJmYmQyOGU4NWM0ZDgxNWZmYTVkMWY5ZDVmODc5OGRiYzI1OWZmODhjNGFkZGIyMDJhZSJ9fX0=" + ), + PANDA_WORRIED( + "Worried Panda", "panda.worried", "7dc74b79-71bb-40ce-9feb-9d7f83311aa7", + "eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvZmI4NmZkMWJmOGNiY2UyM2JjMDhmYjkwNjkxNzE3NjExYWRkYzg1YWI4MjNiNzcxNGFlYzk4YTU2NjBlZmYxNSJ9fX0=" + ), PARROT_BLUE( - "Blue Parrot", "parrot.blue", "3ac775c2-c701-4ccd-bec2-5cc7a5c0bb7a", - "eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvYjk0YmQzZmNmNGQ0NjM1NGVkZThmZWY3MzEyNmRiY2FiNTJiMzAxYTFjOGMyM2I2Y2RmYzEyZDYxMmI2MWJlYSJ9fX0=" - ), - PARROT_CYAN( - "Cyan Parrot", "parrot.cyan", "0bd02c77-cd3f-4bf4-9d02-89cd7f58e06c", - "eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvNzI2OGNlMzdiZTg1MDdlZDY3ZTNkNDBiNjE3ZTJkNzJmNjZmOWQyMGIxMDZlZmIwOGU2YmEwNDFmOWI5ZWYxMCJ9fX0=" - ), - PARROT_GRAY( - "Gray Parrot", "parrot.gray", "2a8680dd-7875-4c83-810a-5b866a3d4433", - "eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvNzFiZTcyM2FhMTczOTNkOTlkYWRkYzExOWM5OGIyYzc5YzU0YjM1ZGViZTA1YzcxMzhlZGViOGQwMjU2ZGM0NiJ9fX0=" - ), - PARROT_GREEN( - "Green Parrot", "parrot.green", "b95a9198-cf0b-4cfa-bf6d-2f172dc6ee65", - "eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvNmExZGMzMzExNTIzMmY4MDA4MjVjYWM5ZTNkOWVkMDNmYzE4YWU1NTNjMjViODA1OTUxMzAwMGM1OWUzNTRmZSJ9fX0=" - ), - PARROT_RED( - "Red Parrot", "parrot.red", "d890586d-3e18-41fc-a93d-9040dc25409b", - "eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvNDBhM2Q0N2Y1NGU3MWE1OGJmOGY1N2M1MjUzZmIyZDIxM2Y0ZjU1YmI3OTM0YTE5MTA0YmZiOTRlZGM3NmVhYSJ9fX0=" - ), + "Blue Parrot", "parrot.blue", "3ac775c2-c701-4ccd-bec2-5cc7a5c0bb7a", + "eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvYjk0YmQzZmNmNGQ0NjM1NGVkZThmZWY3MzEyNmRiY2FiNTJiMzAxYTFjOGMyM2I2Y2RmYzEyZDYxMmI2MWJlYSJ9fX0=" + ), + PARROT_CYAN( + "Cyan Parrot", "parrot.cyan", "0bd02c77-cd3f-4bf4-9d02-89cd7f58e06c", + "eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvNzI2OGNlMzdiZTg1MDdlZDY3ZTNkNDBiNjE3ZTJkNzJmNjZmOWQyMGIxMDZlZmIwOGU2YmEwNDFmOWI5ZWYxMCJ9fX0=" + ), + PARROT_GRAY( + "Gray Parrot", "parrot.gray", "2a8680dd-7875-4c83-810a-5b866a3d4433", + "eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvNzFiZTcyM2FhMTczOTNkOTlkYWRkYzExOWM5OGIyYzc5YzU0YjM1ZGViZTA1YzcxMzhlZGViOGQwMjU2ZGM0NiJ9fX0=" + ), + PARROT_GREEN( + "Green Parrot", "parrot.green", "b95a9198-cf0b-4cfa-bf6d-2f172dc6ee65", + "eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvNmExZGMzMzExNTIzMmY4MDA4MjVjYWM5ZTNkOWVkMDNmYzE4YWU1NTNjMjViODA1OTUxMzAwMGM1OWUzNTRmZSJ9fX0=" + ), + PARROT_RED( + "Red Parrot", "parrot.red", "d890586d-3e18-41fc-a93d-9040dc25409b", + "eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvNDBhM2Q0N2Y1NGU3MWE1OGJmOGY1N2M1MjUzZmIyZDIxM2Y0ZjU1YmI3OTM0YTE5MTA0YmZiOTRlZGM3NmVhYSJ9fX0=" + ), PHANTOM( - "Phantom", "phantom", "385f1bf3-12d8-4246-87fc-2622a415a312", - "eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvNzQ2ODMwZGE1ZjgzYTNhYWVkODM4YTk5MTU2YWQ3ODFhNzg5Y2ZjZjEzZTI1YmVlZjdmNTRhODZlNGZhNCJ9fX0=" - ), + "Phantom", "phantom", "385f1bf3-12d8-4246-87fc-2622a415a312", + "eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvNzQ2ODMwZGE1ZjgzYTNhYWVkODM4YTk5MTU2YWQ3ODFhNzg5Y2ZjZjEzZTI1YmVlZjdmNTRhODZlNGZhNCJ9fX0=" + ), PIG( - "Pig", "pig", "afb61daf-4fda-4ac4-9ddd-b2309377bcda", - "eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvNDFlZTc2ODFhZGYwMDA2N2YwNGJmNDI2MTFjOTc2NDEwNzVhNDRhZTJiMWMwMzgxZDVhYzZiMzI0NjIxMWJmZSJ9fX0=" - ), - PIGLIN( - "Piglin", "piglin", "24d853db-b5b6-4b46-8cd7-4210c38d246d", - "eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvYWY1ODNlZmRhN2I4Mzk2MDQ0YjA0NTg2MjkyNGUzZjg5MTA3YTVjOWNlNGI1ZTZlZTBlMDUwN2Y4NDhiOGRkNyJ9fX0=" - ), - PIGLIN_BRUTE( - "Piglin Brute", "piglin_brute", "b9b908ef-1962-42b2-ae20-f37e46303887", - "eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvOTZmY2RkMWU3MWZkZDNkMGExNzFmZDUwZjlmNWUyNjEzM2EwZThjODc5NTE0YmFlNjljNzkyMjA0MzA1NGQyYyJ9fX0=" - ), - PIG_ZOMBIE( - "Zombie Pigman", "zombie_pigman", "24d853db-b5b6-4b46-8cd7-4210c38d246d", - "eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvNmNhNmQ2YmVkMGZkYWJiNmE0OWM0MTMzM2IzYTU3NzgwNmJlNjZiODEyOTNiYmU5MGJiMWNjY2I3ZjM2M2E4MCJ9fX0=" - ), + "Pig", "pig", "afb61daf-4fda-4ac4-9ddd-b2309377bcda", + "eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvNDFlZTc2ODFhZGYwMDA2N2YwNGJmNDI2MTFjOTc2NDEwNzVhNDRhZTJiMWMwMzgxZDVhYzZiMzI0NjIxMWJmZSJ9fX0=" + ), + PIGLIN( + "Piglin", "piglin", "24d853db-b5b6-4b46-8cd7-4210c38d246d", + "eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvYWY1ODNlZmRhN2I4Mzk2MDQ0YjA0NTg2MjkyNGUzZjg5MTA3YTVjOWNlNGI1ZTZlZTBlMDUwN2Y4NDhiOGRkNyJ9fX0=" + ), + PIGLIN_BRUTE( + "Piglin Brute", "piglin_brute", "b9b908ef-1962-42b2-ae20-f37e46303887", + "eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvOTZmY2RkMWU3MWZkZDNkMGExNzFmZDUwZjlmNWUyNjEzM2EwZThjODc5NTE0YmFlNjljNzkyMjA0MzA1NGQyYyJ9fX0=" + ), + PIG_ZOMBIE( + "Zombie Pigman", "zombie_pigman", "24d853db-b5b6-4b46-8cd7-4210c38d246d", + "eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvNmNhNmQ2YmVkMGZkYWJiNmE0OWM0MTMzM2IzYTU3NzgwNmJlNjZiODEyOTNiYmU5MGJiMWNjY2I3ZjM2M2E4MCJ9fX0=" + ), PILLAGER( - "Pillager", "pillager", "c64b8af5-b547-4a15-abf9-12d3eb052f37", - "eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvYzIyNWYwYjQ5YzUyOTUwNDhhNDA5YzljNjAxY2NhNzlhYThlYjUyYWZmNWUyMDMzZWJiODY1ZjQzNjdlZjQzZSJ9fX0=" - ), + "Pillager", "pillager", "c64b8af5-b547-4a15-abf9-12d3eb052f37", + "eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvYzIyNWYwYjQ5YzUyOTUwNDhhNDA5YzljNjAxY2NhNzlhYThlYjUyYWZmNWUyMDMzZWJiODY1ZjQzNjdlZjQzZSJ9fX0=" + ), POLAR_BEAR( - "Polar Bear", "polar_bear", "da6aeada-b809-424b-a653-9ba6e4b01262", - "eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvY2Q4NzAyOTExZTYxNmMwZDMyZmJlNzc4ZDE5NWYyMWVjY2U5MDI1YmNiZDA5MTUxZTNkOTdhZjMxOTJhYTdlYyJ9fX0=" - ), + "Polar Bear", "polar_bear", "da6aeada-b809-424b-a653-9ba6e4b01262", + "eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvY2Q4NzAyOTExZTYxNmMwZDMyZmJlNzc4ZDE5NWYyMWVjY2U5MDI1YmNiZDA5MTUxZTNkOTdhZjMxOTJhYTdlYyJ9fX0=" + ), PUFFERFISH( - "Pufferfish", "pufferfish", "c5f9816d-7415-43f6-8e40-6f3b2dab3c33", - "eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvZTI3MzNkNWRhNTljODJlYWYzMTBiMzgyYWZmNDBiZDUxM2M0NDM1NGRiYmFiZmUxNGIwNjZhNTU2ODEwYTdmOSJ9fX0=" - ), + "Pufferfish", "pufferfish", "c5f9816d-7415-43f6-8e40-6f3b2dab3c33", + "eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvZTI3MzNkNWRhNTljODJlYWYzMTBiMzgyYWZmNDBiZDUxM2M0NDM1NGRiYmFiZmUxNGIwNjZhNTU2ODEwYTdmOSJ9fX0=" + ), RAVAGER( - "Ravager", "ravager", "3a9cb258-fb4e-47e5-811f-a00e8f0cd6fc", - "eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvZWI0ZGIyOTg2MTQwZTI1MWUzMmU3MGVkMDhjOGEwODE3MjAzMTNjZTI1NzYzMmJlMWVmOTRhMDczNzM5NGRiIn19fQ==" - ), + "Ravager", "ravager", "3a9cb258-fb4e-47e5-811f-a00e8f0cd6fc", + "eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvZWI0ZGIyOTg2MTQwZTI1MWUzMmU3MGVkMDhjOGEwODE3MjAzMTNjZTI1NzYzMmJlMWVmOTRhMDczNzM5NGRiIn19fQ==" + ), SALMON( - "Salmon", "salmon", "35968ced-177a-4cef-9b3f-a8cbcdc7659e", - "eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvNzkxZDllNjliNzk1ZGE0ZWFhY2ZjZjczNTBkZmU4YWUzNjdmZWQ4MzM1NTY3MDZlMDQwMzM5ZGQ3ZmUwMjQwYSJ9fX0=" - ), + "Salmon", "salmon", "35968ced-177a-4cef-9b3f-a8cbcdc7659e", + "eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvNzkxZDllNjliNzk1ZGE0ZWFhY2ZjZjczNTBkZmU4YWUzNjdmZWQ4MzM1NTY3MDZlMDQwMzM5ZGQ3ZmUwMjQwYSJ9fX0=" + ), SHULKER( - "Shulker", "shulker", "eb8f9276-54f8-4ce0-917e-3479038e36d1", - "eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvZmI5ZTZhZjZiODE5ZjNkOTBlNjdjZTJlNzA1OWZiZWYzMWRhMmFhOTUzZDM1ZTM0NTRmMTAyMWZhOTEyZWZkZSJ9fX0=" - ), - SILVERFISH( - "Silverfish", "silverfish", "49ff3529-bb63-44ee-99e6-bd57b888463d", - "eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvZjI1ZTlmYWUzNzE2NjRkZTFhODAwYzg0ZDAyNTEyNGFiYjhmMTUxMTE4MDdjOGJjMWFiOTEyNmFhY2JkNGY5NSJ9fX0=" - ), + "Shulker", "shulker", "eb8f9276-54f8-4ce0-917e-3479038e36d1", + "eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvZmI5ZTZhZjZiODE5ZjNkOTBlNjdjZTJlNzA1OWZiZWYzMWRhMmFhOTUzZDM1ZTM0NTRmMTAyMWZhOTEyZWZkZSJ9fX0=" + ), + SILVERFISH( + "Silverfish", "silverfish", "49ff3529-bb63-44ee-99e6-bd57b888463d", + "eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvZjI1ZTlmYWUzNzE2NjRkZTFhODAwYzg0ZDAyNTEyNGFiYjhmMTUxMTE4MDdjOGJjMWFiOTEyNmFhY2JkNGY5NSJ9fX0=" + ), SKELETON( "Skeleton", "skeleton", "69708f16-9c00-4aa4-9089-247ec1c8d013", - "eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvMzAxMjY4ZTljNDkyZGExZjBkODgyNzFjYjQ5MmE0YjMwMjM5NWY1MTVhN2JiZjc3ZjRhMjBiOTVmYzAyZWIyIn19fQ==" - ), + "eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvMzAxMjY4ZTljNDkyZGExZjBkODgyNzFjYjQ5MmE0YjMwMjM5NWY1MTVhN2JiZjc3ZjRhMjBiOTVmYzAyZWIyIn19fQ==" + ), SKELETON_HORSE( - "Skeleton Horse", "skeleton_horse", "3d84a760-800d-4f87-a537-18446aad8623", - "eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvNmUyMjY3MDViZDJhOWU3YmI4ZDZiMGY0ZGFhOTY5YjllMTJkNGFlNWM2NmRhNjkzYmI1ZjRhNGExZTZhYTI5NiJ9fX0=" - ), + "Skeleton Horse", "skeleton_horse", "3d84a760-800d-4f87-a537-18446aad8623", + "eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvNmUyMjY3MDViZDJhOWU3YmI4ZDZiMGY0ZGFhOTY5YjllMTJkNGFlNWM2NmRhNjkzYmI1ZjRhNGExZTZhYTI5NiJ9fX0=" + ), SLIME( - "Slime", "slime", "625a4069-aa5d-4844-bea0-c133d6978373", - "eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvYzA2NDI0ZWM3YTE5NmIxNWY5YWQ1NzMzYTM2YTZkMWYyZTZhMGQ0MmZmY2UxZTE1MDhmOTBmMzEyYWM0Y2FlZCJ9fX0=" - ), + "Slime", "slime", "625a4069-aa5d-4844-bea0-c133d6978373", + "eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvYzA2NDI0ZWM3YTE5NmIxNWY5YWQ1NzMzYTM2YTZkMWYyZTZhMGQ0MmZmY2UxZTE1MDhmOTBmMzEyYWM0Y2FlZCJ9fX0=" + ), SNOWMAN( - "Snowman", "snowman", "82a04987-3371-41e2-ac43-91769b4461e7", - "eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvY2FhM2UxN2VmMWIyOWE0Yjg3ZmE0M2RlZTFkYjEyYzQxZmQzOWFhMzg3ZmExM2FmMmEwNzliNWIzNzhmZGU4YiJ9fX0=" - ), + "Snowman", "snowman", "82a04987-3371-41e2-ac43-91769b4461e7", + "eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvY2FhM2UxN2VmMWIyOWE0Yjg3ZmE0M2RlZTFkYjEyYzQxZmQzOWFhMzg3ZmExM2FmMmEwNzliNWIzNzhmZGU4YiJ9fX0=" + ), SPIDER( - "Spider", "spider", "3d461eb4-4601-4d76-b89f-e2bf0bcfc05c", - "eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvNTBjNDEwMDQ1Y2QzNzQ5YzNhOGVkODU2ZGY0MTFmNmMzM2U5YThhNmY5ZTU3ZTUyMTYwOGE4YWQ4ZWQ2ZWIzNyJ9fX0=" - ), - SQUID( - "Squid", "squid", "c6f5cd8b-1578-4f8b-a933-17ab193a6fe5", - "eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvODM1MWI3ZDlhNGYzNmNmZTMxZmQ1OWQ4YzkwMGU0MTlhMTM1MTQ0MTA1ZTdhOTgxY2FhNWExNjhkY2ZmMzI1YiJ9fX0=" - ), + "Spider", "spider", "3d461eb4-4601-4d76-b89f-e2bf0bcfc05c", + "eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvNTBjNDEwMDQ1Y2QzNzQ5YzNhOGVkODU2ZGY0MTFmNmMzM2U5YThhNmY5ZTU3ZTUyMTYwOGE4YWQ4ZWQ2ZWIzNyJ9fX0=" + ), + SQUID( + "Squid", "squid", "c6f5cd8b-1578-4f8b-a933-17ab193a6fe5", + "eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvODM1MWI3ZDlhNGYzNmNmZTMxZmQ1OWQ4YzkwMGU0MTlhMTM1MTQ0MTA1ZTdhOTgxY2FhNWExNjhkY2ZmMzI1YiJ9fX0=" + ), STRAY( - "Stray", "stray", "d051ef24-d218-44bf-95e1-fb30174237f1", - "eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvNTkyYjU1OTcwODVlMzVkYjUzZDliZGEwMDhjYWU3MmIyZjAwY2Q3ZDRjZDhkYzY5ZmYxNzRhNTViNjg5ZTZlIn19fQ==" - ), - STRIDER( - "Strider", "strider", "", - "eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvOGQ2OWVlODMxMmNjN2IxY2ZiZDk1ZTQxZTg5NzFiMmIzNjAyY2FmYTExMDJjMWNjODhhZGQ2MTdmMjhjZmM3ZCJ9fX0=" - ), - STRIDER_SHIVERING( - "Shivering Strider", "shivering_strider", "", - "eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvMjkwYTEyMDI4YjkwYzBkYTFkNGQxN2U2ZmUxYmY1YmNhZjMzZGNmY2Y0ZTVkNTQ5MzkxMDZiMTg2Y2UyMWQ3NiJ9fX0=" - ), + "Stray", "stray", "d051ef24-d218-44bf-95e1-fb30174237f1", + "eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvNTkyYjU1OTcwODVlMzVkYjUzZDliZGEwMDhjYWU3MmIyZjAwY2Q3ZDRjZDhkYzY5ZmYxNzRhNTViNjg5ZTZlIn19fQ==" + ), + STRIDER( + "Strider", "strider", "", + "eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvOGQ2OWVlODMxMmNjN2IxY2ZiZDk1ZTQxZTg5NzFiMmIzNjAyY2FmYTExMDJjMWNjODhhZGQ2MTdmMjhjZmM3ZCJ9fX0=" + ), + STRIDER_SHIVERING( + "Shivering Strider", "strider_shivering", "", + "eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvMjkwYTEyMDI4YjkwYzBkYTFkNGQxN2U2ZmUxYmY1YmNhZjMzZGNmY2Y0ZTVkNTQ5MzkxMDZiMTg2Y2UyMWQ3NiJ9fX0=" + ), TROPICAL_FISH( - "Tropical Fish", "tropical_fish", "6c2851ca-37b3-4f29-8415-c3d03f32e27d", - "eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvMzRhMGM4NGRjM2MwOTBkZjdiYWZjNDM2N2E5ZmM2Yzg1MjBkYTJmNzNlZmZmYjgwZTkzNGQxMTg5ZWFkYWM0MSJ9fX0=" - ), + "Tropical Fish", "tropical_fish", "6c2851ca-37b3-4f29-8415-c3d03f32e27d", + "eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvMzRhMGM4NGRjM2MwOTBkZjdiYWZjNDM2N2E5ZmM2Yzg1MjBkYTJmNzNlZmZmYjgwZTkzNGQxMTg5ZWFkYWM0MSJ9fX0=" + ), TURTLE( - "Turtle", "turtle", "3283acfe-e846-42a8-a555-7e2940b58ae4", - "eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvMzA0OTMxMjAwYWQ0NjBiNjUwYTE5MGU4ZDQxMjI3YzM5OTlmYmViOTMzYjUxY2E0OWZkOWU1OTIwZDFmOGU3ZCJ9fX0=" - ), - VEX( - "Vex", "vex", "fec1a798-abc0-4648-9a4d-fd807af2fab0", - "eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvZTQ1MWZjNGYzYWZlMDBlYzBjMDczYzdiMzA4YmNhNDVkZjQ4MGVlYTE5MjBlYjNlMTAzNDEzM2U2YzZjYzJkMCJ9fX0=" - ), - VEX_ANGRY( - "Angry Vex", "vex.angry", "81699482-75c4-4ae9-a07f-936836043f94", - "eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvYjBjNzEzYWNkODhiMDJhYmI2MjAxOGQ4ZjY4YWJlMmY2YmMxODk5ZTlkOTQwZjk0MzQ0MWYyZDYzZDFhOTAzZCJ9fX0=" - ), - VINDICATOR( - "Vindicator", "vindicator", "c28e1263-45f1-4e19-8af4-01015507fc94", - "eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvMmRhYmFmZGUyN2VlMTJiMDk4NjUwNDdhZmY2ZjE4M2ZkYjY0ZTA0ZGFlMWMwMGNjYmRlMDRhZDkzZGNjNmM5NSJ9fX0=" - ), + "Turtle", "turtle", "3283acfe-e846-42a8-a555-7e2940b58ae4", + "eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvMzA0OTMxMjAwYWQ0NjBiNjUwYTE5MGU4ZDQxMjI3YzM5OTlmYmViOTMzYjUxY2E0OWZkOWU1OTIwZDFmOGU3ZCJ9fX0=" + ), + VEX( + "Vex", "vex", "fec1a798-abc0-4648-9a4d-fd807af2fab0", + "eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvZTQ1MWZjNGYzYWZlMDBlYzBjMDczYzdiMzA4YmNhNDVkZjQ4MGVlYTE5MjBlYjNlMTAzNDEzM2U2YzZjYzJkMCJ9fX0=" + ), + VEX_ANGRY( + "Angry Vex", "vex.angry", "81699482-75c4-4ae9-a07f-936836043f94", + "eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvYjBjNzEzYWNkODhiMDJhYmI2MjAxOGQ4ZjY4YWJlMmY2YmMxODk5ZTlkOTQwZjk0MzQ0MWYyZDYzZDFhOTAzZCJ9fX0=" + ), + VINDICATOR( + "Vindicator", "vindicator", "c28e1263-45f1-4e19-8af4-01015507fc94", + "eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvMmRhYmFmZGUyN2VlMTJiMDk4NjUwNDdhZmY2ZjE4M2ZkYjY0ZTA0ZGFlMWMwMGNjYmRlMDRhZDkzZGNjNmM5NSJ9fX0=" + ), WANDERING_TRADER( - "Wandering Trader", "wandering_trader", "70aaec20-d989-4e06-857d-285ad2dca337", - "eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvNWYxMzc5YTgyMjkwZDdhYmUxZWZhYWJiYzcwNzEwZmYyZWMwMmRkMzRhZGUzODZiYzAwYzkzMGM0NjFjZjkzMiJ9fX0=" - ), + "Wandering Trader", "wandering_trader", "70aaec20-d989-4e06-857d-285ad2dca337", + "eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvNWYxMzc5YTgyMjkwZDdhYmUxZWZhYWJiYzcwNzEwZmYyZWMwMmRkMzRhZGUzODZiYzAwYzkzMGM0NjFjZjkzMiJ9fX0=" + ), WARDEN( "Warden", "warden", "4b289e0c-847f-11eb-8dcd-0242ac130003", "eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvNDY4ZjgzMzU3Zjk2MWMxMWZmMTE1NDVkZmU0MDkzZjJmOWM3Mzg2NTg0MDIwZjI5OGM2N2I4NGZjZjQ0N2Q5In19fQ==" - ), + ), WITCH( - "Witch", "witch", "9cc1d9c9-701e-4ecf-9d1b-0822b0a466eb", - "eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvYTUyMGYxMmM2M2M3OTEyMTg2YzRiZTRlMzBjMzNjNWFjYWVjMGRiMGI2YWJkODM2ZDUxN2Q3NGE2MjI3NWQ0YiJ9fX0=" - ), - WITHER_1( - "Wither", "wither.1", "940486f2-1e1e-4d1f-b77f-1d47a1ba389f", - "eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvZWRhMTA4MjhmNjNiN2VjZGVmZDc2N2IzMjQ1ZmJkYWExM2MzZWMwYzZiMTM3NzRmMWVlOGQzMDdjMDM0YzM4MyJ9fX0=" - ), - WITHER_2( - "Invulnerable Wither", "wither.2", "940486f2-1e1e-4d1f-b77f-1d47a1ba389f", - "eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvMzE5NmViOGQ1OTljNGZlZjUzYTk3MTc2YjcyZmY4ZmM0MWUzMmE2NmExNTlmZDQ1MTkwYTBkYTE1NDU4N2UxMiJ9fX0=" - ), - WITHER_3( - "Armored Wither", "wither.3", "940486f2-1e1e-4d1f-b77f-1d47a1ba389f", - "eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvYjM3YzU4MTRhOTJmOGVjMGY2YWU5OTMzYWJlOTU0MmUxNjUxOTA3NjhlNzYwNDc4NTQzYWViZWVkNDAyN2MyNyJ9fX0=" - ), - WITHER_4( - "Armored Invulnerable Wither", "wither.4", "940486f2-1e1e-4d1f-b77f-1d47a1ba389f", - "eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvZDM2ODJiMDYyMDNiOWRlNGMyODU0MTA3MWEyNmNkYzM0MGRkMjVkNGMzNzJiNzAyM2VjMmY0MTIwMjFkNjJmNyJ9fX0=" - ), + "Witch", "witch", "9cc1d9c9-701e-4ecf-9d1b-0822b0a466eb", + "eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvYTUyMGYxMmM2M2M3OTEyMTg2YzRiZTRlMzBjMzNjNWFjYWVjMGRiMGI2YWJkODM2ZDUxN2Q3NGE2MjI3NWQ0YiJ9fX0=" + ), + WITHER_NORMAL( + "Wither", "wither.normal", "940486f2-1e1e-4d1f-b77f-1d47a1ba389f", + "eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvZWRhMTA4MjhmNjNiN2VjZGVmZDc2N2IzMjQ1ZmJkYWExM2MzZWMwYzZiMTM3NzRmMWVlOGQzMDdjMDM0YzM4MyJ9fX0=" + ), + WITHER_PROJECTILE( + "Wither Projectile", "wither.projectile", "0aa676db-c489-4837-b733-55b89714d4f6", + "eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvYjM3YzU4MTRhOTJmOGVjMGY2YWU5OTMzYWJlOTU0MmUxNjUxOTA3NjhlNzYwNDc4NTQzYWViZWVkNDAyN2MyNyJ9fX0=" + ), + WITHER_BLUE_PROJECTILE( + "Blue Wither Projectile", "wither.blue_projectile", "8e4c90d2-d6b4-419b-a8f6-66bdacb3ab5f", + "eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvZDM2ODJiMDYyMDNiOWRlNGMyODU0MTA3MWEyNmNkYzM0MGRkMjVkNGMzNzJiNzAyM2VjMmY0MTIwMjFkNjJmNyJ9fX0=" + ), WITHER_SKELETON( "Wither Skeleton", "wither_skeleton", "c5b5a5a5-8a1d-4c0b-8e9f-5dd4ac8ab9d6", - "eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvNzk1M2I2YzY4NDQ4ZTdlNmI2YmY4ZmIyNzNkNzIwM2FjZDhlMWJlMTllODE0ODFlYWQ1MWY0NWRlNTlhOCJ9fX0=" - ), - WOLF( - "Wolf", "wolf", "e6f2820d-03e7-4718-b552-76e1aec11638", - "eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvYjY0MzlhNDNlNTY4NzAwODgxNWEyZGQxZmY0YTEzNGMxMjIyMWI3ODIzMzY2NzhiOTc5YWQxM2RjZTM5NjY1ZSJ9fX0=" - ), - WOLF_ANGRY( - "Angry Wolf", "wolf", "e6f2820d-03e7-4718-b552-76e1aec11638", - "eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvOGQxYWE3ZTNiOTU2NGIzODQ2ZjFkZWExNGYxYjFjY2JmMzk5YmJiMjNiOTUyZGJkN2VlYzQxODAyYTI4OWM5NiJ9fX0=" - ), - ZOGLIN( - "Zoglin", "zoglin", "", - "eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvNzY0Y2ZjNjFhYzUyOTUzMzhkZDJmNGZlNjdmYWI2MjhjZWZkOTQ5MjY5OTIzZjE5YTBjNzcxNjRmOGYwMzRiZiJ9fX0=" - ), + "eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvNzk1M2I2YzY4NDQ4ZTdlNmI2YmY4ZmIyNzNkNzIwM2FjZDhlMWJlMTllODE0ODFlYWQ1MWY0NWRlNTlhOCJ9fX0=" + ), + WOLF( + "Wolf", "wolf", "e6f2820d-03e7-4718-b552-76e1aec11638", + "eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvYjY0MzlhNDNlNTY4NzAwODgxNWEyZGQxZmY0YTEzNGMxMjIyMWI3ODIzMzY2NzhiOTc5YWQxM2RjZTM5NjY1ZSJ9fX0=" + ), + WOLF_ANGRY( + "Angry Wolf", "wolf", "e6f2820d-03e7-4718-b552-76e1aec11638", + "eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvOGQxYWE3ZTNiOTU2NGIzODQ2ZjFkZWExNGYxYjFjY2JmMzk5YmJiMjNiOTUyZGJkN2VlYzQxODAyYTI4OWM5NiJ9fX0=" + ), + ZOGLIN( + "Zoglin", "zoglin", "", + "eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvNzY0Y2ZjNjFhYzUyOTUzMzhkZDJmNGZlNjdmYWI2MjhjZWZkOTQ5MjY5OTIzZjE5YTBjNzcxNjRmOGYwMzRiZiJ9fX0=" + ), ZOMBIE( "Zombie", "zombie", "a1985e68-5743-42f5-b67a-8e8dd3f8eb11", - "eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvNTZmYzg1NGJiODRjZjRiNzY5NzI5Nzk3M2UwMmI3OWJjMTA2OTg0NjBiNTFhNjM5YzYwZTVlNDE3NzM0ZTExIn19fQ==" - ), + "eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvNTZmYzg1NGJiODRjZjRiNzY5NzI5Nzk3M2UwMmI3OWJjMTA2OTg0NjBiNTFhNjM5YzYwZTVlNDE3NzM0ZTExIn19fQ==" + ), ZOMBIE_HORSE( - "Zombie Horse", "zombie_horse", "4bde7ee9-e719-4e2a-9249-26a3b8ac765e", - "eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvNjYxOGZmYmUxY2ZhMjA1OGZlODBhMDY1ZjcwYzEyOGMyMjVhMWUwYmM5ZGVhZjhiMzhiMDM5NTQ0M2Y0MDkwOSJ9fX0=" - ), - ZOMBIFIED_PIGLIN( - "Zombified Piglin", "zombified_piglin", "24d853db-b5b6-4b46-8cd7-4210c38d246d", - "eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvOWMwY2UyZTg5NjRkYjk4M2E4MTI5MGVhODZhMjg5ODUyZjQ0OGM5NjhkNjQ1MTFmNDdkOWNmYjU5MTFkZGU0MCJ9fX0=" - ), - ZOMBIE_PIGMAN( - "Zombie Pigman", "zombie_pigman", "24d853db-b5b6-4b46-8cd7-4210c38d246d", - "eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvNmNhNmQ2YmVkMGZkYWJiNmE0OWM0MTMzM2IzYTU3NzgwNmJlNjZiODEyOTNiYmU5MGJiMWNjY2I3ZjM2M2E4MCJ9fX0=" - ), - ZOMBIE_VILLAGER( - "Zombie Villager", "zombie_villager", "8de04954-9398-4e7c-b2c3-a0684b5b5929", - "eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvZTVlMDhhODc3NmMxNzY0YzNmZTZhNmRkZDQxMmRmY2I4N2Y0MTMzMWRhZDQ3OWFjOTZjMjFkZjRiZjNhYzg5YyJ9fX0=" - ), - - /**LLAMA( + "Zombie Horse", "zombie_horse", "4bde7ee9-e719-4e2a-9249-26a3b8ac765e", + "eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvNjYxOGZmYmUxY2ZhMjA1OGZlODBhMDY1ZjcwYzEyOGMyMjVhMWUwYmM5ZGVhZjhiMzhiMDM5NTQ0M2Y0MDkwOSJ9fX0=" + ), + ZOMBIFIED_PIGLIN( + "Zombified Piglin", "zombified_piglin", "24d853db-b5b6-4b46-8cd7-4210c38d246d", + "eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvOWMwY2UyZTg5NjRkYjk4M2E4MTI5MGVhODZhMjg5ODUyZjQ0OGM5NjhkNjQ1MTFmNDdkOWNmYjU5MTFkZGU0MCJ9fX0=" + ), + ZOMBIE_PIGMAN( + "Zombie Pigman", "zombie_pigman", "24d853db-b5b6-4b46-8cd7-4210c38d246d", + "eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvNmNhNmQ2YmVkMGZkYWJiNmE0OWM0MTMzM2IzYTU3NzgwNmJlNjZiODEyOTNiYmU5MGJiMWNjY2I3ZjM2M2E4MCJ9fX0=" + ), + ZOMBIE_VILLAGER( + "Zombie Villager", "zombie_villager", "8de04954-9398-4e7c-b2c3-a0684b5b5929", + "eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvZTVlMDhhODc3NmMxNzY0YzNmZTZhNmRkZDQxMmRmY2I4N2Y0MTMzMWRhZDQ3OWFjOTZjMjFkZjRiZjNhYzg5YyJ9fX0=" + ), + + /**LLAMA( "", "" ),*/ - ; - + ; + private final String owner; - private final String texture; - private final String name; - private final String nameString; - - MobHeads(String name, String nameString, String ownerUUID, String texture){ - this.texture = texture; - this.name = name; - this.owner = ownerUUID; - this.nameString = nameString; - } - - public static final String getNameFromTexture(String texture) - { - //MoreMobHeads.logger.info("texture=" + texture); - for(MobHeads verbosity : MobHeads.values()){ - //MoreMobHeads.logger.info(verbosity.getName() + "=" + verbosity.getTexture()); - if(verbosity.getTexture().contains(texture) ) - return verbosity.getNameString() ; - } - return null; - } - + private final String texture; + private final String name; + private final String nameString; + + MobHeads(String name, String nameString, String ownerUUID, String texture){ + this.texture = texture; + this.name = name; + this.owner = ownerUUID; + this.nameString = nameString; + } + + public static final String getNameFromTexture(String texture) + { + //MoreMobHeads.logger.info("texture=" + texture); + for(MobHeads verbosity : MobHeads.values()){ + //MoreMobHeads.logger.info(verbosity.getName() + "=" + verbosity.getTexture()); + if(verbosity.getTexture().contains(texture) ) { + return verbosity.getNameString() ; + } + } + return null; + } + /** * @return the owner */ @@ -419,7 +416,7 @@ public enum MobHeads { public String getName() { return name; } - + /** * @return the name */ diff --git a/src/com/github/joelgodofwar/mmh/handlers/EventHandler_1_19_R1.java b/src/com/github/joelgodofwar/mmh/handlers/EventHandler_1_19_R1.java index 4ad52e4..c61e5f7 100644 --- a/src/com/github/joelgodofwar/mmh/handlers/EventHandler_1_19_R1.java +++ b/src/com/github/joelgodofwar/mmh/handlers/EventHandler_1_19_R1.java @@ -11,6 +11,7 @@ import java.util.ArrayList; import java.util.Arrays; import java.util.HashSet; import java.util.List; +import java.util.Random; import java.util.UUID; import java.util.logging.Level; @@ -56,7 +57,6 @@ import org.bukkit.entity.TraderLlama; import org.bukkit.entity.Trident; import org.bukkit.entity.TropicalFish; import org.bukkit.entity.TropicalFish.Pattern; -import org.bukkit.entity.Vex; import org.bukkit.entity.Villager; import org.bukkit.entity.WanderingTrader; import org.bukkit.entity.Wolf; @@ -89,6 +89,7 @@ import com.github.joelgodofwar.mmh.enums.SheepHeads; import com.github.joelgodofwar.mmh.enums.TropicalFishHeads; import com.github.joelgodofwar.mmh.enums.VillagerHeads; import com.github.joelgodofwar.mmh.enums.ZombieVillagerHeads; +import com.github.joelgodofwar.mmh.util.ChatColorUtils; import com.github.joelgodofwar.mmh.util.ConfigHelper; import com.github.joelgodofwar.mmh.util.EquipmentSlotResolver; import com.github.joelgodofwar.mmh.util.StrUtils; @@ -99,7 +100,7 @@ import de.tr7zw.changeme.nbtapi.NBTItem; /** 1.8 1_8_R1 1.8.3 1_8_R2 1.8.8 1_8_R3 -1.9 1_9_R1 1.9.4 1_9_R2 +1.9 1_9_R1 1.9.4 1_9_R2 1.10 1_10_R1 1.11 1_11_R1 1.12 1_12_R1 @@ -108,10 +109,10 @@ import de.tr7zw.changeme.nbtapi.NBTItem; 1.15 1_15_R1 1.16.1 1_16_R1 1.16.2 1_16_R2 1.17 1_17_R1 -*/ + */ @SuppressWarnings("deprecation") -public class EventHandler_1_19_R1 implements CommandExecutor, TabCompleter , Listener { +public class EventHandler_1_19_R1 implements CommandExecutor, TabCompleter , Listener { /** Variables */ MoreMobHeads mmh; double defpercent = 0.013; @@ -128,13 +129,13 @@ public class EventHandler_1_19_R1 implements CommandExecutor, TabCompleter , Lis public FileConfiguration blockHeads = new YamlConfiguration(); public FileConfiguration blockHeads2 = new YamlConfiguration(); public FileConfiguration blockHeads3 = new YamlConfiguration(); - + List playerhead_recipes = new ArrayList(); List blockhead_recipes = new ArrayList(); List custometrade_recipes = new ArrayList(); int BHNum, BHNum2, BHNum3; - - + + @SuppressWarnings({ "static-access", "unchecked", "rawtypes" }) public EventHandler_1_19_R1(final MoreMobHeads plugin){ /** Set variables */ @@ -196,14 +197,14 @@ public class EventHandler_1_19_R1 implements CommandExecutor, TabCompleter , Lis mmh.stacktraceInfo(); e1.printStackTrace(); } - - + + boolean showlore = mmh.getConfig().getBoolean("lore.show_plugin_name", true); ArrayList headlore = new ArrayList(); headlore.add(ChatColor.AQUA + "" + mmh.getName()); - + mmh.log(Level.INFO, "Loading PlayerHead Recipes..."); - for(int i=1; i < mmh.playerHeads.getInt("players.number") + 1; i++){ + for(int i=1; i < (mmh.playerHeads.getInt("players.number") + 1); i++){ ItemStack price1 = mmh.playerHeads.getItemStack("players.player_" + i + ".price_1", new ItemStack(Material.AIR)); ItemStack price2 = mmh.playerHeads.getItemStack("players.player_" + i + ".price_2", new ItemStack(Material.AIR)); ItemStack itemstack = mmh.playerHeads.getItemStack("players.player_" + i + ".itemstack", new ItemStack(Material.AIR)); @@ -213,7 +214,7 @@ public class EventHandler_1_19_R1 implements CommandExecutor, TabCompleter , Lis itemstack.setItemMeta(meta); itemstack.setItemMeta(meta); } - MerchantRecipe recipe = new MerchantRecipe(itemstack, mmh.playerHeads.getInt("players.player_" + i + ".quantity", (int) 3)); + MerchantRecipe recipe = new MerchantRecipe(itemstack, mmh.playerHeads.getInt("players.player_" + i + ".quantity", 3)); recipe.addIngredient(price1); recipe.addIngredient(price2); playerhead_recipes.add(recipe); @@ -223,7 +224,7 @@ public class EventHandler_1_19_R1 implements CommandExecutor, TabCompleter , Lis BHNum = blockHeads.getInt("blocks.number"); // BlockHeads mmh.log(Level.INFO, "BlockHeads=" + BHNum); - for(int i=1; i < BHNum + 1; i++){ + for(int i=1; i < (BHNum + 1); i++){ ItemStack price1 = blockHeads.getItemStack("blocks.block_" + i + ".price_1", new ItemStack(Material.AIR)); ItemStack price2 = blockHeads.getItemStack("blocks.block_" + i + ".price_2", new ItemStack(Material.AIR)); ItemStack itemstack = blockHeads.getItemStack("blocks.block_" + i + ".itemstack", new ItemStack(Material.AIR)); @@ -233,7 +234,7 @@ public class EventHandler_1_19_R1 implements CommandExecutor, TabCompleter , Lis itemstack.setItemMeta(meta); itemstack.setItemMeta(meta); } - MerchantRecipe recipe = new MerchantRecipe(itemstack, blockHeads.getInt("blocks.block_" + i + ".quantity", (int) 8)); + MerchantRecipe recipe = new MerchantRecipe(itemstack, blockHeads.getInt("blocks.block_" + i + ".quantity", 8)); recipe.setExperienceReward(true); recipe.addIngredient(price1); recipe.addIngredient(price2); @@ -242,7 +243,7 @@ public class EventHandler_1_19_R1 implements CommandExecutor, TabCompleter , Lis BHNum2 = blockHeads2.getInt("blocks.number"); // blockHeads 2 mmh.log(Level.INFO, "BlockHeads2=" + BHNum2); - for(int i=1; i < BHNum2 + 1; i++){ + for(int i=1; i < (BHNum2 + 1); i++){ ItemStack price1 = blockHeads2.getItemStack("blocks.block_" + i + ".price_1", new ItemStack(Material.AIR)); ItemStack price2 = blockHeads2.getItemStack("blocks.block_" + i + ".price_2", new ItemStack(Material.AIR)); ItemStack itemstack = blockHeads2.getItemStack("blocks.block_" + i + ".itemstack", new ItemStack(Material.AIR)); @@ -252,7 +253,7 @@ public class EventHandler_1_19_R1 implements CommandExecutor, TabCompleter , Lis itemstack.setItemMeta(meta); itemstack.setItemMeta(meta); } - MerchantRecipe recipe = new MerchantRecipe(itemstack, blockHeads2.getInt("blocks.block_" + i + ".quantity", (int) 8)); + MerchantRecipe recipe = new MerchantRecipe(itemstack, blockHeads2.getInt("blocks.block_" + i + ".quantity", 8)); recipe.setExperienceReward(true); recipe.addIngredient(price1); recipe.addIngredient(price2); @@ -261,7 +262,7 @@ public class EventHandler_1_19_R1 implements CommandExecutor, TabCompleter , Lis BHNum3 = blockHeads3.getInt("blocks.number"); // blockHeads 3 mmh.log(Level.INFO, "BlockHeads3=" + BHNum3); - for(int i=1; i < BHNum3 + 1; i++){ + for(int i=1; i < (BHNum3 + 1); i++){ ItemStack price1 = blockHeads3.getItemStack("blocks.block_" + i + ".price_1", new ItemStack(Material.AIR)); ItemStack price2 = blockHeads3.getItemStack("blocks.block_" + i + ".price_2", new ItemStack(Material.AIR)); ItemStack itemstack = blockHeads3.getItemStack("blocks.block_" + i + ".itemstack", new ItemStack(Material.AIR)); @@ -271,20 +272,20 @@ public class EventHandler_1_19_R1 implements CommandExecutor, TabCompleter , Lis itemstack.setItemMeta(meta); itemstack.setItemMeta(meta); } - MerchantRecipe recipe = new MerchantRecipe(itemstack, blockHeads3.getInt("blocks.block_" + i + ".quantity", (int) 8)); + MerchantRecipe recipe = new MerchantRecipe(itemstack, blockHeads3.getInt("blocks.block_" + i + ".quantity", 8)); recipe.setExperienceReward(true); recipe.addIngredient(price1); recipe.addIngredient(price2); blockhead_recipes.add(recipe); } - + mmh.log(Level.INFO, blockhead_recipes.size() + " BlockHead Recipes ADDED..."); mmh.log(Level.INFO, "Loading CustomTrades Recipes..."); - for(int i=1; i < mmh.traderCustom.getInt("custom_trades.number") + 1; i++){ + for(int i=1; i < (mmh.traderCustom.getInt("custom_trades.number") + 1); i++){ ItemStack price1 = mmh.traderCustom.getItemStack("custom_trades.trade_" + i + ".price_1", new ItemStack(Material.AIR)); ItemStack price2 = mmh.traderCustom.getItemStack("custom_trades.trade_" + i + ".price_2", new ItemStack(Material.AIR)); ItemStack itemstack = mmh.traderCustom.getItemStack("custom_trades.trade_" + i + ".itemstack", new ItemStack(Material.AIR)); - MerchantRecipe recipe = new MerchantRecipe(itemstack, mmh.traderCustom.getInt("custom_trades.trade_" + i + ".quantity", (int) 1)); + MerchantRecipe recipe = new MerchantRecipe(itemstack, mmh.traderCustom.getInt("custom_trades.trade_" + i + ".quantity", 1)); recipe.setExperienceReward(true); recipe.addIngredient(price1); recipe.addIngredient(price2); @@ -294,67 +295,67 @@ public class EventHandler_1_19_R1 implements CommandExecutor, TabCompleter , Lis mmh.log(Level.INFO, "EventHandler_1_19 took " + (System.currentTimeMillis() - startTime) + "ms to load"); } } - + @SuppressWarnings({ }) @EventHandler public void onEntityDamageByEntity(EntityDamageByEntityEvent event) { if(debug){mmh.logDebug("getDamager=" + event.getDamager().getName().toString());} Player player = null; - if (event.getDamager() instanceof Player) { - player = (Player) event.getDamager(); - }else if(event.getDamager() instanceof Arrow) { - Arrow arrow = (Arrow) event.getDamager(); - if(!(arrow.getShooter() instanceof Player)) { - return; - } - player = (Player) arrow.getShooter(); - }else if(event.getDamager() instanceof ThrownPotion) { - ThrownPotion potion = (ThrownPotion) event.getDamager(); - if(!(potion.getShooter() instanceof Player)) { - return; - } - player = (Player) potion.getShooter(); - }else if(event.getDamager() instanceof Snowball) { - Snowball snowball = (Snowball) event.getDamager(); - if(!(snowball.getShooter() instanceof Player)) { - return; - } - player = (Player) snowball.getShooter(); - }else if(event.getDamager() instanceof Egg) { - Egg egg = (Egg) event.getDamager(); - if(!(egg.getShooter() instanceof Player)) { - return; - } - player = (Player) egg.getShooter(); - }else if(event.getDamager() instanceof Trident) { - Trident trident = (Trident) event.getDamager(); - if(!(trident.getShooter() instanceof Player)) { - return; - } - player = (Player) trident.getShooter(); - }else { - return; - } - - - //Entity damagedEntity = event.getEntity(); + if (event.getDamager() instanceof Player) { + player = (Player) event.getDamager(); + }else if(event.getDamager() instanceof Arrow) { + Arrow arrow = (Arrow) event.getDamager(); + if(!(arrow.getShooter() instanceof Player)) { + return; + } + player = (Player) arrow.getShooter(); + }else if(event.getDamager() instanceof ThrownPotion) { + ThrownPotion potion = (ThrownPotion) event.getDamager(); + if(!(potion.getShooter() instanceof Player)) { + return; + } + player = (Player) potion.getShooter(); + }else if(event.getDamager() instanceof Snowball) { + Snowball snowball = (Snowball) event.getDamager(); + if(!(snowball.getShooter() instanceof Player)) { + return; + } + player = (Player) snowball.getShooter(); + }else if(event.getDamager() instanceof Egg) { + Egg egg = (Egg) event.getDamager(); + if(!(egg.getShooter() instanceof Player)) { + return; + } + player = (Player) egg.getShooter(); + }else if(event.getDamager() instanceof Trident) { + Trident trident = (Trident) event.getDamager(); + if(!(trident.getShooter() instanceof Player)) { + return; + } + player = (Player) trident.getShooter(); + }else { + return; + } - // Store the damaging player's UUID and the damaging weapon in the map - if(debug){mmh.logDebug("DamageCause=" + event.getCause());} - if(debug){mmh.logDebug("UUID=" + player.getUniqueId());} - if(debug){mmh.logDebug("Weapon=" + EquipmentSlotResolver.resolveDamagingWeapon(player.getInventory(), event.getCause()).orElse(null));} - mmh.playerWeapons.put(player.getUniqueId(), EquipmentSlotResolver.resolveDamagingWeapon(player.getInventory(), event.getCause()).orElse(null)); + + //Entity damagedEntity = event.getEntity(); + + // Store the damaging player's UUID and the damaging weapon in the map + if(debug){mmh.logDebug("DamageCause=" + event.getCause());} + if(debug){mmh.logDebug("UUID=" + player.getUniqueId());} + if(debug){mmh.logDebug("Weapon=" + EquipmentSlotResolver.resolveDamagingWeapon(player.getInventory(), event.getCause()).orElse(null));} + mmh.playerWeapons.put(player.getUniqueId(), EquipmentSlotResolver.resolveDamagingWeapon(player.getInventory(), event.getCause()).orElse(null)); } - + /** Events go here */ @SuppressWarnings({ "unchecked", "unused", "rawtypes" }) @EventHandler(priority = EventPriority.LOWEST) public void onEntityDeathEvent(EntityDeathEvent event){// TODO: EnityDeathEvent LivingEntity entity = event.getEntity(); // Verify that the killer is a player - if (!(entity.getKiller() instanceof Player)) { - return; - } + if (!(entity.getKiller() instanceof Player)) { + return; + } World world = event.getEntity().getWorld(); List Drops = event.getDrops(); world_whitelist = mmh.getConfig().getString("world.whitelist", ""); @@ -365,8 +366,8 @@ public class EventHandler_1_19_R1 implements CommandExecutor, TabCompleter , Lis if(debug){mmh.logDebug( "EDE - world_blacklist=" + world_blacklist );} if(debug){mmh.logDebug( "EDE - mob_whitelist=" + mob_whitelist );} if(debug){mmh.logDebug( "EDE - mob_blacklist=" + mob_blacklist );} - - if(world_whitelist != null&&!world_whitelist.isEmpty()&&world_blacklist != null&&!world_blacklist.isEmpty()){ + + if((world_whitelist != null)&&!world_whitelist.isEmpty()&&(world_blacklist != null)&&!world_blacklist.isEmpty()){ if(!StrUtils.stringContains(world_whitelist, world.getName().toString())&&StrUtils.stringContains(world_blacklist, world.getName().toString())){ if(debug){mmh.logDebug("EDE - World - On blacklist and Not on whitelist.");} return; @@ -374,1312 +375,1423 @@ public class EventHandler_1_19_R1 implements CommandExecutor, TabCompleter , Lis if(debug){mmh.logDebug("EDE - World - Not on whitelist.");} return; }else if(!StrUtils.stringContains(world_whitelist, world.getName().toString())){ - + } - }else if(world_whitelist != null&&!world_whitelist.isEmpty()){ + }else if((world_whitelist != null)&&!world_whitelist.isEmpty()){ if(!StrUtils.stringContains(world_whitelist, world.getName().toString())){ if(debug){mmh.logDebug("EDE - World - Not on whitelist.");} return; } - }else if(world_blacklist != null&&!world_blacklist.isEmpty()){ + }else if((world_blacklist != null)&&!world_blacklist.isEmpty()){ if(StrUtils.stringContains(world_blacklist, world.getName().toString())){ if(debug){mmh.logDebug("EDE - World - On blacklist.");} return; } } - if(entity instanceof Player){ - if(debug){mmh.logDebug("EDE Entity is Player line:877");} + if(entity instanceof Player){ + if(debug){mmh.logDebug("EDE Entity is Player line:877");} - //if(entity.getKiller() instanceof Player){// - if(entity.getKiller().hasPermission("moremobheads.players")){ - boolean dropit = mmh.DropIt(event, chanceConfig.getDouble("chance_percent.player", 0.50)); - if(debug){mmh.logDebug("EDE DropIt=" + dropit);} - if(debug){mmh.logDebug("EDE chance_percent.player=" + chanceConfig.getDouble("chance_percent.player", 0.50));} - if(dropit){ - //Player daKiller = entity.getKiller(); - if(debug){mmh.logDebug("EDE Killer is Player line:1073");} - ItemStack helmet = new ItemStack(Material.PLAYER_HEAD, 1, (short)3); - SkullMeta meta = (SkullMeta)helmet.getItemMeta(); - meta.setOwningPlayer(Bukkit.getServer().getOfflinePlayer(((Player) entity).getUniqueId())); - meta.setDisplayName(((Player) entity).getDisplayName() + "'s Head"); - ArrayList lore = new ArrayList(); - if(mmh.getConfig().getBoolean("lore.show_killer", true)){ - //lore.add(ChatColor.RESET + "Killed by " + ChatColor.RESET + ChatColor.YELLOW + entity.getKiller().getDisplayName() ); - lore.add(ChatColor.RESET + "" + mmh.get("mmh.message.lore_killed_by").replace("", "" + entity.getKiller().getDisplayName()) ); - } - if(mmh.getConfig().getBoolean("lore.show_plugin_name", true)){ - lore.add(ChatColor.AQUA + "" + mmh.getName()); - } - meta.setLore(lore); - helmet.setItemMeta(meta);// e2d4c388-42d5-4a96-b4c9-623df7f5e026 - helmet.setItemMeta(meta); - - //entity.getWorld().dropItemNaturally(entity.getLocation(), helmet); - //Drops.add(helmet); - world.dropItemNaturally(entity.getLocation(), helmet); - if(debug){mmh.logDebug("EDE " + ((Player) entity).getDisplayName().toString() + " Player Head Dropped");} - if(mmh.getConfig().getBoolean("announce.players.enabled", true)){ - Player daKiller = entity.getKiller(); - Player daDead = (Player) entity; - String killerName = daKiller.getDisplayName(); - String entityName = daDead.getDisplayName(); - if(mmh.getConfig().getBoolean("announce.players.displayname", true)){ - killerName = daKiller.getDisplayName(); - entityName = daDead.getDisplayName(); - }else { - killerName = daKiller.getName(); - entityName = daDead.getName(); - } - - - announceBeheading(entity, entityName, - daKiller, mmh.getConfig().getBoolean("announce.mobs.displayname", true)); - - } - } - return; - }else { - if(debug){mmh.logDebug("EDE Killer does not have permission \"moremobheads.players\"");} + //if(entity.getKiller() instanceof Player){// + if(entity.getKiller().hasPermission("moremobheads.players")){ + boolean dropit = mmh.DropIt(event, chanceConfig.getDouble("chance_percent.player", 0.50)); + if(debug){mmh.logDebug("EDE DropIt=" + dropit);} + if(debug){mmh.logDebug("EDE chance_percent.player=" + chanceConfig.getDouble("chance_percent.player", 0.50));} + if(dropit){ + //Player daKiller = entity.getKiller(); + if(debug){mmh.logDebug("EDE Killer is Player line:1073");} + ItemStack helmet = new ItemStack(Material.PLAYER_HEAD, 1, (short)3); + SkullMeta meta = (SkullMeta)helmet.getItemMeta(); + meta.setOwningPlayer(Bukkit.getServer().getOfflinePlayer(((Player) entity).getUniqueId())); + meta.setDisplayName(((Player) entity).getDisplayName() + "'s Head"); + ArrayList lore = new ArrayList(); + if(mmh.getConfig().getBoolean("lore.show_killer", true)){ + //lore.add(ChatColor.RESET + "Killed by " + ChatColor.RESET + ChatColor.YELLOW + entity.getKiller().getDisplayName() ); + lore.add(ChatColor.RESET + "" + ChatColorUtils.setColors( mmh.langName.getString("killedby", "Killed By ").replace("", "" + entity.getKiller().getDisplayName()) ) ); } - //}// - }else if(event.getEntity() instanceof LivingEntity){ - /** Move this higher + if(mmh.getConfig().getBoolean("lore.show_plugin_name", true)){ + lore.add(ChatColor.AQUA + "" + mmh.getName()); + } + meta.setLore(lore); + helmet.setItemMeta(meta);// e2d4c388-42d5-4a96-b4c9-623df7f5e026 + helmet.setItemMeta(meta); + + //entity.getWorld().dropItemNaturally(entity.getLocation(), helmet); + //Drops.add(helmet); + world.dropItemNaturally(entity.getLocation(), helmet); + if(debug){mmh.logDebug("EDE " + ((Player) entity).getDisplayName().toString() + " Player Head Dropped");} + if(mmh.getConfig().getBoolean("announce.players.enabled", true)){ + Player daKiller = entity.getKiller(); + Player daDead = (Player) entity; + String killerName = daKiller.getDisplayName(); + String entityName = daDead.getDisplayName(); + if(mmh.getConfig().getBoolean("announce.players.displayname", true)){ + killerName = daKiller.getDisplayName(); + entityName = daDead.getDisplayName(); + }else { + killerName = daKiller.getName(); + entityName = daDead.getName(); + } + + + announceBeheading(entity, entityName, + daKiller, mmh.getConfig().getBoolean("announce.mobs.displayname", true)); + + } + } + return; + } + else if(debug){mmh.logDebug("EDE Killer does not have permission \"moremobheads.players\"");} + }else if(event.getEntity() instanceof LivingEntity){ + /** Move this higher double chancepercent = 0.50; //** Set to check config.yml later/ String s = Double.toString(chancepercent); log("chancepercent=" + s.length()); /** Move this higher */ - if(entity.getKiller() instanceof Player){ - String name = event.getEntityType().toString().replace(" ", "_"); - if(debug){mmh.logDebug("EDE name=" + name);} - //ItemStack itemstack = event.getEntity().getKiller().getInventory().getItemInMainHand(); - //if(itemstack != null){ - /**if(debug){mmh.logDebug("itemstack=" + itemstack.getType().toString() + " line:159");} + if(entity.getKiller() instanceof Player){ + String name = event.getEntityType().toString().replace(" ", "_"); + if(debug){mmh.logDebug("EDE name=" + name);} + //ItemStack itemstack = event.getEntity().getKiller().getInventory().getItemInMainHand(); + //if(itemstack != null){ + /**if(debug){mmh.logDebug("itemstack=" + itemstack.getType().toString() + " line:159");} int enchantmentlevel = itemstack.getEnchantmentLevel(Enchantment.LOOT_BONUS_MOBS);//.containsEnchantment(Enchantment.LOOT_BONUS_MOBS); if(debug){mmh.logDebug("enchantmentlevel=" + enchantmentlevel + " line:161");} double enchantmentlevelpercent = ((double)enchantmentlevel / 100); if(debug){mmh.logDebug("enchantmentlevelpercent=" + enchantmentlevelpercent + " line:163");} double chance = Math.random(); if(debug){mmh.logDebug("chance=" + chance + " line:165");} - + if(debug){mmh.logDebug("chancepercent=" + chancepercent + " line:167");} chancepercent = chancepercent + enchantmentlevelpercent; if(debug){mmh.logDebug("chancepercent2=" + chancepercent + " line:169");}*/ - //if(chancepercent > 0.00 && chancepercent < 0.99){ - //if (chancepercent > chance){ - //event.getDrops().add(new ItemStack(Material.CREEPER_HEAD, 1)); - //@Nonnull Set isSpawner; - String isNametag = null; - @Nonnull - PersistentDataContainer pdc = entity.getPersistentDataContainer(); - isNametag = entity.getPersistentDataContainer().get(mmh.NAMETAG_KEY, PersistentDataType.STRING);//.getScoreboardTags();// - if(debug&&isNametag != null){mmh.logDebug("EDE isNametag=" + isNametag.toString());} + //if(chancepercent > 0.00 && chancepercent < 0.99){ + //if (chancepercent > chance){ + //event.getDrops().add(new ItemStack(Material.CREEPER_HEAD, 1)); + //@Nonnull Set isSpawner; + String isNametag = null; + @Nonnull + PersistentDataContainer pdc = entity.getPersistentDataContainer(); + isNametag = entity.getPersistentDataContainer().get(mmh.NAMETAG_KEY, PersistentDataType.STRING);//.getScoreboardTags();// + if(debug&&(isNametag != null)){mmh.logDebug("EDE isNametag=" + isNametag.toString());} - if(entity.getKiller().hasPermission("moremobheads.mobs")){ - if(entity.getKiller().hasPermission("moremobheads.nametag")&&isNametag != null){ - if(entity.getCustomName() != null&&!(entity.getCustomName().contains("jeb_")) - &&!(entity.getCustomName().contains("Toast"))){ - if(debug){mmh.logDebug("EDE customname=" + entity.getCustomName().toString());} - if(entity instanceof Skeleton||entity instanceof Zombie||entity instanceof PigZombie){ - if(mmh.getServer().getPluginManager().getPlugin("SilenceMobs") != null){ - if(entity.getCustomName().toLowerCase().contains("silenceme")||entity.getCustomName().toLowerCase().contains("silence me")){ - return; - } - } - boolean enforcewhitelist = mmh.getConfig().getBoolean("whitelist.enforce", false); - boolean enforceblacklist = mmh.getConfig().getBoolean("blacklist.enforce", false); - boolean onwhitelist = mmh.getConfig().getString("whitelist.player_head_whitelist", "").toLowerCase().contains(entity.getCustomName().toLowerCase()); - boolean onblacklist = mmh.getConfig().getString("blacklist.player_head_blacklist", "").toLowerCase().contains(entity.getCustomName().toLowerCase()); - if(mmh.DropIt(event, chanceConfig.getDouble("named_mob", 0.10))){ - if(enforcewhitelist&&enforceblacklist){ - if(onwhitelist&&!(onblacklist)){ - Drops.add(mmh.dropMobHead(entity, entity.getCustomName(), entity.getKiller())); - if(debug){mmh.logDebug("EDE " + entity.getCustomName().toString() + " Head Dropped");} - } - }else if(enforcewhitelist&&!enforceblacklist){ - if(onwhitelist){ - Drops.add(mmh.dropMobHead(entity, entity.getCustomName(), entity.getKiller())); - if(debug){mmh.logDebug("EDE " +entity.getCustomName().toString() + " Head Dropped");} - } - }else if(!enforcewhitelist&&enforceblacklist){ - if(!onblacklist){ - Drops.add(mmh.dropMobHead(entity, entity.getCustomName(), entity.getKiller())); - if(debug){mmh.logDebug("EDE " +entity.getCustomName().toString() + " Head Dropped");} - } - }else{ - Drops.add(mmh.dropMobHead(entity, entity.getCustomName(), entity.getKiller())); - if(debug){mmh.logDebug("EDE " +entity.getCustomName().toString() + " Head Dropped");} - } - } - } + if(entity.getKiller().hasPermission("moremobheads.mobs")){ + if(entity.getKiller().hasPermission("moremobheads.nametag")&&(isNametag != null)){ + if((entity.getCustomName() != null)&&!(entity.getCustomName().contains("jeb_")) + &&!(entity.getCustomName().contains("Toast"))){ + if(debug){mmh.logDebug("EDE customname=" + entity.getCustomName().toString());} + if((entity instanceof Skeleton)||(entity instanceof Zombie)||(entity instanceof PigZombie)){ + if(mmh.getServer().getPluginManager().getPlugin("SilenceMobs") != null){ + if(entity.getCustomName().toLowerCase().contains("silenceme")||entity.getCustomName().toLowerCase().contains("silence me")){ return; } } - //String name = event.getEntity().getName().toUpperCase().replace(" ", "_"); - - if(mob_whitelist != null&&!mob_whitelist.isEmpty()&&mob_blacklist != null&&!mob_blacklist.isEmpty()){ - if(!StrUtils.stringContains(mob_whitelist, name)){//mob_whitelist.contains(name) - mmh.log(Level.INFO, "EDE - Mob - Not on whitelist. Mob=" + name); - return; - } - }else if(mob_whitelist != null&&!mob_whitelist.isEmpty()){ - if(!StrUtils.stringContains(mob_whitelist, name)&&StrUtils.stringContains(mob_blacklist, name)){//mob_whitelist.contains(name) - mmh.log(Level.INFO, "EDE - Mob - Not on whitelist - Is on blacklist. Mob=" + name); - return; - } - }else if(mob_blacklist != null&&!mob_blacklist.isEmpty()){ - if(StrUtils.stringContains(mob_blacklist, name)){ - mmh.log(Level.INFO, "EDE - Mob - On blacklist. Mob=" + name); - return; - } - } - switch (name) { - case "CREEPER": - // ConfigHelper.Double(chanceConfig, "chance_percent.creeper", defpercent) - Creeper creeper = (Creeper) event.getEntity(); - double cchance = ConfigHelper.Double(chanceConfig, "chance_percent.creeper", defpercent); - if(creeper.isPowered()) { - name = "CREEPER_CHARGED"; - cchance = 1.00; - } - if(mmh.DropIt(event, cchance)){ - if(mmh.getConfig().getBoolean("vanilla_heads.creeper", false)&&name != "CREEPER_CHARGED"){ - Drops.add( new ItemStack(Material.CREEPER_HEAD)); - }else{ // mmh.langName - Drops.add( mmh.makeSkull(MobHeads.valueOf(name).getTexture().toString(), - mmh.langName.getString(name.toLowerCase(), MobHeads.valueOf(name).getName() + " Head"), entity.getKiller())); - } // MobHeads.valueOf(name).getName() + " Head" - if(debug){mmh.logDebug("EDE Creeper vanilla=" + mmh.getConfig().getBoolean("vanilla_heads.creeper", false));} - if(debug){mmh.logDebug("EDE Creeper Head Dropped");} - if(mmh.getConfig().getBoolean("announce.mobs.enabled", true)){ - announceBeheading(entity, mmh.langName.getString(name.toLowerCase(), MobHeads.valueOf(name).getName() + "").replace(" Head", ""), - entity.getKiller(), mmh.getConfig().getBoolean("announce.mobs.displayname", true)); - } - } - break; - case "ZOMBIE": - // ConfigHelper.Double(chanceConfig, "chance_percent.zombie", defpercent) - if(mmh.DropIt(event, ConfigHelper.Double(chanceConfig, "chance_percent.zombie", defpercent) )){ - if(mmh.getConfig().getBoolean("vanilla_heads.zombie", false)){ - Drops.add(new ItemStack(Material.ZOMBIE_HEAD)); - }else{ - - Drops.add(mmh.makeSkull(MobHeads.valueOf(name).getTexture().toString(), - mmh.langName.getString(name.toLowerCase(), MobHeads.valueOf(name).getName() + " Head"), entity.getKiller())); - /**entity.getWorld().dropItemNaturally(entity.getLocation(), mmh.makeSkull(MobHeads.valueOf(name).getTexture().toString(), - mmh.langName.getString(name.toLowerCase(), MobHeads.valueOf(name).getName() + " Head"), entity.getKiller()));//*/ - } - if(debug){mmh.logDebug("EDE Zombie vanilla=" + mmh.getConfig().getBoolean("vanilla_heads.zombie", false));} - if(debug){mmh.logDebug("EDE Zombie Head Dropped");} - if(mmh.getConfig().getBoolean("announce.mobs.enabled", true)){ - announceBeheading(entity, mmh.langName.getString(name.toLowerCase(), MobHeads.valueOf(name).getName() + "").replace(" Head", ""), - entity.getKiller(), mmh.getConfig().getBoolean("announce.mobs.displayname", true)); - } - } - break; - case "SKELETON": - // ConfigHelper.Double(chanceConfig, "chance_percent.skeleton", defpercent) - if(mmh.DropIt(event, ConfigHelper.Double(chanceConfig, "chance_percent.skeleton", defpercent) )){ - if(mmh.getConfig().getBoolean("vanilla_heads.skeleton", false)){ - Drops.add( new ItemStack(Material.SKELETON_SKULL)); - }else{ - Drops.add( mmh.makeSkull(MobHeads.valueOf(name).getTexture().toString(), - mmh.langName.getString(name.toLowerCase(), MobHeads.valueOf(name).getName() + " Head"), entity.getKiller())); - } - if(debug){mmh.logDebug("EDE Skeleton vanilla=" + mmh.getConfig().getBoolean("vanilla_heads.skeleton", false));} - if(debug){mmh.logDebug("EDE Skeleton Head Dropped");} - if(mmh.getConfig().getBoolean("announce.mobs.enabled", true)){ - announceBeheading(entity, mmh.langName.getString(name.toLowerCase(), MobHeads.valueOf(name).getName() + "").replace(" Head", ""), - entity.getKiller(), mmh.getConfig().getBoolean("announce.mobs.displayname", true)); - } - } - break; - case "WITHER_SKELETON": - // ConfigHelper.Double(chanceConfig, "chance_percent.wither_skeleton", defpercent) - if(mmh.DropIt(event, ConfigHelper.Double(chanceConfig, "chance_percent.wither_skeleton", defpercent) )){ - if(mmh.getConfig().getBoolean("vanilla_heads.wither_skeleton", false)){ - Drops.add( new ItemStack(Material.WITHER_SKELETON_SKULL)); - }else{ - Drops.add( mmh.makeSkull(MobHeads.valueOf(name).getTexture().toString(), - mmh.langName.getString(name.toLowerCase(), MobHeads.valueOf(name).getName() + " Head"), entity.getKiller())); - } - if(debug){mmh.logDebug("EDE Wither Skeleton Head Dropped");} - if(mmh.getConfig().getBoolean("announce.mobs.enabled", true)){ - announceBeheading(entity, mmh.langName.getString(name.toLowerCase(), MobHeads.valueOf(name).getName() + "").replace(" Head", ""), - entity.getKiller(), mmh.getConfig().getBoolean("announce.mobs.displayname", true)); - } - } - break; - case "ENDER_DRAGON": - // ConfigHelper.Double(chanceConfig, "chance_percent.ender_dragon", defpercent) - if(mmh.DropIt(event, ConfigHelper.Double(chanceConfig, "chance_percent.ender_dragon", defpercent) )){ - if(mmh.getConfig().getBoolean("vanilla_heads.ender_dragon", false)){ - Drops.add( new ItemStack(Material.DRAGON_HEAD)); - }else{ - Drops.add( mmh.makeSkull(MobHeads.valueOf(name).getTexture().toString(), - mmh.langName.getString(name.toLowerCase(), MobHeads.valueOf(name).getName() + " Head"), entity.getKiller())); - } - if(debug){mmh.logDebug("EDE Ender Dragon Head Dropped");} - if(mmh.getConfig().getBoolean("announce.mobs.enabled", true)){ - announceBeheading(entity, mmh.langName.getString(name.toLowerCase(), MobHeads.valueOf(name).getName() + "").replace(" Head", ""), - entity.getKiller(), mmh.getConfig().getBoolean("announce.mobs.displayname", true)); - } - } - break; - case "TROPICAL_FISH": - TropicalFish daFish = (TropicalFish) entity; - DyeColor daFishBody = daFish.getBodyColor(); - DyeColor daFishPatternColor = daFish.getPatternColor(); - Pattern daFishType = daFish.getPattern(); - log("bodycolor=" + daFishBody.toString() + "\nPatternColor=" + daFishPatternColor.toString() + "\nPattern=" + daFishType.toString()); - //TropicalFishHeads daFishEnum = TropicalFishHeads.getIfPresent(name); - String daFishName = mmh.getNamedTropicalFishName(daFishType, daFishBody, daFishPatternColor); - log("daFishName: " + daFishName); - if(mmh.DropIt(event, ConfigHelper.Double(chanceConfig, "chance_percent.tropical_fish." + daFishName.toLowerCase(), defpercent))){ - Drops.add(mmh.makeSkull(TropicalFishHeads.valueOf(name + "_" + daFishName).getTexture().toString(), - mmh.langName.getString(name.toLowerCase() + "." + daFishName.toLowerCase(), TropicalFishHeads.valueOf(name + "_" + daFishName).getName() + " Head"), entity.getKiller())); - if(debug){mmh.logDebug("EDE TROPICAL_FISH:" + daFishName + " head dropped");} - if(mmh.getConfig().getBoolean("announce.mobs.enabled", true)){ - announceBeheading(entity, mmh.langName.getString(name.toLowerCase() + "." + daFishName.toLowerCase(), TropicalFishHeads.valueOf(name + "_" + daFishName).getName() + "").replace(" Head", ""), - entity.getKiller(), mmh.getConfig().getBoolean("announce.mobs.displayname", true)); - } - } - break; - case "WITHER": - //Wither wither = (Wither) event.getEntity(); - int random = mmh.randomBetween(1, 4); - if(debug){mmh.logDebug("EDE Wither random=" + random + "");} - // ConfigHelper.Double(chanceConfig, "chance_percent.wither", defpercent) - if(mmh.DropIt(event, ConfigHelper.Double(chanceConfig, "chance_percent.wither", defpercent) )){ - Drops.add( mmh.makeSkull(MobHeads.valueOf(name + "_" + random).getTexture().toString(), - mmh.langName.getString(name.toLowerCase() + "." + random, MobHeads.valueOf(name + "_" + random).getName() + " Head"), entity.getKiller())); - if(debug){mmh.logDebug("EDE Wither_" + random + " Head Dropped");} - if(mmh.getConfig().getBoolean("announce.mobs.enabled", true)){ - announceBeheading(entity, mmh.langName.getString(name.toLowerCase() + "." + random, MobHeads.valueOf(name + "_" + random).getName() + "").replace(" Head", ""), - entity.getKiller(), mmh.getConfig().getBoolean("announce.mobs.displayname", true)); - } + boolean enforcewhitelist = mmh.getConfig().getBoolean("whitelist.enforce", false); + boolean enforceblacklist = mmh.getConfig().getBoolean("blacklist.enforce", false); + boolean onwhitelist = mmh.getConfig().getString("whitelist.player_head_whitelist", "").toLowerCase().contains(entity.getCustomName().toLowerCase()); + boolean onblacklist = mmh.getConfig().getString("blacklist.player_head_blacklist", "").toLowerCase().contains(entity.getCustomName().toLowerCase()); + if(mmh.DropIt(event, chanceConfig.getDouble("named_mob", 0.10))){ + if(enforcewhitelist&&enforceblacklist){ + if(onwhitelist&&!(onblacklist)){ + Drops.add(mmh.dropMobHead(entity, entity.getCustomName(), entity.getKiller())); + if(debug){mmh.logDebug("EDE " + entity.getCustomName().toString() + " Head Dropped");} + } + }else if(enforcewhitelist&&!enforceblacklist){ + if(onwhitelist){ + Drops.add(mmh.dropMobHead(entity, entity.getCustomName(), entity.getKiller())); + if(debug){mmh.logDebug("EDE " +entity.getCustomName().toString() + " Head Dropped");} + } + }else if(!enforcewhitelist&&enforceblacklist){ + if(!onblacklist){ + Drops.add(mmh.dropMobHead(entity, entity.getCustomName(), entity.getKiller())); + if(debug){mmh.logDebug("EDE " +entity.getCustomName().toString() + " Head Dropped");} + } + }else{ + Drops.add(mmh.dropMobHead(entity, entity.getCustomName(), entity.getKiller())); + if(debug){mmh.logDebug("EDE " +entity.getCustomName().toString() + " Head Dropped");} } - break; - case "WOLF": - Wolf wolf = (Wolf) event.getEntity(); - // ConfigHelper.Double(chanceConfig, "chance_percent." + name.toLowerCase(), defpercent) - if(mmh.DropIt(event, ConfigHelper.Double(chanceConfig, "chance_percent." + name.toLowerCase(), defpercent) )){ - if(wolf.isAngry()){ - Drops.add( mmh.makeSkull(MobHeads.valueOf(name + "_ANGRY").getTexture().toString(), - mmh.langName.getString(name.toLowerCase() + "_angry", MobHeads.valueOf(name + "_ANGRY").getName() + " Head"), entity.getKiller())); - if(debug){mmh.logDebug("EDE Angry Wolf Head Dropped");} - if(mmh.getConfig().getBoolean("announce.mobs.enabled", true)){ - announceBeheading(entity, mmh.langName.getString(name.toLowerCase() + "_angry", MobHeads.valueOf(name + "_ANGRY").getName() + "").replace(" Head", ""), - entity.getKiller(), mmh.getConfig().getBoolean("announce.mobs.displayname", true)); - } - }else{ - Drops.add( mmh.makeSkull(MobHeads.valueOf(name).getTexture().toString(), - mmh.langName.getString(name.toLowerCase(), event.getEntity().getName() + " Head"), entity.getKiller())); - if(debug){mmh.logDebug("EDE Wolf Head Dropped");} - if(mmh.getConfig().getBoolean("announce.mobs.enabled", true)){ - announceBeheading(entity, mmh.langName.getString(name.toLowerCase(), MobHeads.valueOf(name).getName() + "").replace(" Head", ""), - entity.getKiller(), mmh.getConfig().getBoolean("announce.mobs.displayname", true)); - } - } - } - break; - case "FOX": - Fox dafox = (Fox) entity; - String dafoxtype = dafox.getFoxType().toString(); - if(debug){mmh.logDebug("EDE dafoxtype=" + dafoxtype);} - // ConfigHelper.Double(chanceConfig, "chance_percent.fox." + dafoxtype.toLowerCase(), defpercent) - if(mmh.DropIt(event, ConfigHelper.Double(chanceConfig, "chance_percent.fox." + dafoxtype.toLowerCase(), defpercent) )){ - Drops.add( mmh.makeSkull(MobHeads.valueOf(name + "_" + dafoxtype).getTexture().toString(), - mmh.langName.getString(name.toLowerCase() + "." + dafoxtype.toLowerCase(), MobHeads.valueOf(name + "_" + dafoxtype).getName() + " Head"), entity.getKiller())); - if(debug){mmh.logDebug("EDE Fox Head Dropped");} - if(mmh.getConfig().getBoolean("announce.mobs.enabled", true)){ - announceBeheading(entity, mmh.langName.getString(name.toLowerCase() + "." + dafoxtype.toLowerCase(), MobHeads.valueOf(name + "_" + dafoxtype).getName() + "").replace(" Head", ""), - entity.getKiller(), mmh.getConfig().getBoolean("announce.mobs.displayname", true)); - } - } - - break; - case "CAT": - Cat dacat = (Cat) entity; - String dacattype = dacat.getCatType().toString(); - if(debug){mmh.logDebug("entity cat=" + dacat.getCatType());} - // ConfigHelper.Double(chanceConfig, "chance_percent.cat." + dacattype.toLowerCase(), defpercent) - if(mmh.DropIt(event, ConfigHelper.Double(chanceConfig, "chance_percent.cat." + dacattype.toLowerCase(), defpercent) )){ - Drops.add(mmh.makeSkull(CatHeads.valueOf(dacattype).getTexture().toString(), - mmh.langName.getString(name.toLowerCase() + "." + dacattype.toLowerCase(), CatHeads.valueOf(dacattype).getName() + " Head"), entity.getKiller())); - if(debug){mmh.logDebug("EDE Cat Head Dropped");} - if(mmh.getConfig().getBoolean("announce.mobs.enabled", true)){ - announceBeheading(entity, mmh.langName.getString(name.toLowerCase() + "." + dacattype.toLowerCase(), CatHeads.valueOf(dacattype).getName() + "").replace(" Head", ""), - entity.getKiller(), mmh.getConfig().getBoolean("announce.mobs.displayname", true)); - } - } - break; - case "OCELOT": - // ConfigHelper.Double(chanceConfig, "chance_percent." + name.toLowerCase(), defpercent) - if(mmh.DropIt(event, ConfigHelper.Double(chanceConfig, "chance_percent." + name.toLowerCase(), defpercent) )){ - Drops.add( mmh.makeSkull(MobHeads.valueOf(name).getTexture().toString(), - mmh.langName.getString(MobHeads.valueOf(name).getNameString(), MobHeads.valueOf(name).getName() + " Head"), entity.getKiller())); - if(debug){mmh.logDebug("EDE " + name + " Head Dropped");} - if(mmh.getConfig().getBoolean("announce.mobs.enabled", true)){ - announceBeheading(entity, mmh.langName.getString(MobHeads.valueOf(name).getNameString(), MobHeads.valueOf(name).getName() + "").replace(" Head", ""), - entity.getKiller(), mmh.getConfig().getBoolean("announce.mobs.displayname", true)); - } - } - if(debug){mmh.logDebug("EDE " + MobHeads.valueOf(name) + " killed");} - - break; - case "BEE": - Bee daBee = (Bee) entity; - int daAnger = daBee.getAnger(); - if(debug){mmh.logDebug("EDE daAnger=" + daAnger);} - boolean daNectar = daBee.hasNectar(); - if(debug){mmh.logDebug("EDE daNectar=" + daNectar);} - if(daAnger >= 1&&daNectar == true){ - // ConfigHelper.Double(chanceConfig, "chance_percent.bee.angry_pollinated", defpercent) - if(mmh.DropIt(event, ConfigHelper.Double(chanceConfig, "chance_percent.bee.angry_pollinated", defpercent) )){ - Drops.add( mmh.makeSkull(MobHeads.valueOf("BEE_ANGRY_POLLINATED").getTexture().toString(), - mmh.langName.getString(name.toLowerCase() + ".angry_pollinated", "Angry Pollinated Bee Head"), entity.getKiller())); - if(debug){mmh.logDebug("EDE Angry Pollinated Bee Head Dropped");} - if(mmh.getConfig().getBoolean("announce.mobs.enabled", true)){ - announceBeheading(entity, mmh.langName.getString(name.toLowerCase() + ".angry_pollinated", MobHeads.valueOf("BEE_ANGRY_POLLINATED").getName() + "").replace(" Head", ""), - entity.getKiller(), mmh.getConfig().getBoolean("announce.mobs.displayname", true)); - } - } - }else if(daAnger >= 1&&daNectar == false){ - // ConfigHelper.Double(chanceConfig, "chance_percent.bee.angry", defpercent) - if(mmh.DropIt(event, ConfigHelper.Double(chanceConfig, "chance_percent.bee.angry", defpercent) )){ - Drops.add( mmh.makeSkull(MobHeads.valueOf("BEE_ANGRY").getTexture().toString(), - mmh.langName.getString(name.toLowerCase() + ".angry", "Angry Bee Head"), entity.getKiller())); - if(debug){mmh.logDebug("EDE Angry Bee Head Dropped");} - if(mmh.getConfig().getBoolean("announce.mobs.enabled", true)){ - announceBeheading(entity, mmh.langName.getString(name.toLowerCase() + ".angry", MobHeads.valueOf("BEE_ANGRY").getName() + "").replace(" Head", ""), - entity.getKiller(), mmh.getConfig().getBoolean("announce.mobs.displayname", true)); - } - } - }else if(daAnger == 0&&daNectar == true){ - // ConfigHelper.Double(chanceConfig, "chance_percent.bee.pollinated", defpercent) - if(mmh.DropIt(event, ConfigHelper.Double(chanceConfig, "chance_percent.bee.pollinated", defpercent) )){ - Drops.add( mmh.makeSkull(MobHeads.valueOf("BEE_POLLINATED").getTexture().toString(), - mmh.langName.getString(name.toLowerCase() + ".pollinated", "Pollinated Bee Head"), entity.getKiller())); - if(debug){mmh.logDebug("EDE Pollinated Bee Head Dropped");} - if(mmh.getConfig().getBoolean("announce.mobs.enabled", true)){ - announceBeheading(entity, mmh.langName.getString(name.toLowerCase() + ".pollinated", MobHeads.valueOf("BEE_POLLINATED").getName() + "").replace(" Head", ""), - entity.getKiller(), mmh.getConfig().getBoolean("announce.mobs.displayname", true)); - } - } - }else if(daAnger == 0&&daNectar == false){ - // ConfigHelper.Double(chanceConfig, "chance_percent.bee.chance_percent", defpercent) - if(mmh.DropIt(event, ConfigHelper.Double(chanceConfig, "chance_percent.bee.chance_percent", defpercent) )){ - Drops.add( mmh.makeSkull(MobHeads.valueOf("BEE").getTexture().toString(), - mmh.langName.getString(name.toLowerCase() + ".none", "Bee Head"), entity.getKiller())); - if(debug){mmh.logDebug("EDE Bee Head Dropped");} - if(mmh.getConfig().getBoolean("announce.mobs.enabled", true)){ - announceBeheading(entity, mmh.langName.getString(name.toLowerCase() + ".none", MobHeads.valueOf("BEE").getName() + "").replace(" Head", ""), - entity.getKiller(), mmh.getConfig().getBoolean("announce.mobs.displayname", true)); - } - } - } - break; - case "LLAMA": - Llama daLlama = (Llama) entity; - String daLlamaColor = daLlama.getColor().toString(); - String daLlamaName = LlamaHeads.valueOf(name + "_" + daLlamaColor).getName() + " Head";//daLlamaColor.toLowerCase().replace("b", "B").replace("c", "C").replace("g", "G").replace("wh", "Wh") + " Llama Head"; - //log(name + "_" + daLlamaColor); - // ConfigHelper.Double(chanceConfig, "chance_percent.llama." + daLlamaColor.toLowerCase(), defpercent) - if(mmh.DropIt(event, ConfigHelper.Double(chanceConfig, "chance_percent.llama." + daLlamaColor.toLowerCase(), defpercent) )){ - Drops.add( mmh.makeSkull(LlamaHeads.valueOf(name + "_" + daLlamaColor).getTexture().toString(), - mmh.langName.getString(name.toLowerCase() + "." + daLlamaColor.toLowerCase(), daLlamaName), entity.getKiller())); - if(debug){mmh.logDebug("EDE Llama Head Dropped");} - if(mmh.getConfig().getBoolean("announce.mobs.enabled", true)){ - announceBeheading(entity, mmh.langName.getString(name.toLowerCase() + "." + daLlamaColor.toLowerCase(), LlamaHeads.valueOf(name + "_" + daLlamaColor).getName() + "").replace(" Head", ""), - entity.getKiller(), mmh.getConfig().getBoolean("announce.mobs.displayname", true)); - } - } - break; - case "HORSE": - Horse daHorse = (Horse) entity; - String daHorseColor = daHorse.getColor().toString(); - String daHorseName = HorseHeads.valueOf(name + "_" + daHorseColor).getName() + " Head";//daHorseColor.toLowerCase().replace("b", "B").replace("ch", "Ch").replace("cr", "Cr").replace("d", "D") - //.replace("g", "G").replace("wh", "Wh").replace("_", " ") + " Horse Head"; - // ConfigHelper.Double(chanceConfig, "chance_percent.horse." + daHorseColor.toLowerCase(), defpercent) - if(mmh.DropIt(event, ConfigHelper.Double(chanceConfig, "chance_percent.horse." + daHorseColor.toLowerCase(), defpercent) )){ - Drops.add( mmh.makeSkull(HorseHeads.valueOf(name + "_" + daHorseColor).getTexture().toString(), - mmh.langName.getString(name.toLowerCase() + "." + daHorseColor.toLowerCase(), daHorseName), entity.getKiller())); - if(debug){mmh.logDebug("EDE Horse Head Dropped");} - if(mmh.getConfig().getBoolean("announce.mobs.enabled", true)){ - announceBeheading(entity, mmh.langName.getString(name.toLowerCase() + "." + daHorseColor.toLowerCase(), HorseHeads.valueOf(name + "_" + daHorseColor).getName() + "").replace(" Head", ""), - entity.getKiller(), mmh.getConfig().getBoolean("announce.mobs.displayname", true)); - } - } - break; - case "MOOSHROOM": - name = "MUSHROOM_COW"; - case "MUSHROOM_COW": - MushroomCow daMushroom = (MushroomCow) entity; - String daCowVariant = daMushroom.getVariant().toString(); - String daCowName = daCowVariant.toLowerCase().replace("br", "Br").replace("re", "Re") + " Mooshroom Head"; - if(debug){mmh.logDebug("EDE " + name + "_" + daCowVariant);} - // ConfigHelper.Double(chanceConfig, "chance_percent.mushroom_cow." + daCowVariant.toLowerCase(), defpercent) - if(mmh.DropIt(event, ConfigHelper.Double(chanceConfig, "chance_percent.mushroom_cow." + daCowVariant.toLowerCase(), defpercent) )){ - Drops.add( mmh.makeSkull(MobHeads.valueOf(name + "_" + daCowVariant).getTexture().toString(), - mmh.langName.getString(name.toLowerCase() + "." + daCowVariant.toLowerCase(), daCowName), entity.getKiller())); - if(debug){mmh.logDebug("EDE Mooshroom Head Dropped");} - if(mmh.getConfig().getBoolean("announce.mobs.enabled", true)){ - announceBeheading(entity, mmh.langName.getString(name.toLowerCase() + "." + daCowVariant.toLowerCase(), MobHeads.valueOf(name + "_" + daCowVariant).getName() + "").replace(" Head", ""), - entity.getKiller(), mmh.getConfig().getBoolean("announce.mobs.displayname", true)); - } - } - break; - case "PANDA": - Panda daPanda = (Panda) entity; - String daPandaGene = daPanda.getMainGene().toString(); - String daPandaName = daPandaGene.toLowerCase().replace("br", "Br").replace("ag", "Ag").replace("la", "La") - .replace("no", "No").replace("p", "P").replace("we", "We").replace("wo", "Wo") + " Panda Head"; - if(daPandaGene.equalsIgnoreCase("normal")){daPandaName.replace("normal ", "");} - if(debug){mmh.logDebug("EDE " + name + "_" + daPandaGene);} - // ConfigHelper.Double(chanceConfig, "chance_percent.panda." + daPandaGene.toLowerCase(), defpercent) - if(mmh.DropIt(event, ConfigHelper.Double(chanceConfig, "chance_percent.panda." + daPandaGene.toLowerCase(), defpercent) )){ - Drops.add( mmh.makeSkull(MobHeads.valueOf(name + "_" + daPandaGene).getTexture().toString(), - mmh.langName.getString(name.toLowerCase() + "." + daPandaGene.toLowerCase(), daPandaName), entity.getKiller())); - if(debug){mmh.logDebug("EDE Panda Head Dropped");} - if(mmh.getConfig().getBoolean("announce.mobs.enabled", true)){ - announceBeheading(entity, mmh.langName.getString(name.toLowerCase() + "." + daPandaGene.toLowerCase(), MobHeads.valueOf(name + "_" + daPandaGene).getName() + "").replace(" Head", ""), - entity.getKiller(), mmh.getConfig().getBoolean("announce.mobs.displayname", true)); - } - } - break; - case "PARROT": - Parrot daParrot = (Parrot) entity; - String daParrotVariant = daParrot.getVariant().toString(); - String daParrotName = daParrotVariant.toLowerCase().replace("b", "B").replace("c", "C").replace("g", "G") - .replace("red", "Red") + " Parrot Head"; - if(debug){mmh.logDebug("EDE " + name + "_" + daParrotVariant);} - // ConfigHelper.Double(chanceConfig, "chance_percent.parrot." + daParrotVariant.toLowerCase(), defpercent) - if(mmh.DropIt(event, ConfigHelper.Double(chanceConfig, "chance_percent.parrot." + daParrotVariant.toLowerCase(), defpercent) )){ - Drops.add( mmh.makeSkull(MobHeads.valueOf(name + "_" + daParrotVariant).getTexture().toString(), - mmh.langName.getString(name.toLowerCase() + "." + daParrotVariant.toLowerCase(), daParrotName), entity.getKiller())); - if(debug){mmh.logDebug("EDE Parrot Head Dropped");} - if(mmh.getConfig().getBoolean("announce.mobs.enabled", true)){ - announceBeheading(entity, mmh.langName.getString(name.toLowerCase() + "." + daParrotVariant.toLowerCase(), MobHeads.valueOf(name + "_" + daParrotVariant).getName() + "").replace(" Head", ""), - entity.getKiller(), mmh.getConfig().getBoolean("announce.mobs.displayname", true)); - } - } - break; - case "RABBIT": - String daRabbitType; - Rabbit daRabbit = (Rabbit) entity; - daRabbitType = daRabbit.getRabbitType().toString(); - if(daRabbit.getCustomName() != null){ - if(daRabbit.getCustomName().contains("Toast")){ - daRabbitType = "Toast"; - } - } - String daRabbitName = RabbitHeads.valueOf(name + "_" + daRabbitType).getName() + " Head"; - if(debug){mmh.logDebug("EDE " + name + "_" + daRabbitType);} - // ConfigHelper.Double(chanceConfig, "chance_percent.rabbit." + daRabbitType.toLowerCase(), defpercent) - if(mmh.DropIt(event, ConfigHelper.Double(chanceConfig, "chance_percent.rabbit." + daRabbitType.toLowerCase(), defpercent) )){ - Drops.add( mmh.makeSkull(RabbitHeads.valueOf(name + "_" + daRabbitType).getTexture().toString(), - mmh.langName.getString(name.toLowerCase() + "." + daRabbitType.toLowerCase(), daRabbitName), entity.getKiller())); - if(debug){mmh.logDebug("EDE Rabbit Head Dropped");} - if(mmh.getConfig().getBoolean("announce.mobs.enabled", true)){ - announceBeheading(entity, mmh.langName.getString(name.toLowerCase() + "." + daRabbitType.toLowerCase(), RabbitHeads.valueOf(name + "_" + daRabbitType).getName() + "").replace(" Head", ""), - entity.getKiller(), mmh.getConfig().getBoolean("announce.mobs.displayname", true)); - } - } - break; - case "VILLAGER": - Villager daVillager = (Villager) entity; // Location jobsite = daVillager.getMemory(MemoryKey.JOB_SITE); - String daVillagerType = daVillager.getVillagerType().toString(); - String daVillagerProfession = daVillager.getProfession().toString(); - if(debug){mmh.logDebug("EDE name=" + name);} - if(debug){mmh.logDebug("EDE profession=" + daVillagerProfession);} - if(debug){mmh.logDebug("EDE type=" + daVillagerType);} - String daName = name + "_" + daVillagerProfession + "_" + daVillagerType; - if(debug){mmh.logDebug("EDE " + daName + " " + name + "_" + daVillagerProfession + "_" + daVillagerType);} - String daVillagerName = VillagerHeads.valueOf(daName).getName() + " Head"; - // ConfigHelper.Double(chanceConfig, "chance_percent.villager." + daVillagerType.toLowerCase() + "." + daVillagerProfession.toLowerCase(), defpercent) - if(mmh.DropIt(event, ConfigHelper.Double(chanceConfig, "chance_percent.villager." + daVillagerType.toLowerCase() + "." + daVillagerProfession.toLowerCase(), defpercent) )){ - Drops.add( mmh.makeSkull(VillagerHeads.valueOf(name + "_" + daVillagerProfession + "_" + daVillagerType).getTexture().toString(), - mmh.langName.getString(name.toLowerCase() + "." + daVillagerType.toLowerCase() + "." + daVillagerProfession.toLowerCase() - , daVillagerName), entity.getKiller())); - if(debug){mmh.logDebug("EDE Villager Head Dropped");} - if(mmh.getConfig().getBoolean("announce.mobs.enabled", true)){ - announceBeheading(entity, mmh.langName.getString(name.toLowerCase() + "." + daVillagerType.toLowerCase() + "." + daVillagerProfession.toLowerCase(), - VillagerHeads.valueOf(name + "_" + daVillagerProfession + "_" + daVillagerType).getName() + "").replace(" Head", ""), - entity.getKiller(), mmh.getConfig().getBoolean("announce.mobs.displayname", true)); - } - } - break; - case "ZOMBIE_VILLAGER": - ZombieVillager daZombieVillager = (ZombieVillager) entity; - String daZombieVillagerProfession = daZombieVillager.getVillagerProfession().toString(); - String daZombieVillagerName = ZombieVillagerHeads.valueOf(name + "_" + daZombieVillagerProfession).getName() + " Head"; - if(debug){mmh.logDebug("EDE " + name + "_" + daZombieVillagerProfession);} - // ConfigHelper.Double(chanceConfig, "chance_percent.zombie_villager", defpercent) - if(mmh.DropIt(event, ConfigHelper.Double(chanceConfig, "chance_percent.zombie_villager", defpercent) )){ - Drops.add( mmh.makeSkull(ZombieVillagerHeads.valueOf(name + "_" + daZombieVillagerProfession).getTexture().toString(), - mmh.langName.getString(name.toLowerCase() + "." + daZombieVillagerProfession.toLowerCase(), daZombieVillagerName), entity.getKiller())); - if(debug){mmh.logDebug("EDE Zombie Villager Head Dropped");} - if(mmh.getConfig().getBoolean("announce.mobs.enabled", true)){ - announceBeheading(entity, mmh.langName.getString(name.toLowerCase() + "." + daZombieVillagerProfession.toLowerCase(), ZombieVillagerHeads.valueOf(name + "_" + daZombieVillagerProfession).getName() + "").replace(" Head", ""), - entity.getKiller(), mmh.getConfig().getBoolean("announce.mobs.displayname", true)); - } - } - break; - case "SHEEP": - Sheep daSheep = (Sheep) entity; - String daSheepColor = daSheep.getColor().toString(); - String daSheepName; - - if(daSheep.getCustomName() != null){ - if(daSheep.getCustomName().contains("jeb_")){ - daSheepColor = "jeb_"; - }else{ - daSheepColor = daSheep.getColor().toString(); - } - } - daSheepName = SheepHeads.valueOf(name + "_" + daSheepColor).getName() + " Head"; - if(debug){mmh.logDebug("EDE " + daSheepColor + "_" + name);} - // ConfigHelper.Double(chanceConfig, "chance_percent.sheep." + daSheepColor.toLowerCase(), defpercent) - if(mmh.DropIt(event, ConfigHelper.Double(chanceConfig, "chance_percent.sheep." + daSheepColor.toLowerCase(), defpercent) )){ - Drops.add( mmh.makeSkull(SheepHeads.valueOf(name + "_" + daSheepColor).getTexture().toString(), - mmh.langName.getString(name.toLowerCase() + "." + daSheepColor.toLowerCase(), daSheepName), entity.getKiller())); - if(debug){mmh.logDebug("EDE Sheep Head Dropped");} - if(mmh.getConfig().getBoolean("announce.mobs.enabled", true)){ - announceBeheading(entity, mmh.langName.getString(name.toLowerCase() + "." + daSheepColor.toLowerCase(), SheepHeads.valueOf(name + "_" + daSheepColor).getName() + "").replace(" Head", ""), - entity.getKiller(), mmh.getConfig().getBoolean("announce.mobs.displayname", true)); - } - } - break; - case "TRADER_LLAMA": - TraderLlama daTraderLlama = (TraderLlama) entity; - String daTraderLlamaColor = daTraderLlama.getColor().toString(); - String daTraderLlamaName = LlamaHeads.valueOf(name + "_" + daTraderLlamaColor).getName() + " Head"; - if(debug){mmh.logDebug("EDE " + daTraderLlamaColor + "_" + name);} - // ConfigHelper.Double(chanceConfig, "chance_percent.trader_llama." + daTraderLlamaColor.toLowerCase(), defpercent) - if(mmh.DropIt(event, ConfigHelper.Double(chanceConfig, "chance_percent.trader_llama." + daTraderLlamaColor.toLowerCase(), defpercent) )){ - Drops.add( mmh.makeSkull(LlamaHeads.valueOf(name + "_" + daTraderLlamaColor).getTexture().toString(), - mmh.langName.getString(name.toLowerCase() + "." + daTraderLlamaColor.toLowerCase(), daTraderLlamaName), entity.getKiller())); - if(debug){mmh.logDebug("EDE Trader Llama Head Dropped");} - if(mmh.getConfig().getBoolean("announce.mobs.enabled", true)){ - announceBeheading(entity, mmh.langName.getString(name.toLowerCase() + "." + daTraderLlamaColor.toLowerCase(), LlamaHeads.valueOf(name + "_" + daTraderLlamaColor).getName() + "").replace(" Head", ""), - entity.getKiller(), mmh.getConfig().getBoolean("announce.mobs.displayname", true)); - } - } - break; - case "AXOLOTL": - Axolotl daAxolotl = (Axolotl) entity; - String daAxolotlVariant = daAxolotl.getVariant().toString(); - String daAxolotlName = MobHeads117.valueOf(name + "_" + daAxolotlVariant).getName() + " Head"; - if(debug){mmh.logDebug("EDE " + daAxolotlVariant + "_" + name);} - // ConfigHelper.Double(chanceConfig, "chance_percent.axolotl." + daAxolotlVariant.toLowerCase(), defpercent) - if(mmh.DropIt(event, ConfigHelper.Double(chanceConfig, "chance_percent.axolotl." + daAxolotlVariant.toLowerCase(), defpercent) )){ - Drops.add( mmh.makeSkull(MobHeads117.valueOf(name + "_" + daAxolotlVariant).getTexture().toString(), - mmh.langName.getString(name.toLowerCase() + "." + daAxolotlVariant.toLowerCase(), daAxolotlName), entity.getKiller())); - if(debug){mmh.logDebug("EDE Axolotl Head Dropped");} - if(mmh.getConfig().getBoolean("announce.mobs.enabled", true)){ - announceBeheading(entity, mmh.langName.getString(name.toLowerCase() + "." + daAxolotlVariant.toLowerCase(), MobHeads117.valueOf(name + "_" + daAxolotlVariant).getName() + "").replace(" Head", ""), - entity.getKiller(), mmh.getConfig().getBoolean("announce.mobs.displayname", true)); - } - } - break; - case "GOAT": - Goat daGoat = (Goat) entity; - String daGoatVariant; - String daGoatName;// = MobHeads117.valueOf(name + "_" + daAxolotlVariant).getName() + " Head"; - if(daGoat.isScreaming()) { - // Giving screaming goat head - daGoatVariant = "SCREAMING"; - daGoatName = MobHeads117.valueOf(name + "_" + daGoatVariant).getName() + " Head"; - }else { - // give goat head - daGoatVariant = "NORMAL"; - daGoatName = MobHeads117.valueOf(name + "_" + daGoatVariant).getName() + " Head"; - } - if(debug){mmh.logDebug("EDE " + daGoatVariant + "_" + name);} - // ConfigHelper.Double(chanceConfig, "chance_percent.goat." + daGoatVariant.toLowerCase(), defpercent) - if(mmh.DropIt(event, ConfigHelper.Double(chanceConfig, "chance_percent.goat." + daGoatVariant.toLowerCase(), defpercent) )){ - Drops.add( mmh.makeSkull(MobHeads117.valueOf(name + "_" + daGoatVariant).getTexture().toString(), - mmh.langName.getString(name.toLowerCase() + "." + daGoatVariant.toLowerCase(), daGoatName), entity.getKiller())); - if(debug){mmh.logDebug("EDE Goat Head Dropped");} - if(mmh.getConfig().getBoolean("announce.mobs.enabled", true)){ - announceBeheading(entity, mmh.langName.getString(name.toLowerCase() + "." + daGoatVariant.toLowerCase(), MobHeads117.valueOf(name + "_" + daGoatVariant).getName() + "").replace(" Head", ""), - entity.getKiller(), mmh.getConfig().getBoolean("announce.mobs.displayname", true)); - } - } - break; - case "STRIDER": - Strider daStrider = (Strider) entity; - PersistentDataContainer pdc2 = daStrider.getPersistentDataContainer(); - boolean isShivering = Boolean.parseBoolean( daStrider.getPersistentDataContainer().get(mmh.SHIVERING_KEY, PersistentDataType.STRING) ); - if(mmh.chance25oftrue()) { // chance50oftrue() isShivering - name = name.concat("_SHIVERING"); - // ConfigHelper.Double(chanceConfig, "chance_percent." + name.toLowerCase(), defpercent) - if(mmh.DropIt(event, ConfigHelper.Double(chanceConfig, "chance_percent." + name.toLowerCase(), defpercent) )){ - Drops.add( mmh.makeSkull(MobHeads.valueOf(name).getTexture().toString(), - mmh.langName.getString(name.toLowerCase() + "_shivering", "Shivering " + event.getEntity().getName() + " Head"), entity.getKiller())); - if(debug){mmh.logDebug("EDE " + name + " Head Dropped");} - if(mmh.getConfig().getBoolean("announce.mobs.enabled", true)){ - announceBeheading(entity, mmh.langName.getString(name.toLowerCase(), MobHeads.valueOf(name).getName() + "").replace(" Head", ""), - entity.getKiller(), mmh.getConfig().getBoolean("announce.mobs.displayname", true)); - } - } - }else { - // ConfigHelper.Double(chanceConfig, "chance_percent." + name.toLowerCase(), defpercent) - if(mmh.DropIt(event, ConfigHelper.Double(chanceConfig, "chance_percent." + name.toLowerCase(), defpercent) )){ - Drops.add( mmh.makeSkull(MobHeads.valueOf(name).getTexture().toString(), - mmh.langName.getString(name.toLowerCase(), event.getEntity().getName() + " Head"), entity.getKiller())); - if(debug){mmh.logDebug("EDE " + name + " Head Dropped");} - if(mmh.getConfig().getBoolean("announce.mobs.enabled", true)){ - announceBeheading(entity, mmh.langName.getString(name.toLowerCase(), MobHeads.valueOf(name).getName() + "").replace(" Head", ""), - entity.getKiller(), mmh.getConfig().getBoolean("announce.mobs.displayname", true)); - } - } - } - - if(debug){mmh.logDebug("EDE " + MobHeads.valueOf(name) + " killed");} - break; - case "FROG": - String frogName = MoreMobHeadsLib.getName(name, entity); - String daFrogName = MobHeads119.valueOf(frogName).getName() + " Head"; - // chanceConfig.getDouble("chance_percent." + frogName.replace("_", ".").toLowerCase(), defpercent) - // ConfigHelper.Double(chanceConfig, "chance_percent." + frogName.replace("_", ".").toLowerCase(), defpercent) - if(mmh.DropIt(event, ConfigHelper.Double(chanceConfig, "chance_percent." + frogName.replace("_", ".").toLowerCase(), defpercent) )){ - Drops.add( mmh.makeSkull(MobHeads119.valueOf(frogName).getTexture().toString(), - mmh.langName.getString(frogName.replace("_", ".").toLowerCase(), daFrogName), entity.getKiller()) ); - if(debug){mmh.logDebug("EDE Frog Head Dropped");} - if(mmh.getConfig().getBoolean("announce.mobs.enabled", true)){ - announceBeheading(entity, mmh.langName.getString(frogName.replace("_", ".").toLowerCase(), MobHeads119.valueOf(frogName).getName() + "").replace(" Head", ""), - entity.getKiller(), mmh.getConfig().getBoolean("announce.mobs.displayname", true)); - } - } - - break; - case "TADPOLE": - case "ALLAY": - case "WARDEN": - //case "TADPOLE": - if(debug){mmh.logDebug("EDE name=" + name + " line:806");} - if(debug){mmh.logDebug("EDE texture=" + MobHeads119.valueOf(name).getTexture().toString() + " line:807");} - if(debug){mmh.logDebug("EDE location=" + entity.getLocation().toString() + " line:808");} - if(debug){mmh.logDebug("EDE getName=" + event.getEntity().getName() + " line:809");} - if(debug){mmh.logDebug("EDE killer=" + entity.getKiller().toString() + " line:810");} - // ConfigHelper.Double(chanceConfig, "chance_percent." + name.toLowerCase(), defpercent) - if(mmh.DropIt(event, ConfigHelper.Double(chanceConfig, "chance_percent." + name.toLowerCase(), defpercent) )){ - Drops.add( mmh.makeSkull(MobHeads119.valueOf(name).getTexture().toString(), - mmh.langName.getString(name.toLowerCase(), event.getEntity().getName() + " Head"), entity.getKiller())); - if(debug){mmh.logDebug("EDE " + name + " Head Dropped");} - if(mmh.getConfig().getBoolean("announce.mobs.enabled", true)){ - announceBeheading(entity, mmh.langName.getString(name.toLowerCase(), MobHeads119.valueOf(name).getName() + "").replace(" Head", ""), - entity.getKiller(), mmh.getConfig().getBoolean("announce.mobs.displayname", true)); - } - } - if(debug){mmh.logDebug("EDE " + MobHeads119.valueOf(name) + " killed");} - break; - case "VEX": - Vex vex = (Vex) entity; - if(coinFlip()) { - // Give angry head - name = name + "_ANGRY"; - } - default: - //mmh.makeSkull(MobHeads.valueOf(name).getTexture(), name); - if(debug){mmh.logDebug("EDE name=" + name + " line:820");} - if(debug){mmh.logDebug("EDE texture=" + MobHeads.valueOf(name).getTexture().toString() + " line:821");} - if(debug){mmh.logDebug("EDE location=" + entity.getLocation().toString() + " line:822");} - if(debug){mmh.logDebug("EDE getName=" + event.getEntity().getName() + " line:823");} - if(debug){mmh.logDebug("EDE killer=" + entity.getKiller().toString() + " line:824");} - // ConfigHelper.Double(chanceConfig, "chance_percent." + name.toLowerCase(), defpercent) - if(mmh.DropIt(event, ConfigHelper.Double(chanceConfig, "chance_percent." + name.toLowerCase(), defpercent) )){ - Drops.add( mmh.makeSkull(MobHeads.valueOf(name).getTexture().toString(), - mmh.langName.getString(name.toLowerCase(), event.getEntity().getName() + " Head"), entity.getKiller())); - if(debug){mmh.logDebug("EDE " + name + " Head Dropped");} - if(mmh.getConfig().getBoolean("announce.mobs.enabled", true)){ - announceBeheading(entity, mmh.langName.getString(name.toLowerCase(), MobHeads.valueOf(name).getName() + "").replace(" Head", ""), - entity.getKiller(), mmh.getConfig().getBoolean("announce.mobs.displayname", true)); - } - } - if(debug){mmh.logDebug("EDE " + MobHeads.valueOf(name) + " killed");} - break; - } + } } - //} - //} - return; + return; + } + } + //String name = event.getEntity().getName().toUpperCase().replace(" ", "_"); + + if((mob_whitelist != null)&&!mob_whitelist.isEmpty()&&(mob_blacklist != null)&&!mob_blacklist.isEmpty()){ + if(!StrUtils.stringContains(mob_whitelist, name)){//mob_whitelist.contains(name) + mmh.log(Level.INFO, "EDE - Mob - Not on whitelist. Mob=" + name); + return; + } + }else if((mob_whitelist != null)&&!mob_whitelist.isEmpty()){ + if(!StrUtils.stringContains(mob_whitelist, name)&&StrUtils.stringContains(mob_blacklist, name)){//mob_whitelist.contains(name) + mmh.log(Level.INFO, "EDE - Mob - Not on whitelist - Is on blacklist. Mob=" + name); + return; + } + }else if((mob_blacklist != null)&&!mob_blacklist.isEmpty()){ + if(StrUtils.stringContains(mob_blacklist, name)){ + mmh.log(Level.INFO, "EDE - Mob - On blacklist. Mob=" + name); + return; + } + } + switch (name) { + case "CREEPER": + // ConfigHelper.Double(chanceConfig, "chance_percent.creeper", defpercent) + Creeper creeper = (Creeper) event.getEntity(); + double cchance = ConfigHelper.Double(chanceConfig, "chance_percent.creeper", defpercent); + if(creeper.isPowered()) { + name = "CREEPER_CHARGED"; + cchance = 1.00; + } + if(mmh.DropIt(event, cchance)){ + if(mmh.getConfig().getBoolean("vanilla_heads.creeper", false)&&(name != "CREEPER_CHARGED")){ + Drops.add( new ItemStack(Material.CREEPER_HEAD)); + }else{ // mmh.langName + Drops.add( mmh.makeSkull(MobHeads.valueOf(name).getTexture().toString(), + mmh.langName.getString(name.toLowerCase(), MobHeads.valueOf(name).getName() + " Head"), entity.getKiller())); + } // MobHeads.valueOf(name).getName() + " Head" + if(debug){mmh.logDebug("EDE Creeper vanilla=" + mmh.getConfig().getBoolean("vanilla_heads.creeper", false));} + if(debug){mmh.logDebug("EDE Creeper Head Dropped");} + if(mmh.getConfig().getBoolean("announce.mobs.enabled", true)){ + announceBeheading(entity, mmh.langName.getString(name.toLowerCase(), MobHeads.valueOf(name).getName() + "").replace(" Head", ""), + entity.getKiller(), mmh.getConfig().getBoolean("announce.mobs.displayname", true)); + } + } + break; + case "ZOMBIE": + // ConfigHelper.Double(chanceConfig, "chance_percent.zombie", defpercent) + if(mmh.DropIt(event, ConfigHelper.Double(chanceConfig, "chance_percent.zombie", defpercent) )){ + if(mmh.getConfig().getBoolean("vanilla_heads.zombie", false)){ + Drops.add(new ItemStack(Material.ZOMBIE_HEAD)); + }else{ + + Drops.add(mmh.makeSkull(MobHeads.valueOf(name).getTexture().toString(), + mmh.langName.getString(name.toLowerCase(), MobHeads.valueOf(name).getName() + " Head"), entity.getKiller())); + /**entity.getWorld().dropItemNaturally(entity.getLocation(), mmh.makeSkull(MobHeads.valueOf(name).getTexture().toString(), + mmh.langName.getString(name.toLowerCase(), MobHeads.valueOf(name).getName() + " Head"), entity.getKiller()));//*/ + } + if(debug){mmh.logDebug("EDE Zombie vanilla=" + mmh.getConfig().getBoolean("vanilla_heads.zombie", false));} + if(debug){mmh.logDebug("EDE Zombie Head Dropped");} + if(mmh.getConfig().getBoolean("announce.mobs.enabled", true)){ + announceBeheading(entity, mmh.langName.getString(name.toLowerCase(), MobHeads.valueOf(name).getName() + "").replace(" Head", ""), + entity.getKiller(), mmh.getConfig().getBoolean("announce.mobs.displayname", true)); + } + } + break; + case "SKELETON": + // ConfigHelper.Double(chanceConfig, "chance_percent.skeleton", defpercent) + if(mmh.DropIt(event, ConfigHelper.Double(chanceConfig, "chance_percent.skeleton", defpercent) )){ + if(mmh.getConfig().getBoolean("vanilla_heads.skeleton", false)){ + Drops.add( new ItemStack(Material.SKELETON_SKULL)); + }else{ + Drops.add( mmh.makeSkull(MobHeads.valueOf(name).getTexture().toString(), + mmh.langName.getString(name.toLowerCase(), MobHeads.valueOf(name).getName() + " Head"), entity.getKiller())); + } + if(debug){mmh.logDebug("EDE Skeleton vanilla=" + mmh.getConfig().getBoolean("vanilla_heads.skeleton", false));} + if(debug){mmh.logDebug("EDE Skeleton Head Dropped");} + if(mmh.getConfig().getBoolean("announce.mobs.enabled", true)){ + announceBeheading(entity, mmh.langName.getString(name.toLowerCase(), MobHeads.valueOf(name).getName() + "").replace(" Head", ""), + entity.getKiller(), mmh.getConfig().getBoolean("announce.mobs.displayname", true)); + } + } + break; + case "WITHER_SKELETON": + // ConfigHelper.Double(chanceConfig, "chance_percent.wither_skeleton", defpercent) + if(mmh.DropIt(event, ConfigHelper.Double(chanceConfig, "chance_percent.wither_skeleton", defpercent) )){ + if(mmh.getConfig().getBoolean("vanilla_heads.wither_skeleton", false)){ + Drops.add( new ItemStack(Material.WITHER_SKELETON_SKULL)); + }else{ + Drops.add( mmh.makeSkull(MobHeads.valueOf(name).getTexture().toString(), + mmh.langName.getString(name.toLowerCase(), MobHeads.valueOf(name).getName() + " Head"), entity.getKiller())); + } + if(debug){mmh.logDebug("EDE Wither Skeleton Head Dropped");} + if(mmh.getConfig().getBoolean("announce.mobs.enabled", true)){ + announceBeheading(entity, mmh.langName.getString(name.toLowerCase(), MobHeads.valueOf(name).getName() + "").replace(" Head", ""), + entity.getKiller(), mmh.getConfig().getBoolean("announce.mobs.displayname", true)); + } + } + break; + case "ENDER_DRAGON": + // ConfigHelper.Double(chanceConfig, "chance_percent.ender_dragon", defpercent) + if(mmh.DropIt(event, ConfigHelper.Double(chanceConfig, "chance_percent.ender_dragon", defpercent) )){ + if(mmh.getConfig().getBoolean("vanilla_heads.ender_dragon", false)){ + Drops.add( new ItemStack(Material.DRAGON_HEAD)); + }else{ + Drops.add( mmh.makeSkull(MobHeads.valueOf(name).getTexture().toString(), + mmh.langName.getString(name.toLowerCase(), MobHeads.valueOf(name).getName() + " Head"), entity.getKiller())); + } + if(debug){mmh.logDebug("EDE Ender Dragon Head Dropped");} + if(mmh.getConfig().getBoolean("announce.mobs.enabled", true)){ + announceBeheading(entity, mmh.langName.getString(name.toLowerCase(), MobHeads.valueOf(name).getName() + "").replace(" Head", ""), + entity.getKiller(), mmh.getConfig().getBoolean("announce.mobs.displayname", true)); + } + } + break; + case "TROPICAL_FISH": + TropicalFish daFish = (TropicalFish) entity; + DyeColor daFishBody = daFish.getBodyColor(); + DyeColor daFishPatternColor = daFish.getPatternColor(); + Pattern daFishType = daFish.getPattern(); + log("bodycolor=" + daFishBody.toString() + "\nPatternColor=" + daFishPatternColor.toString() + "\nPattern=" + daFishType.toString()); + //TropicalFishHeads daFishEnum = TropicalFishHeads.getIfPresent(name); + String daFishName = mmh.getNamedTropicalFishName(daFishType, daFishBody, daFishPatternColor); + log("daFishName: " + daFishName); + if(mmh.DropIt(event, ConfigHelper.Double(chanceConfig, "chance_percent.tropical_fish." + daFishName.toLowerCase(), defpercent))){ + Drops.add(mmh.makeSkull(TropicalFishHeads.valueOf(name + "_" + daFishName).getTexture().toString(), + mmh.langName.getString(name.toLowerCase() + "." + daFishName.toLowerCase(), TropicalFishHeads.valueOf(name + "_" + daFishName).getName() + " Head"), entity.getKiller())); + if(debug){mmh.logDebug("EDE TROPICAL_FISH:" + daFishName + " head dropped");} + if(mmh.getConfig().getBoolean("announce.mobs.enabled", true)){ + announceBeheading(entity, mmh.langName.getString(name.toLowerCase() + "." + daFishName.toLowerCase(), TropicalFishHeads.valueOf(name + "_" + daFishName).getName() + "").replace(" Head", ""), + entity.getKiller(), mmh.getConfig().getBoolean("announce.mobs.displayname", true)); + } + } + break; + case "WITHER": + if (mmh.DropIt(event, ConfigHelper.Double(chanceConfig, "chance_percent." + name.toLowerCase(), defpercent))) { + String name2 = name + "_NORMAL"; + Drops.add( mmh.makeSkull(MobHeads.valueOf(name2).getTexture().toString(), mmh.langName.getString(name2.toLowerCase().replace("_", ".") + , MobHeads.valueOf(name2).getName() + " Head"), entity.getKiller()) ); + if (debug) { + mmh.logDebug("EDE " + name2 + " Head Dropped"); + } + if (mmh.getConfig().getBoolean("announce.mobs.enabled", true)) { + announceBeheading(entity, mmh.langName.getString(name2.toLowerCase().replace("_", ".") + , MobHeads.valueOf(name2).getName() + "").replace(" Head", ""), entity.getKiller(), mmh.getConfig().getBoolean("announce.mobs.displayname", true)); + } + if (coinFlip()) { + name2 = name + "_PROJECTILE"; + Drops.add( mmh.makeSkull(MobHeads.valueOf(name2).getTexture().toString(), mmh.langName.getString(name2.toLowerCase() + .replace("_", "."), event.getEntity().getName() + " Head"), entity.getKiller()) ); + if (debug) { + mmh.logDebug("EDE " + name2 + " Head Dropped"); + } + } + if (coinFlip()) { + name2 = name + "_BLUE_PROJECTILE"; + Drops.add( mmh.makeSkull(MobHeads.valueOf(name2).getTexture().toString(), mmh.langName.getString(name2.toLowerCase() + .replaceFirst("_", "."), event.getEntity().getName() + " Head"), entity.getKiller()) ); + if (debug) { + mmh.logDebug("EDE " + name2 + " Head Dropped"); + } + } + } + break; + case "WOLF": + Wolf wolf = (Wolf) event.getEntity(); + // ConfigHelper.Double(chanceConfig, "chance_percent." + name.toLowerCase(), defpercent) + if(mmh.DropIt(event, ConfigHelper.Double(chanceConfig, "chance_percent." + name.toLowerCase(), defpercent) )){ + if(wolf.isAngry()){ + Drops.add( mmh.makeSkull(MobHeads.valueOf(name + "_ANGRY").getTexture().toString(), + mmh.langName.getString(name.toLowerCase() + "_angry", MobHeads.valueOf(name + "_ANGRY").getName() + " Head"), entity.getKiller())); + if(debug){mmh.logDebug("EDE Angry Wolf Head Dropped");} + if(mmh.getConfig().getBoolean("announce.mobs.enabled", true)){ + announceBeheading(entity, mmh.langName.getString(name.toLowerCase() + "_angry", MobHeads.valueOf(name + "_ANGRY").getName() + "").replace(" Head", ""), + entity.getKiller(), mmh.getConfig().getBoolean("announce.mobs.displayname", true)); + } + }else{ + Drops.add( mmh.makeSkull(MobHeads.valueOf(name).getTexture().toString(), + mmh.langName.getString(name.toLowerCase(), event.getEntity().getName() + " Head"), entity.getKiller())); + if(debug){mmh.logDebug("EDE Wolf Head Dropped");} + if(mmh.getConfig().getBoolean("announce.mobs.enabled", true)){ + announceBeheading(entity, mmh.langName.getString(name.toLowerCase(), MobHeads.valueOf(name).getName() + "").replace(" Head", ""), + entity.getKiller(), mmh.getConfig().getBoolean("announce.mobs.displayname", true)); + } + } + } + break; + case "FOX": + Fox dafox = (Fox) entity; + String dafoxtype = dafox.getFoxType().toString(); + if(debug){mmh.logDebug("EDE dafoxtype=" + dafoxtype);} + // ConfigHelper.Double(chanceConfig, "chance_percent.fox." + dafoxtype.toLowerCase(), defpercent) + if(mmh.DropIt(event, ConfigHelper.Double(chanceConfig, "chance_percent.fox." + dafoxtype.toLowerCase(), defpercent) )){ + Drops.add( mmh.makeSkull(MobHeads.valueOf(name + "_" + dafoxtype).getTexture().toString(), + mmh.langName.getString(name.toLowerCase() + "." + dafoxtype.toLowerCase(), MobHeads.valueOf(name + "_" + dafoxtype).getName() + " Head"), entity.getKiller())); + if(debug){mmh.logDebug("EDE Fox Head Dropped");} + if(mmh.getConfig().getBoolean("announce.mobs.enabled", true)){ + announceBeheading(entity, mmh.langName.getString(name.toLowerCase() + "." + dafoxtype.toLowerCase(), MobHeads.valueOf(name + "_" + dafoxtype).getName() + "").replace(" Head", ""), + entity.getKiller(), mmh.getConfig().getBoolean("announce.mobs.displayname", true)); + } + } + + break; + case "CAT": + Cat dacat = (Cat) entity; + String dacattype = dacat.getCatType().toString(); + if(debug){mmh.logDebug("entity cat=" + dacat.getCatType());} + // ConfigHelper.Double(chanceConfig, "chance_percent.cat." + dacattype.toLowerCase(), defpercent) + if(mmh.DropIt(event, ConfigHelper.Double(chanceConfig, "chance_percent.cat." + dacattype.toLowerCase(), defpercent) )){ + Drops.add(mmh.makeSkull(CatHeads.valueOf(dacattype).getTexture().toString(), + mmh.langName.getString(name.toLowerCase() + "." + dacattype.toLowerCase(), CatHeads.valueOf(dacattype).getName() + " Head"), entity.getKiller())); + if(debug){mmh.logDebug("EDE Cat Head Dropped");} + if(mmh.getConfig().getBoolean("announce.mobs.enabled", true)){ + announceBeheading(entity, mmh.langName.getString(name.toLowerCase() + "." + dacattype.toLowerCase(), CatHeads.valueOf(dacattype).getName() + "").replace(" Head", ""), + entity.getKiller(), mmh.getConfig().getBoolean("announce.mobs.displayname", true)); + } + } + break; + case "OCELOT": + // ConfigHelper.Double(chanceConfig, "chance_percent." + name.toLowerCase(), defpercent) + if(mmh.DropIt(event, ConfigHelper.Double(chanceConfig, "chance_percent." + name.toLowerCase(), defpercent) )){ + Drops.add( mmh.makeSkull(MobHeads.valueOf(name).getTexture().toString(), + mmh.langName.getString(MobHeads.valueOf(name).getNameString(), MobHeads.valueOf(name).getName() + " Head"), entity.getKiller())); + if(debug){mmh.logDebug("EDE " + name + " Head Dropped");} + if(mmh.getConfig().getBoolean("announce.mobs.enabled", true)){ + announceBeheading(entity, mmh.langName.getString(MobHeads.valueOf(name).getNameString(), MobHeads.valueOf(name).getName() + "").replace(" Head", ""), + entity.getKiller(), mmh.getConfig().getBoolean("announce.mobs.displayname", true)); + } + } + if(debug){mmh.logDebug("EDE " + MobHeads.valueOf(name) + " killed");} + + break; + case "BEE": + Bee daBee = (Bee) entity; + int daAnger = daBee.getAnger(); + if(debug){mmh.logDebug("EDE daAnger=" + daAnger);} + boolean daNectar = daBee.hasNectar(); + if(debug){mmh.logDebug("EDE daNectar=" + daNectar);} + if((daAnger >= 1)&&(daNectar == true)){ + // ConfigHelper.Double(chanceConfig, "chance_percent.bee.angry_pollinated", defpercent) + if(mmh.DropIt(event, ConfigHelper.Double(chanceConfig, "chance_percent.bee.angry_pollinated", defpercent) )){ + Drops.add( mmh.makeSkull(MobHeads.valueOf("BEE_ANGRY_POLLINATED").getTexture().toString(), + mmh.langName.getString(name.toLowerCase() + ".angry_pollinated", "Angry Pollinated Bee Head"), entity.getKiller())); + if(debug){mmh.logDebug("EDE Angry Pollinated Bee Head Dropped");} + if(mmh.getConfig().getBoolean("announce.mobs.enabled", true)){ + announceBeheading(entity, mmh.langName.getString(name.toLowerCase() + ".angry_pollinated", MobHeads.valueOf("BEE_ANGRY_POLLINATED").getName() + "").replace(" Head", ""), + entity.getKiller(), mmh.getConfig().getBoolean("announce.mobs.displayname", true)); + } + } + }else if((daAnger >= 1)&&(daNectar == false)){ + // ConfigHelper.Double(chanceConfig, "chance_percent.bee.angry", defpercent) + if(mmh.DropIt(event, ConfigHelper.Double(chanceConfig, "chance_percent.bee.angry", defpercent) )){ + Drops.add( mmh.makeSkull(MobHeads.valueOf("BEE_ANGRY").getTexture().toString(), + mmh.langName.getString(name.toLowerCase() + ".angry", "Angry Bee Head"), entity.getKiller())); + if(debug){mmh.logDebug("EDE Angry Bee Head Dropped");} + if(mmh.getConfig().getBoolean("announce.mobs.enabled", true)){ + announceBeheading(entity, mmh.langName.getString(name.toLowerCase() + ".angry", MobHeads.valueOf("BEE_ANGRY").getName() + "").replace(" Head", ""), + entity.getKiller(), mmh.getConfig().getBoolean("announce.mobs.displayname", true)); + } + } + }else if((daAnger == 0)&&(daNectar == true)){ + // ConfigHelper.Double(chanceConfig, "chance_percent.bee.pollinated", defpercent) + if(mmh.DropIt(event, ConfigHelper.Double(chanceConfig, "chance_percent.bee.pollinated", defpercent) )){ + Drops.add( mmh.makeSkull(MobHeads.valueOf("BEE_POLLINATED").getTexture().toString(), + mmh.langName.getString(name.toLowerCase() + ".pollinated", "Pollinated Bee Head"), entity.getKiller())); + if(debug){mmh.logDebug("EDE Pollinated Bee Head Dropped");} + if(mmh.getConfig().getBoolean("announce.mobs.enabled", true)){ + announceBeheading(entity, mmh.langName.getString(name.toLowerCase() + ".pollinated", MobHeads.valueOf("BEE_POLLINATED").getName() + "").replace(" Head", ""), + entity.getKiller(), mmh.getConfig().getBoolean("announce.mobs.displayname", true)); + } + } + }else if((daAnger == 0)&&(daNectar == false)){ + // ConfigHelper.Double(chanceConfig, "chance_percent.bee.chance_percent", defpercent) + if(mmh.DropIt(event, ConfigHelper.Double(chanceConfig, "chance_percent.bee.chance_percent", defpercent) )){ + Drops.add( mmh.makeSkull(MobHeads.valueOf("BEE").getTexture().toString(), + mmh.langName.getString(name.toLowerCase() + ".none", "Bee Head"), entity.getKiller())); + if(debug){mmh.logDebug("EDE Bee Head Dropped");} + if(mmh.getConfig().getBoolean("announce.mobs.enabled", true)){ + announceBeheading(entity, mmh.langName.getString(name.toLowerCase() + ".none", MobHeads.valueOf("BEE").getName() + "").replace(" Head", ""), + entity.getKiller(), mmh.getConfig().getBoolean("announce.mobs.displayname", true)); + } + } + } + break; + case "LLAMA": + Llama daLlama = (Llama) entity; + String daLlamaColor = daLlama.getColor().toString(); + String daLlamaName = LlamaHeads.valueOf(name + "_" + daLlamaColor).getName() + " Head";//daLlamaColor.toLowerCase().replace("b", "B").replace("c", "C").replace("g", "G").replace("wh", "Wh") + " Llama Head"; + //log(name + "_" + daLlamaColor); + // ConfigHelper.Double(chanceConfig, "chance_percent.llama." + daLlamaColor.toLowerCase(), defpercent) + if(mmh.DropIt(event, ConfigHelper.Double(chanceConfig, "chance_percent.llama." + daLlamaColor.toLowerCase(), defpercent) )){ + Drops.add( mmh.makeSkull(LlamaHeads.valueOf(name + "_" + daLlamaColor).getTexture().toString(), + mmh.langName.getString(name.toLowerCase() + "." + daLlamaColor.toLowerCase(), daLlamaName), entity.getKiller())); + if(debug){mmh.logDebug("EDE Llama Head Dropped");} + if(mmh.getConfig().getBoolean("announce.mobs.enabled", true)){ + announceBeheading(entity, mmh.langName.getString(name.toLowerCase() + "." + daLlamaColor.toLowerCase(), LlamaHeads.valueOf(name + "_" + daLlamaColor).getName() + "").replace(" Head", ""), + entity.getKiller(), mmh.getConfig().getBoolean("announce.mobs.displayname", true)); + } + } + break; + case "HORSE": + Horse daHorse = (Horse) entity; + String daHorseColor = daHorse.getColor().toString(); + String daHorseName = HorseHeads.valueOf(name + "_" + daHorseColor).getName() + " Head";//daHorseColor.toLowerCase().replace("b", "B").replace("ch", "Ch").replace("cr", "Cr").replace("d", "D") + //.replace("g", "G").replace("wh", "Wh").replace("_", " ") + " Horse Head"; + // ConfigHelper.Double(chanceConfig, "chance_percent.horse." + daHorseColor.toLowerCase(), defpercent) + if(mmh.DropIt(event, ConfigHelper.Double(chanceConfig, "chance_percent.horse." + daHorseColor.toLowerCase(), defpercent) )){ + Drops.add( mmh.makeSkull(HorseHeads.valueOf(name + "_" + daHorseColor).getTexture().toString(), + mmh.langName.getString(name.toLowerCase() + "." + daHorseColor.toLowerCase(), daHorseName), entity.getKiller())); + if(debug){mmh.logDebug("EDE Horse Head Dropped");} + if(mmh.getConfig().getBoolean("announce.mobs.enabled", true)){ + announceBeheading(entity, mmh.langName.getString(name.toLowerCase() + "." + daHorseColor.toLowerCase(), HorseHeads.valueOf(name + "_" + daHorseColor).getName() + "").replace(" Head", ""), + entity.getKiller(), mmh.getConfig().getBoolean("announce.mobs.displayname", true)); + } + } + break; + case "MOOSHROOM": + name = "MUSHROOM_COW"; + case "MUSHROOM_COW": + MushroomCow daMushroom = (MushroomCow) entity; + String daCowVariant = daMushroom.getVariant().toString(); + String daCowName = daCowVariant.toLowerCase().replace("br", "Br").replace("re", "Re") + " Mooshroom Head"; + if(debug){mmh.logDebug("EDE " + name + "_" + daCowVariant);} + // ConfigHelper.Double(chanceConfig, "chance_percent.mushroom_cow." + daCowVariant.toLowerCase(), defpercent) + if(mmh.DropIt(event, ConfigHelper.Double(chanceConfig, "chance_percent.mushroom_cow." + daCowVariant.toLowerCase(), defpercent) )){ + Drops.add( mmh.makeSkull(MobHeads.valueOf(name + "_" + daCowVariant).getTexture().toString(), + mmh.langName.getString(name.toLowerCase() + "." + daCowVariant.toLowerCase(), daCowName), entity.getKiller())); + if(debug){mmh.logDebug("EDE Mooshroom Head Dropped");} + if(mmh.getConfig().getBoolean("announce.mobs.enabled", true)){ + announceBeheading(entity, mmh.langName.getString(name.toLowerCase() + "." + daCowVariant.toLowerCase(), MobHeads.valueOf(name + "_" + daCowVariant).getName() + "").replace(" Head", ""), + entity.getKiller(), mmh.getConfig().getBoolean("announce.mobs.displayname", true)); + } + } + break; + case "PANDA": + Panda daPanda = (Panda) entity; + String daPandaGene = daPanda.getMainGene().toString(); + String daPandaName = daPandaGene.toLowerCase().replace("br", "Br").replace("ag", "Ag").replace("la", "La") + .replace("no", "No").replace("p", "P").replace("we", "We").replace("wo", "Wo") + " Panda Head"; + if(daPandaGene.equalsIgnoreCase("normal")){daPandaName.replace("normal ", "");} + if(debug){mmh.logDebug("EDE " + name + "_" + daPandaGene);} + // ConfigHelper.Double(chanceConfig, "chance_percent.panda." + daPandaGene.toLowerCase(), defpercent) + if(mmh.DropIt(event, ConfigHelper.Double(chanceConfig, "chance_percent.panda." + daPandaGene.toLowerCase(), defpercent) )){ + Drops.add( mmh.makeSkull(MobHeads.valueOf(name + "_" + daPandaGene).getTexture().toString(), + mmh.langName.getString(name.toLowerCase() + "." + daPandaGene.toLowerCase(), daPandaName), entity.getKiller())); + if(debug){mmh.logDebug("EDE Panda Head Dropped");} + if(mmh.getConfig().getBoolean("announce.mobs.enabled", true)){ + announceBeheading(entity, mmh.langName.getString(name.toLowerCase() + "." + daPandaGene.toLowerCase(), MobHeads.valueOf(name + "_" + daPandaGene).getName() + "").replace(" Head", ""), + entity.getKiller(), mmh.getConfig().getBoolean("announce.mobs.displayname", true)); + } + } + break; + case "PARROT": + Parrot daParrot = (Parrot) entity; + String daParrotVariant = daParrot.getVariant().toString(); + String daParrotName = daParrotVariant.toLowerCase().replace("b", "B").replace("c", "C").replace("g", "G") + .replace("red", "Red") + " Parrot Head"; + if(debug){mmh.logDebug("EDE " + name + "_" + daParrotVariant);} + // ConfigHelper.Double(chanceConfig, "chance_percent.parrot." + daParrotVariant.toLowerCase(), defpercent) + if(mmh.DropIt(event, ConfigHelper.Double(chanceConfig, "chance_percent.parrot." + daParrotVariant.toLowerCase(), defpercent) )){ + Drops.add( mmh.makeSkull(MobHeads.valueOf(name + "_" + daParrotVariant).getTexture().toString(), + mmh.langName.getString(name.toLowerCase() + "." + daParrotVariant.toLowerCase(), daParrotName), entity.getKiller())); + if(debug){mmh.logDebug("EDE Parrot Head Dropped");} + if(mmh.getConfig().getBoolean("announce.mobs.enabled", true)){ + announceBeheading(entity, mmh.langName.getString(name.toLowerCase() + "." + daParrotVariant.toLowerCase(), MobHeads.valueOf(name + "_" + daParrotVariant).getName() + "").replace(" Head", ""), + entity.getKiller(), mmh.getConfig().getBoolean("announce.mobs.displayname", true)); + } + } + break; + case "RABBIT": + String daRabbitType; + Rabbit daRabbit = (Rabbit) entity; + daRabbitType = daRabbit.getRabbitType().toString(); + if(daRabbit.getCustomName() != null){ + if(daRabbit.getCustomName().contains("Toast")){ + daRabbitType = "Toast"; + } + } + String daRabbitName = RabbitHeads.valueOf(name + "_" + daRabbitType).getName() + " Head"; + if(debug){mmh.logDebug("EDE " + name + "_" + daRabbitType);} + // ConfigHelper.Double(chanceConfig, "chance_percent.rabbit." + daRabbitType.toLowerCase(), defpercent) + if(mmh.DropIt(event, ConfigHelper.Double(chanceConfig, "chance_percent.rabbit." + daRabbitType.toLowerCase(), defpercent) )){ + Drops.add( mmh.makeSkull(RabbitHeads.valueOf(name + "_" + daRabbitType).getTexture().toString(), + mmh.langName.getString(name.toLowerCase() + "." + daRabbitType.toLowerCase(), daRabbitName), entity.getKiller())); + if(debug){mmh.logDebug("EDE Rabbit Head Dropped");} + if(mmh.getConfig().getBoolean("announce.mobs.enabled", true)){ + announceBeheading(entity, mmh.langName.getString(name.toLowerCase() + "." + daRabbitType.toLowerCase(), RabbitHeads.valueOf(name + "_" + daRabbitType).getName() + "").replace(" Head", ""), + entity.getKiller(), mmh.getConfig().getBoolean("announce.mobs.displayname", true)); + } + } + break; + case "VILLAGER": + Villager daVillager = (Villager) entity; // Location jobsite = daVillager.getMemory(MemoryKey.JOB_SITE); + String daVillagerType = daVillager.getVillagerType().toString(); + String daVillagerProfession = daVillager.getProfession().toString(); + if(debug){mmh.logDebug("EDE name=" + name);} + if(debug){mmh.logDebug("EDE profession=" + daVillagerProfession);} + if(debug){mmh.logDebug("EDE type=" + daVillagerType);} + String daName = name + "_" + daVillagerProfession + "_" + daVillagerType; + if(debug){mmh.logDebug("EDE " + daName + " " + name + "_" + daVillagerProfession + "_" + daVillagerType);} + String daVillagerName = VillagerHeads.valueOf(daName).getName() + " Head"; + // ConfigHelper.Double(chanceConfig, "chance_percent.villager." + daVillagerType.toLowerCase() + "." + daVillagerProfession.toLowerCase(), defpercent) + if(mmh.DropIt(event, ConfigHelper.Double(chanceConfig, "chance_percent.villager." + daVillagerType.toLowerCase() + "." + daVillagerProfession.toLowerCase(), defpercent) )){ + Drops.add( mmh.makeSkull(VillagerHeads.valueOf(name + "_" + daVillagerProfession + "_" + daVillagerType).getTexture().toString(), + mmh.langName.getString(name.toLowerCase() + "." + daVillagerType.toLowerCase() + "." + daVillagerProfession.toLowerCase() + , daVillagerName), entity.getKiller())); + if(debug){mmh.logDebug("EDE Villager Head Dropped");} + if(mmh.getConfig().getBoolean("announce.mobs.enabled", true)){ + announceBeheading(entity, mmh.langName.getString(name.toLowerCase() + "." + daVillagerType.toLowerCase() + "." + daVillagerProfession.toLowerCase(), + VillagerHeads.valueOf(name + "_" + daVillagerProfession + "_" + daVillagerType).getName() + "").replace(" Head", ""), + entity.getKiller(), mmh.getConfig().getBoolean("announce.mobs.displayname", true)); + } + } + break; + case "ZOMBIE_VILLAGER": + ZombieVillager daZombieVillager = (ZombieVillager) entity; + String daZombieVillagerProfession = daZombieVillager.getVillagerProfession().toString(); + String daZombieVillagerName = ZombieVillagerHeads.valueOf(name + "_" + daZombieVillagerProfession).getName() + " Head"; + if(debug){mmh.logDebug("EDE " + name + "_" + daZombieVillagerProfession);} + // ConfigHelper.Double(chanceConfig, "chance_percent.zombie_villager", defpercent) + if(mmh.DropIt(event, ConfigHelper.Double(chanceConfig, "chance_percent.zombie_villager", defpercent) )){ + Drops.add( mmh.makeSkull(ZombieVillagerHeads.valueOf(name + "_" + daZombieVillagerProfession).getTexture().toString(), + mmh.langName.getString(name.toLowerCase() + "." + daZombieVillagerProfession.toLowerCase(), daZombieVillagerName), entity.getKiller())); + if(debug){mmh.logDebug("EDE Zombie Villager Head Dropped");} + if(mmh.getConfig().getBoolean("announce.mobs.enabled", true)){ + announceBeheading(entity, mmh.langName.getString(name.toLowerCase() + "." + daZombieVillagerProfession.toLowerCase(), ZombieVillagerHeads.valueOf(name + "_" + daZombieVillagerProfession).getName() + "").replace(" Head", ""), + entity.getKiller(), mmh.getConfig().getBoolean("announce.mobs.displayname", true)); + } + } + break; + case "SHEEP": + Sheep daSheep = (Sheep) entity; + String daSheepColor = daSheep.getColor().toString(); + String daSheepName; + + if(daSheep.getCustomName() != null){ + if(daSheep.getCustomName().contains("jeb_")){ + daSheepColor = "jeb_"; + }else{ + daSheepColor = daSheep.getColor().toString(); + } + } + daSheepName = SheepHeads.valueOf(name + "_" + daSheepColor).getName() + " Head"; + if(debug){mmh.logDebug("EDE " + daSheepColor + "_" + name);} + // ConfigHelper.Double(chanceConfig, "chance_percent.sheep." + daSheepColor.toLowerCase(), defpercent) + if(mmh.DropIt(event, ConfigHelper.Double(chanceConfig, "chance_percent.sheep." + daSheepColor.toLowerCase(), defpercent) )){ + Drops.add( mmh.makeSkull(SheepHeads.valueOf(name + "_" + daSheepColor).getTexture().toString(), + mmh.langName.getString(name.toLowerCase() + "." + daSheepColor.toLowerCase(), daSheepName), entity.getKiller())); + if(debug){mmh.logDebug("EDE Sheep Head Dropped");} + if(mmh.getConfig().getBoolean("announce.mobs.enabled", true)){ + announceBeheading(entity, mmh.langName.getString(name.toLowerCase() + "." + daSheepColor.toLowerCase(), SheepHeads.valueOf(name + "_" + daSheepColor).getName() + "").replace(" Head", ""), + entity.getKiller(), mmh.getConfig().getBoolean("announce.mobs.displayname", true)); + } + } + break; + case "TRADER_LLAMA": + TraderLlama daTraderLlama = (TraderLlama) entity; + String daTraderLlamaColor = daTraderLlama.getColor().toString(); + String daTraderLlamaName = LlamaHeads.valueOf(name + "_" + daTraderLlamaColor).getName() + " Head"; + if(debug){mmh.logDebug("EDE " + daTraderLlamaColor + "_" + name);} + // ConfigHelper.Double(chanceConfig, "chance_percent.trader_llama." + daTraderLlamaColor.toLowerCase(), defpercent) + if(mmh.DropIt(event, ConfigHelper.Double(chanceConfig, "chance_percent.trader_llama." + daTraderLlamaColor.toLowerCase(), defpercent) )){ + Drops.add( mmh.makeSkull(LlamaHeads.valueOf(name + "_" + daTraderLlamaColor).getTexture().toString(), + mmh.langName.getString(name.toLowerCase() + "." + daTraderLlamaColor.toLowerCase(), daTraderLlamaName), entity.getKiller())); + if(debug){mmh.logDebug("EDE Trader Llama Head Dropped");} + if(mmh.getConfig().getBoolean("announce.mobs.enabled", true)){ + announceBeheading(entity, mmh.langName.getString(name.toLowerCase() + "." + daTraderLlamaColor.toLowerCase(), LlamaHeads.valueOf(name + "_" + daTraderLlamaColor).getName() + "").replace(" Head", ""), + entity.getKiller(), mmh.getConfig().getBoolean("announce.mobs.displayname", true)); + } + } + break; + case "AXOLOTL": + Axolotl daAxolotl = (Axolotl) entity; + String daAxolotlVariant = daAxolotl.getVariant().toString(); + String daAxolotlName = MobHeads117.valueOf(name + "_" + daAxolotlVariant).getName() + " Head"; + if(debug){mmh.logDebug("EDE " + daAxolotlVariant + "_" + name);} + // ConfigHelper.Double(chanceConfig, "chance_percent.axolotl." + daAxolotlVariant.toLowerCase(), defpercent) + if(mmh.DropIt(event, ConfigHelper.Double(chanceConfig, "chance_percent.axolotl." + daAxolotlVariant.toLowerCase(), defpercent) )){ + Drops.add( mmh.makeSkull(MobHeads117.valueOf(name + "_" + daAxolotlVariant).getTexture().toString(), + mmh.langName.getString(name.toLowerCase() + "." + daAxolotlVariant.toLowerCase(), daAxolotlName), entity.getKiller())); + if(debug){mmh.logDebug("EDE Axolotl Head Dropped");} + if(mmh.getConfig().getBoolean("announce.mobs.enabled", true)){ + announceBeheading(entity, mmh.langName.getString(name.toLowerCase() + "." + daAxolotlVariant.toLowerCase(), MobHeads117.valueOf(name + "_" + daAxolotlVariant).getName() + "").replace(" Head", ""), + entity.getKiller(), mmh.getConfig().getBoolean("announce.mobs.displayname", true)); + } + } + break; + case "GOAT": + Goat daGoat = (Goat) entity; + String daGoatVariant; + String daGoatName;// = MobHeads117.valueOf(name + "_" + daAxolotlVariant).getName() + " Head"; + if(daGoat.isScreaming()) { + // Giving screaming goat head + daGoatVariant = "SCREAMING"; + daGoatName = MobHeads117.valueOf(name + "_" + daGoatVariant).getName() + " Head"; + }else { + // give goat head + daGoatVariant = "NORMAL"; + daGoatName = MobHeads117.valueOf(name + "_" + daGoatVariant).getName() + " Head"; + } + if(debug){mmh.logDebug("EDE " + daGoatVariant + "_" + name);} + // ConfigHelper.Double(chanceConfig, "chance_percent.goat." + daGoatVariant.toLowerCase(), defpercent) + if(mmh.DropIt(event, ConfigHelper.Double(chanceConfig, "chance_percent.goat." + daGoatVariant.toLowerCase(), defpercent) )){ + Drops.add( mmh.makeSkull(MobHeads117.valueOf(name + "_" + daGoatVariant).getTexture().toString(), + mmh.langName.getString(name.toLowerCase() + "." + daGoatVariant.toLowerCase(), daGoatName), entity.getKiller())); + if(debug){mmh.logDebug("EDE Goat Head Dropped");} + if(mmh.getConfig().getBoolean("announce.mobs.enabled", true)){ + announceBeheading(entity, mmh.langName.getString(name.toLowerCase() + "." + daGoatVariant.toLowerCase(), MobHeads117.valueOf(name + "_" + daGoatVariant).getName() + "").replace(" Head", ""), + entity.getKiller(), mmh.getConfig().getBoolean("announce.mobs.displayname", true)); + } + } + break; + case "STRIDER": + Strider daStrider = (Strider) entity; + PersistentDataContainer pdc2 = daStrider.getPersistentDataContainer(); + boolean isShivering = Boolean.parseBoolean( daStrider.getPersistentDataContainer().get(mmh.SHIVERING_KEY, PersistentDataType.STRING) ); + if(mmh.chance25oftrue()) { // chance50oftrue() isShivering + name = name.concat("_SHIVERING"); + // ConfigHelper.Double(chanceConfig, "chance_percent." + name.toLowerCase(), defpercent) + if(mmh.DropIt(event, ConfigHelper.Double(chanceConfig, "chance_percent." + name.toLowerCase(), defpercent) )){ + Drops.add( mmh.makeSkull(MobHeads.valueOf(name).getTexture().toString(), + mmh.langName.getString(name.toLowerCase() + "_shivering", "Shivering " + event.getEntity().getName() + " Head"), entity.getKiller())); + if(debug){mmh.logDebug("EDE " + name + " Head Dropped");} + if(mmh.getConfig().getBoolean("announce.mobs.enabled", true)){ + announceBeheading(entity, mmh.langName.getString(name.toLowerCase(), MobHeads.valueOf(name).getName() + "").replace(" Head", ""), + entity.getKiller(), mmh.getConfig().getBoolean("announce.mobs.displayname", true)); + } + } + } else // ConfigHelper.Double(chanceConfig, "chance_percent." + name.toLowerCase(), defpercent) + if(mmh.DropIt(event, ConfigHelper.Double(chanceConfig, "chance_percent." + name.toLowerCase(), defpercent) )){ + Drops.add( mmh.makeSkull(MobHeads.valueOf(name).getTexture().toString(), + mmh.langName.getString(name.toLowerCase(), event.getEntity().getName() + " Head"), entity.getKiller())); + if(debug){mmh.logDebug("EDE " + name + " Head Dropped");} + if(mmh.getConfig().getBoolean("announce.mobs.enabled", true)){ + announceBeheading(entity, mmh.langName.getString(name.toLowerCase(), MobHeads.valueOf(name).getName() + "").replace(" Head", ""), + entity.getKiller(), mmh.getConfig().getBoolean("announce.mobs.displayname", true)); + } + } + + if(debug){mmh.logDebug("EDE " + MobHeads.valueOf(name) + " killed");} + break; + case "FROG": + String frogName = MoreMobHeadsLib.getName(name, entity); + String daFrogName = MobHeads119.valueOf(frogName).getName() + " Head"; + // chanceConfig.getDouble("chance_percent." + frogName.replace("_", ".").toLowerCase(), defpercent) + // ConfigHelper.Double(chanceConfig, "chance_percent." + frogName.replace("_", ".").toLowerCase(), defpercent) + if(mmh.DropIt(event, ConfigHelper.Double(chanceConfig, "chance_percent." + frogName.replace("_", ".").toLowerCase(), defpercent) )){ + Drops.add( mmh.makeSkull(MobHeads119.valueOf(frogName).getTexture().toString(), + mmh.langName.getString(frogName.replace("_", ".").toLowerCase(), daFrogName), entity.getKiller()) ); + if(debug){mmh.logDebug("EDE Frog Head Dropped");} + if(mmh.getConfig().getBoolean("announce.mobs.enabled", true)){ + announceBeheading(entity, mmh.langName.getString(frogName.replace("_", ".").toLowerCase(), MobHeads119.valueOf(frogName).getName() + "").replace(" Head", ""), + entity.getKiller(), mmh.getConfig().getBoolean("announce.mobs.displayname", true)); + } + } + + break; + case "TADPOLE": + case "ALLAY": + case "WARDEN": + //case "TADPOLE": + if(debug){mmh.logDebug("EDE name=" + name + " line:806");} + if(debug){mmh.logDebug("EDE texture=" + MobHeads119.valueOf(name).getTexture().toString() + " line:807");} + if(debug){mmh.logDebug("EDE location=" + entity.getLocation().toString() + " line:808");} + if(debug){mmh.logDebug("EDE getName=" + event.getEntity().getName() + " line:809");} + if(debug){mmh.logDebug("EDE killer=" + entity.getKiller().toString() + " line:810");} + // ConfigHelper.Double(chanceConfig, "chance_percent." + name.toLowerCase(), defpercent) + if(mmh.DropIt(event, ConfigHelper.Double(chanceConfig, "chance_percent." + name.toLowerCase(), defpercent) )){ + Drops.add( mmh.makeSkull(MobHeads119.valueOf(name).getTexture().toString(), + mmh.langName.getString(name.toLowerCase(), event.getEntity().getName() + " Head"), entity.getKiller())); + if(debug){mmh.logDebug("EDE " + name + " Head Dropped");} + if(mmh.getConfig().getBoolean("announce.mobs.enabled", true)){ + announceBeheading(entity, mmh.langName.getString(name.toLowerCase(), MobHeads119.valueOf(name).getName() + "").replace(" Head", ""), + entity.getKiller(), mmh.getConfig().getBoolean("announce.mobs.displayname", true)); + } + } + if(debug){mmh.logDebug("EDE " + MobHeads119.valueOf(name) + " killed");} + break; + case "VEX": + if (debug) {mmh.logDebug("EDE name=" + name);} + if (debug) {mmh.logDebug("EDE texture=" + MobHeads.valueOf(name).getTexture().toString());} + if (debug) {mmh.logDebug("EDE location=" + entity.getLocation().toString());} + if (debug) {mmh.logDebug("EDE getName=" + event.getEntity().getName());} + if (debug) {mmh.logDebug("EDE killer=" + entity.getKiller().toString());} + if (mmh.DropIt(event, ConfigHelper.Double(chanceConfig, "chance_percent." + name.toLowerCase(), + defpercent))) { + Drops.add( mmh.makeSkull(MobHeads.valueOf(name).getTexture().toString(), + mmh.langName.getString(name.toLowerCase(), event.getEntity().getName() + " Head"), entity.getKiller()) ); + if (debug) {mmh.logDebug("EDE " + name + " Head Dropped");} + if (mmh.getConfig().getBoolean("announce.mobs.enabled", true)) { + announceBeheading(entity, mmh.langName.getString(name.toLowerCase(), MobHeads.valueOf(name).getName() + "").replace(" Head", ""), + entity.getKiller(), mmh.getConfig().getBoolean("announce.mobs.displayname", true)); + } + if (coinFlip()) { + String name2 = name; + name2 = name2 + "_ANGRY"; + Drops.add( mmh.makeSkull(MobHeads.valueOf(name2).getTexture().toString(), + mmh.langName.getString(name2.toLowerCase(), event.getEntity().getName() + " Head"), entity.getKiller()) ); + if (debug) {mmh.logDebug("EDE " + name2 + " Head Dropped");} + } + } + if (debug) {mmh.logDebug("EDE " + MobHeads.valueOf(name) + " killed");} + break; + default: + //mmh.makeSkull(MobHeads.valueOf(name).getTexture(), name); + if(debug){mmh.logDebug("EDE name=" + name + " line:820");} + if(debug){mmh.logDebug("EDE texture=" + MobHeads.valueOf(name).getTexture().toString() + " line:821");} + if(debug){mmh.logDebug("EDE location=" + entity.getLocation().toString() + " line:822");} + if(debug){mmh.logDebug("EDE getName=" + event.getEntity().getName() + " line:823");} + if(debug){mmh.logDebug("EDE killer=" + entity.getKiller().toString() + " line:824");} + // ConfigHelper.Double(chanceConfig, "chance_percent." + name.toLowerCase(), defpercent) + if(mmh.DropIt(event, ConfigHelper.Double(chanceConfig, "chance_percent." + name.toLowerCase(), defpercent) )){ + Drops.add( mmh.makeSkull(MobHeads.valueOf(name).getTexture().toString(), + mmh.langName.getString(name.toLowerCase(), event.getEntity().getName() + " Head"), entity.getKiller())); + if(debug){mmh.logDebug("EDE " + name + " Head Dropped");} + if(mmh.getConfig().getBoolean("announce.mobs.enabled", true)){ + announceBeheading(entity, mmh.langName.getString(name.toLowerCase(), MobHeads.valueOf(name).getName() + "").replace(" Head", ""), + entity.getKiller(), mmh.getConfig().getBoolean("announce.mobs.displayname", true)); + } + } + if(debug){mmh.logDebug("EDE " + MobHeads.valueOf(name) + " killed");} + break; + } } + //} + //} + return; } + } } - + @SuppressWarnings({ "static-access", "unused" }) @EventHandler(priority = EventPriority.LOWEST) public void onCreatureSpawn(CreatureSpawnEvent event){ //onEntitySpawn(EntitySpawnEvent e) { // TODO: onCreatureSpawn if(mmh.getConfig().getBoolean("wandering_trades.custom_wandering_trader", true)){ Entity entity = event.getEntity(); - if(entity instanceof WanderingTrader){ - //traderHeads2 = YamlConfiguration.loadConfiguration(traderFile2); - if(debug){mmh.logDebug("CSE WanderingTrader spawned");} - WanderingTrader trader = (WanderingTrader) entity; - List recipes = new ArrayList(); - final List oldRecipes = trader.getRecipes(); - - /** - * Player Heads - */ - if(mmh.getConfig().getBoolean("wandering_trades.player_heads.enabled", true)){ - // Check if default max heads is larger than number of playerheads - int numOfplayerheads = (playerhead_recipes.size() - 1) >= 0 ? playerhead_recipes.size() - 1 : 0; - int phMaxDef = (3 >= numOfplayerheads) ? 3: numOfplayerheads; - - int playerRandom = mmh.randomBetween(mmh.getConfig().getInt("wandering_trades.player_heads.min", 0), mmh.getConfig().getInt("wandering_trades.player_heads.max", phMaxDef)); - if(debug){mmh.logDebug("CSE.PH playerRandom=" + playerRandom);} - if(playerRandom > 0){ - if(debug){mmh.logDebug("CSE.PH playerRandom > 0");} - - if(debug){mmh.logDebug("CSE.PH numOfplayerheads=" + numOfplayerheads);} - HashSet used = new HashSet(); - outerLoop: - for(int i=0; i numOfplayerheads) { //while we have already used the number - randomPlayerHead = mmh.randomBetween(0, numOfplayerheads); //generate a new one because it's already used - // infinite loop catch - if(i >= 500) { - if(debug){mmh.logDebug("CSE.PH timed out");} - break outerLoop; - } - } - //by this time, add will be unique - used.add(randomPlayerHead); - recipes.add(playerhead_recipes.get(randomPlayerHead)); + if(entity instanceof WanderingTrader){ + //traderHeads2 = YamlConfiguration.loadConfiguration(traderFile2); + if(debug){mmh.logDebug("CSE WanderingTrader spawned");} + WanderingTrader trader = (WanderingTrader) entity; + List recipes = new ArrayList(); + final List oldRecipes = trader.getRecipes(); + + /** + * Player Heads + */ + if(mmh.getConfig().getBoolean("wandering_trades.player_heads.enabled", true)){ + // Check if default max heads is larger than number of playerheads + int numOfplayerheads = (playerhead_recipes.size() - 1) >= 0 ? playerhead_recipes.size() - 1 : 0; + int phMaxDef = (3 >= numOfplayerheads) ? 3: numOfplayerheads; + + int playerRandom = mmh.randomBetween(mmh.getConfig().getInt("wandering_trades.player_heads.min", 0), mmh.getConfig().getInt("wandering_trades.player_heads.max", phMaxDef)); + if(debug){mmh.logDebug("CSE.PH playerRandom=" + playerRandom);} + if(playerRandom > 0){ + if(debug){mmh.logDebug("CSE.PH playerRandom > 0");} + + if(debug){mmh.logDebug("CSE.PH numOfplayerheads=" + numOfplayerheads);} + HashSet used = new HashSet(); + outerLoop: + for(int i=0; i numOfplayerheads)) { //while we have already used the number + randomPlayerHead = mmh.randomBetween(0, numOfplayerheads); //generate a new one because it's already used + // infinite loop catch + if(i >= 500) { + if(debug){mmh.logDebug("CSE.PH timed out");} + break outerLoop; + } } - used.clear(); + //by this time, add will be unique + used.add(randomPlayerHead); + recipes.add(playerhead_recipes.get(randomPlayerHead)); } - } - /** - * Block Heads - */ - if(mmh.getConfig().getBoolean("wandering_trades.block_heads.enabled", true)){ - // check if default max block heads is larger than number of blockheads - int numOfblockheads = BHNum >= 0 ? BHNum : 0; - int bhMaxDef = (5 >= numOfblockheads) ? 5: numOfblockheads; - - int min = mmh.getConfig().getInt("wandering_trades.block_heads.pre_116.min", 0); - int max; - if( Double.parseDouble(mmh.getMCVersion().substring(0, 4)) >= 1.16 ){ - max = mmh.getConfig().getInt("wandering_trades.block_heads.pre_116.max", bhMaxDef); - }else{ - max = mmh.getConfig().getInt("wandering_trades.block_heads.pre_116.max", bhMaxDef); + used.clear(); + } + } + /** + * Block Heads + */ + if(mmh.getConfig().getBoolean("wandering_trades.block_heads.enabled", true)){ + // check if default max block heads is larger than number of blockheads + int numOfblockheads = BHNum >= 0 ? BHNum : 0; + int bhMaxDef = (5 >= numOfblockheads) ? 5: numOfblockheads; + + int min = mmh.getConfig().getInt("wandering_trades.block_heads.pre_116.min", 0); + int max; + if( Double.parseDouble(mmh.getMCVersion().substring(0, 4)) >= 1.16 ){ + max = mmh.getConfig().getInt("wandering_trades.block_heads.pre_116.max", bhMaxDef); + }else{ + max = mmh.getConfig().getInt("wandering_trades.block_heads.pre_116.max", bhMaxDef); + } + if(debug){mmh.logDebug("CSE BH1 min=" + min + " max=" + max);} + int blockRandom = mmh.randomBetween(min, max); + if(debug){mmh.logDebug("CSE blockRandom=" + blockRandom);} + if(blockRandom > 0){ + if(debug){mmh.logDebug("CSE blockRandom > 0");} + + if(debug){mmh.logDebug("CSE numOfblockheads=" + numOfblockheads);} + HashSet used = new HashSet(); + outerLoop: + for(int i=0; i 0");} - - if(debug){mmh.logDebug("CSE numOfblockheads=" + numOfblockheads);} - HashSet used = new HashSet(); - outerLoop: + used.clear(); + } + } + + + /** + * Block Heads 2 + */ + if(mmh.getConfig().getBoolean("wandering_trades.block_heads.enabled", true)){ + if( Double.parseDouble(mmh.getMCVersion().substring(0, 4)) >= 1.16 ){ + // check if default max BH is larger than number of block heads + int numOfblockheads = ((BHNum + BHNum2) - 1) >= 0 ? (BHNum + BHNum2) - 1 : 0; + int bhMaxDef = (5 >= numOfblockheads) ? 5: numOfblockheads; + + int min = mmh.getConfig().getInt("wandering_trades.block_heads.is_116.min", 0); + int max = mmh.getConfig().getInt("wandering_trades.block_heads.is_116.max", bhMaxDef); + if(debug){mmh.logDebug("CSE BH2 min=" + min + " max=" + max);} + int blockRandom = mmh.randomBetween(min, max); + if(debug){mmh.logDebug("CSE blockRandom=" + blockRandom);} + if(blockRandom > 0){ + if(debug){mmh.logDebug("CSE blockRandom > 0");} + + if(debug){mmh.logDebug("CSE numOfblockheads=" + numOfblockheads);} + HashSet used = new HashSet(); + outerLoop: for(int i=0; i= 1.16 ){ - // check if default max BH is larger than number of block heads - int numOfblockheads = (BHNum + BHNum2 - 1) >= 0 ? BHNum + BHNum2 - 1 : 0; - int bhMaxDef = (5 >= numOfblockheads) ? 5: numOfblockheads; - - int min = mmh.getConfig().getInt("wandering_trades.block_heads.is_116.min", 0); - int max = mmh.getConfig().getInt("wandering_trades.block_heads.is_116.max", bhMaxDef); - if(debug){mmh.logDebug("CSE BH2 min=" + min + " max=" + max);} - int blockRandom = mmh.randomBetween(min, max); - if(debug){mmh.logDebug("CSE blockRandom=" + blockRandom);} - if(blockRandom > 0){ - if(debug){mmh.logDebug("CSE blockRandom > 0");} - - if(debug){mmh.logDebug("CSE numOfblockheads=" + numOfblockheads);} - HashSet used = new HashSet(); - outerLoop: - for(int i=0; i= 1.17 ){ - // check if default max BH is larger than number of blockheads - int numOfblockheads = (BHNum + BHNum2 + BHNum3 - 1) >=0 ? BHNum + BHNum2 + BHNum3 - 1 : 0; - int bhMaxDef = (5 >= numOfblockheads) ? 5: numOfblockheads; - - int min1 = mmh.getConfig().getInt("wandering_trades.block_heads.is_117.min", 0); - //int max1 = mmh.getConfig().getInt("wandering_trades.block_heads.is_117.max", 5) / 2; - int max1 = mmh.getConfig().getInt("wandering_trades.block_heads.is_117.max", 5); - if(debug){mmh.logDebug("CSE BH2 min=" + min1 + " max=" + max1);} - int blockRandom1 = mmh.randomBetween(min1, max1); - if(debug){mmh.logDebug("CSE blockRandom=" + blockRandom1);} - if(blockRandom1 > 0){ - if(debug){mmh.logDebug("CSE blockRandom > 0");} - - if(debug){mmh.logDebug("CSE numOfblockheads=" + numOfblockheads);} - HashSet used = new HashSet(); - outerLoop: - for(int i=0; i= 0 ? custometrade_recipes.size() - 1 : 0; - numOfCustomTrades = numOfCustomTrades - 1; - int ctMaxDef = (5 >= numOfCustomTrades) ? 5: numOfCustomTrades; - - int customRandom = mmh.randomBetween(mmh.getConfig().getInt("wandering_trades.custom_trades.min", 0), mmh.getConfig().getInt("wandering_trades.custom_trades.max", ctMaxDef)); - - //if(debug){logDebug("CSE numOfCustomTrades=" + numOfCustomTrades);} - //int customRandom = randomBetween(getConfig().getInt("wandering_trades.min_custom_trades", 0), mmh.getConfig().getInt("wandering_trades.max_custom_trades", 3)); - if(debug){mmh.logDebug("CSE customRandom=" + customRandom);} - if(customRandom > 0){ - if(debug){mmh.logDebug("CSE customRandom > 0");} - //for(int randomCustomTrade=1; randomCustomTrade used = new HashSet(); - for(int i=0; i chance){ - - recipes.add(custometrade_recipes.get(i)); - } - if(i >= 500) { - if(debug){mmh.logDebug("CSE.CT timed out");} - break ; - } - } - used.clear(); - } - } - - if(mmh.getConfig().getBoolean("wandering_trades.keep_default_trades", true)){ - recipes.addAll(oldRecipes); } - trader.setRecipes(recipes); - /**}});//*/ + if( Double.parseDouble(mmh.getMCVersion().substring(0, 4)) >= 1.17 ){ + // check if default max BH is larger than number of blockheads + int numOfblockheads = ((BHNum + BHNum2 + BHNum3) - 1) >=0 ? (BHNum + BHNum2 + BHNum3) - 1 : 0; + int bhMaxDef = (5 >= numOfblockheads) ? 5: numOfblockheads; + + int min1 = mmh.getConfig().getInt("wandering_trades.block_heads.is_117.min", 0); + //int max1 = mmh.getConfig().getInt("wandering_trades.block_heads.is_117.max", 5) / 2; + int max1 = mmh.getConfig().getInt("wandering_trades.block_heads.is_117.max", 5); + if(debug){mmh.logDebug("CSE BH2 min=" + min1 + " max=" + max1);} + int blockRandom1 = mmh.randomBetween(min1, max1); + if(debug){mmh.logDebug("CSE blockRandom=" + blockRandom1);} + if(blockRandom1 > 0){ + if(debug){mmh.logDebug("CSE blockRandom > 0");} + + if(debug){mmh.logDebug("CSE numOfblockheads=" + numOfblockheads);} + HashSet used = new HashSet(); + outerLoop: + for(int i=0; i= 0 ? custometrade_recipes.size() - 1 : 0; + numOfCustomTrades = numOfCustomTrades - 1; + int ctMaxDef = (5 >= numOfCustomTrades) ? 5: numOfCustomTrades; + + int customRandom = mmh.randomBetween(mmh.getConfig().getInt("wandering_trades.custom_trades.min", 0), mmh.getConfig().getInt("wandering_trades.custom_trades.max", ctMaxDef)); + + //if(debug){logDebug("CSE numOfCustomTrades=" + numOfCustomTrades);} + //int customRandom = randomBetween(getConfig().getInt("wandering_trades.min_custom_trades", 0), mmh.getConfig().getInt("wandering_trades.max_custom_trades", 3)); + if(debug){mmh.logDebug("CSE customRandom=" + customRandom);} + if(customRandom > 0){ + if(debug){mmh.logDebug("CSE customRandom > 0");} + //for(int randomCustomTrade=1; randomCustomTrade used = new HashSet(); + for(int i=0; i chance){ + + recipes.add(custometrade_recipes.get(i)); + } + if(i >= 500) { + if(debug){mmh.logDebug("CSE.CT timed out");} + break ; + } + } + used.clear(); } - sender.sendMessage(ChatColor.WHITE + " /mmh fixhead - " + mmh.get("mmh.command.headfix") ); - sender.sendMessage(ChatColor.WHITE + " /mmh givemh - " + mmh.get("mmh.command.give.mobhead") ); - sender.sendMessage(ChatColor.WHITE + " /mmh giveph - " + mmh.get("mmh.command.give.playerhead") ); - sender.sendMessage(ChatColor.WHITE + " /mmh givebh - " + mmh.get("mmh.command.give.blockhead") ); - sender.sendMessage(ChatColor.WHITE + " /mmh display perms/vars - " + mmh.get("mmh.command.display.help") ); - sender.sendMessage(ChatColor.WHITE + " "); - sender.sendMessage(ChatColor.GREEN + "[]===============[" + ChatColor.YELLOW + mmh.getName() + ChatColor.GREEN + "]===============[]"); + } + + if(mmh.getConfig().getBoolean("wandering_trades.keep_default_trades", true)){ + recipes.addAll(oldRecipes); + } + trader.setRecipes(recipes); + /**}});//*/ + } + + } + + } + + @Override @SuppressWarnings({ "unused", "static-access", "rawtypes", "unchecked" }) + public boolean onCommand(CommandSender sender, Command cmd, String label, String[] args){ // TODO: Commands + //log("command=" + cmd.getName() + " args=" + args[0] + args[1]); + if (cmd.getName().equalsIgnoreCase("MMH")){ + if (args.length == 0){ + sender.sendMessage(ChatColor.GREEN + "[]===============[" + ChatColor.YELLOW + mmh.getName() + ChatColor.GREEN + "]===============[]"); + sender.sendMessage(ChatColor.WHITE + " ");// https://ko-fi.com/joelgodofwar + sender.sendMessage(ChatColor.WHITE + " " + mmh.get("mmh.version.donate") + ": https://ko-fi.com/joelgodofwar");// https://ko-fi.com/joelgodofwar + sender.sendMessage(ChatColor.WHITE + " ");// https://ko-fi.com/joelgodofwar + sender.sendMessage(ChatColor.WHITE + " /mmh reload - " + mmh.get("mmh.command.reload", "Reloads this plugin."));//subject to server admin approval"); + sender.sendMessage(ChatColor.WHITE + " /mmh toggledebug - " + mmh.get("mmh.command.debuguse", "Temporarily toggles debug."));//Cancels SinglePlayerSleep"); + if(mmh.getConfig().getBoolean("wandering_trades.custom_wandering_trader", true)){ + sender.sendMessage(ChatColor.WHITE + " /mmh playerheads - " + mmh.get("mmh.command.playerheads", "Shows how to use the playerheads commands")); + //sender.sendMessage(ChatColor.WHITE + " /mmh blockheads - " + mmh.lang.get("blockheads", "Shows how to use the blockheads commands")); + sender.sendMessage(ChatColor.WHITE + " /mmh customtrader - " + mmh.get("mmh.command.customtrader", "Shows how to use the customtrader commands")); + } + sender.sendMessage(ChatColor.WHITE + " /mmh fixhead - " + mmh.get("mmh.command.headfix") ); + sender.sendMessage(ChatColor.WHITE + " /mmh givemh - " + mmh.get("mmh.command.give.mobhead") ); + sender.sendMessage(ChatColor.WHITE + " /mmh giveph - " + mmh.get("mmh.command.give.playerhead") ); + sender.sendMessage(ChatColor.WHITE + " /mmh givebh - " + mmh.get("mmh.command.give.blockhead") ); + sender.sendMessage(ChatColor.WHITE + " /mmh display perms/vars - " + mmh.get("mmh.command.display.help") ); + sender.sendMessage(ChatColor.WHITE + " "); + sender.sendMessage(ChatColor.GREEN + "[]===============[" + ChatColor.YELLOW + mmh.getName() + ChatColor.GREEN + "]===============[]"); + return true; + } + if(args[0].equalsIgnoreCase("headNBT")){ + if(!(sender instanceof Player)) { return true; } - if(args[0].equalsIgnoreCase("headNBT")){ - if(!(sender instanceof Player)) { - return true; - } - Player player = (Player) sender; - ItemStack mainHand = player.getInventory().getItemInMainHand(); - ItemStack offHand = player.getInventory().getItemInOffHand(); - if( mainHand != null && mainHand.getType().equals(Material.PLAYER_HEAD) ) { - NBTItem item = new NBTItem(mainHand); - log("" + item); - player.sendMessage("" + item); - }else if( offHand != null && offHand.getType().equals(Material.PLAYER_HEAD) ) { - NBTItem item = new NBTItem(offHand); - player.sendMessage("" + item); - log("" + item); - }else { - //log(Level.INFO,"You do not have a head in either hand."); - player.sendMessage("" + mmh.get("mmh.command.headnbt") ); - } + Player player = (Player) sender; + ItemStack mainHand = player.getInventory().getItemInMainHand(); + ItemStack offHand = player.getInventory().getItemInOffHand(); + if( (mainHand != null) && mainHand.getType().equals(Material.PLAYER_HEAD) ) { + NBTItem item = new NBTItem(mainHand); + log("" + item); + player.sendMessage("" + item); + }else if( (offHand != null) && offHand.getType().equals(Material.PLAYER_HEAD) ) { + NBTItem item = new NBTItem(offHand); + player.sendMessage("" + item); + log("" + item); + }else { + //log(Level.INFO,"You do not have a head in either hand."); + player.sendMessage("" + mmh.get("mmh.command.headnbt") ); } - // /mmh display permvar playername - // / 0 1 2 - if(args[0].equalsIgnoreCase("display")){ - if(args[1].equalsIgnoreCase("perms")||args[1].equalsIgnoreCase("permissions")){ - if(sender instanceof Player) { - Player player = (Player) sender; - sender.sendMessage("" + mmh.get("mmh.command.display.you").replace("", player.getDisplayName()) ); - sender.sendMessage("moremobheads.players=" + player.hasPermission("moremobheads.players")); - sender.sendMessage("moremobheads.mobs=" + player.hasPermission("moremobheads.mobs")); - sender.sendMessage("moremobheads.nametag=" + player.hasPermission("moremobheads.nametag")); - sender.sendMessage("moremobheads.reload=" + player.hasPermission("moremobheads.reload")); - sender.sendMessage("moremobheads.toggledebug=" + player.hasPermission("moremobheads.toggledebug")); - sender.sendMessage("moremobheads.showUpdateAvailable=" + player.hasPermission("moremobheads.showUpdateAvailable")); - sender.sendMessage("moremobheads.customtrader=" + player.hasPermission("moremobheads.customtrader")); - sender.sendMessage("moremobheads.playerheads=" + player.hasPermission("moremobheads.playerheads")); - sender.sendMessage("moremobheads.blockheads=" + player.hasPermission("moremobheads.blockheads")); - sender.sendMessage("moremobheads.fixhead=" + player.hasPermission("moremobheads.fixhead")); - sender.sendMessage("moremobheads.give=" + player.hasPermission("moremobheads.give")); - sender.sendMessage("" + mmh.getName() + " " + mmh.getDescription().getVersion() + " display perms end"); - }else { - if(args.length >= 2) { - Player player = sender.getServer().getPlayer(args[2]); - sender.sendMessage("" + mmh.get("mmh.command.display.them").replace("", player.getDisplayName()) ); - sender.sendMessage("moremobheads.players=" + player.hasPermission("moremobheads.players")); - sender.sendMessage("moremobheads.mobs=" + player.hasPermission("moremobheads.mobs")); - sender.sendMessage("moremobheads.nametag=" + player.hasPermission("moremobheads.nametag")); - sender.sendMessage("moremobheads.reload=" + player.hasPermission("moremobheads.reload")); - sender.sendMessage("moremobheads.toggledebug=" + player.hasPermission("moremobheads.toggledebug")); - sender.sendMessage("moremobheads.showUpdateAvailable=" + player.hasPermission("moremobheads.showUpdateAvailable")); - sender.sendMessage("moremobheads.customtrader=" + player.hasPermission("moremobheads.customtrader")); - sender.sendMessage("moremobheads.playerheads=" + player.hasPermission("moremobheads.playerheads")); - sender.sendMessage("moremobheads.blockheads=" + player.hasPermission("moremobheads.blockheads")); - sender.sendMessage("moremobheads.fixhead=" + player.hasPermission("moremobheads.fixhead")); - sender.sendMessage("moremobheads.give=" + player.hasPermission("moremobheads.give")); - sender.sendMessage("" + mmh.getName() + " " + mmh.getDescription().getVersion() + " display perms end"); - }else { - sender.sendMessage("Console can only check permissions of Players."); - } - } - }else if(args[1].equalsIgnoreCase("vars")||args[1].equalsIgnoreCase("variables")){ - sender.sendMessage("" + mmh.getName() + " " + mmh.getDescription().getVersion() + " display varss start"); - sender.sendMessage("debug=" + debug); - sender.sendMessage("daLang=" + mmh.daLang); - - world_whitelist = mmh.getConfig().getString("world.whitelist", ""); - world_blacklist = mmh.getConfig().getString("world.blacklist", ""); - mob_whitelist = mmh.getConfig().getString("mob.whitelist", ""); - mob_blacklist = mmh.getConfig().getString("mob.blacklist", ""); - - sender.sendMessage("world_whitelist=" + world_whitelist); - sender.sendMessage("world_blacklist=" + world_blacklist); - sender.sendMessage("mob_whitelist=" + mob_whitelist); - sender.sendMessage("mob_blacklist=" + mob_blacklist); - sender.sendMessage("" + mmh.getName() + " " + mmh.getDescription().getVersion() + " display varss end"); - }else if(args[1].equalsIgnoreCase("chance")||args[1].equalsIgnoreCase("chance_percent")){ - ConfigurationSection cs = chanceConfig.getConfigurationSection("chance_percent"); - List daSet = new ArrayList(); - //log(Level.INFO, "args.lngth=" + args.length); - if(args.length == 3) { - for(String key : cs.getKeys(true)){ - if(key.contains(args[2])) { - sender.sendMessage("" + key + "=" + cs.get(key)); - daSet.add("" + key + "=" + cs.get(key)); - } - } - - if(!daSet.isEmpty()) { - File chanceFile = new File(mmh.getDataFolder() + "" + File.separatorChar + "logs" + File.separatorChar, "chance_dump" + ".log"); - PrintWriter pw = null; - try { - pw = new PrintWriter( - new OutputStreamWriter(new FileOutputStream(chanceFile), "UTF-8")); - for (String s : daSet) { - pw.println(s); - } - pw.flush(); - } catch (UnsupportedEncodingException | FileNotFoundException e) { - e.printStackTrace(); - } finally { - pw.close(); - } - sender.sendMessage("chance_config.yml has been dumped into " + chanceFile.toString()); - log("chance_config.yml has been dumped into " + chanceFile.toString()); - }else { - sender.sendMessage("" + args[2] + " was not found in chance_percent.yml"); - } - }else { - for(String key : cs.getKeys(true)){ - if(!cs.get(key).toString().contains("MemorySection")) { - sender.sendMessage("" + key + "=" + cs.get(key).toString()); - daSet.add("" + key + "=" + cs.get(key).toString()); - } - } - if(!daSet.isEmpty()) { - File chanceFile = new File(mmh.getDataFolder() + "" + File.separatorChar + "logs" + File.separatorChar, "chance_dump" + ".log"); - PrintWriter pw = null; - try { - pw = new PrintWriter( - new OutputStreamWriter(new FileOutputStream(chanceFile), "UTF-8")); - for (String s : daSet) { - pw.println(s); - } - pw.flush(); - } catch (UnsupportedEncodingException | FileNotFoundException e) { - e.printStackTrace(); - } finally { - pw.close(); - } - sender.sendMessage("chance_config.yml has been dumped into " + chanceFile.toString()); - log("chance_config.yml has been dumped into " + chanceFile.toString()); - }else { - sender.sendMessage("Error dumping chance_percent.yml"); - } - } - //chanceConfig - - - } - } - if(args[0].equalsIgnoreCase("reload")){ - String perm = "moremobheads.reload"; - boolean hasPerm = sender.hasPermission(perm); - if(debug){mmh.logDebug(sender.getName() + " has the permission " + perm + "=" + hasPerm);} - if(hasPerm||!(sender instanceof Player)){ - mmh.configReload(); - blockFile117 = new File(mmh.getDataFolder() + "" + File.separatorChar + "block_heads_1_17.yml"); - blockFile1172 = new File(mmh.getDataFolder() + "" + File.separatorChar + "block_heads_1_17_2.yml"); - blockFile1173 = new File(mmh.getDataFolder() + "" + File.separatorChar + "block_heads_1_17_3.yml"); - blockFile119 = new File(mmh.getDataFolder() + "" + File.separatorChar + "block_heads_1_19.yml"); - if(mmh.getConfig().getBoolean("wandering_trades.custom_wandering_trader", true)){ - if(!blockFile117.exists()){ - mmh.saveResource("block_heads_1_17.yml", true); - mmh.log(Level.INFO, "block_heads_1_17.yml not found! Creating in " + mmh.getDataFolder() + ""); - } - if(!blockFile1172.exists()){ - mmh.saveResource("block_heads_1_17_2.yml", true); - mmh.log(Level.INFO, "block_heads_1_17_2.yml not found! Creating in " + mmh.getDataFolder() + ""); - } - if(!blockFile1173.exists()){ - mmh.saveResource("block_heads_1_17_3.yml", true); - mmh.log(Level.INFO, "block_heads_1_17_3.yml not found! Creating in " + mmh.getDataFolder() + ""); - } - blockHeads = new YamlConfiguration(); - try { - mmh.log(Level.INFO, "Loading " + blockFile117 + "..."); - blockHeads.load(blockFile117); - } catch (IOException | InvalidConfigurationException e1) { - mmh.stacktraceInfo(); - e1.printStackTrace(); - } - blockHeads2 = new YamlConfiguration(); - try { - mmh.log(Level.INFO, "Loading " + blockFile1172 + "..."); - blockHeads2.load(blockFile1172); - } catch (IOException | InvalidConfigurationException e1) { - mmh.stacktraceInfo(); - e1.printStackTrace(); - } - if(Double.parseDouble(mmh.getMCVersion().substring(0, 4)) >= 1.19) { - blockFile1173 = blockFile119; - } - blockHeads3 = new YamlConfiguration(); - try { - mmh.log(Level.INFO, "Loading " + blockFile1173 + "..."); - blockHeads3.load(blockFile1173); - } catch (IOException | InvalidConfigurationException e1) { - mmh.stacktraceInfo(); - e1.printStackTrace(); - } - - boolean showlore = mmh.getConfig().getBoolean("lore.show_plugin_name", true); - ArrayList headlore = new ArrayList(); - headlore.add(ChatColor.AQUA + "" + mmh.getName()); - - mmh.log(Level.INFO, "Loading PlayerHead Recipes..."); - for(int i=1; i < mmh.playerHeads.getInt("players.number") + 1; i++){ - ItemStack price1 = mmh.playerHeads.getItemStack("players.player_" + i + ".price_1", new ItemStack(Material.AIR)); - ItemStack price2 = mmh.playerHeads.getItemStack("players.player_" + i + ".price_2", new ItemStack(Material.AIR)); - ItemStack itemstack = mmh.playerHeads.getItemStack("players.player_" + i + ".itemstack", new ItemStack(Material.AIR)); - if(showlore) { - SkullMeta meta = (SkullMeta)itemstack.getItemMeta(); - meta.setLore(headlore); - itemstack.setItemMeta(meta); - itemstack.setItemMeta(meta); - } - MerchantRecipe recipe = new MerchantRecipe(itemstack, mmh.playerHeads.getInt("players.player_" + i + ".quantity", (int) 3)); - recipe.addIngredient(price1); - recipe.addIngredient(price2); - playerhead_recipes.add(recipe); - } - mmh.log(Level.INFO, playerhead_recipes.size() + " PlayerHead Recipes ADDED..."); - mmh.log(Level.INFO, "Loading BlockHead Recipes..."); - BHNum = blockHeads.getInt("blocks.number"); - // BlockHeads - mmh.log(Level.INFO, "BlockHeads=" + BHNum); - for(int i=1; i < BHNum + 1; i++){ - ItemStack price1 = blockHeads.getItemStack("blocks.block_" + i + ".price_1", new ItemStack(Material.AIR)); - ItemStack price2 = blockHeads.getItemStack("blocks.block_" + i + ".price_2", new ItemStack(Material.AIR)); - ItemStack itemstack = blockHeads.getItemStack("blocks.block_" + i + ".itemstack", new ItemStack(Material.AIR)); - if(showlore) { - SkullMeta meta = (SkullMeta)itemstack.getItemMeta(); - meta.setLore(headlore); - itemstack.setItemMeta(meta); - itemstack.setItemMeta(meta); - } - MerchantRecipe recipe = new MerchantRecipe(itemstack, blockHeads.getInt("blocks.block_" + i + ".quantity", (int) 8)); - recipe.setExperienceReward(true); - recipe.addIngredient(price1); - recipe.addIngredient(price2); - blockhead_recipes.add(recipe); - } - BHNum2 = blockHeads2.getInt("blocks.number"); - // blockHeads 2 - mmh.log(Level.INFO, "BlockHeads2=" + BHNum2); - for(int i=1; i < BHNum2 + 1; i++){ - ItemStack price1 = blockHeads2.getItemStack("blocks.block_" + i + ".price_1", new ItemStack(Material.AIR)); - ItemStack price2 = blockHeads2.getItemStack("blocks.block_" + i + ".price_2", new ItemStack(Material.AIR)); - ItemStack itemstack = blockHeads2.getItemStack("blocks.block_" + i + ".itemstack", new ItemStack(Material.AIR)); - if(showlore) { - SkullMeta meta = (SkullMeta)itemstack.getItemMeta(); - meta.setLore(headlore); - itemstack.setItemMeta(meta); - itemstack.setItemMeta(meta); - } - MerchantRecipe recipe = new MerchantRecipe(itemstack, blockHeads2.getInt("blocks.block_" + i + ".quantity", (int) 8)); - recipe.setExperienceReward(true); - recipe.addIngredient(price1); - recipe.addIngredient(price2); - blockhead_recipes.add(recipe); - } - BHNum3 = blockHeads3.getInt("blocks.number"); - // blockHeads 3 - mmh.log(Level.INFO, "BlockHeads3=" + BHNum3); - for(int i=1; i < BHNum3 + 1; i++){ - ItemStack price1 = blockHeads3.getItemStack("blocks.block_" + i + ".price_1", new ItemStack(Material.AIR)); - ItemStack price2 = blockHeads3.getItemStack("blocks.block_" + i + ".price_2", new ItemStack(Material.AIR)); - ItemStack itemstack = blockHeads3.getItemStack("blocks.block_" + i + ".itemstack", new ItemStack(Material.AIR)); - if(showlore) { - SkullMeta meta = (SkullMeta)itemstack.getItemMeta(); - meta.setLore(headlore); - itemstack.setItemMeta(meta); - itemstack.setItemMeta(meta); - } - MerchantRecipe recipe = new MerchantRecipe(itemstack, blockHeads3.getInt("blocks.block_" + i + ".quantity", (int) 8)); - recipe.setExperienceReward(true); - recipe.addIngredient(price1); - recipe.addIngredient(price2); - blockhead_recipes.add(recipe); - } - - mmh.log(Level.INFO, blockhead_recipes.size() + " BlockHead Recipes ADDED..."); - mmh.log(Level.INFO, "Loading CustomTrades Recipes..."); - for(int i=1; i < mmh.traderCustom.getInt("custom_trades.number") + 1; i++){ - ItemStack price1 = mmh.traderCustom.getItemStack("custom_trades.trade_" + i + ".price_1", new ItemStack(Material.AIR)); - ItemStack price2 = mmh.traderCustom.getItemStack("custom_trades.trade_" + i + ".price_2", new ItemStack(Material.AIR)); - ItemStack itemstack = mmh.traderCustom.getItemStack("custom_trades.trade_" + i + ".itemstack", new ItemStack(Material.AIR)); - MerchantRecipe recipe = new MerchantRecipe(itemstack, mmh.traderCustom.getInt("custom_trades.trade_" + i + ".quantity", (int) 1)); - recipe.setExperienceReward(true); - recipe.addIngredient(price1); - recipe.addIngredient(price2); - custometrade_recipes.add(recipe); - } - mmh.log(Level.INFO, custometrade_recipes.size() + " CustomTrades Recipes ADDED..."); - } - sender.sendMessage(ChatColor.YELLOW + mmh.getName() + ChatColor.RED + " " + mmh.get("mmh.message.reloaded")); - return true; - }else if(!hasPerm){ - sender.sendMessage(ChatColor.YELLOW + mmh.getName() + ChatColor.RED + " " + mmh.get("mmh.message.noperm").toString().replace("", perm) ); - return false; - } - } - if(args[0].equalsIgnoreCase("toggledebug")||args[0].equalsIgnoreCase("td")){ - String perm = "moremobheads.toggledebug"; - boolean hasPerm = sender.hasPermission(perm); - if(debug){logDebug(sender.getName() + " has the permission " + perm + "=" + hasPerm);} - if(sender.isOp()||hasPerm||!(sender instanceof Player)){ - debug = !debug; - mmh.debug = debug; - sender.sendMessage(ChatColor.YELLOW + mmh.getName() + ChatColor.RED + " " + mmh.get("mmh.message.debugtrue").toString().replace("boolean", "" + debug)); - return true; - }else if(!hasPerm){ - sender.sendMessage(ChatColor.YELLOW + mmh.getName() + ChatColor.RED + " " + mmh.get("mmh.message.noperm").toString().replace("", perm) ); - return false; - } - } - if(args[0].equalsIgnoreCase("customtrader")||args[0].equalsIgnoreCase("ct")){ - String perm = "moremobheads.customtrader"; - boolean hasPerm = sender.hasPermission(perm); - if(debug){logDebug(sender.getName() + " has the permission " + perm + "=" + hasPerm);} - if(hasPerm&&sender instanceof Player - && mmh.getConfig().getBoolean("wandering_trades.custom_wandering_trader", true)){ - log("has permission"); + } + // /mmh display permvar playername + // / 0 1 2 + if(args[0].equalsIgnoreCase("display")){ + if(args[1].equalsIgnoreCase("perms")||args[1].equalsIgnoreCase("permissions")){ + if(sender instanceof Player) { Player player = (Player) sender; - if(!(args.length >= 2)){ + sender.sendMessage("" + mmh.get("mmh.command.display.you").replace("", player.getDisplayName()) ); + sender.sendMessage("moremobheads.players=" + player.hasPermission("moremobheads.players")); + sender.sendMessage("moremobheads.mobs=" + player.hasPermission("moremobheads.mobs")); + sender.sendMessage("moremobheads.nametag=" + player.hasPermission("moremobheads.nametag")); + sender.sendMessage("moremobheads.reload=" + player.hasPermission("moremobheads.reload")); + sender.sendMessage("moremobheads.toggledebug=" + player.hasPermission("moremobheads.toggledebug")); + sender.sendMessage("moremobheads.showUpdateAvailable=" + player.hasPermission("moremobheads.showUpdateAvailable")); + sender.sendMessage("moremobheads.customtrader=" + player.hasPermission("moremobheads.customtrader")); + sender.sendMessage("moremobheads.playerheads=" + player.hasPermission("moremobheads.playerheads")); + sender.sendMessage("moremobheads.blockheads=" + player.hasPermission("moremobheads.blockheads")); + sender.sendMessage("moremobheads.fixhead=" + player.hasPermission("moremobheads.fixhead")); + sender.sendMessage("moremobheads.give=" + player.hasPermission("moremobheads.give")); + sender.sendMessage("" + mmh.getName() + " " + mmh.getDescription().getVersion() + " display perms end"); + } else if(args.length >= 2) { + Player player = sender.getServer().getPlayer(args[2]); + sender.sendMessage("" + mmh.get("mmh.command.display.them").replace("", player.getDisplayName()) ); + sender.sendMessage("moremobheads.players=" + player.hasPermission("moremobheads.players")); + sender.sendMessage("moremobheads.mobs=" + player.hasPermission("moremobheads.mobs")); + sender.sendMessage("moremobheads.nametag=" + player.hasPermission("moremobheads.nametag")); + sender.sendMessage("moremobheads.reload=" + player.hasPermission("moremobheads.reload")); + sender.sendMessage("moremobheads.toggledebug=" + player.hasPermission("moremobheads.toggledebug")); + sender.sendMessage("moremobheads.showUpdateAvailable=" + player.hasPermission("moremobheads.showUpdateAvailable")); + sender.sendMessage("moremobheads.customtrader=" + player.hasPermission("moremobheads.customtrader")); + sender.sendMessage("moremobheads.playerheads=" + player.hasPermission("moremobheads.playerheads")); + sender.sendMessage("moremobheads.blockheads=" + player.hasPermission("moremobheads.blockheads")); + sender.sendMessage("moremobheads.fixhead=" + player.hasPermission("moremobheads.fixhead")); + sender.sendMessage("moremobheads.give=" + player.hasPermission("moremobheads.give")); + sender.sendMessage("" + mmh.getName() + " " + mmh.getDescription().getVersion() + " display perms end"); + }else { + sender.sendMessage("Console can only check permissions of Players."); + } + }else if(args[1].equalsIgnoreCase("vars")||args[1].equalsIgnoreCase("variables")){ + sender.sendMessage("" + mmh.getName() + " " + mmh.getDescription().getVersion() + " display varss start"); + sender.sendMessage("debug=" + debug); + sender.sendMessage("daLang=" + mmh.daLang); + + world_whitelist = mmh.getConfig().getString("world.whitelist", ""); + world_blacklist = mmh.getConfig().getString("world.blacklist", ""); + mob_whitelist = mmh.getConfig().getString("mob.whitelist", ""); + mob_blacklist = mmh.getConfig().getString("mob.blacklist", ""); + + sender.sendMessage("world_whitelist=" + world_whitelist); + sender.sendMessage("world_blacklist=" + world_blacklist); + sender.sendMessage("mob_whitelist=" + mob_whitelist); + sender.sendMessage("mob_blacklist=" + mob_blacklist); + sender.sendMessage("" + mmh.getName() + " " + mmh.getDescription().getVersion() + " display varss end"); + }else if(args[1].equalsIgnoreCase("chance")||args[1].equalsIgnoreCase("chance_percent")){ + ConfigurationSection cs = chanceConfig.getConfigurationSection("chance_percent"); + List daSet = new ArrayList(); + //log(Level.INFO, "args.lngth=" + args.length); + if(args.length == 3) { + for(String key : cs.getKeys(true)){ + if(key.contains(args[2])) { + sender.sendMessage("" + key + "=" + cs.get(key)); + daSet.add("" + key + "=" + cs.get(key)); + } + } + + if(!daSet.isEmpty()) { + File chanceFile = new File(mmh.getDataFolder() + "" + File.separatorChar + "logs" + File.separatorChar, "chance_dump" + ".log"); + PrintWriter pw = null; + try { + pw = new PrintWriter( + new OutputStreamWriter(new FileOutputStream(chanceFile), "UTF-8")); + for (String s : daSet) { + pw.println(s); + } + pw.flush(); + } catch (UnsupportedEncodingException | FileNotFoundException e) { + e.printStackTrace(); + } finally { + pw.close(); + } + sender.sendMessage("chance_config.yml has been dumped into " + chanceFile.toString()); + log("chance_config.yml has been dumped into " + chanceFile.toString()); + }else { + sender.sendMessage("" + args[2] + " was not found in chance_percent.yml"); + } + }else { + for(String key : cs.getKeys(true)){ + if(!cs.get(key).toString().contains("MemorySection")) { + sender.sendMessage("" + key + "=" + cs.get(key).toString()); + daSet.add("" + key + "=" + cs.get(key).toString()); + } + } + if(!daSet.isEmpty()) { + File chanceFile = new File(mmh.getDataFolder() + "" + File.separatorChar + "logs" + File.separatorChar, "chance_dump" + ".log"); + PrintWriter pw = null; + try { + pw = new PrintWriter( + new OutputStreamWriter(new FileOutputStream(chanceFile), "UTF-8")); + for (String s : daSet) { + pw.println(s); + } + pw.flush(); + } catch (UnsupportedEncodingException | FileNotFoundException e) { + e.printStackTrace(); + } finally { + pw.close(); + } + sender.sendMessage("chance_config.yml has been dumped into " + chanceFile.toString()); + log("chance_config.yml has been dumped into " + chanceFile.toString()); + }else { + sender.sendMessage("Error dumping chance_percent.yml"); + } + } + //chanceConfig + + + } + } + if(args[0].equalsIgnoreCase("reload")){ + String perm = "moremobheads.reload"; + boolean hasPerm = sender.hasPermission(perm); + if(debug){mmh.logDebug(sender.getName() + " has the permission " + perm + "=" + hasPerm);} + if(hasPerm||!(sender instanceof Player)){ + mmh.configReload(); + blockFile117 = new File(mmh.getDataFolder() + "" + File.separatorChar + "block_heads_1_17.yml"); + blockFile1172 = new File(mmh.getDataFolder() + "" + File.separatorChar + "block_heads_1_17_2.yml"); + blockFile1173 = new File(mmh.getDataFolder() + "" + File.separatorChar + "block_heads_1_17_3.yml"); + blockFile119 = new File(mmh.getDataFolder() + "" + File.separatorChar + "block_heads_1_19.yml"); + if(mmh.getConfig().getBoolean("wandering_trades.custom_wandering_trader", true)){ + if(!blockFile117.exists()){ + mmh.saveResource("block_heads_1_17.yml", true); + mmh.log(Level.INFO, "block_heads_1_17.yml not found! Creating in " + mmh.getDataFolder() + ""); + } + if(!blockFile1172.exists()){ + mmh.saveResource("block_heads_1_17_2.yml", true); + mmh.log(Level.INFO, "block_heads_1_17_2.yml not found! Creating in " + mmh.getDataFolder() + ""); + } + if(!blockFile1173.exists()){ + mmh.saveResource("block_heads_1_17_3.yml", true); + mmh.log(Level.INFO, "block_heads_1_17_3.yml not found! Creating in " + mmh.getDataFolder() + ""); + } + blockHeads = new YamlConfiguration(); + try { + mmh.log(Level.INFO, "Loading " + blockFile117 + "..."); + blockHeads.load(blockFile117); + } catch (IOException | InvalidConfigurationException e1) { + mmh.stacktraceInfo(); + e1.printStackTrace(); + } + blockHeads2 = new YamlConfiguration(); + try { + mmh.log(Level.INFO, "Loading " + blockFile1172 + "..."); + blockHeads2.load(blockFile1172); + } catch (IOException | InvalidConfigurationException e1) { + mmh.stacktraceInfo(); + e1.printStackTrace(); + } + if(Double.parseDouble(mmh.getMCVersion().substring(0, 4)) >= 1.19) { + blockFile1173 = blockFile119; + } + blockHeads3 = new YamlConfiguration(); + try { + mmh.log(Level.INFO, "Loading " + blockFile1173 + "..."); + blockHeads3.load(blockFile1173); + } catch (IOException | InvalidConfigurationException e1) { + mmh.stacktraceInfo(); + e1.printStackTrace(); + } + + boolean showlore = mmh.getConfig().getBoolean("lore.show_plugin_name", true); + ArrayList headlore = new ArrayList(); + headlore.add(ChatColor.AQUA + "" + mmh.getName()); + + mmh.log(Level.INFO, "Loading PlayerHead Recipes..."); + for(int i=1; i < (mmh.playerHeads.getInt("players.number") + 1); i++){ + ItemStack price1 = mmh.playerHeads.getItemStack("players.player_" + i + ".price_1", new ItemStack(Material.AIR)); + ItemStack price2 = mmh.playerHeads.getItemStack("players.player_" + i + ".price_2", new ItemStack(Material.AIR)); + ItemStack itemstack = mmh.playerHeads.getItemStack("players.player_" + i + ".itemstack", new ItemStack(Material.AIR)); + if(showlore) { + SkullMeta meta = (SkullMeta)itemstack.getItemMeta(); + meta.setLore(headlore); + itemstack.setItemMeta(meta); + itemstack.setItemMeta(meta); + } + MerchantRecipe recipe = new MerchantRecipe(itemstack, mmh.playerHeads.getInt("players.player_" + i + ".quantity", 3)); + recipe.addIngredient(price1); + recipe.addIngredient(price2); + playerhead_recipes.add(recipe); + } + mmh.log(Level.INFO, playerhead_recipes.size() + " PlayerHead Recipes ADDED..."); + mmh.log(Level.INFO, "Loading BlockHead Recipes..."); + BHNum = blockHeads.getInt("blocks.number"); + // BlockHeads + mmh.log(Level.INFO, "BlockHeads=" + BHNum); + for(int i=1; i < (BHNum + 1); i++){ + ItemStack price1 = blockHeads.getItemStack("blocks.block_" + i + ".price_1", new ItemStack(Material.AIR)); + ItemStack price2 = blockHeads.getItemStack("blocks.block_" + i + ".price_2", new ItemStack(Material.AIR)); + ItemStack itemstack = blockHeads.getItemStack("blocks.block_" + i + ".itemstack", new ItemStack(Material.AIR)); + if(showlore) { + SkullMeta meta = (SkullMeta)itemstack.getItemMeta(); + meta.setLore(headlore); + itemstack.setItemMeta(meta); + itemstack.setItemMeta(meta); + } + MerchantRecipe recipe = new MerchantRecipe(itemstack, blockHeads.getInt("blocks.block_" + i + ".quantity", 8)); + recipe.setExperienceReward(true); + recipe.addIngredient(price1); + recipe.addIngredient(price2); + blockhead_recipes.add(recipe); + } + BHNum2 = blockHeads2.getInt("blocks.number"); + // blockHeads 2 + mmh.log(Level.INFO, "BlockHeads2=" + BHNum2); + for(int i=1; i < (BHNum2 + 1); i++){ + ItemStack price1 = blockHeads2.getItemStack("blocks.block_" + i + ".price_1", new ItemStack(Material.AIR)); + ItemStack price2 = blockHeads2.getItemStack("blocks.block_" + i + ".price_2", new ItemStack(Material.AIR)); + ItemStack itemstack = blockHeads2.getItemStack("blocks.block_" + i + ".itemstack", new ItemStack(Material.AIR)); + if(showlore) { + SkullMeta meta = (SkullMeta)itemstack.getItemMeta(); + meta.setLore(headlore); + itemstack.setItemMeta(meta); + itemstack.setItemMeta(meta); + } + MerchantRecipe recipe = new MerchantRecipe(itemstack, blockHeads2.getInt("blocks.block_" + i + ".quantity", 8)); + recipe.setExperienceReward(true); + recipe.addIngredient(price1); + recipe.addIngredient(price2); + blockhead_recipes.add(recipe); + } + BHNum3 = blockHeads3.getInt("blocks.number"); + // blockHeads 3 + mmh.log(Level.INFO, "BlockHeads3=" + BHNum3); + for(int i=1; i < (BHNum3 + 1); i++){ + ItemStack price1 = blockHeads3.getItemStack("blocks.block_" + i + ".price_1", new ItemStack(Material.AIR)); + ItemStack price2 = blockHeads3.getItemStack("blocks.block_" + i + ".price_2", new ItemStack(Material.AIR)); + ItemStack itemstack = blockHeads3.getItemStack("blocks.block_" + i + ".itemstack", new ItemStack(Material.AIR)); + if(showlore) { + SkullMeta meta = (SkullMeta)itemstack.getItemMeta(); + meta.setLore(headlore); + itemstack.setItemMeta(meta); + itemstack.setItemMeta(meta); + } + MerchantRecipe recipe = new MerchantRecipe(itemstack, blockHeads3.getInt("blocks.block_" + i + ".quantity", 8)); + recipe.setExperienceReward(true); + recipe.addIngredient(price1); + recipe.addIngredient(price2); + blockhead_recipes.add(recipe); + } + + mmh.log(Level.INFO, blockhead_recipes.size() + " BlockHead Recipes ADDED..."); + mmh.log(Level.INFO, "Loading CustomTrades Recipes..."); + for(int i=1; i < (mmh.traderCustom.getInt("custom_trades.number") + 1); i++){ + ItemStack price1 = mmh.traderCustom.getItemStack("custom_trades.trade_" + i + ".price_1", new ItemStack(Material.AIR)); + ItemStack price2 = mmh.traderCustom.getItemStack("custom_trades.trade_" + i + ".price_2", new ItemStack(Material.AIR)); + ItemStack itemstack = mmh.traderCustom.getItemStack("custom_trades.trade_" + i + ".itemstack", new ItemStack(Material.AIR)); + MerchantRecipe recipe = new MerchantRecipe(itemstack, mmh.traderCustom.getInt("custom_trades.trade_" + i + ".quantity", 1)); + recipe.setExperienceReward(true); + recipe.addIngredient(price1); + recipe.addIngredient(price2); + custometrade_recipes.add(recipe); + } + mmh.log(Level.INFO, custometrade_recipes.size() + " CustomTrades Recipes ADDED..."); + } + sender.sendMessage(ChatColor.YELLOW + mmh.getName() + ChatColor.RED + " " + mmh.get("mmh.message.reloaded")); + return true; + }else if(!hasPerm){ + sender.sendMessage(ChatColor.YELLOW + mmh.getName() + ChatColor.RED + " " + mmh.get("mmh.message.noperm").toString().replace("", perm) ); + return false; + } + } + if(args[0].equalsIgnoreCase("toggledebug")||args[0].equalsIgnoreCase("td")){ + String perm = "moremobheads.toggledebug"; + boolean hasPerm = sender.hasPermission(perm); + if(debug){logDebug(sender.getName() + " has the permission " + perm + "=" + hasPerm);} + if(sender.isOp()||hasPerm||!(sender instanceof Player)){ + debug = !debug; + mmh.debug = debug; + sender.sendMessage(ChatColor.YELLOW + mmh.getName() + ChatColor.RED + " " + mmh.get("mmh.message.debugtrue").toString().replace("boolean", "" + debug)); + return true; + }else if(!hasPerm){ + sender.sendMessage(ChatColor.YELLOW + mmh.getName() + ChatColor.RED + " " + mmh.get("mmh.message.noperm").toString().replace("", perm) ); + return false; + } + } + if(args[0].equalsIgnoreCase("customtrader")||args[0].equalsIgnoreCase("ct")){ + String perm = "moremobheads.customtrader"; + boolean hasPerm = sender.hasPermission(perm); + if(debug){logDebug(sender.getName() + " has the permission " + perm + "=" + hasPerm);} + if(hasPerm&&(sender instanceof Player) + && mmh.getConfig().getBoolean("wandering_trades.custom_wandering_trader", true)){ + log("has permission"); + Player player = (Player) sender; + if(!(args.length >= 2)){ + sender.sendMessage(ChatColor.GREEN + "[]===============[" + ChatColor.YELLOW + mmh.getName() + ChatColor.GREEN + "]===============[]"); + sender.sendMessage(ChatColor.WHITE + " "); + sender.sendMessage(ChatColor.WHITE + " /mmh ct - " + mmh.get("mmh.command.ct.help")); + sender.sendMessage(ChatColor.WHITE + " /mmh ct add - " + mmh.get("mmh.command.ct.add") + "custom_trades.yml"); + sender.sendMessage(ChatColor.WHITE + " /mmh ct remove # - " + mmh.get("mmh.command.ct.remove")); + sender.sendMessage(ChatColor.WHITE + " /mmh ct replace # - " + mmh.get("mmh.command.ct.replace").replace("", "#")); + sender.sendMessage(ChatColor.WHITE + " "); + sender.sendMessage(ChatColor.GREEN + "[]===============[" + ChatColor.YELLOW + mmh.getName() + ChatColor.GREEN + "]===============[]"); + return true; + }else if(args[1].equalsIgnoreCase("add")){ + if(debug) {logDebug("CMD CT ADD Start -----");} + ItemStack itemstack = player.getInventory().getItemInOffHand(); + ItemStack price1 = player.getInventory().getItem(0); + ItemStack price2 = player.getInventory().getItem(1); + if(price1 == null){price1 = new ItemStack(Material.AIR);} + if(price2 == null){price2 = new ItemStack(Material.AIR);} + //Material price1 = item1.getType(); + //Material price2 = item2.getType(); + + if((itemstack.getType() == Material.AIR)||(price1 == null)||(price1.getType() == Material.AIR)){ + log("error air"); sender.sendMessage(ChatColor.GREEN + "[]===============[" + ChatColor.YELLOW + mmh.getName() + ChatColor.GREEN + "]===============[]"); sender.sendMessage(ChatColor.WHITE + " "); - sender.sendMessage(ChatColor.WHITE + " /mmh ct - " + mmh.get("mmh.command.ct.help")); - sender.sendMessage(ChatColor.WHITE + " /mmh ct add - " + mmh.get("mmh.command.ct.add") + "custom_trades.yml"); - sender.sendMessage(ChatColor.WHITE + " /mmh ct remove # - " + mmh.get("mmh.command.ct.remove")); - sender.sendMessage(ChatColor.WHITE + " /mmh ct replace # - " + mmh.get("mmh.command.ct.replace").replace("", "#")); + sender.sendMessage(ChatColor.WHITE + " " + mmh.get("mmh.command.ct.line1") + "custom_trades.yml"); + sender.sendMessage(ChatColor.WHITE + " " + mmh.get("mmh.command.ct.line2")); + sender.sendMessage(ChatColor.WHITE + " " + mmh.get("mmh.command.ct.line3")); + sender.sendMessage(ChatColor.WHITE + " " + mmh.get("mmh.command.ct.line4") + "/mmh ct add"); + sender.sendMessage(ChatColor.WHITE + " " + mmh.get("mmh.command.ct.line5") + "custom trade."); sender.sendMessage(ChatColor.WHITE + " "); sender.sendMessage(ChatColor.GREEN + "[]===============[" + ChatColor.YELLOW + mmh.getName() + ChatColor.GREEN + "]===============[]"); + if(debug) {logDebug("CMD CT ADD End Error -----");} + return false; + } + int tradeNumber = (int)mmh.traderCustom.get("custom_trades.number", 1); + mmh.traderCustom.set("custom_trades.trade_" + (tradeNumber + 1) + ".price_1", price1); + mmh.traderCustom.set("custom_trades.trade_" + (tradeNumber + 1) + ".price_2", price2); + mmh.traderCustom.set("custom_trades.trade_" + (tradeNumber + 1) + ".itemstack", itemstack); + mmh.traderCustom.set("custom_trades.trade_" + (tradeNumber + 1) + ".quantity", itemstack.getAmount()); + mmh.traderCustom.set("custom_trades.trade_" + (tradeNumber + 1) + ".chance", 0.002); + mmh.traderCustom.set("custom_trades.number", (tradeNumber + 1)); + if(debug) {logDebug("CMD CT ADD price1=" + price1.getType());} + if(debug) {logDebug("CMD CT ADD price2=" + price2.getType());} + if(debug) {logDebug("CMD CT ADD itemstack=" + itemstack.getType());} + if(debug) {if(itemstack.getType() == Material.PLAYER_HEAD) { + ItemMeta skullMeta = itemstack.getItemMeta(); + logDebug("CMD CT ADD IS DisplayName=" + skullMeta.getDisplayName()); + if(skullMeta.hasLore()) { + logDebug("CMD CT ADD IS lore=" + String.join(",",skullMeta.getLore())); + } + }} + if(debug) {logDebug("CMD CT ADD quantity=" + itemstack.getAmount());} + if(debug) {logDebug("CMD CT ADD chance=0.002");} + //log("customFile=" + customFile); + try { + mmh.traderCustom.save(mmh.customFile); + mmh.traderCustom.load(mmh.customFile); + } catch (IOException | InvalidConfigurationException e) { + mmh.stacktraceInfo(); + e.printStackTrace(); + } + if(debug) {logDebug("CMD CT ADD End -----");} + sender.sendMessage(ChatColor.YELLOW + mmh.getName() + ChatColor.WHITE + " trade_" + (tradeNumber + 1) + " " + mmh.get("mmh.message.ct.successadd")); + return true; + }else if(args[1].equalsIgnoreCase("remove")){ + if(debug) {logDebug("CMD CT Remove Start -----");} + if(!(args.length >= 3)){ + sender.sendMessage(ChatColor.YELLOW + mmh.getName() + ChatColor.RED + " " + mmh.get("mmh.command.ct.argument")); + return false; + } else if(mmh.isInteger(args[2])){ + mmh.traderCustom.set("custom_trades.trade_" + args[2] + ".price_1", ""); + mmh.traderCustom.set("custom_trades.trade_" + args[2] + ".price_2", ""); + mmh.traderCustom.set("custom_trades.trade_" + args[2] + ".itemstack", ""); + mmh.traderCustom.set("custom_trades.trade_" + args[2] + ".quantity", ""); + mmh.traderCustom.set("custom_trades.trade_" + args[2] + ".chance", ""); + if(debug){logDebug("customFile=" + mmh.customFile);} + try { + mmh.traderCustom.save(mmh.customFile); + mmh.traderCustom.load(mmh.customFile); + } catch (IOException | InvalidConfigurationException e) { + if(debug) {logDebug("CMD CT Remove End Exception -----");} + sender.sendMessage(ChatColor.YELLOW + mmh.getName() + ChatColor.RED + " " + mmh.get("mmh.command.ct.error")); + return false; + //e.printStackTrace(); + } + if(debug) {logDebug("CMD CT Remove End -----");} + sender.sendMessage(ChatColor.YELLOW + mmh.getName() + ChatColor.WHITE + " trade_" + args[2] + " " + mmh.get("mmh.message.ct.successrem")); return true; - }else if(args[1].equalsIgnoreCase("add")){ - if(debug) {logDebug("CMD CT ADD Start -----");} + }else{ + if(debug) {logDebug("CMD CT Remove End 2 -----");} + sender.sendMessage(ChatColor.YELLOW + mmh.getName() + ChatColor.RED + " " + mmh.get("mmh.command.ct.numberreq")); + return false; + } + }else if(args[1].equalsIgnoreCase("replace")){ + if(debug) {logDebug("CMD CT Replace Start -----");} + if(args.length != 3){ + sender.sendMessage(ChatColor.YELLOW + mmh.getName() + ChatColor.RED + " " + mmh.get("mmh.command.ct.argument")); + return false; + } else if(mmh.isInteger(args[2])){ ItemStack itemstack = player.getInventory().getItemInOffHand(); ItemStack price1 = player.getInventory().getItem(0); ItemStack price2 = player.getInventory().getItem(1); if(price1 == null){price1 = new ItemStack(Material.AIR);} if(price2 == null){price2 = new ItemStack(Material.AIR);} - //Material price1 = item1.getType(); - //Material price2 = item2.getType(); - - if(itemstack.getType() == Material.AIR||price1 == null||price1.getType() == Material.AIR){ - log("error air"); + if((itemstack.getType() == Material.AIR)||(price1 == null)||(price1.getType() == Material.AIR)){ sender.sendMessage(ChatColor.GREEN + "[]===============[" + ChatColor.YELLOW + mmh.getName() + ChatColor.GREEN + "]===============[]"); sender.sendMessage(ChatColor.WHITE + " "); sender.sendMessage(ChatColor.WHITE + " " + mmh.get("mmh.command.ct.line1") + "custom_trades.yml"); @@ -1689,177 +1801,177 @@ public class EventHandler_1_19_R1 implements CommandExecutor, TabCompleter , Lis sender.sendMessage(ChatColor.WHITE + " " + mmh.get("mmh.command.ct.line5") + "custom trade."); sender.sendMessage(ChatColor.WHITE + " "); sender.sendMessage(ChatColor.GREEN + "[]===============[" + ChatColor.YELLOW + mmh.getName() + ChatColor.GREEN + "]===============[]"); - if(debug) {logDebug("CMD CT ADD End Error -----");} + if(debug) {logDebug("CMD CT Replace End Error -----");} return false; } - int tradeNumber = (int)mmh.traderCustom.get("custom_trades.number", 1); - mmh.traderCustom.set("custom_trades.trade_" + (tradeNumber + 1) + ".price_1", price1); - mmh.traderCustom.set("custom_trades.trade_" + (tradeNumber + 1) + ".price_2", price2); - mmh.traderCustom.set("custom_trades.trade_" + (tradeNumber + 1) + ".itemstack", itemstack); - mmh.traderCustom.set("custom_trades.trade_" + (tradeNumber + 1) + ".quantity", itemstack.getAmount()); - mmh.traderCustom.set("custom_trades.trade_" + (tradeNumber + 1) + ".chance", 0.002); - mmh.traderCustom.set("custom_trades.number", (tradeNumber + 1)); - if(debug) {logDebug("CMD CT ADD price1=" + price1.getType());} - if(debug) {logDebug("CMD CT ADD price2=" + price2.getType());} - if(debug) {logDebug("CMD CT ADD itemstack=" + itemstack.getType());} + int tradeNumber = Integer.parseInt(args[2]); + mmh.traderCustom.set("custom_trades.trade_" + (tradeNumber) + ".price_1", price1); + mmh.traderCustom.set("custom_trades.trade_" + (tradeNumber) + ".price_2", price2); + mmh.traderCustom.set("custom_trades.trade_" + (tradeNumber) + ".itemstack", itemstack); + mmh.traderCustom.set("custom_trades.trade_" + (tradeNumber) + ".quantity", itemstack.getAmount()); + mmh.traderCustom.set("custom_trades.trade_" + (tradeNumber) + ".chance", 0.002); + if(debug) {logDebug("CMD CT Replace price1=" + price1.getType());} + if(debug) {logDebug("CMD CT Replace price2=" + price2.getType());} + if(debug) {logDebug("CMD CT Replace itemstack=" + itemstack.getType());} if(debug) {if(itemstack.getType() == Material.PLAYER_HEAD) { - ItemMeta skullMeta = itemstack.getItemMeta(); - logDebug("CMD CT ADD IS DisplayName=" + skullMeta.getDisplayName()); - if(skullMeta.hasLore()) { - logDebug("CMD CT ADD IS lore=" + String.join(",",skullMeta.getLore())); - } + ItemMeta skullMeta = itemstack.getItemMeta(); + logDebug("CMD CT Replace IS DisplayName=" + skullMeta.getDisplayName()); + if(skullMeta.hasLore()) { + logDebug("CMD CT Replace IS lore=" + String.join(",",skullMeta.getLore())); + } }} - if(debug) {logDebug("CMD CT ADD quantity=" + itemstack.getAmount());} - if(debug) {logDebug("CMD CT ADD chance=0.002");} + if(debug) {logDebug("CMD CT Replace quantity=" + itemstack.getAmount());} + if(debug) {logDebug("CMD CT Replace chance=0.002");} + //log("customFile=" + customFile); try { mmh.traderCustom.save(mmh.customFile); mmh.traderCustom.load(mmh.customFile); } catch (IOException | InvalidConfigurationException e) { - mmh.stacktraceInfo(); - e.printStackTrace(); + if(debug) {logDebug("CMD CT Replace End Exception -----");} + sender.sendMessage(ChatColor.YELLOW + mmh.getName() + ChatColor.RED + " " + mmh.get("mmh.command.ct.error")); + return false; + //e.printStackTrace(); } - if(debug) {logDebug("CMD CT ADD End -----");} - sender.sendMessage(ChatColor.YELLOW + mmh.getName() + ChatColor.WHITE + " trade_" + (tradeNumber + 1) + " " + mmh.get("mmh.message.ct.successadd")); + if(debug) {logDebug("CMD CT Replace End -----");} + sender.sendMessage(ChatColor.YELLOW + mmh.getName() + ChatColor.WHITE + " trade_" + args[2] + " " + mmh.get("mmh.message.ct.successrep")); return true; - }else if(args[1].equalsIgnoreCase("remove")){ - if(debug) {logDebug("CMD CT Remove Start -----");} - if(!(args.length >= 3)){ - sender.sendMessage(ChatColor.YELLOW + mmh.getName() + ChatColor.RED + " " + mmh.get("mmh.command.ct.argument")); - return false; - }else{ - if(mmh.isInteger(args[2])){ - mmh.traderCustom.set("custom_trades.trade_" + args[2] + ".price_1", ""); - mmh.traderCustom.set("custom_trades.trade_" + args[2] + ".price_2", ""); - mmh.traderCustom.set("custom_trades.trade_" + args[2] + ".itemstack", ""); - mmh.traderCustom.set("custom_trades.trade_" + args[2] + ".quantity", ""); - mmh.traderCustom.set("custom_trades.trade_" + args[2] + ".chance", ""); - if(debug){logDebug("customFile=" + mmh.customFile);} - try { - mmh.traderCustom.save(mmh.customFile); - mmh.traderCustom.load(mmh.customFile); - } catch (IOException | InvalidConfigurationException e) { - if(debug) {logDebug("CMD CT Remove End Exception -----");} - sender.sendMessage(ChatColor.YELLOW + mmh.getName() + ChatColor.RED + " " + mmh.get("mmh.command.ct.error")); - return false; - //e.printStackTrace(); - } - if(debug) {logDebug("CMD CT Remove End -----");} - sender.sendMessage(ChatColor.YELLOW + mmh.getName() + ChatColor.WHITE + " trade_" + args[2] + " " + mmh.get("mmh.message.ct.successrem")); - return true; - }else{ - if(debug) {logDebug("CMD CT Remove End 2 -----");} - sender.sendMessage(ChatColor.YELLOW + mmh.getName() + ChatColor.RED + " " + mmh.get("mmh.command.ct.numberreq")); - return false; - } - } - }else if(args[1].equalsIgnoreCase("replace")){ - if(debug) {logDebug("CMD CT Replace Start -----");} - if(args.length != 3){ - sender.sendMessage(ChatColor.YELLOW + mmh.getName() + ChatColor.RED + " " + mmh.get("mmh.command.ct.argument")); - return false; - }else{ - if(mmh.isInteger(args[2])){ - ItemStack itemstack = player.getInventory().getItemInOffHand(); - ItemStack price1 = player.getInventory().getItem(0); - ItemStack price2 = player.getInventory().getItem(1); - if(price1 == null){price1 = new ItemStack(Material.AIR);} - if(price2 == null){price2 = new ItemStack(Material.AIR);} - if(itemstack.getType() == Material.AIR||price1 == null||price1.getType() == Material.AIR){ - sender.sendMessage(ChatColor.GREEN + "[]===============[" + ChatColor.YELLOW + mmh.getName() + ChatColor.GREEN + "]===============[]"); - sender.sendMessage(ChatColor.WHITE + " "); - sender.sendMessage(ChatColor.WHITE + " " + mmh.get("mmh.command.ct.line1") + "custom_trades.yml"); - sender.sendMessage(ChatColor.WHITE + " " + mmh.get("mmh.command.ct.line2")); - sender.sendMessage(ChatColor.WHITE + " " + mmh.get("mmh.command.ct.line3")); - sender.sendMessage(ChatColor.WHITE + " " + mmh.get("mmh.command.ct.line4") + "/mmh ct add"); - sender.sendMessage(ChatColor.WHITE + " " + mmh.get("mmh.command.ct.line5") + "custom trade."); - sender.sendMessage(ChatColor.WHITE + " "); - sender.sendMessage(ChatColor.GREEN + "[]===============[" + ChatColor.YELLOW + mmh.getName() + ChatColor.GREEN + "]===============[]"); - if(debug) {logDebug("CMD CT Replace End Error -----");} - return false; - } - int tradeNumber = Integer.parseInt(args[2]); - mmh.traderCustom.set("custom_trades.trade_" + (tradeNumber) + ".price_1", price1); - mmh.traderCustom.set("custom_trades.trade_" + (tradeNumber) + ".price_2", price2); - mmh.traderCustom.set("custom_trades.trade_" + (tradeNumber) + ".itemstack", itemstack); - mmh.traderCustom.set("custom_trades.trade_" + (tradeNumber) + ".quantity", itemstack.getAmount()); - mmh.traderCustom.set("custom_trades.trade_" + (tradeNumber) + ".chance", 0.002); - if(debug) {logDebug("CMD CT Replace price1=" + price1.getType());} - if(debug) {logDebug("CMD CT Replace price2=" + price2.getType());} - if(debug) {logDebug("CMD CT Replace itemstack=" + itemstack.getType());} - if(debug) {if(itemstack.getType() == Material.PLAYER_HEAD) { - ItemMeta skullMeta = itemstack.getItemMeta(); - logDebug("CMD CT Replace IS DisplayName=" + skullMeta.getDisplayName()); - if(skullMeta.hasLore()) { - logDebug("CMD CT Replace IS lore=" + String.join(",",skullMeta.getLore())); - } - }} - if(debug) {logDebug("CMD CT Replace quantity=" + itemstack.getAmount());} - if(debug) {logDebug("CMD CT Replace chance=0.002");} - - //log("customFile=" + customFile); - try { - mmh.traderCustom.save(mmh.customFile); - mmh.traderCustom.load(mmh.customFile); - } catch (IOException | InvalidConfigurationException e) { - if(debug) {logDebug("CMD CT Replace End Exception -----");} - sender.sendMessage(ChatColor.YELLOW + mmh.getName() + ChatColor.RED + " " + mmh.get("mmh.command.ct.error")); - return false; - //e.printStackTrace(); - } - if(debug) {logDebug("CMD CT Replace End -----");} - sender.sendMessage(ChatColor.YELLOW + mmh.getName() + ChatColor.WHITE + " trade_" + args[2] + " " + mmh.get("mmh.message.ct.successrep")); - return true; - }else{ - if(debug) {logDebug("CMD CT Replace End 2 -----");} - sender.sendMessage(ChatColor.YELLOW + mmh.getName() + ChatColor.RED + " " + mmh.get("mmh.command.ct.numberreq")); - return false; - } - } + }else{ + if(debug) {logDebug("CMD CT Replace End 2 -----");} + sender.sendMessage(ChatColor.YELLOW + mmh.getName() + ChatColor.RED + " " + mmh.get("mmh.command.ct.numberreq")); + return false; } - }else if(!(sender instanceof Player)){ - if(debug) {logDebug("CMD CT Replace End Console -----");} - sender.sendMessage(ChatColor.YELLOW + mmh.getName() + ChatColor.RED + " " + mmh.get("mmh.message.noconsole")); - return false; - }else if(!hasPerm){ - if(debug) {logDebug("CMD CT Replace End !Perm -----");} - sender.sendMessage(ChatColor.YELLOW + mmh.getName() + ChatColor.RED + " " + mmh.get("mmh.message.nopermordisabled").toString().replace("", perm) ); - return false; } + }else if(!(sender instanceof Player)){ + if(debug) {logDebug("CMD CT Replace End Console -----");} + sender.sendMessage(ChatColor.YELLOW + mmh.getName() + ChatColor.RED + " " + mmh.get("mmh.message.noconsole")); + return false; + }else if(!hasPerm){ + if(debug) {logDebug("CMD CT Replace End !Perm -----");} + sender.sendMessage(ChatColor.YELLOW + mmh.getName() + ChatColor.RED + " " + mmh.get("mmh.message.nopermordisabled").toString().replace("", perm) ); + return false; } - if(args[0].equalsIgnoreCase("playerheads")||args[0].equalsIgnoreCase("ph")){ - String perm = "moremobheads.playerheads"; - boolean hasPerm = sender.hasPermission(perm); - if(debug){logDebug(sender.getName() + " has the permission " + perm + "=" + hasPerm);} - if(hasPerm&&sender instanceof Player - && mmh.getConfig().getBoolean("wandering_trades.custom_wandering_trader", true)){ - Player player = (Player) sender; - if(!(args.length >= 2)){ + } + if(args[0].equalsIgnoreCase("playerheads")||args[0].equalsIgnoreCase("ph")){ + String perm = "moremobheads.playerheads"; + boolean hasPerm = sender.hasPermission(perm); + if(debug){logDebug(sender.getName() + " has the permission " + perm + "=" + hasPerm);} + if(hasPerm&&(sender instanceof Player) + && mmh.getConfig().getBoolean("wandering_trades.custom_wandering_trader", true)){ + Player player = (Player) sender; + if(!(args.length >= 2)){ + sender.sendMessage(ChatColor.GREEN + "[]===============[" + ChatColor.YELLOW + mmh.getName() + ChatColor.GREEN + "]===============[]"); + sender.sendMessage(ChatColor.WHITE + " "); + sender.sendMessage(ChatColor.WHITE + " /mmh ph - " + mmh.get("mmh.command.ct.help")); + sender.sendMessage(ChatColor.WHITE + " /mmh ph add - " + mmh.get("mmh.command.ct.add") + "player_heads.yml"); + sender.sendMessage(ChatColor.WHITE + " /mmh ph remove # - " + mmh.get("mmh.command.ct.remove").replace("custom_trades", "playerheads") ); + sender.sendMessage(ChatColor.WHITE + " /mmh ph replace # - " + mmh.get("mmh.command.ct.replace").replace("", "#").replace("custom trade", "pleayerhead") ); + //sender.sendMessage(ChatColor.WHITE + " "); + sender.sendMessage(ChatColor.WHITE + " "); + sender.sendMessage(ChatColor.GREEN + "[]===============[" + ChatColor.YELLOW + mmh.getName() + ChatColor.GREEN + "]===============[]"); + return true; + }else if(args[1].equalsIgnoreCase("add")){ + if(debug) {logDebug("CMD PH ADD Start -----");} + ItemStack itemstack = player.getInventory().getItemInOffHand(); + ItemStack price1 = player.getInventory().getItem(0); + ItemStack price2 = player.getInventory().getItem(1); + if(price1 == null){price1 = new ItemStack(Material.AIR);} + if(price2 == null){price2 = new ItemStack(Material.AIR);} + //Material price1 = item1.getType(); + //Material price2 = item2.getType(); + + if((itemstack.getType() == Material.AIR)||(price1 == null)||(price1.getType() == Material.AIR)||(itemstack.getType() != Material.PLAYER_HEAD)){ sender.sendMessage(ChatColor.GREEN + "[]===============[" + ChatColor.YELLOW + mmh.getName() + ChatColor.GREEN + "]===============[]"); sender.sendMessage(ChatColor.WHITE + " "); - sender.sendMessage(ChatColor.WHITE + " /mmh ph - " + mmh.get("mmh.command.ct.help")); - sender.sendMessage(ChatColor.WHITE + " /mmh ph add - " + mmh.get("mmh.command.ct.add") + "player_heads.yml"); - sender.sendMessage(ChatColor.WHITE + " /mmh ph remove # - " + mmh.get("mmh.command.ct.remove").replace("custom_trades", "playerheads") ); - sender.sendMessage(ChatColor.WHITE + " /mmh ph replace # - " + mmh.get("mmh.command.ct.replace").replace("", "#").replace("custom trade", "pleayerhead") ); - //sender.sendMessage(ChatColor.WHITE + " "); + if(itemstack.getType() != Material.PLAYER_HEAD){ + sender.sendMessage(ChatColor.RED + " MUST BE PLAYERHEAD"); + sender.sendMessage(ChatColor.WHITE + " "); + } + sender.sendMessage(ChatColor.WHITE + " " + mmh.get("mmh.command.ct.line1") + "player_heads.yml"); + sender.sendMessage(ChatColor.WHITE + " " + mmh.get("mmh.command.ct.line2")); + sender.sendMessage(ChatColor.WHITE + " " + mmh.get("mmh.command.ct.line3")); + sender.sendMessage(ChatColor.WHITE + " " + mmh.get("mmh.command.ct.line4") + "/mmh ph add"); + sender.sendMessage(ChatColor.WHITE + " " + mmh.get("mmh.command.ct.line5") + "player head."); sender.sendMessage(ChatColor.WHITE + " "); sender.sendMessage(ChatColor.GREEN + "[]===============[" + ChatColor.YELLOW + mmh.getName() + ChatColor.GREEN + "]===============[]"); + if(debug) {logDebug("CMD PH ADD End Error -----");} + return false; + } + int tradeNumber = (int) mmh.playerHeads.get("players.number", 1); + mmh.playerHeads.set("players.player_" + (tradeNumber + 1) + ".price_1", price1); + mmh.playerHeads.set("players.player_" + (tradeNumber + 1) + ".price_2", price2); + mmh.playerHeads.set("players.player_" + (tradeNumber + 1) + ".itemstack", itemstack); + mmh.playerHeads.set("players.player_" + (tradeNumber + 1) + ".quantity", itemstack.getAmount()); + if(debug) {logDebug("CMD PH ADD price1=" + price1.getType());} + if(debug) {logDebug("CMD PH ADD price2=" + price2.getType());} + if(debug) {logDebug("CMD PH ADD itemstack=" + itemstack.getType());} + if(debug) {if(itemstack.getType() == Material.PLAYER_HEAD) { + ItemMeta skullMeta = itemstack.getItemMeta(); + logDebug("CMD PH ADD IS DisplayName=" + skullMeta.getDisplayName()); + if(skullMeta.hasLore()) { + logDebug("CMD PH ADD IS lore=" + String.join(",",skullMeta.getLore())); + } + }} + if(debug) {logDebug("CMD PH ADD quantity=" + itemstack.getAmount());} + //playerHeads.set("players.player_" + (tradeNumber + 1) + ".chance", 0.002); + mmh.playerHeads.set("players.number", (tradeNumber + 1)); + //log("customFile=" + customFile); + try { + mmh.playerHeads.save(mmh.playerFile); + mmh.playerHeads.load(mmh.playerFile); + } catch (IOException | InvalidConfigurationException e) { + if(debug) {logDebug("CMD PH ADD End Exception -----");} + mmh.stacktraceInfo(); + e.printStackTrace(); + } + if(debug) {logDebug("CMD PH ADD End -----");} + sender.sendMessage(ChatColor.YELLOW + mmh.getName() + ChatColor.WHITE + " player_" + (tradeNumber + 1) + " " + mmh.get("mmh.message.ct.successadd")); + return true; + }else if(args[1].equalsIgnoreCase("remove")){ + if(debug) {logDebug("CMD PH Remove Start -----");} + if(!(args.length >= 3)){ + sender.sendMessage(ChatColor.YELLOW + mmh.getName() + ChatColor.RED + " " + mmh.get("mmh.command.ct.argument")); + return false; + } else if(mmh.isInteger(args[2])){ + mmh.playerHeads.set("players.player_" + args[2] + ".price_1", ""); + mmh.playerHeads.set("players.player_" + args[2] + ".price_2", ""); + mmh.playerHeads.set("players.player_" + args[2] + ".itemstack", ""); + mmh.playerHeads.set("players.player_" + args[2] + ".quantity", ""); + //playerHeads.set("custom_trades.trade_" + args[2] + ".chance", ""); + if(debug){logDebug("playerFile=" + mmh.playerFile);} + try { + mmh.playerHeads.save(mmh.playerFile); + mmh.playerHeads.load(mmh.playerFile); + } catch (IOException | InvalidConfigurationException e) { + if(debug) {logDebug("CMD PH Remove End Exception -----");} + sender.sendMessage(ChatColor.YELLOW + mmh.getName() + ChatColor.RED + " " + mmh.get("mmh.command.ct.error") + "custom_trades.yml!"); + return false; + //e.printStackTrace(); + } + if(debug) {logDebug("CMD PH Remove End -----");} + sender.sendMessage(ChatColor.YELLOW + mmh.getName() + ChatColor.WHITE + " player_" + args[2] + " " + mmh.get("mmh.message.ct.successrem")); return true; - }else if(args[1].equalsIgnoreCase("add")){ - if(debug) {logDebug("CMD PH ADD Start -----");} + }else{ + if(debug) {logDebug("CMD PH Remove End 2 -----");} + sender.sendMessage(ChatColor.YELLOW + mmh.getName() + ChatColor.RED + " " + mmh.get("mmh.command.ct.numberreq")); + return false; + } + }else if(args[1].equalsIgnoreCase("replace")){ + if(debug) {logDebug("CMD PH Replace Start -----");} + if(args.length != 3){ + sender.sendMessage(ChatColor.YELLOW + mmh.getName() + ChatColor.RED + " " + mmh.get("mmh.command.ct.argument")); + return false; + } else if(mmh.isInteger(args[2])){ ItemStack itemstack = player.getInventory().getItemInOffHand(); ItemStack price1 = player.getInventory().getItem(0); ItemStack price2 = player.getInventory().getItem(1); if(price1 == null){price1 = new ItemStack(Material.AIR);} if(price2 == null){price2 = new ItemStack(Material.AIR);} - //Material price1 = item1.getType(); - //Material price2 = item2.getType(); - - if(itemstack.getType() == Material.AIR||price1 == null||price1.getType() == Material.AIR||itemstack.getType() != Material.PLAYER_HEAD){ + if((itemstack.getType() == Material.AIR)||(price1 == null)||(price1.getType() == Material.AIR)||(itemstack.getType() != Material.PLAYER_HEAD)){ sender.sendMessage(ChatColor.GREEN + "[]===============[" + ChatColor.YELLOW + mmh.getName() + ChatColor.GREEN + "]===============[]"); sender.sendMessage(ChatColor.WHITE + " "); if(itemstack.getType() != Material.PLAYER_HEAD){ - sender.sendMessage(ChatColor.RED + " MUST BE PLAYERHEAD"); + sender.sendMessage(ChatColor.RED + " " + mmh.get("mmh.command.playerhead.msg") ); sender.sendMessage(ChatColor.WHITE + " "); } sender.sendMessage(ChatColor.WHITE + " " + mmh.get("mmh.command.ct.line1") + "player_heads.yml"); @@ -1869,514 +1981,446 @@ public class EventHandler_1_19_R1 implements CommandExecutor, TabCompleter , Lis sender.sendMessage(ChatColor.WHITE + " " + mmh.get("mmh.command.ct.line5") + "player head."); sender.sendMessage(ChatColor.WHITE + " "); sender.sendMessage(ChatColor.GREEN + "[]===============[" + ChatColor.YELLOW + mmh.getName() + ChatColor.GREEN + "]===============[]"); - if(debug) {logDebug("CMD PH ADD End Error -----");} + if(debug) {logDebug("CMD PH Replace End Error -----");} return false; } - int tradeNumber = (int) mmh.playerHeads.get("players.number", 1); - mmh.playerHeads.set("players.player_" + (tradeNumber + 1) + ".price_1", price1); - mmh.playerHeads.set("players.player_" + (tradeNumber + 1) + ".price_2", price2); - mmh.playerHeads.set("players.player_" + (tradeNumber + 1) + ".itemstack", itemstack); - mmh.playerHeads.set("players.player_" + (tradeNumber + 1) + ".quantity", itemstack.getAmount()); - if(debug) {logDebug("CMD PH ADD price1=" + price1.getType());} - if(debug) {logDebug("CMD PH ADD price2=" + price2.getType());} - if(debug) {logDebug("CMD PH ADD itemstack=" + itemstack.getType());} + int tradeNumber = Integer.parseInt(args[2]); + mmh.playerHeads.set("players.player_" + (tradeNumber) + ".price_1", price1); + mmh.playerHeads.set("players.player_" + (tradeNumber) + ".price_2", price2); + mmh.playerHeads.set("players.player_" + (tradeNumber) + ".itemstack", itemstack); + mmh.playerHeads.set("players.player_" + (tradeNumber) + ".quantity", itemstack.getAmount()); + if(debug) {logDebug("CMD PH Replace price1=" + price1.getType());} + if(debug) {logDebug("CMD PH Replace price2=" + price2.getType());} + if(debug) {logDebug("CMD PH Replace itemstack=" + itemstack.getType());} if(debug) {if(itemstack.getType() == Material.PLAYER_HEAD) { - ItemMeta skullMeta = itemstack.getItemMeta(); - logDebug("CMD PH ADD IS DisplayName=" + skullMeta.getDisplayName()); + ItemMeta skullMeta = itemstack.getItemMeta(); + logDebug("CMD PH Replace IS DisplayName=" + skullMeta.getDisplayName()); if(skullMeta.hasLore()) { - logDebug("CMD PH ADD IS lore=" + String.join(",",skullMeta.getLore())); + logDebug("CMD PH Replace IS lore=" + String.join(",",skullMeta.getLore())); } }} - if(debug) {logDebug("CMD PH ADD quantity=" + itemstack.getAmount());} + if(debug) {logDebug("CMD PH Replace quantity=" + itemstack.getAmount());} //playerHeads.set("players.player_" + (tradeNumber + 1) + ".chance", 0.002); - mmh.playerHeads.set("players.number", (tradeNumber + 1)); //log("customFile=" + customFile); try { mmh.playerHeads.save(mmh.playerFile); mmh.playerHeads.load(mmh.playerFile); } catch (IOException | InvalidConfigurationException e) { - if(debug) {logDebug("CMD PH ADD End Exception -----");} - mmh.stacktraceInfo(); - e.printStackTrace(); + if(debug) {logDebug("CMD PH Replace End Exception -----");} + sender.sendMessage(ChatColor.YELLOW + mmh.getName() + ChatColor.RED + " " + mmh.get("mmh.command.ct.error") + "player_heads.yml!"); + return false; + //e.printStackTrace(); } - if(debug) {logDebug("CMD PH ADD End -----");} - sender.sendMessage(ChatColor.YELLOW + mmh.getName() + ChatColor.WHITE + " player_" + (tradeNumber + 1) + " " + mmh.get("mmh.message.ct.successadd")); + if(debug) {logDebug("CMD PH Replace End -----");} + sender.sendMessage(ChatColor.YELLOW + mmh.getName() + ChatColor.WHITE + " player_" + args[2] + " " + mmh.get("mmh.message.ct.successrep")); return true; - }else if(args[1].equalsIgnoreCase("remove")){ - if(debug) {logDebug("CMD PH Remove Start -----");} - if(!(args.length >= 3)){ - sender.sendMessage(ChatColor.YELLOW + mmh.getName() + ChatColor.RED + " " + mmh.get("mmh.command.ct.argument")); - return false; - }else{ - if(mmh.isInteger(args[2])){ - mmh.playerHeads.set("players.player_" + args[2] + ".price_1", ""); - mmh.playerHeads.set("players.player_" + args[2] + ".price_2", ""); - mmh.playerHeads.set("players.player_" + args[2] + ".itemstack", ""); - mmh.playerHeads.set("players.player_" + args[2] + ".quantity", ""); - //playerHeads.set("custom_trades.trade_" + args[2] + ".chance", ""); - if(debug){logDebug("playerFile=" + mmh.playerFile);} - try { - mmh.playerHeads.save(mmh.playerFile); - mmh.playerHeads.load(mmh.playerFile); - } catch (IOException | InvalidConfigurationException e) { - if(debug) {logDebug("CMD PH Remove End Exception -----");} - sender.sendMessage(ChatColor.YELLOW + mmh.getName() + ChatColor.RED + " " + mmh.get("mmh.command.ct.error") + "custom_trades.yml!"); - return false; - //e.printStackTrace(); - } - if(debug) {logDebug("CMD PH Remove End -----");} - sender.sendMessage(ChatColor.YELLOW + mmh.getName() + ChatColor.WHITE + " player_" + args[2] + " " + mmh.get("mmh.message.ct.successrem")); - return true; - }else{ - if(debug) {logDebug("CMD PH Remove End 2 -----");} - sender.sendMessage(ChatColor.YELLOW + mmh.getName() + ChatColor.RED + " " + mmh.get("mmh.command.ct.numberreq")); - return false; - } - } - }else if(args[1].equalsIgnoreCase("replace")){ - if(debug) {logDebug("CMD PH Replace Start -----");} - if(args.length != 3){ - sender.sendMessage(ChatColor.YELLOW + mmh.getName() + ChatColor.RED + " " + mmh.get("mmh.command.ct.argument")); - return false; - }else{ - if(mmh.isInteger(args[2])){ - ItemStack itemstack = player.getInventory().getItemInOffHand(); - ItemStack price1 = player.getInventory().getItem(0); - ItemStack price2 = player.getInventory().getItem(1); - if(price1 == null){price1 = new ItemStack(Material.AIR);} - if(price2 == null){price2 = new ItemStack(Material.AIR);} - if(itemstack.getType() == Material.AIR||price1 == null||price1.getType() == Material.AIR||itemstack.getType() != Material.PLAYER_HEAD){ - sender.sendMessage(ChatColor.GREEN + "[]===============[" + ChatColor.YELLOW + mmh.getName() + ChatColor.GREEN + "]===============[]"); - sender.sendMessage(ChatColor.WHITE + " "); - if(itemstack.getType() != Material.PLAYER_HEAD){ - sender.sendMessage(ChatColor.RED + " " + mmh.get("mmh.command.playerhead.msg") ); - sender.sendMessage(ChatColor.WHITE + " "); - } - sender.sendMessage(ChatColor.WHITE + " " + mmh.get("mmh.command.ct.line1") + "player_heads.yml"); - sender.sendMessage(ChatColor.WHITE + " " + mmh.get("mmh.command.ct.line2")); - sender.sendMessage(ChatColor.WHITE + " " + mmh.get("mmh.command.ct.line3")); - sender.sendMessage(ChatColor.WHITE + " " + mmh.get("mmh.command.ct.line4") + "/mmh ph add"); - sender.sendMessage(ChatColor.WHITE + " " + mmh.get("mmh.command.ct.line5") + "player head."); - sender.sendMessage(ChatColor.WHITE + " "); - sender.sendMessage(ChatColor.GREEN + "[]===============[" + ChatColor.YELLOW + mmh.getName() + ChatColor.GREEN + "]===============[]"); - if(debug) {logDebug("CMD PH Replace End Error -----");} - return false; - } - int tradeNumber = Integer.parseInt(args[2]); - mmh.playerHeads.set("players.player_" + (tradeNumber) + ".price_1", price1); - mmh.playerHeads.set("players.player_" + (tradeNumber) + ".price_2", price2); - mmh.playerHeads.set("players.player_" + (tradeNumber) + ".itemstack", itemstack); - mmh.playerHeads.set("players.player_" + (tradeNumber) + ".quantity", itemstack.getAmount()); - if(debug) {logDebug("CMD PH Replace price1=" + price1.getType());} - if(debug) {logDebug("CMD PH Replace price2=" + price2.getType());} - if(debug) {logDebug("CMD PH Replace itemstack=" + itemstack.getType());} - if(debug) {if(itemstack.getType() == Material.PLAYER_HEAD) { - ItemMeta skullMeta = itemstack.getItemMeta(); - logDebug("CMD PH Replace IS DisplayName=" + skullMeta.getDisplayName()); - if(skullMeta.hasLore()) { - logDebug("CMD PH Replace IS lore=" + String.join(",",skullMeta.getLore())); - } - }} - if(debug) {logDebug("CMD PH Replace quantity=" + itemstack.getAmount());} - //playerHeads.set("players.player_" + (tradeNumber + 1) + ".chance", 0.002); - //log("customFile=" + customFile); - try { - mmh.playerHeads.save(mmh.playerFile); - mmh.playerHeads.load(mmh.playerFile); - } catch (IOException | InvalidConfigurationException e) { - if(debug) {logDebug("CMD PH Replace End Exception -----");} - sender.sendMessage(ChatColor.YELLOW + mmh.getName() + ChatColor.RED + " " + mmh.get("mmh.command.ct.error") + "player_heads.yml!"); - return false; - //e.printStackTrace(); - } - if(debug) {logDebug("CMD PH Replace End -----");} - sender.sendMessage(ChatColor.YELLOW + mmh.getName() + ChatColor.WHITE + " player_" + args[2] + " " + mmh.get("mmh.message.ct.successrep")); - return true; - }else{ - if(debug) {logDebug("CMD PH Replace End 2 -----");} - sender.sendMessage(ChatColor.YELLOW + mmh.getName() + ChatColor.RED + " " + mmh.get("mmh.command.ct.numberreq")); - return false; - } - } - } - }else if(!(sender instanceof Player)){ - if(debug) {logDebug("CMD PH Replace End Console -----");} - sender.sendMessage(ChatColor.YELLOW + mmh.getName() + ChatColor.RED + " " + mmh.get("mmh.message.noconsole")); - return false; - }else if(!hasPerm){ - if(debug) {logDebug("CMD PH Replace End !Perm -----");} - sender.sendMessage(ChatColor.YELLOW + mmh.getName() + ChatColor.RED + " " + mmh.get("mmh.message.nopermordisabled").toString().replace("", perm) ); - return false; - } - } - if(args[0].equalsIgnoreCase("fixhead")||args[0].equalsIgnoreCase("fh")){ - String perm = "moremobheads.fixhead"; - boolean hasPerm = sender.hasPermission(perm); - if(debug){logDebug(sender.getName() + " has the permission " + perm + "=" + hasPerm);} - if(sender instanceof Player) { - Player player = (Player) sender; - if(hasPerm) { - if(!args[1].isEmpty()) { - if(args[1].equalsIgnoreCase("name")) { - if(debug) {logDebug("CMD FH Name Start -----");} - // FixHead NBT - ItemStack mainHand = player.getInventory().getItemInMainHand(); - if( mainHand != null ){ - if( mainHand.getType().equals(Material.PLAYER_HEAD) ) { - String texture = mainHand.getItemMeta().getDisplayName(); - - SkullMeta skullname = (SkullMeta) mainHand.getItemMeta(); - if(skullname.getOwner() != null){ - String name = skullname.getOwner().toString(); - if(debug){logDebug("EPIE name=" + name);} - if(debug){logDebug("EPIE lore=" + skullname.getLore());} - if(skullname.getOwner().toString().length() >= 40){ - if(debug){logDebug("EPIE ownerName.lngth >= 40");} - ItemStack itmStack = mainHand; - //SkullMeta skullname = (SkullMeta) e.getItem().getItemStack().getItemMeta(); - String daMobName = "null"; - if(skullname != null){ - String isCat = CatHeads.getNameFromTexture(skullname.getOwner().toString()); - String isHorse = HorseHeads.getNameFromTexture(skullname.getOwner().toString()); - String isLlama = LlamaHeads.getNameFromTexture(skullname.getOwner().toString()); - String isMobHead = MobHeads.getNameFromTexture(skullname.getOwner().toString()); - String isRabbit = RabbitHeads.getNameFromTexture(skullname.getOwner().toString()); - String isSheep = SheepHeads.getNameFromTexture(skullname.getOwner().toString()); - String isVillager = VillagerHeads.getNameFromTexture(skullname.getOwner().toString()); - String isZombieVillager = ZombieVillagerHeads.getNameFromTexture(skullname.getOwner().toString()); - String isplayerhead = mmh.isPlayerHead(skullname.getOwner().toString()); - String isblockhead = mmh.isBlockHead(skullname.getOwner().toString()); - String isblockhead2 = mmh.isBlockHead2(skullname.getOwner().toString()); - String isblockhead3 = mmh.isBlockHead3(skullname.getOwner().toString()); - if(isCat != null){ daMobName = isCat; } - if(isHorse != null){ daMobName = isHorse; } - if(isLlama != null){ daMobName = isLlama; } - if(isMobHead != null){ daMobName = isMobHead; } - if(isRabbit != null){ daMobName = isRabbit; } - if(isSheep != null){ daMobName = isSheep; } - if(isVillager != null){ daMobName = isVillager; } - if(isZombieVillager != null){ daMobName = isZombieVillager; } - if(daMobName == null){ - if(blockHeads != null){ - if(isblockhead != null){ daMobName = isblockhead; } - } - if(blockHeads2 != null){ - if(isblockhead2 != null){ daMobName = isblockhead2; } - } - if(blockHeads3 != null){ - if(isblockhead3 != null){ daMobName = isblockhead3; } - } - if(mmh.playerHeads != null){ - if(isplayerhead != null){ daMobName = isplayerhead; } - } - } - ArrayList lore = new ArrayList(); - //log("" + meta.getOwner().toString()); - //String name = LlamaHeads.getNameFromTexture(meta.getOwner().toString()); - if(debug){logDebug("EPIE mobname from texture=" + daMobName);} - List skullLore = skullname.getLore(); - if(skullLore != null){ - if(skullLore.toString().contains( mmh.get("mmh.message.lore_killed_by").replace("", "") )){ - lore.addAll(skullname.getLore()); - } - } - if(skullLore == null||!skullname.getLore().toString().contains(mmh.getName())){ - if(mmh.getConfig().getBoolean("lore.show_plugin_name", true)){ - lore.add(ChatColor.AQUA + "" + mmh.getName()); - } - } - if(daMobName != "null"){ - daMobName = mmh.langName.getString(daMobName.toLowerCase().replace(" ", "."), daMobName); - }else{ - daMobName = mmh.langName.getString(daMobName.toLowerCase().replace(" ", "."), "404 Name Not Found"); - } - skullname.setLore(lore); - skullname.setDisplayName(daMobName); - itmStack.setItemMeta(skullname); - //fixHeadNBT(skullname.getOwner(), daMobName, lore); - if(debug) {logDebug("CMD FH Name End -----");} - sender.sendMessage("" + mmh.get("mmh.command.fixhead.name") ); - //if(debug){logDebug("test3a");} - return true; - }else{ - if(debug) {logDebug("CMD FH Name End Meta Null -----");} - return false; - } - } - } - }else { - if(debug) {logDebug("CMD FH Name End Error -----");} - sender.sendMessage("An Error occured."); - return false; - } - } - } - - if(args[1].equalsIgnoreCase("stack")) { - if(debug) {logDebug("CMD FH Stack Start -----");} - // FixHead Stack - ItemStack mainHand = player.getInventory().getItemInMainHand(); - ItemStack offHand = player.getInventory().getItemInOffHand(); - if( mainHand != null && offHand != null ){ - if( mainHand.getType().equals(Material.PLAYER_HEAD) && offHand.getType().equals(Material.PLAYER_HEAD) ) { - ItemStack is = mmh.fixHeadStack(offHand, mainHand); - //is.setAmount(mainHand.getAmount()); - if(is != mainHand) { - player.getInventory().setItemInMainHand(is); - if(debug) {logDebug("is=" + is.getType());} - if(debug) {logDebug("CMD FH Stack End -----");} - sender.sendMessage("" + mmh.get("mmh.command.fixhead.stack.success") ); - return true; - }else { - if(debug) {logDebug("CMD FH Stack End Error -----");} - sender.sendMessage("" + mmh.get("mmh.command.fixhead.stack.error") ); - return false; - } - }else if( !mainHand.getType().equals(Material.PLAYER_HEAD) && !offHand.getType().equals(Material.PLAYER_HEAD) ){ - if(debug) {logDebug("CMD FH Stack End Error Main Off -----");} - sender.sendMessage("" + mmh.get("mmh.command.fixhead.stack.notph") ); - return false; - }else if( !mainHand.getType().equals(Material.PLAYER_HEAD) && offHand.getType().equals(Material.PLAYER_HEAD) ){ - if(debug) {logDebug("CMD FH Stack End Error Main -----");} - sender.sendMessage("" + mmh.get("mmh.command.fixhead.stack.main") ); - return false; - }else if( mainHand.getType().equals(Material.PLAYER_HEAD) && !offHand.getType().equals(Material.PLAYER_HEAD) ){ - if(debug) {logDebug("CMD FH Stack End Error Off -----");} - sender.sendMessage("" + mmh.get("mmh.command.fixhead.stack.off") ); - return false; - } - } - } - } - - }else if(!hasPerm){ - if(debug) {logDebug("CMD FH Stack End !Perm -----");} - sender.sendMessage(ChatColor.YELLOW + mmh.getName() + ChatColor.RED + " " + mmh.get("mmh.message.noperm").toString().replace("", perm) ); + }else{ + if(debug) {logDebug("CMD PH Replace End 2 -----");} + sender.sendMessage(ChatColor.YELLOW + mmh.getName() + ChatColor.RED + " " + mmh.get("mmh.command.ct.numberreq")); return false; } } - } - if(args[0].equalsIgnoreCase("giveMH")){ - // /mmh giveMH player mob qty - // cmd 0 1 2 3 - if( args.length==4 ){ - String perm = "moremobheads.give"; - boolean hasPerm = sender.hasPermission(perm); - if(debug){logDebug(sender.getName() + " has the permission " + perm + "=" + hasPerm);} - if(hasPerm) { - Player player = Bukkit.getPlayer(args[1]); - if(!args[2].isEmpty()) { - String mob = args[2].toLowerCase(); - log("mob=" + mob); - if(!args[3].isEmpty()) { - int number = Integer.parseInt(args[3]); - String[] splitmob = mob.split("\\."); - switch (splitmob[0]) { - case "creeper": - if(mmh.getConfig().getBoolean("vanilla_heads.creeper", false)){ - player.getWorld().dropItemNaturally(player.getLocation(), new ItemStack(Material.CREEPER_HEAD)); - }else{ // mmh.langName - player.getWorld().dropItemNaturally(player.getLocation(), mmh.makeSkulls(MobHeads.valueOf(splitmob[0].toUpperCase()).getTexture().toString(), - mmh.langName.getString(splitmob[0].toLowerCase(), MobHeads.valueOf(splitmob[0].toUpperCase()).getName() + " Head"), number )); - } // MobHeads.valueOf(name).getName() + " Head" - break; - case "zombie": - if(mmh.getConfig().getBoolean("vanilla_heads.zombie", false)){ - player.getWorld().dropItemNaturally(player.getLocation(), new ItemStack(Material.ZOMBIE_HEAD)); - }else{ // mmh.langName - player.getWorld().dropItemNaturally(player.getLocation(), mmh.makeSkulls(MobHeads.valueOf(splitmob[0].toUpperCase()).getTexture().toString(), - mmh.langName.getString(splitmob[0].toLowerCase(), MobHeads.valueOf(splitmob[0].toUpperCase()).getName() + " Head"), number )); - } // MobHeads.valueOf(name).getName() + " Head" - break; - case "skeleton": - if(mmh.getConfig().getBoolean("vanilla_heads.skeleton", false)){ - player.getWorld().dropItemNaturally(player.getLocation(), new ItemStack(Material.SKELETON_SKULL)); - }else{ // mmh.langName - player.getWorld().dropItemNaturally(player.getLocation(), mmh.makeSkulls(MobHeads.valueOf(splitmob[0].toUpperCase()).getTexture().toString(), - mmh.langName.getString(splitmob[0].toLowerCase(), MobHeads.valueOf(splitmob[0].toUpperCase()).getName() + " Head"), number )); - } // MobHeads.valueOf(name).getName() + " Head" - break; - case "wither_skeleton": - if(mmh.getConfig().getBoolean("vanilla_heads.wither_skeleton", false)){ - player.getWorld().dropItemNaturally(player.getLocation(), new ItemStack(Material.WITHER_SKELETON_SKULL)); - }else{ // mmh.langName - player.getWorld().dropItemNaturally(player.getLocation(), mmh.makeSkulls(MobHeads.valueOf(splitmob[0].toUpperCase()).getTexture().toString(), - mmh.langName.getString(splitmob[0].toLowerCase(), MobHeads.valueOf(splitmob[0].toUpperCase()).getName() + " Head"), number )); - } // MobHeads.valueOf(name).getName() + " Head" - break; - case "ender_dragon": - if(mmh.getConfig().getBoolean("vanilla_heads.ender_dragon", false)){ - player.getWorld().dropItemNaturally(player.getLocation(), new ItemStack(Material.DRAGON_HEAD)); - }else{ // mmh.langName - player.getWorld().dropItemNaturally(player.getLocation(), mmh.makeSkulls(MobHeads.valueOf(splitmob[0].toUpperCase()).getTexture().toString(), - mmh.langName.getString(splitmob[0].toLowerCase(), MobHeads.valueOf(splitmob[0].toUpperCase()).getName() + " Head"), number )); - } // MobHeads.valueOf(name).getName() + " Head" - break; - case "cat": - player.getWorld().dropItemNaturally(player.getLocation(), - mmh.makeSkulls(CatHeads.valueOf(splitmob[1].toUpperCase()).getTexture().toString(), - mmh.langName.getString(splitmob[0].toLowerCase() + "." + splitmob[1].toLowerCase(), CatHeads.valueOf(splitmob[1].toUpperCase()).getName() + " Head"), number )); - break; - case "bee": - log("splitmob.length=" + splitmob.length); - if(splitmob.length == 1) { - player.getWorld().dropItemNaturally(player.getLocation(), mmh.makeSkulls(MobHeads.valueOf(splitmob[0].toUpperCase()).getTexture().toString(), - mmh.langName.getString(splitmob[0].toLowerCase() + ".none", MobHeads.valueOf(splitmob[0].toUpperCase()).getName() + " Head"), number )); - }else { - player.getWorld().dropItemNaturally(player.getLocation(), mmh.makeSkulls( MobHeads.valueOf( mob.toUpperCase().replace(".", "_") ).getTexture().toString(), - mmh.langName.getString(mob.toLowerCase().replace(".", "_"), MobHeads.valueOf(mob.toUpperCase().replace(".", "_")).getName() + " Head"), number )); - } - break; - case "villager": // villager type profession, villager profession type - // name = splitmob[0], type = splitmob[1], profession = splitmob[2] - player.getWorld().dropItemNaturally(player.getLocation(), mmh.makeSkulls(VillagerHeads.valueOf( splitmob[0].toUpperCase() + "_" + splitmob[2].toUpperCase() + "_" + splitmob[1].toUpperCase() ).getTexture().toString(), - mmh.langName.getString( splitmob[0].toLowerCase() + "." + splitmob[1].toLowerCase() + "." + splitmob[2].toLowerCase() - , VillagerHeads.valueOf(splitmob[0].toUpperCase() + "_" + splitmob[2].toUpperCase() + "_" + splitmob[1].toUpperCase()).getName() + " Head"), number )); - break; - case "zombie_villager": - player.getWorld().dropItemNaturally(player.getLocation(), mmh.makeSkulls(ZombieVillagerHeads.valueOf(splitmob[0].toUpperCase() + "_" + splitmob[2].toUpperCase() ).getTexture().toString(), - mmh.langName.getString(splitmob[0].toLowerCase() + "." + splitmob[2].toLowerCase(), ZombieVillagerHeads.valueOf(splitmob[0].toUpperCase() + "_" + splitmob[2].toUpperCase() ).getName() ), number )); - break; - case "llama": - case "trader_llama": - player.getWorld().dropItemNaturally(player.getLocation(), mmh.makeSkulls(LlamaHeads.valueOf( splitmob[0].toUpperCase() + "_" + splitmob[1].toUpperCase() ).getTexture().toString(), - mmh.langName.getString(splitmob[0].toLowerCase() + "." + splitmob[1].toLowerCase(), LlamaHeads.valueOf( splitmob[0].toUpperCase() + "_" + splitmob[1].toUpperCase() ).getName()), number )); - break; - case "horse": - player.getWorld().dropItemNaturally(player.getLocation(), mmh.makeSkulls(HorseHeads.valueOf( splitmob[0].toUpperCase() + "_" + splitmob[1].toUpperCase() ).getTexture().toString(), - mmh.langName.getString(splitmob[0].toLowerCase() + "." + splitmob[1].toLowerCase(), HorseHeads.valueOf( splitmob[0].toUpperCase() + "_" + splitmob[1].toUpperCase() ).getName()), number )); - break; - case "rabbit": - player.getWorld().dropItemNaturally(player.getLocation(), mmh.makeSkulls(RabbitHeads.valueOf( splitmob[0].toUpperCase() + "_" + splitmob[1].toUpperCase() ).getTexture().toString(), - mmh.langName.getString(splitmob[0].toLowerCase() + "." + splitmob[1].toLowerCase(), RabbitHeads.valueOf( splitmob[0].toUpperCase() + "_" + splitmob[1].toUpperCase() ).getName()), number )); - break; - case "sheep": - String sheeptype; - if(splitmob[1].equalsIgnoreCase("jeb_")) { - sheeptype = "jeb_"; - }else { - sheeptype = splitmob[1].toUpperCase(); - } - player.getWorld().dropItemNaturally(player.getLocation(), mmh.makeSkulls(SheepHeads.valueOf( splitmob[0].toUpperCase() + "_" + sheeptype ).getTexture().toString(), - mmh.langName.getString(splitmob[0].toLowerCase() + "." + splitmob[1].toLowerCase(), SheepHeads.valueOf( splitmob[0].toUpperCase() + "_" + sheeptype ).getName()), number )); - break; - case "goat": - case "axolotl": - player.getWorld().dropItemNaturally(player.getLocation(), mmh.makeSkulls(MobHeads117.valueOf( splitmob[0].toUpperCase() + "_" + splitmob[1].toUpperCase() ).getTexture().toString(), - mmh.langName.getString(splitmob[0].toLowerCase() + "." + splitmob[1].toLowerCase(), MobHeads117.valueOf( splitmob[0].toUpperCase() + "_" + splitmob[1].toUpperCase() ).getName()), number )); - break; - case "frog": - player.getWorld().dropItemNaturally(player.getLocation(), mmh.makeSkulls(MobHeads119.valueOf( splitmob[0].toUpperCase() + "_" + splitmob[1].toUpperCase() ).getTexture().toString(), - mmh.langName.getString(splitmob[0].toLowerCase() + "." + splitmob[1].toLowerCase(), MobHeads119.valueOf( splitmob[0].toUpperCase() + "_" + splitmob[1].toUpperCase() ).getName()), number )); - break; - case "allay": - case "tadpole": - case "warden": - player.getWorld().dropItemNaturally(player.getLocation(), mmh.makeSkulls(MobHeads119.valueOf(mob.toUpperCase().replace(".", "_")).getTexture().toString(), - mmh.langName.getString(mob.toLowerCase(), MobHeads119.valueOf(mob.toUpperCase().replace(".", "_")).getName() + " Head"), number ));; - break; - default: - player.getWorld().dropItemNaturally(player.getLocation(), mmh.makeSkulls(MobHeads.valueOf(mob.toUpperCase().replace(".", "_")).getTexture().toString(), - mmh.langName.getString(mob.toLowerCase(), MobHeads.valueOf(mob.toUpperCase().replace(".", "_")).getName() + " Head"), number )); - break; - } - } - } - }else if(!hasPerm){ - sender.sendMessage(ChatColor.YELLOW + mmh.getName() + ChatColor.RED + " " + mmh.get("mmh.message.noperm").toString().replace("", perm) ); - return false; - } - }else { - sender.sendMessage("" + mmh.get("mmh.command.usage") + ", /mmh givemh playername mobname 1"); - return false; - } - - } - // /mmh giveph player - // /mmh giveph player player - // 0 1 2 3 - if(args[0].equalsIgnoreCase("givePH")){ - if( args.length >= 2 ){ - String perm = "moremobheads.give"; - boolean hasPerm = sender.hasPermission(perm); - if(debug){logDebug(sender.getName() + " has the permission " + perm + "=" + hasPerm);} - if( hasPerm ){ - if(debug) {logDebug("CMD GPH args.length=" + args.length);} - if( args.length==2 && sender instanceof Player ){ - mmh.givePlayerHead((Player) sender,args[1]); - if(debug) {logDebug("CMD GPH args1=" + args[1]);} - return true; - }else if( args.length==3){ - Player player = Bukkit.getPlayer(args[1]); - mmh.givePlayerHead(player,args[2]); - if(debug) {logDebug("CMD GPH args1=" + args[1] + ", args2=" +args[2]);} - return true; - }else if( args.length==2 && !(sender instanceof Player) ){ - sender.sendMessage("" + mmh.get("mmh.command.give.console") + "" + mmh.get("mmh.command.usage") + ":" ); - sender.sendMessage("\"/mmh giveph playername 1\" - " + mmh.get("mmh.command.give.playerhead.you") ); - sender.sendMessage("\"/mmh giveph playername playername 1\" - " + mmh.get("mmh.command.give.playerhead.them") ); - return false; - } - }else if( !hasPerm ){ - sender.sendMessage(ChatColor.YELLOW + mmh.getName() + ChatColor.RED + " " + mmh.get("mmh.message.noperm").toString().replace("", perm) ); - return false; - } - }else { - sender.sendMessage("" + mmh.get("mmh.command.usage") + ":" ); - sender.sendMessage("\"/mmh giveph playername 1\" - " + mmh.get("mmh.command.give.playerhead.you") ); - sender.sendMessage("\"/mmh giveph playername playername 1\" - " + mmh.get("mmh.command.give.playerhead.them") ); - return false; - } + }else if(!(sender instanceof Player)){ + if(debug) {logDebug("CMD PH Replace End Console -----");} + sender.sendMessage(ChatColor.YELLOW + mmh.getName() + ChatColor.RED + " " + mmh.get("mmh.message.noconsole")); return false; - } - // /mmh givebh block - // /mmh givebh player block - // 0 1 2 3 - if(args[0].equalsIgnoreCase("giveBH")){ - if(debug){logDebug("Start GiveBH");} - if(debug){logDebug("Command=" + cmd.getName() + ", arguments=" + Arrays.toString(args));} - if( args.length >= 2 ){ - String perm = "moremobheads.give"; - boolean hasPerm = sender.hasPermission(perm); - if(debug){logDebug(sender.getName() + " has the permission " + perm + "=" + hasPerm);} - if( hasPerm ){ - if(debug) {logDebug("CMD GBH args.length=" + args.length);} - if( args.length==2 && sender instanceof Player ){ - mmh.giveBlockHead((Player) sender,args[1].replace("_", " ")); - if(debug) {logDebug("CMD GBH args1=" + args[1]);} - if(debug){logDebug("End GiveBH True 1");} - return true; - }else if( args.length==3){ - Player player = Bukkit.getPlayer(args[1]); - mmh.giveBlockHead(player,args[2].replace("_", " ")); - if(debug) {logDebug("CMD GBH args1=" + args[1] + ", args2=" +args[2]);} - if(debug){logDebug("End GiveBH True 2");} - return true; - }else if( args.length==2 && !(sender instanceof Player) ){ - sender.sendMessage("" + mmh.get("mmh.command.give.console") + " mmh giveBh "); - if(debug){logDebug("End GiveBH False 1");} - return false; - } - }else if( !hasPerm ){ - sender.sendMessage(ChatColor.YELLOW + mmh.getName() + ChatColor.RED + " " + mmh.get("mmh.message.noperm").toString().replace("", perm) ); - if(debug){logDebug("End GiveBH False 2");} - return false; - } - }else { - sender.sendMessage("" + mmh.get("mmh.command.usage") + ":" ); - sender.sendMessage("\"/mmh givebh \" - " + mmh.get("mmh.command.give.blockhead.you") ); - sender.sendMessage("\"/mmh giveph playername \" - " + mmh.get("mmh.command.give.blockhead.them") ); - if(debug){logDebug("End GiveBH False 3");} - return false; - } - if(debug){logDebug("End GiveBH False 4");} + }else if(!hasPerm){ + if(debug) {logDebug("CMD PH Replace End !Perm -----");} + sender.sendMessage(ChatColor.YELLOW + mmh.getName() + ChatColor.RED + " " + mmh.get("mmh.message.nopermordisabled").toString().replace("", perm) ); return false; } } - return false; + if(args[0].equalsIgnoreCase("fixhead")||args[0].equalsIgnoreCase("fh")){ + String perm = "moremobheads.fixhead"; + boolean hasPerm = sender.hasPermission(perm); + if(debug){logDebug(sender.getName() + " has the permission " + perm + "=" + hasPerm);} + if(sender instanceof Player) { + Player player = (Player) sender; + if(hasPerm) { + if(!args[1].isEmpty()) { + if(args[1].equalsIgnoreCase("name")) { + if(debug) {logDebug("CMD FH Name Start -----");} + // FixHead NBT + ItemStack mainHand = player.getInventory().getItemInMainHand(); + if( mainHand != null ){ + if( mainHand.getType().equals(Material.PLAYER_HEAD) ) { + String texture = mainHand.getItemMeta().getDisplayName(); + + SkullMeta skullname = (SkullMeta) mainHand.getItemMeta(); + if(skullname.getOwner() != null){ + String name = skullname.getOwner().toString(); + if(debug){logDebug("EPIE name=" + name);} + if(debug){logDebug("EPIE lore=" + skullname.getLore());} + if(skullname.getOwner().toString().length() >= 40){ + if(debug){logDebug("EPIE ownerName.lngth >= 40");} + ItemStack itmStack = mainHand; + //SkullMeta skullname = (SkullMeta) e.getItem().getItemStack().getItemMeta(); + String daMobName = "null"; + if(skullname != null){ + String isCat = CatHeads.getNameFromTexture(skullname.getOwner().toString()); + String isHorse = HorseHeads.getNameFromTexture(skullname.getOwner().toString()); + String isLlama = LlamaHeads.getNameFromTexture(skullname.getOwner().toString()); + String isMobHead = MobHeads.getNameFromTexture(skullname.getOwner().toString()); + String isRabbit = RabbitHeads.getNameFromTexture(skullname.getOwner().toString()); + String isSheep = SheepHeads.getNameFromTexture(skullname.getOwner().toString()); + String isVillager = VillagerHeads.getNameFromTexture(skullname.getOwner().toString()); + String isZombieVillager = ZombieVillagerHeads.getNameFromTexture(skullname.getOwner().toString()); + String isplayerhead = mmh.isPlayerHead(skullname.getOwner().toString()); + String isblockhead = mmh.isBlockHead(skullname.getOwner().toString()); + String isblockhead2 = mmh.isBlockHead2(skullname.getOwner().toString()); + String isblockhead3 = mmh.isBlockHead3(skullname.getOwner().toString()); + if(isCat != null){ daMobName = isCat; } + if(isHorse != null){ daMobName = isHorse; } + if(isLlama != null){ daMobName = isLlama; } + if(isMobHead != null){ daMobName = isMobHead; } + if(isRabbit != null){ daMobName = isRabbit; } + if(isSheep != null){ daMobName = isSheep; } + if(isVillager != null){ daMobName = isVillager; } + if(isZombieVillager != null){ daMobName = isZombieVillager; } + if(daMobName == null){ + if(blockHeads != null){ + if(isblockhead != null){ daMobName = isblockhead; } + } + if(blockHeads2 != null){ + if(isblockhead2 != null){ daMobName = isblockhead2; } + } + if(blockHeads3 != null){ + if(isblockhead3 != null){ daMobName = isblockhead3; } + } + if(mmh.playerHeads != null){ + if(isplayerhead != null){ daMobName = isplayerhead; } + } + } + ArrayList lore = new ArrayList(); + //log("" + meta.getOwner().toString()); + //String name = LlamaHeads.getNameFromTexture(meta.getOwner().toString()); + if(debug){logDebug("EPIE mobname from texture=" + daMobName);} + List skullLore = skullname.getLore(); + if(skullLore != null){ + if (skullLore.toString().contains( ChatColorUtils.setColors( mmh.langName.getString("killedby", "Killed By ") ) ) ) { + lore.addAll(skullname.getLore()); + } + } + if((skullLore == null)||!skullname.getLore().toString().contains(mmh.getName())){ + if(mmh.getConfig().getBoolean("lore.show_plugin_name", true)){ + lore.add(ChatColor.AQUA + "" + mmh.getName()); + } + } + if(daMobName != "null"){ + daMobName = mmh.langName.getString(daMobName.toLowerCase().replace(" ", "."), daMobName); + }else{ + daMobName = mmh.langName.getString(daMobName.toLowerCase().replace(" ", "."), "404 Name Not Found"); + } + skullname.setLore(lore); + skullname.setDisplayName(daMobName); + itmStack.setItemMeta(skullname); + //fixHeadNBT(skullname.getOwner(), daMobName, lore); + if(debug) {logDebug("CMD FH Name End -----");} + sender.sendMessage("" + mmh.get("mmh.command.fixhead.name") ); + //if(debug){logDebug("test3a");} + return true; + }else{ + if(debug) {logDebug("CMD FH Name End Meta Null -----");} + return false; + } + } + } + }else { + if(debug) {logDebug("CMD FH Name End Error -----");} + sender.sendMessage("An Error occured."); + return false; + } + } + } + + if(args[1].equalsIgnoreCase("stack")) { + if(debug) {logDebug("CMD FH Stack Start -----");} + // FixHead Stack + ItemStack mainHand = player.getInventory().getItemInMainHand(); + ItemStack offHand = player.getInventory().getItemInOffHand(); + if( (mainHand != null) && (offHand != null) ){ + if( mainHand.getType().equals(Material.PLAYER_HEAD) && offHand.getType().equals(Material.PLAYER_HEAD) ) { + ItemStack is = mmh.fixHeadStack(offHand, mainHand); + //is.setAmount(mainHand.getAmount()); + if(is != mainHand) { + player.getInventory().setItemInMainHand(is); + if(debug) {logDebug("is=" + is.getType());} + if(debug) {logDebug("CMD FH Stack End -----");} + sender.sendMessage("" + mmh.get("mmh.command.fixhead.stack.success") ); + return true; + }else { + if(debug) {logDebug("CMD FH Stack End Error -----");} + sender.sendMessage("" + mmh.get("mmh.command.fixhead.stack.error") ); + return false; + } + }else if( !mainHand.getType().equals(Material.PLAYER_HEAD) && !offHand.getType().equals(Material.PLAYER_HEAD) ){ + if(debug) {logDebug("CMD FH Stack End Error Main Off -----");} + sender.sendMessage("" + mmh.get("mmh.command.fixhead.stack.notph") ); + return false; + }else if( !mainHand.getType().equals(Material.PLAYER_HEAD) && offHand.getType().equals(Material.PLAYER_HEAD) ){ + if(debug) {logDebug("CMD FH Stack End Error Main -----");} + sender.sendMessage("" + mmh.get("mmh.command.fixhead.stack.main") ); + return false; + }else if( mainHand.getType().equals(Material.PLAYER_HEAD) && !offHand.getType().equals(Material.PLAYER_HEAD) ){ + if(debug) {logDebug("CMD FH Stack End Error Off -----");} + sender.sendMessage("" + mmh.get("mmh.command.fixhead.stack.off") ); + return false; + } + } + } + } + + }else if(!hasPerm){ + if(debug) {logDebug("CMD FH Stack End !Perm -----");} + sender.sendMessage(ChatColor.YELLOW + mmh.getName() + ChatColor.RED + " " + mmh.get("mmh.message.noperm").toString().replace("", perm) ); + return false; + } + } + } + if(args[0].equalsIgnoreCase("giveMH")){ + // /mmh giveMH player mob qty + // cmd 0 1 2 3 + if( args.length==4 ){ + String perm = "moremobheads.give"; + boolean hasPerm = sender.hasPermission(perm); + if(debug){logDebug(sender.getName() + " has the permission " + perm + "=" + hasPerm);} + if(hasPerm) { + Player player = Bukkit.getPlayer(args[1]); + if(!args[2].isEmpty()) { + String mob = args[2].toLowerCase(); + log("mob=" + mob); + if(!args[3].isEmpty()) { + int number = Integer.parseInt(args[3]); + String[] splitmob = mob.split("\\."); + switch (splitmob[0]) { + case "creeper_charged": + player.getWorld().dropItemNaturally(player.getLocation(), mmh.makeSkulls(MobHeads.valueOf(splitmob[0].toUpperCase()).getTexture().toString(), + mmh.langName.getString(splitmob[0].toLowerCase(), MobHeads.valueOf(splitmob[0].toUpperCase()).getName() + " Head"), number)); + break; + case "creeper": + if(mmh.getConfig().getBoolean("vanilla_heads.creeper", false)){ + player.getWorld().dropItemNaturally(player.getLocation(), new ItemStack(Material.CREEPER_HEAD)); + }else{ // mmh.langName + player.getWorld().dropItemNaturally(player.getLocation(), mmh.makeSkulls(MobHeads.valueOf(splitmob[0].toUpperCase()).getTexture().toString(), + mmh.langName.getString(splitmob[0].toLowerCase(), MobHeads.valueOf(splitmob[0].toUpperCase()).getName() + " Head"), number )); + } // MobHeads.valueOf(name).getName() + " Head" + break; + case "mushroom_cow": + player.getWorld().dropItemNaturally(player.getLocation(), mmh.makeSkulls(MobHeads.valueOf(splitmob[0].toUpperCase() + "_" + splitmob[1].toUpperCase()).getTexture().toString(), + mmh.langName.getString(splitmob[0].toLowerCase() + "." + splitmob[1].toLowerCase(), MobHeads.valueOf(splitmob[0].toUpperCase() + "_" + splitmob[1].toUpperCase()).getName()), number)); + break; + case "strider_shivering": + player.getWorld().dropItemNaturally(player.getLocation(), mmh.makeSkulls(MobHeads.valueOf(splitmob[0].toUpperCase()).getTexture().toString(), + mmh.langName.getString(splitmob[0].toLowerCase(), MobHeads.valueOf(splitmob[0].toUpperCase()).getName() + " Head"), number)); + break; + case "zombie": + if(mmh.getConfig().getBoolean("vanilla_heads.zombie", false)){ + player.getWorld().dropItemNaturally(player.getLocation(), new ItemStack(Material.ZOMBIE_HEAD)); + }else{ // mmh.langName + player.getWorld().dropItemNaturally(player.getLocation(), mmh.makeSkulls(MobHeads.valueOf(splitmob[0].toUpperCase()).getTexture().toString(), + mmh.langName.getString(splitmob[0].toLowerCase(), MobHeads.valueOf(splitmob[0].toUpperCase()).getName() + " Head"), number )); + } // MobHeads.valueOf(name).getName() + " Head" + break; + case "skeleton": + if(mmh.getConfig().getBoolean("vanilla_heads.skeleton", false)){ + player.getWorld().dropItemNaturally(player.getLocation(), new ItemStack(Material.SKELETON_SKULL)); + }else{ // mmh.langName + player.getWorld().dropItemNaturally(player.getLocation(), mmh.makeSkulls(MobHeads.valueOf(splitmob[0].toUpperCase()).getTexture().toString(), + mmh.langName.getString(splitmob[0].toLowerCase(), MobHeads.valueOf(splitmob[0].toUpperCase()).getName() + " Head"), number )); + } // MobHeads.valueOf(name).getName() + " Head" + break; + case "wither_skeleton": + if(mmh.getConfig().getBoolean("vanilla_heads.wither_skeleton", false)){ + player.getWorld().dropItemNaturally(player.getLocation(), new ItemStack(Material.WITHER_SKELETON_SKULL)); + }else{ // mmh.langName + player.getWorld().dropItemNaturally(player.getLocation(), mmh.makeSkulls(MobHeads.valueOf(splitmob[0].toUpperCase()).getTexture().toString(), + mmh.langName.getString(splitmob[0].toLowerCase(), MobHeads.valueOf(splitmob[0].toUpperCase()).getName() + " Head"), number )); + } // MobHeads.valueOf(name).getName() + " Head" + break; + case "ender_dragon": + if(mmh.getConfig().getBoolean("vanilla_heads.ender_dragon", false)){ + player.getWorld().dropItemNaturally(player.getLocation(), new ItemStack(Material.DRAGON_HEAD)); + }else{ // mmh.langName + player.getWorld().dropItemNaturally(player.getLocation(), mmh.makeSkulls(MobHeads.valueOf(splitmob[0].toUpperCase()).getTexture().toString(), + mmh.langName.getString(splitmob[0].toLowerCase(), MobHeads.valueOf(splitmob[0].toUpperCase()).getName() + " Head"), number )); + } // MobHeads.valueOf(name).getName() + " Head" + break; + case "cat": + player.getWorld().dropItemNaturally(player.getLocation(), + mmh.makeSkulls(CatHeads.valueOf(splitmob[1].toUpperCase()).getTexture().toString(), + mmh.langName.getString(splitmob[0].toLowerCase() + "." + splitmob[1].toLowerCase(), CatHeads.valueOf(splitmob[1].toUpperCase()).getName() + " Head"), number )); + break; + case "bee": + log("splitmob.length=" + splitmob.length); + if(splitmob.length == 1) { + player.getWorld().dropItemNaturally(player.getLocation(), mmh.makeSkulls(MobHeads.valueOf(splitmob[0].toUpperCase()).getTexture().toString(), + mmh.langName.getString(splitmob[0].toLowerCase() + ".none", MobHeads.valueOf(splitmob[0].toUpperCase()).getName() + " Head"), number )); + }else { + player.getWorld().dropItemNaturally(player.getLocation(), mmh.makeSkulls( MobHeads.valueOf( mob.toUpperCase().replace(".", "_") ).getTexture().toString(), + mmh.langName.getString(mob.toLowerCase().replace(".", "_"), MobHeads.valueOf(mob.toUpperCase().replace(".", "_")).getName() + " Head"), number )); + } + break; + case "villager": // villager type profession, villager profession type + // name = splitmob[0], type = splitmob[1], profession = splitmob[2] + player.getWorld().dropItemNaturally(player.getLocation(), mmh.makeSkulls(VillagerHeads.valueOf( splitmob[0].toUpperCase() + "_" + splitmob[2].toUpperCase() + "_" + splitmob[1].toUpperCase() ).getTexture().toString(), + mmh.langName.getString( splitmob[0].toLowerCase() + "." + splitmob[1].toLowerCase() + "." + splitmob[2].toLowerCase() + , VillagerHeads.valueOf(splitmob[0].toUpperCase() + "_" + splitmob[2].toUpperCase() + "_" + splitmob[1].toUpperCase()).getName() + " Head"), number )); + break; + case "zombie_villager": + player.getWorld().dropItemNaturally(player.getLocation(), mmh.makeSkulls(ZombieVillagerHeads.valueOf(splitmob[0].toUpperCase() + "_" + splitmob[2].toUpperCase() ).getTexture().toString(), + mmh.langName.getString(splitmob[0].toLowerCase() + "." + splitmob[1].toLowerCase(), ZombieVillagerHeads.valueOf(splitmob[0].toUpperCase() + "_" + splitmob[1].toUpperCase() ).getName() ), number )); + break; + case "llama": + case "trader_llama": + player.getWorld().dropItemNaturally(player.getLocation(), mmh.makeSkulls(LlamaHeads.valueOf( splitmob[0].toUpperCase() + "_" + splitmob[1].toUpperCase() ).getTexture().toString(), + mmh.langName.getString(splitmob[0].toLowerCase() + "." + splitmob[1].toLowerCase(), LlamaHeads.valueOf( splitmob[0].toUpperCase() + "_" + splitmob[1].toUpperCase() ).getName()), number )); + break; + case "horse": + player.getWorld().dropItemNaturally(player.getLocation(), mmh.makeSkulls(HorseHeads.valueOf( splitmob[0].toUpperCase() + "_" + splitmob[1].toUpperCase() ).getTexture().toString(), + mmh.langName.getString(splitmob[0].toLowerCase() + "." + splitmob[1].toLowerCase(), HorseHeads.valueOf( splitmob[0].toUpperCase() + "_" + splitmob[1].toUpperCase() ).getName()), number )); + break; + case "rabbit": + if( splitmob[1].equalsIgnoreCase("Toast") ) { + player.getWorld().dropItemNaturally(player.getLocation(), mmh.makeSkulls(RabbitHeads.valueOf(splitmob[0].toUpperCase() + "_" + StrUtils.toTitleCase( splitmob[1] )).getTexture().toString(), + mmh.langName.getString(splitmob[0].toLowerCase() + "." + splitmob[1].toLowerCase(), RabbitHeads.valueOf(splitmob[0].toUpperCase() + "_" + StrUtils.toTitleCase( splitmob[1] )).getName()), number)); + break; + } + player.getWorld().dropItemNaturally(player.getLocation(), mmh.makeSkulls(RabbitHeads.valueOf(splitmob[0].toUpperCase() + "_" + splitmob[1].toUpperCase()).getTexture().toString(), + mmh.langName.getString(splitmob[0].toLowerCase() + "." + splitmob[1].toLowerCase(), RabbitHeads.valueOf(splitmob[0].toUpperCase() + "_" + splitmob[1].toUpperCase()).getName()), number)); + break; + case "sheep": + String sheeptype; + if(splitmob[1].equalsIgnoreCase("jeb_")) { + sheeptype = "jeb_"; + }else { + sheeptype = splitmob[1].toUpperCase(); + } + player.getWorld().dropItemNaturally(player.getLocation(), mmh.makeSkulls(SheepHeads.valueOf( splitmob[0].toUpperCase() + "_" + sheeptype ).getTexture().toString(), + mmh.langName.getString(splitmob[0].toLowerCase() + "." + splitmob[1].toLowerCase(), SheepHeads.valueOf( splitmob[0].toUpperCase() + "_" + sheeptype ).getName()), number )); + break; + case "goat": + case "axolotl": + player.getWorld().dropItemNaturally(player.getLocation(), mmh.makeSkulls(MobHeads117.valueOf( splitmob[0].toUpperCase() + "_" + splitmob[1].toUpperCase() ).getTexture().toString(), + mmh.langName.getString(splitmob[0].toLowerCase() + "." + splitmob[1].toLowerCase(), MobHeads117.valueOf( splitmob[0].toUpperCase() + "_" + splitmob[1].toUpperCase() ).getName()), number )); + break; + case "frog": + player.getWorld().dropItemNaturally(player.getLocation(), mmh.makeSkulls(MobHeads119.valueOf( splitmob[0].toUpperCase() + "_" + splitmob[1].toUpperCase() ).getTexture().toString(), + mmh.langName.getString(splitmob[0].toLowerCase() + "." + splitmob[1].toLowerCase(), MobHeads119.valueOf( splitmob[0].toUpperCase() + "_" + splitmob[1].toUpperCase() ).getName()), number )); + break; + case "allay": + case "tadpole": + case "warden": + player.getWorld().dropItemNaturally(player.getLocation(), mmh.makeSkulls(MobHeads119.valueOf(mob.toUpperCase().replace(".", "_")).getTexture().toString(), + mmh.langName.getString(mob.toLowerCase(), MobHeads119.valueOf(mob.toUpperCase().replace(".", "_")).getName() + " Head"), number ));; + break; + case "tropical_fish":// TropicalFishHeads + String fishType = splitmob[1].toUpperCase(); + player.getWorld().dropItemNaturally(player.getLocation(), mmh.makeSkulls(TropicalFishHeads.valueOf(splitmob[0].toUpperCase() + "_" + fishType.toUpperCase()).getTexture().toString(), + mmh.langName.getString(splitmob[0].toLowerCase() + "." + splitmob[1].toLowerCase(), TropicalFishHeads.valueOf(splitmob[0].toUpperCase() + "_" + fishType.toUpperCase()).getName()), number)); + break; + + default: + player.getWorld().dropItemNaturally(player.getLocation(), mmh.makeSkulls(MobHeads.valueOf(mob.toUpperCase().replace(".", "_")).getTexture().toString(), + mmh.langName.getString(mob.toLowerCase(), MobHeads.valueOf(mob.toUpperCase().replace(".", "_")).getName() + " Head"), number )); + break; + } + } + } + }else if(!hasPerm){ + sender.sendMessage(ChatColor.YELLOW + mmh.getName() + ChatColor.RED + " " + mmh.get("mmh.message.noperm").toString().replace("", perm) ); + return false; + } + }else { + sender.sendMessage("" + mmh.get("mmh.command.usage") + ", /mmh givemh playername mobname 1"); + return false; + } + + } + // /mmh giveph player + // /mmh giveph player player + // 0 1 2 3 + if(args[0].equalsIgnoreCase("givePH")){ + if( args.length >= 2 ){ + String perm = "moremobheads.give"; + boolean hasPerm = sender.hasPermission(perm); + if(debug){logDebug(sender.getName() + " has the permission " + perm + "=" + hasPerm);} + if( hasPerm ){ + if(debug) {logDebug("CMD GPH args.length=" + args.length);} + if( (args.length==2) && (sender instanceof Player) ){ + mmh.givePlayerHead((Player) sender,args[1]); + if(debug) {logDebug("CMD GPH args1=" + args[1]);} + return true; + }else if( args.length==3){ + Player player = Bukkit.getPlayer(args[1]); + mmh.givePlayerHead(player,args[2]); + if(debug) {logDebug("CMD GPH args1=" + args[1] + ", args2=" +args[2]);} + return true; + }else if( (args.length==2) && !(sender instanceof Player) ){ + sender.sendMessage("" + mmh.get("mmh.command.give.console") + "" + mmh.get("mmh.command.usage") + ":" ); + sender.sendMessage("\"/mmh giveph playername 1\" - " + mmh.get("mmh.command.give.playerhead.you") ); + sender.sendMessage("\"/mmh giveph playername playername 1\" - " + mmh.get("mmh.command.give.playerhead.them") ); + return false; + } + }else if( !hasPerm ){ + sender.sendMessage(ChatColor.YELLOW + mmh.getName() + ChatColor.RED + " " + mmh.get("mmh.message.noperm").toString().replace("", perm) ); + return false; + } + }else { + sender.sendMessage("" + mmh.get("mmh.command.usage") + ":" ); + sender.sendMessage("\"/mmh giveph playername 1\" - " + mmh.get("mmh.command.give.playerhead.you") ); + sender.sendMessage("\"/mmh giveph playername playername 1\" - " + mmh.get("mmh.command.give.playerhead.them") ); + return false; + } + return false; + } + // /mmh givebh block + // /mmh givebh player block + // 0 1 2 3 + if(args[0].equalsIgnoreCase("giveBH")){ + if(debug){logDebug("Start GiveBH");} + if(debug){logDebug("Command=" + cmd.getName() + ", arguments=" + Arrays.toString(args));} + if( args.length >= 2 ){ + String perm = "moremobheads.give"; + boolean hasPerm = sender.hasPermission(perm); + if(debug){logDebug(sender.getName() + " has the permission " + perm + "=" + hasPerm);} + if( hasPerm ){ + if(debug) {logDebug("CMD GBH args.length=" + args.length);} + if( (args.length==2) && (sender instanceof Player) ){ + mmh.giveBlockHead((Player) sender,args[1].replace("_", " ")); + if(debug) {logDebug("CMD GBH args1=" + args[1]);} + if(debug){logDebug("End GiveBH True 1");} + return true; + }else if( args.length==3){ + Player player = Bukkit.getPlayer(args[1]); + mmh.giveBlockHead(player,args[2].replace("_", " ")); + if(debug) {logDebug("CMD GBH args1=" + args[1] + ", args2=" +args[2]);} + if(debug){logDebug("End GiveBH True 2");} + return true; + }else if( (args.length==2) && !(sender instanceof Player) ){ + sender.sendMessage("" + mmh.get("mmh.command.give.console") + " mmh giveBh "); + if(debug){logDebug("End GiveBH False 1");} + return false; + } + }else if( !hasPerm ){ + sender.sendMessage(ChatColor.YELLOW + mmh.getName() + ChatColor.RED + " " + mmh.get("mmh.message.noperm").toString().replace("", perm) ); + if(debug){logDebug("End GiveBH False 2");} + return false; + } + }else { + sender.sendMessage("" + mmh.get("mmh.command.usage") + ":" ); + sender.sendMessage("\"/mmh givebh \" - " + mmh.get("mmh.command.give.blockhead.you") ); + sender.sendMessage("\"/mmh giveph playername \" - " + mmh.get("mmh.command.give.blockhead.them") ); + if(debug){logDebug("End GiveBH False 3");} + return false; + } + if(debug){logDebug("End GiveBH False 4");} + return false; + } + } + return false; } - - @SuppressWarnings("static-access") + + @Override @SuppressWarnings("static-access") public List onTabComplete(CommandSender sender, Command command, String alias, String[] args) { // TODO: Tab Complete if (command.getName().equalsIgnoreCase("mmh")) { List autoCompletes = new ArrayList<>(); //create a new string list for tab completion @@ -2402,12 +2446,12 @@ public class EventHandler_1_19_R1 implements CommandExecutor, TabCompleter , Lis return null; } } - if( args[0].equalsIgnoreCase("fixhead") || args[0].equalsIgnoreCase("fh") && args[1].isEmpty() ) { + if( args[0].equalsIgnoreCase("fixhead") || (args[0].equalsIgnoreCase("fh") && args[1].isEmpty()) ) { autoCompletes.add("name"); autoCompletes.add("stack"); return autoCompletes; // then return the list } - if( args[0].equalsIgnoreCase("playerheads") || args[0].equalsIgnoreCase("ph") && args[1].isEmpty() ) { + if( args[0].equalsIgnoreCase("playerheads") || (args[0].equalsIgnoreCase("ph") && args[1].isEmpty()) ) { autoCompletes.add("add"); autoCompletes.add("remove"); autoCompletes.add("replace"); @@ -2422,7 +2466,7 @@ public class EventHandler_1_19_R1 implements CommandExecutor, TabCompleter , Lis return autoCompletes; // then return the list } } - if( args[0].equalsIgnoreCase("customtrader") || args[0].equalsIgnoreCase("ct") && args[1].isEmpty() ) { + if( args[0].equalsIgnoreCase("customtrader") || (args[0].equalsIgnoreCase("ct") && args[1].isEmpty()) ) { autoCompletes.add("add"); autoCompletes.add("remove"); autoCompletes.add("replace"); @@ -2471,22 +2515,22 @@ public class EventHandler_1_19_R1 implements CommandExecutor, TabCompleter , Lis } if( args[0].equalsIgnoreCase("giveph") ) { //return null; - if( args.length < 2 ) { + if( args.length < 2 ) { // /mmh giveph @p @P // /cmd 0 1 2 // return null to list all players. return null; } - if( args.length == 2 ) { + if( args.length == 2 ) { // /mmh giveph @p @P // /cmd 0 1 2 // return null to list all players. return null; } - + } if( args[0].equalsIgnoreCase("givemh") ) { - if( args.length < 2 ) { + if( args.length < 2 ) { // /mmh give @p // /cmd 0 1 // return null to list all players. @@ -2494,64 +2538,63 @@ public class EventHandler_1_19_R1 implements CommandExecutor, TabCompleter , Lis }else if( args.length > 2 ) { if(debug) {mmh.logDebug("TC arg1!null args.length=" + args.length);} if( args.length == 3 ) { - + // /mmh give @p moblist # // /cmd 0 1 2 3 - for(String key : chanceConfig.getConfigurationSection("chance_percent").getKeys(true)) { - //System.out.println(key); - autoCompletes.add(key); - //System.out.println(key); - if(key.equalsIgnoreCase("wolf")) { - autoCompletes.add("wolf.angry"); - }else if(key.equalsIgnoreCase("wither")) { - autoCompletes.add("wither.1"); - autoCompletes.add("wither.2"); - autoCompletes.add("wither.3"); - autoCompletes.add("wither.4"); - autoCompletes.remove(autoCompletes.indexOf("wither")); - }else if(key.equalsIgnoreCase("zombie_villager")) { - autoCompletes.add("zombie_villager.armorer"); - autoCompletes.add("zombie_villager.butcher"); - autoCompletes.add("zombie_villager.cartographer"); - autoCompletes.add("zombie_villager.cleric"); - autoCompletes.add("zombie_villager.farmer"); - autoCompletes.add("zombie_villager.fisherman"); - autoCompletes.add("zombie_villager.fletcher"); - autoCompletes.add("zombie_villager.leatherworker"); - autoCompletes.add("zombie_villager.librarian"); - autoCompletes.add("zombie_villager.mason"); - autoCompletes.add("zombie_villager.nitwit"); - autoCompletes.add("zombie_villager.none"); - autoCompletes.add("zombie_villager.shepherd"); - autoCompletes.add("zombie_villager.toolsmith"); - autoCompletes.add("zombie_villager.weaponsmith"); - autoCompletes.remove(autoCompletes.indexOf("zombie_villager")); - } - } - autoCompletes.remove(autoCompletes.indexOf("axolotl")); - autoCompletes.remove(autoCompletes.indexOf("bee.chance_percent")); - autoCompletes.remove(autoCompletes.indexOf("cat")); - autoCompletes.remove(autoCompletes.indexOf("fox")); - autoCompletes.remove(autoCompletes.indexOf("goat")); - autoCompletes.remove(autoCompletes.indexOf("horse")); - autoCompletes.remove(autoCompletes.indexOf("llama")); - autoCompletes.remove(autoCompletes.indexOf("panda")); - autoCompletes.remove(autoCompletes.indexOf("parrot")); - autoCompletes.remove(autoCompletes.indexOf("rabbit")); - autoCompletes.remove(autoCompletes.indexOf("sheep")); - autoCompletes.remove(autoCompletes.indexOf("trader_llama")); - autoCompletes.remove(autoCompletes.indexOf("mushroom_cow")); - autoCompletes.remove(autoCompletes.indexOf("villager")); - autoCompletes.remove(autoCompletes.indexOf("villager.desert")); - autoCompletes.remove(autoCompletes.indexOf("villager.jungle")); - autoCompletes.remove(autoCompletes.indexOf("villager.plains")); - autoCompletes.remove(autoCompletes.indexOf("villager.savanna")); - autoCompletes.remove(autoCompletes.indexOf("villager.snow")); - autoCompletes.remove(autoCompletes.indexOf("villager.swamp")); - autoCompletes.remove(autoCompletes.indexOf("villager.taiga")); - autoCompletes.remove(autoCompletes.indexOf("frog")); - - return autoCompletes; + for(String key : chanceConfig.getConfigurationSection("chance_percent").getKeys(true)) { + //System.out.println(key); + autoCompletes.add(key); + //System.out.println(key); + if(key.equalsIgnoreCase("wolf")) { + autoCompletes.add("wolf.angry"); + }else if(key.equalsIgnoreCase("wither")) { + autoCompletes.add("wither.normal"); + autoCompletes.add("wither.projectile"); + autoCompletes.add("wither.blue_projectile"); + autoCompletes.remove(autoCompletes.indexOf("wither")); + }else if(key.equalsIgnoreCase("zombie_villager")) { + autoCompletes.add("zombie_villager.armorer"); + autoCompletes.add("zombie_villager.butcher"); + autoCompletes.add("zombie_villager.cartographer"); + autoCompletes.add("zombie_villager.cleric"); + autoCompletes.add("zombie_villager.farmer"); + autoCompletes.add("zombie_villager.fisherman"); + autoCompletes.add("zombie_villager.fletcher"); + autoCompletes.add("zombie_villager.leatherworker"); + autoCompletes.add("zombie_villager.librarian"); + autoCompletes.add("zombie_villager.mason"); + autoCompletes.add("zombie_villager.nitwit"); + autoCompletes.add("zombie_villager.none"); + autoCompletes.add("zombie_villager.shepherd"); + autoCompletes.add("zombie_villager.toolsmith"); + autoCompletes.add("zombie_villager.weaponsmith"); + autoCompletes.remove(autoCompletes.indexOf("zombie_villager")); + } + } + autoCompletes.remove(autoCompletes.indexOf("axolotl")); + autoCompletes.remove(autoCompletes.indexOf("bee.chance_percent")); + autoCompletes.remove(autoCompletes.indexOf("cat")); + autoCompletes.remove(autoCompletes.indexOf("fox")); + autoCompletes.remove(autoCompletes.indexOf("goat")); + autoCompletes.remove(autoCompletes.indexOf("horse")); + autoCompletes.remove(autoCompletes.indexOf("llama")); + autoCompletes.remove(autoCompletes.indexOf("panda")); + autoCompletes.remove(autoCompletes.indexOf("parrot")); + autoCompletes.remove(autoCompletes.indexOf("rabbit")); + autoCompletes.remove(autoCompletes.indexOf("sheep")); + autoCompletes.remove(autoCompletes.indexOf("trader_llama")); + autoCompletes.remove(autoCompletes.indexOf("mushroom_cow")); + autoCompletes.remove(autoCompletes.indexOf("villager")); + autoCompletes.remove(autoCompletes.indexOf("villager.desert")); + autoCompletes.remove(autoCompletes.indexOf("villager.jungle")); + autoCompletes.remove(autoCompletes.indexOf("villager.plains")); + autoCompletes.remove(autoCompletes.indexOf("villager.savanna")); + autoCompletes.remove(autoCompletes.indexOf("villager.snow")); + autoCompletes.remove(autoCompletes.indexOf("villager.swamp")); + autoCompletes.remove(autoCompletes.indexOf("villager.taiga")); + autoCompletes.remove(autoCompletes.indexOf("frog")); + + return autoCompletes; }else if( args.length == 4 ) { autoCompletes.add("1"); return autoCompletes; @@ -2562,65 +2605,66 @@ public class EventHandler_1_19_R1 implements CommandExecutor, TabCompleter , Lis } return null; } - - private void log(String msg) { - mmh.log(msg); - } - private void logDebug(String msg) { - mmh.logDebug(msg); - } - - public boolean coinFlip() { - return Math.random() < 0.5; - } - - @EventHandler - public void onStriderShiver(StriderTemperatureChangeEvent event){ - Strider strider = event.getEntity(); - PersistentDataContainer pdc = strider.getPersistentDataContainer(); - if (event.isShivering()) { - pdc.set(mmh.SHIVERING_KEY, PersistentDataType.STRING, "true"); - }else { - pdc.set(mmh.SHIVERING_KEY, PersistentDataType.STRING, "false"); - } + + private void log(String msg) { + mmh.log(msg); } - - public void announceBeheading(Entity entity, String entityName2, Player player, boolean display) { - UUID damagingPlayerUUID = player != null ? player.getUniqueId() : null; - ItemStack damagingWeapon = mmh.playerWeapons.get(damagingPlayerUUID); - String killerName = player.getDisplayName(); + private void logDebug(String msg) { + mmh.logDebug(msg); + } + + public boolean coinFlip() { + Random random = new Random(); + return random.nextDouble() < 0.5; + } + + @EventHandler + public void onStriderShiver(StriderTemperatureChangeEvent event){ + Strider strider = event.getEntity(); + PersistentDataContainer pdc = strider.getPersistentDataContainer(); + if (event.isShivering()) { + pdc.set(mmh.SHIVERING_KEY, PersistentDataType.STRING, "true"); + }else { + pdc.set(mmh.SHIVERING_KEY, PersistentDataType.STRING, "false"); + } + } + + public void announceBeheading(Entity entity, String entityName2, Player player, boolean display) { + UUID damagingPlayerUUID = player != null ? player.getUniqueId() : null; + ItemStack damagingWeapon = mmh.playerWeapons.get(damagingPlayerUUID); + String killerName = player.getDisplayName(); String entityName = entityName2; - if(display){ + if (display) { killerName = player.getDisplayName(); entityName = entityName2; - }else { + } else { killerName = player.getName(); entityName = entity.getName(); } - if (damagingPlayerUUID != null && damagingWeapon != null) { - Player damagingPlayer = Bukkit.getPlayer(damagingPlayerUUID); - if (damagingPlayer != null) { - String weaponName = damagingWeapon.getItemMeta().getDisplayName(); - if(!damagingWeapon.getItemMeta().hasDisplayName()) { - weaponName = damagingWeapon.getType().name(); - } - int randomIndex = (int) (Math.random() * mmh.beheadingMessages.getConfigurationSection("messages").getKeys(false).size()) + 1; - String announcement = mmh.beheadingMessages.getString("messages.message_" + randomIndex, " beheaded with .") - .replace("", killerName).replace("", entityName).replace("", weaponName); + if ((damagingPlayerUUID != null) && (damagingWeapon != null)) { + Player damagingPlayer = Bukkit.getPlayer(damagingPlayerUUID); + if (damagingPlayer != null) { + String weaponName = damagingWeapon.getItemMeta().getDisplayName(); + if (!damagingWeapon.getItemMeta().hasDisplayName()) { + weaponName = damagingWeapon.getType().name(); + } + int randomIndex = (int) (Math.random() * mmh.beheadingMessages.getConfigurationSection("messages").getKeys(false).size()) + 1; + String announcement = mmh.beheadingMessages.getString("messages.message_" + randomIndex, "%killerName% beheaded %entityName% with %weaponName%.") + .replace("%killerName%", killerName).replace("%entityName%", entityName).replace("%weaponName%", weaponName); - Bukkit.broadcastMessage(announcement); - } - }else if(damagingPlayerUUID != null && damagingWeapon == null) { // Bare Hands? - String weaponName = "Bare Hands"; - int randomIndex = (int) (Math.random() * mmh.beheadingMessages.getConfigurationSection("messages").getKeys(false).size()) + 1; - String announcement = mmh.beheadingMessages.getString("messages.message_" + randomIndex, " beheaded with .") - .replace("", killerName).replace("", entityName).replace("", weaponName); + Bukkit.broadcastMessage(ChatColorUtils.setColors(announcement)); + } + } else if ((damagingPlayerUUID != null) && (damagingWeapon == null)) { // Bare Hands? + String weaponName = "Bare Hands"; + int randomIndex = (int) (Math.random() * mmh.beheadingMessages.getConfigurationSection("messages").getKeys(false).size()) + 1; + String announcement = mmh.beheadingMessages.getString("messages.message_" + randomIndex, "%killerName% beheaded %entityName% with %weaponName%.") + .replace("%killerName%", killerName).replace("%entityName%", entityName).replace("%weaponName%", weaponName); - Bukkit.broadcastMessage(announcement); - } + Bukkit.broadcastMessage(ChatColorUtils.setColors(announcement)); + } + + mmh.playerWeapons.remove(damagingPlayerUUID); + } - mmh.playerWeapons.remove(damagingPlayerUUID); - } - } \ No newline at end of file diff --git a/src/com/github/joelgodofwar/mmh/handlers/EventHandler_1_20_R1.java b/src/com/github/joelgodofwar/mmh/handlers/EventHandler_1_20_R1.java index ebc8ecd..7ef9b92 100644 --- a/src/com/github/joelgodofwar/mmh/handlers/EventHandler_1_20_R1.java +++ b/src/com/github/joelgodofwar/mmh/handlers/EventHandler_1_20_R1.java @@ -12,6 +12,7 @@ import java.util.Arrays; import java.util.HashSet; import java.util.List; import java.util.Optional; +import java.util.Random; import java.util.UUID; import java.util.logging.Level; @@ -60,7 +61,6 @@ import org.bukkit.entity.TraderLlama; import org.bukkit.entity.Trident; import org.bukkit.entity.TropicalFish; import org.bukkit.entity.TropicalFish.Pattern; -import org.bukkit.entity.Vex; import org.bukkit.entity.Villager; import org.bukkit.entity.WanderingTrader; import org.bukkit.entity.Wolf; @@ -104,24 +104,16 @@ import com.github.joelgodofwar.mmh.util.YmlConfiguration; import de.tr7zw.changeme.nbtapi.NBTItem; /** -1.8 1_8_R1 1.8.3 1_8_R2 -1.8.8 1_8_R3 -1.9 1_9_R1 1.9.4 1_9_R2 -1.10 1_10_R1 -1.11 1_11_R1 -1.12 1_12_R1 -1.13 1_13_R1 1.13.1 1_13_R2 -1.14 1_14_R1 -1.15 1_15_R1 -1.16.1 1_16_R1 1.16.2 1_16_R2 -1.17 1_17_R1 -*/ + * 1.8 1_8_R1 1.8.3 1_8_R2 1.8.8 1_8_R3 1.9 1_9_R1 1.9.4 1_9_R2 1.10 1_10_R1 + * 1.11 1_11_R1 1.12 1_12_R1 1.13 1_13_R1 1.13.1 1_13_R2 1.14 1_14_R1 1.15 + * 1_15_R1 1.16.1 1_16_R1 1.16.2 1_16_R2 1.17 1_17_R1 + */ @SuppressWarnings("deprecation") -public class EventHandler_1_20_R1 implements CommandExecutor, TabCompleter , Listener { +public class EventHandler_1_20_R1 implements CommandExecutor, TabCompleter, Listener { /** Variables */ MoreMobHeads mmh; - double defpercent = 0.013; + double defpercent = 13.0; String world_whitelist; String world_blacklist; String mob_whitelist; @@ -133,19 +125,18 @@ public class EventHandler_1_20_R1 implements CommandExecutor, TabCompleter , Lis File blockFile1173; File blockFile119; File blockFile120; - public FileConfiguration blockHeads = new YamlConfiguration(); - public FileConfiguration blockHeads2 = new YamlConfiguration(); - public FileConfiguration blockHeads3 = new YamlConfiguration(); - public FileConfiguration blockHeads4 = new YamlConfiguration(); - + public FileConfiguration blockHeads = new YamlConfiguration(); + public FileConfiguration blockHeads2 = new YamlConfiguration(); + public FileConfiguration blockHeads3 = new YamlConfiguration(); + public FileConfiguration blockHeads4 = new YamlConfiguration(); + List playerhead_recipes = new ArrayList(); List blockhead_recipes = new ArrayList(); List custometrade_recipes = new ArrayList(); int BHNum, BHNum2, BHNum3, BHNum4; - - + @SuppressWarnings({ "static-access", "unchecked", "rawtypes" }) - public EventHandler_1_20_R1(final MoreMobHeads plugin){ + public EventHandler_1_20_R1(final MoreMobHeads plugin) { /** Set variables */ mmh = plugin; mmh.log(Level.INFO, "Loading 1.20 EventHandler..."); @@ -162,24 +153,24 @@ public class EventHandler_1_20_R1 implements CommandExecutor, TabCompleter , Lis blockFile1173 = new File(mmh.getDataFolder() + "" + File.separatorChar + "block_heads_1_17_3.yml"); blockFile119 = new File(mmh.getDataFolder() + "" + File.separatorChar + "block_heads_1_19.yml"); blockFile120 = new File(mmh.getDataFolder() + "" + File.separatorChar + "block_heads_1_20.yml"); - if(mmh.getConfig().getBoolean("wandering_trades.custom_wandering_trader", true)){ - if(!blockFile117.exists()){ + if (mmh.getConfig().getBoolean("wandering_trades.custom_wandering_trader", true)) { + if (!blockFile117.exists()) { mmh.saveResource("block_heads_1_17.yml", true); mmh.log(Level.INFO, "block_heads_1_17.yml not found! Creating in " + mmh.getDataFolder() + ""); } - if(!blockFile1172.exists()){ + if (!blockFile1172.exists()) { mmh.saveResource("block_heads_1_17_2.yml", true); mmh.log(Level.INFO, "block_heads_1_17_2.yml not found! Creating in " + mmh.getDataFolder() + ""); } - if(!blockFile1173.exists()){ + if (!blockFile1173.exists()) { mmh.saveResource("block_heads_1_17_3.yml", true); mmh.log(Level.INFO, "block_heads_1_17_3.yml not found! Creating in " + mmh.getDataFolder() + ""); } - if(!blockFile119.exists()){ + if (!blockFile119.exists()) { mmh.saveResource("block_heads_1_19.yml", true); mmh.log(Level.INFO, "block_heads_1_19.yml not found! Creating in " + mmh.getDataFolder() + ""); } - if(!blockFile120.exists()){ + if (!blockFile120.exists()) { mmh.saveResource("block_heads_1_20.yml", true); mmh.log(Level.INFO, "block_heads_1_20.yml not found! Creating in " + mmh.getDataFolder() + ""); } @@ -199,9 +190,10 @@ public class EventHandler_1_20_R1 implements CommandExecutor, TabCompleter , Lis mmh.stacktraceInfo(); e1.printStackTrace(); } - if( Double.parseDouble(mmh.getMCVersion().substring(0, 4)) >= 1.19 && !(Double.parseDouble(mmh.getMCVersion().substring(0, 4)) >= 1.20)) { + if ((Double.parseDouble(mmh.getMCVersion().substring(0, 4)) >= 1.19) + && !(Double.parseDouble(mmh.getMCVersion().substring(0, 4)) >= 1.20)) { blockFile1173 = blockFile119; - }else if( Double.parseDouble(mmh.getMCVersion().substring(0, 4)) >= 1.20) { + } else if (Double.parseDouble(mmh.getMCVersion().substring(0, 4)) >= 1.20) { blockFile1173 = blockFile120; } blockHeads3 = new YamlConfiguration(); @@ -212,32 +204,33 @@ public class EventHandler_1_20_R1 implements CommandExecutor, TabCompleter , Lis mmh.stacktraceInfo(); e1.printStackTrace(); } - /**blockHeads4 = new YamlConfiguration(); - try { - mmh.log(Level.INFO, "Loading " + blockFile120 + "..."); - blockHeads4.load(blockFile120); - } catch (IOException | InvalidConfigurationException e1) { - mmh.stacktraceInfo(); - e1.printStackTrace(); - }//*/ - - + /** + * blockHeads4 = new YamlConfiguration(); try { mmh.log(Level.INFO, "Loading " + + * blockFile120 + "..."); blockHeads4.load(blockFile120); } catch (IOException | + * InvalidConfigurationException e1) { mmh.stacktraceInfo(); + * e1.printStackTrace(); }// + */ + boolean showlore = mmh.getConfig().getBoolean("lore.show_plugin_name", true); ArrayList headlore = new ArrayList(); headlore.add(ChatColor.AQUA + "" + mmh.getName()); - + mmh.log(Level.INFO, "Loading PlayerHead Recipes..."); - for(int i=1; i < mmh.playerHeads.getInt("players.number") + 1; i++){ - ItemStack price1 = mmh.playerHeads.getItemStack("players.player_" + i + ".price_1", new ItemStack(Material.AIR)); - ItemStack price2 = mmh.playerHeads.getItemStack("players.player_" + i + ".price_2", new ItemStack(Material.AIR)); - ItemStack itemstack = mmh.playerHeads.getItemStack("players.player_" + i + ".itemstack", new ItemStack(Material.AIR)); - if(showlore) { - SkullMeta meta = (SkullMeta)itemstack.getItemMeta(); + for (int i = 1; i < (mmh.playerHeads.getInt("players.number") + 1); i++) { + ItemStack price1 = mmh.playerHeads.getItemStack("players.player_" + i + ".price_1", + new ItemStack(Material.AIR)); + ItemStack price2 = mmh.playerHeads.getItemStack("players.player_" + i + ".price_2", + new ItemStack(Material.AIR)); + ItemStack itemstack = mmh.playerHeads.getItemStack("players.player_" + i + ".itemstack", + new ItemStack(Material.AIR)); + if (showlore) { + SkullMeta meta = (SkullMeta) itemstack.getItemMeta(); meta.setLore(headlore); itemstack.setItemMeta(meta); itemstack.setItemMeta(meta); } - MerchantRecipe recipe = new MerchantRecipe(itemstack, mmh.playerHeads.getInt("players.player_" + i + ".quantity", (int) 3)); + MerchantRecipe recipe = new MerchantRecipe(itemstack, + mmh.playerHeads.getInt("players.player_" + i + ".quantity", 3)); recipe.addIngredient(price1); recipe.addIngredient(price2); playerhead_recipes.add(recipe); @@ -247,17 +240,21 @@ public class EventHandler_1_20_R1 implements CommandExecutor, TabCompleter , Lis BHNum = blockHeads.getInt("blocks.number"); // BlockHeads mmh.log(Level.INFO, "BlockHeads=" + BHNum); - for(int i=1; i < BHNum + 1; i++){ - ItemStack price1 = blockHeads.getItemStack("blocks.block_" + i + ".price_1", new ItemStack(Material.AIR)); - ItemStack price2 = blockHeads.getItemStack("blocks.block_" + i + ".price_2", new ItemStack(Material.AIR)); - ItemStack itemstack = blockHeads.getItemStack("blocks.block_" + i + ".itemstack", new ItemStack(Material.AIR)); - if(showlore) { - SkullMeta meta = (SkullMeta)itemstack.getItemMeta(); + for (int i = 1; i < (BHNum + 1); i++) { + ItemStack price1 = blockHeads.getItemStack("blocks.block_" + i + ".price_1", + new ItemStack(Material.AIR)); + ItemStack price2 = blockHeads.getItemStack("blocks.block_" + i + ".price_2", + new ItemStack(Material.AIR)); + ItemStack itemstack = blockHeads.getItemStack("blocks.block_" + i + ".itemstack", + new ItemStack(Material.AIR)); + if (showlore) { + SkullMeta meta = (SkullMeta) itemstack.getItemMeta(); meta.setLore(headlore); itemstack.setItemMeta(meta); itemstack.setItemMeta(meta); } - MerchantRecipe recipe = new MerchantRecipe(itemstack, blockHeads.getInt("blocks.block_" + i + ".quantity", (int) 8)); + MerchantRecipe recipe = new MerchantRecipe(itemstack, + blockHeads.getInt("blocks.block_" + i + ".quantity", 8)); recipe.setExperienceReward(true); recipe.addIngredient(price1); recipe.addIngredient(price2); @@ -266,17 +263,21 @@ public class EventHandler_1_20_R1 implements CommandExecutor, TabCompleter , Lis BHNum2 = blockHeads2.getInt("blocks.number"); // blockHeads 2 mmh.log(Level.INFO, "BlockHeads2=" + BHNum2); - for(int i=1; i < BHNum2 + 1; i++){ - ItemStack price1 = blockHeads2.getItemStack("blocks.block_" + i + ".price_1", new ItemStack(Material.AIR)); - ItemStack price2 = blockHeads2.getItemStack("blocks.block_" + i + ".price_2", new ItemStack(Material.AIR)); - ItemStack itemstack = blockHeads2.getItemStack("blocks.block_" + i + ".itemstack", new ItemStack(Material.AIR)); - if(showlore) { - SkullMeta meta = (SkullMeta)itemstack.getItemMeta(); + for (int i = 1; i < (BHNum2 + 1); i++) { + ItemStack price1 = blockHeads2.getItemStack("blocks.block_" + i + ".price_1", + new ItemStack(Material.AIR)); + ItemStack price2 = blockHeads2.getItemStack("blocks.block_" + i + ".price_2", + new ItemStack(Material.AIR)); + ItemStack itemstack = blockHeads2.getItemStack("blocks.block_" + i + ".itemstack", + new ItemStack(Material.AIR)); + if (showlore) { + SkullMeta meta = (SkullMeta) itemstack.getItemMeta(); meta.setLore(headlore); itemstack.setItemMeta(meta); itemstack.setItemMeta(meta); } - MerchantRecipe recipe = new MerchantRecipe(itemstack, blockHeads2.getInt("blocks.block_" + i + ".quantity", (int) 8)); + MerchantRecipe recipe = new MerchantRecipe(itemstack, + blockHeads2.getInt("blocks.block_" + i + ".quantity", 8)); recipe.setExperienceReward(true); recipe.addIngredient(price1); recipe.addIngredient(price2); @@ -285,49 +286,54 @@ public class EventHandler_1_20_R1 implements CommandExecutor, TabCompleter , Lis BHNum3 = blockHeads3.getInt("blocks.number"); // blockHeads 3 mmh.log(Level.INFO, "BlockHeads3=" + BHNum3); - for(int i=1; i < BHNum3 + 1; i++){ - ItemStack price1 = blockHeads3.getItemStack("blocks.block_" + i + ".price_1", new ItemStack(Material.AIR)); - ItemStack price2 = blockHeads3.getItemStack("blocks.block_" + i + ".price_2", new ItemStack(Material.AIR)); - ItemStack itemstack = blockHeads3.getItemStack("blocks.block_" + i + ".itemstack", new ItemStack(Material.AIR)); - if(showlore) { - SkullMeta meta = (SkullMeta)itemstack.getItemMeta(); + for (int i = 1; i < (BHNum3 + 1); i++) { + ItemStack price1 = blockHeads3.getItemStack("blocks.block_" + i + ".price_1", + new ItemStack(Material.AIR)); + ItemStack price2 = blockHeads3.getItemStack("blocks.block_" + i + ".price_2", + new ItemStack(Material.AIR)); + ItemStack itemstack = blockHeads3.getItemStack("blocks.block_" + i + ".itemstack", + new ItemStack(Material.AIR)); + if (showlore) { + SkullMeta meta = (SkullMeta) itemstack.getItemMeta(); meta.setLore(headlore); itemstack.setItemMeta(meta); itemstack.setItemMeta(meta); } - MerchantRecipe recipe = new MerchantRecipe(itemstack, blockHeads3.getInt("blocks.block_" + i + ".quantity", (int) 8)); + MerchantRecipe recipe = new MerchantRecipe(itemstack, + blockHeads3.getInt("blocks.block_" + i + ".quantity", 8)); recipe.setExperienceReward(true); recipe.addIngredient(price1); recipe.addIngredient(price2); blockhead_recipes.add(recipe); } - /**BHNum4 = blockHeads4.getInt("blocks.number"); - // blockHeads 4 - mmh.log(Level.INFO, "blockHeads4=" + BHNum4); - for(int i=1; i < BHNum4 + 1; i++){ - ItemStack price1 = blockHeads4.getItemStack("blocks.block_" + i + ".price_1", new ItemStack(Material.AIR)); - ItemStack price2 = blockHeads4.getItemStack("blocks.block_" + i + ".price_2", new ItemStack(Material.AIR)); - ItemStack itemstack = blockHeads4.getItemStack("blocks.block_" + i + ".itemstack", new ItemStack(Material.AIR)); - if(showlore) { - SkullMeta meta = (SkullMeta)itemstack.getItemMeta(); - meta.setLore(headlore); - itemstack.setItemMeta(meta); - itemstack.setItemMeta(meta); - } - MerchantRecipe recipe = new MerchantRecipe(itemstack, blockHeads4.getInt("blocks.block_" + i + ".quantity", (int) 8)); - recipe.setExperienceReward(true); - recipe.addIngredient(price1); - recipe.addIngredient(price2); - blockhead_recipes.add(recipe); - }//*/ - + /** + * BHNum4 = blockHeads4.getInt("blocks.number"); // blockHeads 4 + * mmh.log(Level.INFO, "blockHeads4=" + BHNum4); for(int i=1; i < BHNum4 + 1; + * i++){ ItemStack price1 = blockHeads4.getItemStack("blocks.block_" + i + + * ".price_1", new ItemStack(Material.AIR)); ItemStack price2 = + * blockHeads4.getItemStack("blocks.block_" + i + ".price_2", new + * ItemStack(Material.AIR)); ItemStack itemstack = + * blockHeads4.getItemStack("blocks.block_" + i + ".itemstack", new + * ItemStack(Material.AIR)); if(showlore) { SkullMeta meta = + * (SkullMeta)itemstack.getItemMeta(); meta.setLore(headlore); + * itemstack.setItemMeta(meta); itemstack.setItemMeta(meta); } MerchantRecipe + * recipe = new MerchantRecipe(itemstack, blockHeads4.getInt("blocks.block_" + i + * + ".quantity", (int) 8)); recipe.setExperienceReward(true); + * recipe.addIngredient(price1); recipe.addIngredient(price2); + * blockhead_recipes.add(recipe); }// + */ + mmh.log(Level.INFO, blockhead_recipes.size() + " BlockHead Recipes ADDED..."); mmh.log(Level.INFO, "Loading CustomTrades Recipes..."); - for(int i=1; i < mmh.traderCustom.getInt("custom_trades.number") + 1; i++){ - ItemStack price1 = mmh.traderCustom.getItemStack("custom_trades.trade_" + i + ".price_1", new ItemStack(Material.AIR)); - ItemStack price2 = mmh.traderCustom.getItemStack("custom_trades.trade_" + i + ".price_2", new ItemStack(Material.AIR)); - ItemStack itemstack = mmh.traderCustom.getItemStack("custom_trades.trade_" + i + ".itemstack", new ItemStack(Material.AIR)); - MerchantRecipe recipe = new MerchantRecipe(itemstack, mmh.traderCustom.getInt("custom_trades.trade_" + i + ".quantity", (int) 1)); + for (int i = 1; i < (mmh.traderCustom.getInt("custom_trades.number") + 1); i++) { + ItemStack price1 = mmh.traderCustom.getItemStack("custom_trades.trade_" + i + ".price_1", + new ItemStack(Material.AIR)); + ItemStack price2 = mmh.traderCustom.getItemStack("custom_trades.trade_" + i + ".price_2", + new ItemStack(Material.AIR)); + ItemStack itemstack = mmh.traderCustom.getItemStack("custom_trades.trade_" + i + ".itemstack", + new ItemStack(Material.AIR)); + MerchantRecipe recipe = new MerchantRecipe(itemstack, + mmh.traderCustom.getInt("custom_trades.trade_" + i + ".quantity", 1)); recipe.setExperienceReward(true); recipe.addIngredient(price1); recipe.addIngredient(price2); @@ -337,2227 +343,3137 @@ public class EventHandler_1_20_R1 implements CommandExecutor, TabCompleter , Lis mmh.log(Level.INFO, "EventHandler_1_20 took " + (System.currentTimeMillis() - startTime) + "ms to load"); } } - - @SuppressWarnings({ }) + + @SuppressWarnings({}) @EventHandler public void onEntityDamageByEntity(EntityDamageByEntityEvent event) { - if(debug){mmh.logDebug("getEntity=" + event.getEntity().getName().toString());} - if(debug){mmh.logDebug("getDamager=" + event.getDamager().getName().toString());} - - Player player = null; - if (event.getDamager() instanceof Player) { - player = (Player) event.getDamager(); - if( (event.getEntity() instanceof EnderCrystal) ) { - /** Is Player and Is End Crystal */ - EnderCrystal ec = (EnderCrystal) event.getEntity(); - mmh.endCrystals.put(ec.getUniqueId(), player.getUniqueId()); - } - }else if(event.getDamager() instanceof Arrow) { - Arrow arrow = (Arrow) event.getDamager(); - if(!(arrow.getShooter() instanceof Player) && !(event.getEntity() instanceof EnderCrystal)) { - /** Not Player and Not End Crystal */ - return; - }else if(!(arrow.getShooter() instanceof Player) && (event.getEntity() instanceof EnderCrystal)) { - /** Not Player but is End Crystal */ - return; - }else if((arrow.getShooter() instanceof Player) && !(event.getEntity() instanceof EnderCrystal)) { - /** Is Player but Not End Crystal */ - return; - }else if((arrow.getShooter() instanceof Player) && (event.getEntity() instanceof EnderCrystal)) { - /** Is Player and Is End Crystal */ - player = (Player) arrow.getShooter(); - EnderCrystal ec = (EnderCrystal) event.getEntity(); - mmh.endCrystals.put(ec.getUniqueId(), player.getUniqueId()); - } - player = (Player) arrow.getShooter(); - }else if(event.getDamager() instanceof ThrownPotion) { - ThrownPotion potion = (ThrownPotion) event.getDamager(); - if(!(potion.getShooter() instanceof Player)) { - return; - } - player = (Player) potion.getShooter(); - }else if(event.getDamager() instanceof Snowball) { - Snowball snowball = (Snowball) event.getDamager(); - if(!(snowball.getShooter() instanceof Player) && !(event.getEntity() instanceof EnderCrystal)) { - /** Not Player and Not End Crystal */ - return; - }else if(!(snowball.getShooter() instanceof Player) && (event.getEntity() instanceof EnderCrystal)) { - /** Not Player but is End Crystal */ - return; - }else if((snowball.getShooter() instanceof Player) && !(event.getEntity() instanceof EnderCrystal)) { - /** Is Player but Not End Crystal */ - return; - }else if((snowball.getShooter() instanceof Player) && (event.getEntity() instanceof EnderCrystal)) { - /** Is Player and Is End Crystal */ - player = (Player) snowball.getShooter(); - EnderCrystal ec = (EnderCrystal) event.getEntity(); - mmh.endCrystals.put(ec.getUniqueId(), player.getUniqueId()); - } - player = (Player) snowball.getShooter(); - }else if(event.getDamager() instanceof Egg) { - Egg egg = (Egg) event.getDamager(); - if(!(egg.getShooter() instanceof Player) && !(event.getEntity() instanceof EnderCrystal)) { - /** Not Player and Not End Crystal */ - return; - }else if(!(egg.getShooter() instanceof Player) && (event.getEntity() instanceof EnderCrystal)) { - /** Not Player but is End Crystal */ - return; - }else if((egg.getShooter() instanceof Player) && !(event.getEntity() instanceof EnderCrystal)) { - /** Is Player but Not End Crystal */ - return; - }else if((egg.getShooter() instanceof Player) && (event.getEntity() instanceof EnderCrystal)) { - /** Is Player and Is End Crystal */ - player = (Player) egg.getShooter(); - EnderCrystal ec = (EnderCrystal) event.getEntity(); - mmh.endCrystals.put(ec.getUniqueId(), player.getUniqueId()); - } - player = (Player) egg.getShooter(); - }else if(event.getDamager() instanceof Trident) { - Trident trident = (Trident) event.getDamager(); - if(!(trident.getShooter() instanceof Player) && !(event.getEntity() instanceof EnderCrystal)) { - /** Not Player and Not End Crystal */ - return; - }else if(!(trident.getShooter() instanceof Player) && (event.getEntity() instanceof EnderCrystal)) { - /** Not Player but is End Crystal */ - return; - }else if((trident.getShooter() instanceof Player) && !(event.getEntity() instanceof EnderCrystal)) { - /** Is Player but Not End Crystal */ - return; - }else if((trident.getShooter() instanceof Player) && (event.getEntity() instanceof EnderCrystal)) { - /** Is Player and Is End Crystal */ - player = (Player) trident.getShooter(); - EnderCrystal ec = (EnderCrystal) event.getEntity(); - mmh.endCrystals.put(ec.getUniqueId(), player.getUniqueId()); - } - player = (Player) trident.getShooter(); - }else if(event.getDamager() instanceof TNTPrimed) { - TNTPrimed tnt = (TNTPrimed) event.getDamager(); - if(!(tnt.getSource() instanceof Player)) { - return; - } - player = (Player) tnt.getSource(); - }else if(event.getDamager() instanceof EnderCrystal) { - EnderCrystal ec = (EnderCrystal) event.getDamager(); - UUID pUUID = mmh.endCrystals.get(ec.getUniqueId()); - player = (Player) Bukkit.getPlayer(pUUID); - mmh.playerWeapons.put(player.getUniqueId(), new ItemStack(Material.END_CRYSTAL)); - return; - }else { - - return; - } - - - //Entity damagedEntity = event.getEntity(); + if (debug) { + mmh.logDebug("EDEE - getEntity=" + event.getEntity().getName().toString()); + } + if (debug) { + mmh.logDebug("EDEE - getDamager=" + event.getDamager().getName().toString()); + } - // Store the damaging player's UUID and the damaging weapon in the map - if(debug){mmh.logDebug("DamageCause=" + event.getCause());} - if(debug){mmh.logDebug("UUID=" + player.getUniqueId());} - if(debug){mmh.logDebug("Weapon=" + resolveDamagingWeapon(player.getInventory(), event.getCause()).orElse(null));} - mmh.playerWeapons.put(player.getUniqueId(), resolveDamagingWeapon(player.getInventory(), event.getCause()).orElse(null)); + Player player = null; + if (event.getDamager() instanceof Player) { + player = (Player) event.getDamager(); + if ((event.getEntity() instanceof EnderCrystal)) { + /** Is Player and Is End Crystal */ + EnderCrystal ec = (EnderCrystal) event.getEntity(); + mmh.endCrystals.put(ec.getUniqueId(), player.getUniqueId()); + } + } else if (event.getDamager() instanceof Arrow) { + Arrow arrow = (Arrow) event.getDamager(); + if ((arrow.getShooter() instanceof Player) && !(event.getEntity() instanceof EnderCrystal)) { + /** Is Player but Not End Crystal */ + player = (Player) arrow.getShooter(); + } else if ((arrow.getShooter() instanceof Player) && (event.getEntity() instanceof EnderCrystal)) { + /** Is Player and Is End Crystal */ + player = (Player) arrow.getShooter(); + EnderCrystal ec = (EnderCrystal) event.getEntity(); + mmh.endCrystals.put(ec.getUniqueId(), player.getUniqueId()); + } else { + return; // Not Player or Not End Crystal + } + } else if (event.getDamager() instanceof ThrownPotion) { + ThrownPotion potion = (ThrownPotion) event.getDamager(); + if (!(potion.getShooter() instanceof Player)) { + return; + } + player = (Player) potion.getShooter(); + } else if (event.getDamager() instanceof Snowball) { + Snowball snowball = (Snowball) event.getDamager(); + if ((snowball.getShooter() instanceof Player) && !(event.getEntity() instanceof EnderCrystal)) { + /** Is Player but Not End Crystal */ + player = (Player) snowball.getShooter(); + } else if ((snowball.getShooter() instanceof Player) && (event.getEntity() instanceof EnderCrystal)) { + /** Is Player and Is End Crystal */ + player = (Player) snowball.getShooter(); + EnderCrystal ec = (EnderCrystal) event.getEntity(); + mmh.endCrystals.put(ec.getUniqueId(), player.getUniqueId()); + } else { + return; // Not Player or Not End Crystal + } + } else if (event.getDamager() instanceof Egg) { + Egg egg = (Egg) event.getDamager(); + if ((egg.getShooter() instanceof Player) && !(event.getEntity() instanceof EnderCrystal)) { + /** Is Player but Not End Crystal */ + player = (Player) egg.getShooter(); + } else if ((egg.getShooter() instanceof Player) && (event.getEntity() instanceof EnderCrystal)) { + /** Is Player and Is End Crystal */ + player = (Player) egg.getShooter(); + EnderCrystal ec = (EnderCrystal) event.getEntity(); + mmh.endCrystals.put(ec.getUniqueId(), player.getUniqueId()); + } else { + return; // Not Player or Not End Crystal + } + } else if (event.getDamager() instanceof Trident) { + Trident trident = (Trident) event.getDamager(); + if ((trident.getShooter() instanceof Player) && !(event.getEntity() instanceof EnderCrystal)) { + /** Is Player but Not End Crystal */ + player = (Player) trident.getShooter(); + } else if ((trident.getShooter() instanceof Player) && (event.getEntity() instanceof EnderCrystal)) { + /** Is Player and Is End Crystal */ + player = (Player) trident.getShooter(); + EnderCrystal ec = (EnderCrystal) event.getEntity(); + mmh.endCrystals.put(ec.getUniqueId(), player.getUniqueId()); + } else { + return; // Not Player or Not End Crystal + } + } else if (event.getDamager() instanceof TNTPrimed) { + TNTPrimed tnt = (TNTPrimed) event.getDamager(); + if (!(tnt.getSource() instanceof Player)) { + return; + } + player = (Player) tnt.getSource(); + } else if (event.getDamager() instanceof EnderCrystal) { + EnderCrystal ec = (EnderCrystal) event.getDamager(); + UUID pUUID = mmh.endCrystals.get(ec.getUniqueId()); + player = Bukkit.getPlayer(pUUID); + mmh.playerWeapons.put(player.getUniqueId(), new ItemStack(Material.END_CRYSTAL)); + return; + } else if (event.getDamager() instanceof Creeper) { + Creeper creeper = (Creeper) event.getDamager(); + creeper.isPowered(); + return; + } else { + + return; + } + + // Store the damaging player's UUID and the damaging weapon in the map + if (debug) { + mmh.logDebug("EDEE - DamageCause=" + event.getCause()); + } + if (debug) { + mmh.logDebug("EDEE - UUID=" + player.getUniqueId()); + } + if (debug) { + mmh.logDebug( + "EDEE - Weapon=" + resolveDamagingWeapon(player.getInventory(), event.getCause()).orElse(null)); + } + mmh.playerWeapons.put(player.getUniqueId(), + resolveDamagingWeapon(player.getInventory(), event.getCause()).orElse(null)); } - + /** Events go here */ @SuppressWarnings({ "unchecked", "unused", "rawtypes" }) @EventHandler(priority = EventPriority.LOWEST) - public void onEntityDeathEvent(EntityDeathEvent event){// TODO: EnityDeathEvent + public void onEntityDeathEvent(EntityDeathEvent event) {// TODO: EnityDeathEvent LivingEntity entity = event.getEntity(); // Verify that the killer is a player - if (!(entity.getKiller() instanceof Player)) { - return; - } + if (!(entity.getKiller() instanceof Player) && !(entity.getKiller() instanceof Creeper)) { + return; + } World world = event.getEntity().getWorld(); List Drops = event.getDrops(); world_whitelist = mmh.getConfig().getString("world.whitelist", ""); world_blacklist = mmh.getConfig().getString("world.blacklist", ""); mob_whitelist = mmh.getConfig().getString("mob.whitelist", ""); mob_blacklist = mmh.getConfig().getString("mob.blacklist", ""); - if(debug){mmh.logDebug( "EDE - world_whitelist=" + world_whitelist );} - if(debug){mmh.logDebug( "EDE - world_blacklist=" + world_blacklist );} - if(debug){mmh.logDebug( "EDE - mob_whitelist=" + mob_whitelist );} - if(debug){mmh.logDebug( "EDE - mob_blacklist=" + mob_blacklist );} - - if(world_whitelist != null&&!world_whitelist.isEmpty()&&world_blacklist != null&&!world_blacklist.isEmpty()){ - if(!StrUtils.stringContains(world_whitelist, world.getName().toString())&&StrUtils.stringContains(world_blacklist, world.getName().toString())){ - if(debug){mmh.logDebug("EDE - World - On blacklist and Not on whitelist.");} + if (debug) { + mmh.logDebug("EDE - world_whitelist=" + world_whitelist); + } + if (debug) { + mmh.logDebug("EDE - world_blacklist=" + world_blacklist); + } + if (debug) { + mmh.logDebug("EDE - mob_whitelist=" + mob_whitelist); + } + if (debug) { + mmh.logDebug("EDE - mob_blacklist=" + mob_blacklist); + } + + if ((world_whitelist != null) && !world_whitelist.isEmpty() && (world_blacklist != null) + && !world_blacklist.isEmpty()) { + if (!StrUtils.stringContains(world_whitelist, world.getName().toString()) + && StrUtils.stringContains(world_blacklist, world.getName().toString())) { + if (debug) { + mmh.logDebug("EDE - World - On blacklist and Not on whitelist."); + } return; - }else if(!StrUtils.stringContains(world_whitelist, world.getName().toString())&&!StrUtils.stringContains(world_blacklist, world.getName().toString())){ - if(debug){mmh.logDebug("EDE - World - Not on whitelist.");} + } else if (!StrUtils.stringContains(world_whitelist, world.getName().toString()) + && !StrUtils.stringContains(world_blacklist, world.getName().toString())) { + if (debug) { + mmh.logDebug("EDE - World - Not on whitelist."); + } return; - }else if(!StrUtils.stringContains(world_whitelist, world.getName().toString())){ - + } else if (!StrUtils.stringContains(world_whitelist, world.getName().toString())) { + } - }else if(world_whitelist != null&&!world_whitelist.isEmpty()){ - if(!StrUtils.stringContains(world_whitelist, world.getName().toString())){ - if(debug){mmh.logDebug("EDE - World - Not on whitelist.");} + } else if ((world_whitelist != null) && !world_whitelist.isEmpty()) { + if (!StrUtils.stringContains(world_whitelist, world.getName().toString())) { + if (debug) { + mmh.logDebug("EDE - World - Not on whitelist."); + } return; } - }else if(world_blacklist != null&&!world_blacklist.isEmpty()){ - if(StrUtils.stringContains(world_blacklist, world.getName().toString())){ - if(debug){mmh.logDebug("EDE - World - On blacklist.");} + } else if ((world_blacklist != null) && !world_blacklist.isEmpty()) { + if (StrUtils.stringContains(world_blacklist, world.getName().toString())) { + if (debug) { + mmh.logDebug("EDE - World - On blacklist."); + } return; } } - if(entity instanceof Player){ - if(debug){mmh.logDebug("EDE Entity is Player line:877");} - - //if(entity.getKiller() instanceof Player){// - if(entity.getKiller().hasPermission("moremobheads.players")){ - boolean dropit = mmh.DropIt(event, chanceConfig.getDouble("chance_percent.player", 0.50)); - if(debug){mmh.logDebug("EDE DropIt=" + dropit);} - if(debug){mmh.logDebug("EDE chance_percent.player=" + chanceConfig.getDouble("chance_percent.player", 0.50));} - if(dropit){ - //Player daKiller = entity.getKiller(); - if(debug){mmh.logDebug("EDE Killer is Player line:1073");} - ItemStack helmet = new ItemStack(Material.PLAYER_HEAD, 1, (short)3); - SkullMeta meta = (SkullMeta)helmet.getItemMeta(); - meta.setOwningPlayer(Bukkit.getServer().getOfflinePlayer(((Player) entity).getUniqueId())); - meta.setDisplayName(((Player) entity).getDisplayName() + "'s Head"); - ArrayList lore = new ArrayList(); - if(mmh.getConfig().getBoolean("lore.show_killer", true)){ - //lore.add(ChatColor.RESET + "Killed by " + ChatColor.RESET + ChatColor.YELLOW + entity.getKiller().getDisplayName() ); - lore.add(ChatColor.RESET + "" + mmh.get("mmh.message.lore_killed_by").replace("", "" + entity.getKiller().getDisplayName()) ); - } - if(mmh.getConfig().getBoolean("lore.show_plugin_name", true)){ - lore.add(ChatColor.AQUA + "" + mmh.getName()); - } - meta.setLore(lore); - helmet.setItemMeta(meta);// e2d4c388-42d5-4a96-b4c9-623df7f5e026 - helmet.setItemMeta(meta); - - //entity.getWorld().dropItemNaturally(entity.getLocation(), helmet); - //Drops.add(helmet); - - world.dropItemNaturally(entity.getLocation(), MoreMobHeadsLib.addSound(helmet, entity)); - if(debug){mmh.logDebug("EDE " + ((Player) entity).getDisplayName().toString() + " Player Head Dropped");} - if(mmh.getConfig().getBoolean("announce.players.enabled", true)){ - Player daKiller = entity.getKiller(); - Player daDead = (Player) entity; - String killerName = daKiller.getDisplayName(); - String entityName = daDead.getDisplayName(); - if(mmh.getConfig().getBoolean("announce.players.displayname", true)){ - killerName = daKiller.getDisplayName(); - entityName = daDead.getDisplayName(); - }else { - killerName = daKiller.getName(); - entityName = daDead.getName(); - } - - - announceBeheading(entity, entityName, - daKiller, mmh.getConfig().getBoolean("announce.mobs.displayname", true)); - - } - } - return; - }else { - if(debug){mmh.logDebug("EDE Killer does not have permission \"moremobheads.players\"");} + if ((entity instanceof Player) + && ((entity.getKiller() instanceof Player) || (entity.getKiller() instanceof Creeper))) { + if (debug) { + mmh.logDebug("EDE Entity is Player"); + } + if (entity.getKiller().hasPermission("moremobheads.players") || (entity.getKiller() instanceof Creeper)) { + if (debug) { + mmh.logDebug( + "EDE DropIt=" + mmh.DropIt(event, chanceConfig.getDouble("chance_percent.player", 50.0))); + } + if (debug) { + mmh.logDebug("EDE chance_percent.player=" + chanceConfig.getDouble("chance_percent.player", 50.0)); + } + if (mmh.DropIt(event, chanceConfig.getDouble("chance_percent.player", 50.0))) { + // Player daKiller = entity.getKiller(); + if (debug) { + mmh.logDebug("EDE Killer is Player line:1073"); } - //}// - }else if(event.getEntity() instanceof LivingEntity){ - /** Move this higher - double chancepercent = 0.50; //** Set to check config.yml later/ - String s = Double.toString(chancepercent); - log("chancepercent=" + s.length()); - /** Move this higher */ - if(entity.getKiller() instanceof Player){ - String name = event.getEntityType().toString().replace(" ", "_"); - if(debug){mmh.logDebug("EDE name=" + name);} - //ItemStack itemstack = event.getEntity().getKiller().getInventory().getItemInMainHand(); - //if(itemstack != null){ - /**if(debug){mmh.logDebug("itemstack=" + itemstack.getType().toString() + " line:159");} - int enchantmentlevel = itemstack.getEnchantmentLevel(Enchantment.LOOT_BONUS_MOBS);//.containsEnchantment(Enchantment.LOOT_BONUS_MOBS); - if(debug){mmh.logDebug("enchantmentlevel=" + enchantmentlevel + " line:161");} - double enchantmentlevelpercent = ((double)enchantmentlevel / 100); - if(debug){mmh.logDebug("enchantmentlevelpercent=" + enchantmentlevelpercent + " line:163");} - double chance = Math.random(); - if(debug){mmh.logDebug("chance=" + chance + " line:165");} - - if(debug){mmh.logDebug("chancepercent=" + chancepercent + " line:167");} - chancepercent = chancepercent + enchantmentlevelpercent; - if(debug){mmh.logDebug("chancepercent2=" + chancepercent + " line:169");}*/ - //if(chancepercent > 0.00 && chancepercent < 0.99){ - //if (chancepercent > chance){ - //event.getDrops().add(new ItemStack(Material.CREEPER_HEAD, 1)); - //@Nonnull Set isSpawner; - String isNametag = null; - @Nonnull - PersistentDataContainer pdc = entity.getPersistentDataContainer(); - isNametag = entity.getPersistentDataContainer().get(mmh.NAMETAG_KEY, PersistentDataType.STRING);//.getScoreboardTags();// - if(debug&&isNametag != null){mmh.logDebug("EDE isNametag=" + isNametag.toString());} + ItemStack helmet = new ItemStack(Material.PLAYER_HEAD, 1, (short) 3); + SkullMeta meta = (SkullMeta) helmet.getItemMeta(); + meta.setOwningPlayer(Bukkit.getServer().getOfflinePlayer(((Player) entity).getUniqueId())); + meta.setDisplayName(((Player) entity).getDisplayName() + "'s Head"); + ArrayList lore = new ArrayList(); + if (mmh.getConfig().getBoolean("lore.show_killer", true)) { + // lore.add(ChatColor.RESET + "Killed by " + ChatColor.RESET + ChatColor.YELLOW + // + entity.getKiller().getDisplayName() ); + lore.add( ChatColor.RESET + "" + ChatColorUtils.setColors( mmh.langName.getString("killedby", "Killed By ").replace( "", + "" + entity.getKiller().getDisplayName() ) ) ); + } + if (mmh.getConfig().getBoolean("lore.show_plugin_name", true)) { + lore.add( ChatColor.AQUA + "" + mmh.getName() ); + } + meta.setLore(lore); + helmet.setItemMeta(meta);// e2d4c388-42d5-4a96-b4c9-623df7f5e026 + helmet.setItemMeta(meta); - if(entity.getKiller().hasPermission("moremobheads.mobs")){ - if(entity.getKiller().hasPermission("moremobheads.nametag")&&isNametag != null){ - if(entity.getCustomName() != null&&!(entity.getCustomName().contains("jeb_")) - &&!(entity.getCustomName().contains("Toast"))){ - if(debug){mmh.logDebug("EDE customname=" + entity.getCustomName().toString());} - if(entity instanceof Skeleton||entity instanceof Zombie||entity instanceof PigZombie){ - if(mmh.getServer().getPluginManager().getPlugin("SilenceMobs") != null){ - if(entity.getCustomName().toLowerCase().contains("silenceme")||entity.getCustomName().toLowerCase().contains("silence me")){ - return; - } - } - boolean enforcewhitelist = mmh.getConfig().getBoolean("whitelist.enforce", false); - boolean enforceblacklist = mmh.getConfig().getBoolean("blacklist.enforce", false); - boolean onwhitelist = mmh.getConfig().getString("whitelist.player_head_whitelist", "").toLowerCase().contains(entity.getCustomName().toLowerCase()); - boolean onblacklist = mmh.getConfig().getString("blacklist.player_head_blacklist", "").toLowerCase().contains(entity.getCustomName().toLowerCase()); - if(mmh.DropIt(event, chanceConfig.getDouble("named_mob", 0.10))){ - if(enforcewhitelist&&enforceblacklist){ - if(onwhitelist&&!(onblacklist)){ - Drops.add( MoreMobHeadsLib.addSound( mmh.dropMobHead(entity, entity.getCustomName(), entity.getKiller()), entity) ); - if(debug){mmh.logDebug("EDE " + entity.getCustomName().toString() + " Head Dropped");} - } - }else if(enforcewhitelist&&!enforceblacklist){ - if(onwhitelist){ - Drops.add( MoreMobHeadsLib.addSound( mmh.dropMobHead(entity, entity.getCustomName(), entity.getKiller()), entity) ); - if(debug){mmh.logDebug("EDE " +entity.getCustomName().toString() + " Head Dropped");} - } - }else if(!enforcewhitelist&&enforceblacklist){ - if(!onblacklist){ - Drops.add( MoreMobHeadsLib.addSound( mmh.dropMobHead(entity, entity.getCustomName(), entity.getKiller()), entity) ); - if(debug){mmh.logDebug("EDE " +entity.getCustomName().toString() + " Head Dropped");} - } - }else{ - Drops.add( MoreMobHeadsLib.addSound( mmh.dropMobHead(entity, entity.getCustomName(), entity.getKiller()), entity) ); - if(debug){mmh.logDebug("EDE " +entity.getCustomName().toString() + " Head Dropped");} - } - } - } + world.dropItemNaturally(entity.getLocation(), MoreMobHeadsLib.addSound(helmet, entity)); + if (debug) { + mmh.logDebug("EDE " + ((Player) entity).getDisplayName().toString() + " Player Head Dropped"); + } + if (mmh.getConfig().getBoolean("announce.players.enabled", true)) { + Player daKiller = entity.getKiller(); + Player daDead = (Player) entity; + String killerName = daKiller.getDisplayName(); + String entityName = daDead.getDisplayName(); + if (mmh.getConfig().getBoolean("announce.players.displayname", true)) { + killerName = daKiller.getDisplayName(); + entityName = daDead.getDisplayName(); + } else { + killerName = daKiller.getName(); + entityName = daDead.getName(); + } + announceBeheading(entity, entityName, daKiller, + mmh.getConfig().getBoolean("announce.mobs.displayname", true)); + } + } + return; + } + else if (debug) { + mmh.logDebug("EDE Killer does not have permission \"moremobheads.players\""); + } + } else if (event.getEntity() instanceof LivingEntity) { + if ((entity.getKiller() instanceof Player) || (entity.getKiller() instanceof Creeper)) { + String name = event.getEntityType().toString().replace(" ", "_"); + if (debug) { + mmh.logDebug("EDE name=" + name); + } + String isNametag = null; + @Nonnull + PersistentDataContainer pdc = entity.getPersistentDataContainer(); + isNametag = entity.getPersistentDataContainer().get(mmh.NAMETAG_KEY, PersistentDataType.STRING);// .getScoreboardTags();// + if (debug && (isNametag != null)) { + mmh.logDebug("EDE isNametag=" + isNametag.toString()); + } + + if ((entity.getKiller() instanceof Creeper) || entity.getKiller().hasPermission("moremobheads.mobs")) { + if (((entity.getKiller() instanceof Creeper) || entity.getKiller().hasPermission("moremobheads.nametag")) && (isNametag != null)) { + if ((entity.getCustomName() != null) && !(entity.getCustomName().contains("jeb_")) && !(entity.getCustomName().contains("Toast"))) { + if (debug) {mmh.logDebug("EDE customname=" + entity.getCustomName().toString());} + if ((entity instanceof Skeleton) || (entity instanceof Zombie) || (entity instanceof PigZombie)) { + if (mmh.getServer().getPluginManager().getPlugin("SilenceMobs") != null) { + if (entity.getCustomName().toLowerCase().contains("silenceme") + || entity.getCustomName().toLowerCase().contains("silence me")) { return; } } - //String name = event.getEntity().getName().toUpperCase().replace(" ", "_"); - - if(mob_whitelist != null&&!mob_whitelist.isEmpty()&&mob_blacklist != null&&!mob_blacklist.isEmpty()){ - if(!StrUtils.stringContains(mob_whitelist, name)){//mob_whitelist.contains(name) - mmh.log(Level.INFO, "EDE - Mob - Not on whitelist. Mob=" + name); - return; - } - }else if(mob_whitelist != null&&!mob_whitelist.isEmpty()){ - if(!StrUtils.stringContains(mob_whitelist, name)&&StrUtils.stringContains(mob_blacklist, name)){//mob_whitelist.contains(name) - mmh.log(Level.INFO, "EDE - Mob - Not on whitelist - Is on blacklist. Mob=" + name); - return; - } - }else if(mob_blacklist != null&&!mob_blacklist.isEmpty()){ - if(StrUtils.stringContains(mob_blacklist, name)){ - mmh.log(Level.INFO, "EDE - Mob - On blacklist. Mob=" + name); - return; - } - } - switch (name) { - case "CREEPER": - // ConfigHelper.Double(chanceConfig, "chance_percent.creeper", defpercent) - Creeper creeper = (Creeper) event.getEntity(); - double cchance = ConfigHelper.Double(chanceConfig, "chance_percent.creeper", defpercent); - if(creeper.isPowered()) { - name = "CREEPER_CHARGED"; - cchance = 1.00; - } - if(mmh.DropIt(event, cchance)){ - if(mmh.getConfig().getBoolean("vanilla_heads.creeper", false)&&name != "CREEPER_CHARGED"){ - Drops.add( new ItemStack(Material.CREEPER_HEAD)); - }else{ // mmh.langName - Drops.add( MoreMobHeadsLib.addSound(mmh.makeSkull(MobHeads.valueOf(name).getTexture().toString(), - mmh.langName.getString(name.toLowerCase(), MobHeads.valueOf(name).getName() + " Head"), entity.getKiller()), entity) ); - } // MobHeads.valueOf(name).getName() + " Head" - if(debug){mmh.logDebug("EDE Creeper vanilla=" + mmh.getConfig().getBoolean("vanilla_heads.creeper", false));} - if(debug){mmh.logDebug("EDE Creeper Head Dropped");} - if(mmh.getConfig().getBoolean("announce.mobs.enabled", true)){ - announceBeheading(entity, mmh.langName.getString(name.toLowerCase(), MobHeads.valueOf(name).getName() + "").replace(" Head", ""), - entity.getKiller(), mmh.getConfig().getBoolean("announce.mobs.displayname", true)); - } - } - break; - case "ENDER_DRAGON": - // ConfigHelper.Double(chanceConfig, "chance_percent.ender_dragon", defpercent) - if(mmh.DropIt(event, ConfigHelper.Double(chanceConfig, "chance_percent.ender_dragon", defpercent) )){ - if(mmh.getConfig().getBoolean("vanilla_heads.ender_dragon", false)){ - Drops.add( new ItemStack(Material.DRAGON_HEAD)); - }else{ - Drops.add( MoreMobHeadsLib.addSound(mmh.makeSkull(MobHeads.valueOf(name).getTexture().toString(), - mmh.langName.getString(name.toLowerCase(), MobHeads.valueOf(name).getName() + " Head"), entity.getKiller()), entity) ); - } - if(debug){mmh.logDebug("EDE Ender Dragon Head Dropped");} - if(mmh.getConfig().getBoolean("announce.mobs.enabled", true)){ - announceBeheading(entity, mmh.langName.getString(name.toLowerCase(), MobHeads.valueOf(name).getName() + "").replace(" Head", ""), - entity.getKiller(), mmh.getConfig().getBoolean("announce.mobs.displayname", true)); - } - } - break; - case "PIGLIN": - // ConfigHelper.Double(chanceConfig, "chance_percent.ender_dragon", defpercent) - if(mmh.DropIt(event, ConfigHelper.Double(chanceConfig, "chance_percent.piglin", defpercent) )){ - if(mmh.getConfig().getBoolean("vanilla_heads.piglin", false)){ - Drops.add( MoreMobHeadsLib.getVanilla(entity.getType()) ); - }else{ - Drops.add( MoreMobHeadsLib.addSound(mmh.makeSkull(MobHeads.valueOf(name).getTexture().toString(), - mmh.langName.getString(name.toLowerCase(), MobHeads.valueOf(name).getName() + " Head"), entity.getKiller()), entity) ); - } - if(debug){mmh.logDebug("EDE Ender Dragon Head Dropped");} - if(mmh.getConfig().getBoolean("announce.mobs.enabled", true)){ - announceBeheading(entity, mmh.langName.getString(name.toLowerCase(), MobHeads.valueOf(name).getName() + "").replace(" Head", ""), - entity.getKiller(), mmh.getConfig().getBoolean("announce.mobs.displayname", true)); - } - } - break; - case "SKELETON": - // ConfigHelper.Double(chanceConfig, "chance_percent.skeleton", defpercent) - if(mmh.DropIt(event, ConfigHelper.Double(chanceConfig, "chance_percent.skeleton", defpercent) )){ - if(mmh.getConfig().getBoolean("vanilla_heads.skeleton", false)){ - Drops.add( new ItemStack(Material.SKELETON_SKULL)); - }else{ - Drops.add( MoreMobHeadsLib.addSound(mmh.makeSkull(MobHeads.valueOf(name).getTexture().toString(), - mmh.langName.getString(name.toLowerCase(), MobHeads.valueOf(name).getName() + " Head"), entity.getKiller()), entity) ); - } - if(debug){mmh.logDebug("EDE Skeleton vanilla=" + mmh.getConfig().getBoolean("vanilla_heads.skeleton", false));} - if(debug){mmh.logDebug("EDE Skeleton Head Dropped");} - if(mmh.getConfig().getBoolean("announce.mobs.enabled", true)){ - announceBeheading(entity, mmh.langName.getString(name.toLowerCase(), MobHeads.valueOf(name).getName() + "").replace(" Head", ""), - entity.getKiller(), mmh.getConfig().getBoolean("announce.mobs.displayname", true)); - } - } - break; - case "WITHER_SKELETON": - // ConfigHelper.Double(chanceConfig, "chance_percent.wither_skeleton", defpercent) - if(mmh.DropIt(event, ConfigHelper.Double(chanceConfig, "chance_percent.wither_skeleton", defpercent) )){ - if(mmh.getConfig().getBoolean("vanilla_heads.wither_skeleton", false)){ - Drops.add( new ItemStack(Material.WITHER_SKELETON_SKULL)); - }else{ - Drops.add( MoreMobHeadsLib.addSound(mmh.makeSkull(MobHeads.valueOf(name).getTexture().toString(), - mmh.langName.getString(name.toLowerCase(), MobHeads.valueOf(name).getName() + " Head"), entity.getKiller()), entity) ); - } - if(debug){mmh.logDebug("EDE Wither Skeleton Head Dropped");} - if(mmh.getConfig().getBoolean("announce.mobs.enabled", true)){ - announceBeheading(entity, mmh.langName.getString(name.toLowerCase(), MobHeads.valueOf(name).getName() + "").replace(" Head", ""), - entity.getKiller(), mmh.getConfig().getBoolean("announce.mobs.displayname", true)); - } - } - break; - case "ZOMBIE": - // ConfigHelper.Double(chanceConfig, "chance_percent.zombie", defpercent) - if(mmh.DropIt(event, ConfigHelper.Double(chanceConfig, "chance_percent.zombie", defpercent) )){ - if(mmh.getConfig().getBoolean("vanilla_heads.zombie", false)){ - Drops.add(new ItemStack(Material.ZOMBIE_HEAD)); - }else{ - - Drops.add( MoreMobHeadsLib.addSound(mmh.makeSkull(MobHeads.valueOf(name).getTexture().toString(), - mmh.langName.getString(name.toLowerCase(), MobHeads.valueOf(name).getName() + " Head"), entity.getKiller()), entity) ); - /**entity.getWorld().dropItemNaturally(entity.getLocation(), mmh.makeSkull(MobHeads.valueOf(name).getTexture().toString(), - mmh.langName.getString(name.toLowerCase(), MobHeads.valueOf(name).getName() + " Head"), entity.getKiller()));//*/ - } - if(debug){mmh.logDebug("EDE Zombie vanilla=" + mmh.getConfig().getBoolean("vanilla_heads.zombie", false));} - if(debug){mmh.logDebug("EDE Zombie Head Dropped");} - if(mmh.getConfig().getBoolean("announce.mobs.enabled", true)){ - announceBeheading(entity, mmh.langName.getString(name.toLowerCase(), MobHeads.valueOf(name).getName() + "").replace(" Head", ""), - entity.getKiller(), mmh.getConfig().getBoolean("announce.mobs.displayname", true)); - } - } - break; - case "TROPICAL_FISH": - TropicalFish daFish = (TropicalFish) entity; - DyeColor daFishBody = daFish.getBodyColor(); - DyeColor daFishPatternColor = daFish.getPatternColor(); - Pattern daFishType = daFish.getPattern(); - log("bodycolor=" + daFishBody.toString() + "\nPatternColor=" + daFishPatternColor.toString() + "\nPattern=" + daFishType.toString()); - //TropicalFishHeads daFishEnum = TropicalFishHeads.getIfPresent(name); - String daFishName = mmh.getNamedTropicalFishName(daFishType, daFishBody, daFishPatternColor); - log("daFishName: " + daFishName); - if(mmh.DropIt(event, ConfigHelper.Double(chanceConfig, "chance_percent.tropical_fish." + daFishName.toLowerCase(), defpercent)) ){ - Drops.add( MoreMobHeadsLib.addSound(mmh.makeSkull(TropicalFishHeads.valueOf(name + "_" + daFishName).getTexture().toString(), - mmh.langName.getString(name.toLowerCase() + "." + daFishName.toLowerCase(), TropicalFishHeads.valueOf(name + "_" + daFishName).getName() + " Head"), entity.getKiller()), entity) ); - if(debug){mmh.logDebug("EDE TROPICAL_FISH:" + daFishName + " head dropped");} - if(mmh.getConfig().getBoolean("announce.mobs.enabled", true)){ - announceBeheading(entity, mmh.langName.getString(name.toLowerCase() + "." + daFishName.toLowerCase(), TropicalFishHeads.valueOf(name + "_" + daFishName).getName() + "").replace(" Head", ""), - entity.getKiller(), mmh.getConfig().getBoolean("announce.mobs.displayname", true)); - } - } - break; - case "WITHER": - //Wither wither = (Wither) event.getEntity(); - int random = mmh.randomBetween(1, 4); - if(debug){mmh.logDebug("EDE Wither random=" + random + "");} - // ConfigHelper.Double(chanceConfig, "chance_percent.wither", defpercent) - if(mmh.DropIt(event, ConfigHelper.Double(chanceConfig, "chance_percent.wither", defpercent) )){ - Drops.add( MoreMobHeadsLib.addSound(mmh.makeSkull(MobHeads.valueOf(name + "_" + random).getTexture().toString(), - mmh.langName.getString(name.toLowerCase() + "." + random, MobHeads.valueOf(name + "_" + random).getName() + " Head"), entity.getKiller()), entity) ); - if(debug){mmh.logDebug("EDE Wither_" + random + " Head Dropped");} - if(mmh.getConfig().getBoolean("announce.mobs.enabled", true)){ - announceBeheading(entity, mmh.langName.getString(name.toLowerCase() + "." + random, MobHeads.valueOf(name + "_" + random).getName() + "").replace(" Head", ""), - entity.getKiller(), mmh.getConfig().getBoolean("announce.mobs.displayname", true)); - } + boolean enforcewhitelist = mmh.getConfig().getBoolean("whitelist.enforce", false); + boolean enforceblacklist = mmh.getConfig().getBoolean("blacklist.enforce", false); + boolean onwhitelist = mmh.getConfig().getString("whitelist.player_head_whitelist", "") + .toLowerCase().contains(entity.getCustomName().toLowerCase()); + boolean onblacklist = mmh.getConfig().getString("blacklist.player_head_blacklist", "") + .toLowerCase().contains(entity.getCustomName().toLowerCase()); + if (mmh.DropIt(event, chanceConfig.getDouble("named_mob", 10.0))) { + if (enforcewhitelist && enforceblacklist) { + if (onwhitelist && !(onblacklist)) { + Drops.add(MoreMobHeadsLib.addSound(mmh.dropMobHead(entity, entity.getCustomName(), entity.getKiller()),entity)); + if (debug) {mmh.logDebug("EDE " + entity.getCustomName().toString() + " Head Dropped");} + } + } else if (enforcewhitelist && !enforceblacklist) { + if (onwhitelist) { + Drops.add(MoreMobHeadsLib.addSound( + mmh.dropMobHead(entity, entity.getCustomName(), entity.getKiller()), + entity)); + if (debug) {mmh.logDebug("EDE " + entity.getCustomName().toString() + " Head Dropped");} + } + } else if (!enforcewhitelist && enforceblacklist) { + if (!onblacklist) { + Drops.add(MoreMobHeadsLib.addSound( + mmh.dropMobHead(entity, entity.getCustomName(), entity.getKiller()), + entity)); + if (debug) {mmh.logDebug("EDE " + entity.getCustomName().toString() + " Head Dropped");} + } + } else { + Drops.add(MoreMobHeadsLib.addSound( + mmh.dropMobHead(entity, entity.getCustomName(), entity.getKiller()), + entity)); + if (debug) {mmh.logDebug("EDE " + entity.getCustomName().toString() + " Head Dropped");} } - break; - case "WOLF": - Wolf wolf = (Wolf) event.getEntity(); - // ConfigHelper.Double(chanceConfig, "chance_percent." + name.toLowerCase(), defpercent) - if(mmh.DropIt(event, ConfigHelper.Double(chanceConfig, "chance_percent." + name.toLowerCase(), defpercent) )){ - if(wolf.isAngry()){ - Drops.add( MoreMobHeadsLib.addSound(mmh.makeSkull(MobHeads.valueOf(name + "_ANGRY").getTexture().toString(), - mmh.langName.getString(name.toLowerCase() + "_angry", MobHeads.valueOf(name + "_ANGRY").getName() + " Head"), entity.getKiller()), entity) ); - if(debug){mmh.logDebug("EDE Angry Wolf Head Dropped");} - if(mmh.getConfig().getBoolean("announce.mobs.enabled", true)){ - announceBeheading(entity, mmh.langName.getString(name.toLowerCase() + "_angry", MobHeads.valueOf(name + "_ANGRY").getName() + "").replace(" Head", ""), - entity.getKiller(), mmh.getConfig().getBoolean("announce.mobs.displayname", true)); - } - }else{ - Drops.add( MoreMobHeadsLib.addSound(mmh.makeSkull(MobHeads.valueOf(name).getTexture().toString(), - mmh.langName.getString(name.toLowerCase(), event.getEntity().getName() + " Head"), entity.getKiller()), entity) ); - if(debug){mmh.logDebug("EDE Wolf Head Dropped");} - if(mmh.getConfig().getBoolean("announce.mobs.enabled", true)){ - announceBeheading(entity, mmh.langName.getString(name.toLowerCase(), MobHeads.valueOf(name).getName() + "").replace(" Head", ""), - entity.getKiller(), mmh.getConfig().getBoolean("announce.mobs.displayname", true)); - } - } - } - break; - case "FOX": - Fox dafox = (Fox) entity; - String dafoxtype = dafox.getFoxType().toString(); - if(debug){mmh.logDebug("EDE dafoxtype=" + dafoxtype);} - // ConfigHelper.Double(chanceConfig, "chance_percent.fox." + dafoxtype.toLowerCase(), defpercent) - if(mmh.DropIt(event, ConfigHelper.Double(chanceConfig, "chance_percent.fox." + dafoxtype.toLowerCase(), defpercent) )){ - Drops.add( MoreMobHeadsLib.addSound(mmh.makeSkull(MobHeads.valueOf(name + "_" + dafoxtype).getTexture().toString(), - mmh.langName.getString(name.toLowerCase() + "." + dafoxtype.toLowerCase(), MobHeads.valueOf(name + "_" + dafoxtype).getName() + " Head"), entity.getKiller()), entity) ); - if(debug){mmh.logDebug("EDE Fox Head Dropped");} - if(mmh.getConfig().getBoolean("announce.mobs.enabled", true)){ - announceBeheading(entity, mmh.langName.getString(name.toLowerCase() + "." + dafoxtype.toLowerCase(), MobHeads.valueOf(name + "_" + dafoxtype).getName() + "").replace(" Head", ""), - entity.getKiller(), mmh.getConfig().getBoolean("announce.mobs.displayname", true)); - } - } - - break; - case "CAT": - Cat dacat = (Cat) entity; - String dacattype = dacat.getCatType().toString(); - if(debug){mmh.logDebug("entity cat=" + dacat.getCatType());} - // ConfigHelper.Double(chanceConfig, "chance_percent.cat." + dacattype.toLowerCase(), defpercent) - if(mmh.DropIt(event, ConfigHelper.Double(chanceConfig, "chance_percent.cat." + dacattype.toLowerCase(), defpercent) )){ - Drops.add( MoreMobHeadsLib.addSound(mmh.makeSkull(CatHeads.valueOf(dacattype).getTexture().toString(), - mmh.langName.getString(name.toLowerCase() + "." + dacattype.toLowerCase(), CatHeads.valueOf(dacattype).getName() + " Head"), entity.getKiller()), entity) ); - if(debug){mmh.logDebug("EDE Cat Head Dropped");} - if(mmh.getConfig().getBoolean("announce.mobs.enabled", true)){ - announceBeheading(entity, mmh.langName.getString(name.toLowerCase() + "." + dacattype.toLowerCase(), CatHeads.valueOf(dacattype).getName() + "").replace(" Head", ""), - entity.getKiller(), mmh.getConfig().getBoolean("announce.mobs.displayname", true)); - } - } - break; - case "OCELOT": - // ConfigHelper.Double(chanceConfig, "chance_percent." + name.toLowerCase(), defpercent) - if(mmh.DropIt(event, ConfigHelper.Double(chanceConfig, "chance_percent." + name.toLowerCase(), defpercent) )){ - Drops.add( MoreMobHeadsLib.addSound(mmh.makeSkull(MobHeads.valueOf(name).getTexture().toString(), - mmh.langName.getString(MobHeads.valueOf(name).getNameString(), MobHeads.valueOf(name).getName() + " Head"), entity.getKiller()), entity) ); - if(debug){mmh.logDebug("EDE " + name + " Head Dropped");} - if(mmh.getConfig().getBoolean("announce.mobs.enabled", true)){ - announceBeheading(entity, mmh.langName.getString(MobHeads.valueOf(name).getNameString(), MobHeads.valueOf(name).getName() + "").replace(" Head", ""), - entity.getKiller(), mmh.getConfig().getBoolean("announce.mobs.displayname", true)); - } - } - if(debug){mmh.logDebug("EDE " + MobHeads.valueOf(name) + " killed");} - - break; - case "BEE": - Bee daBee = (Bee) entity; - int daAnger = daBee.getAnger(); - if(debug){mmh.logDebug("EDE daAnger=" + daAnger);} - boolean daNectar = daBee.hasNectar(); - if(debug){mmh.logDebug("EDE daNectar=" + daNectar);} - if(daAnger >= 1&&daNectar == true){ - // ConfigHelper.Double(chanceConfig, "chance_percent.bee.angry_pollinated", defpercent) - if(mmh.DropIt(event, ConfigHelper.Double(chanceConfig, "chance_percent.bee.angry_pollinated", defpercent) )){ - Drops.add( MoreMobHeadsLib.addSound(mmh.makeSkull(MobHeads.valueOf("BEE_ANGRY_POLLINATED").getTexture().toString(), - mmh.langName.getString(name.toLowerCase() + ".angry_pollinated", "Angry Pollinated Bee Head"), entity.getKiller()), entity) ); - if(debug){mmh.logDebug("EDE Angry Pollinated Bee Head Dropped");} - if(mmh.getConfig().getBoolean("announce.mobs.enabled", true)){ - announceBeheading(entity, mmh.langName.getString(name.toLowerCase() + ".angry_pollinated", MobHeads.valueOf("BEE_ANGRY_POLLINATED").getName() + "").replace(" Head", ""), - entity.getKiller(), mmh.getConfig().getBoolean("announce.mobs.displayname", true)); - } - } - }else if(daAnger >= 1&&daNectar == false){ - // ConfigHelper.Double(chanceConfig, "chance_percent.bee.angry", defpercent) - if(mmh.DropIt(event, ConfigHelper.Double(chanceConfig, "chance_percent.bee.angry", defpercent) )){ - Drops.add( MoreMobHeadsLib.addSound(mmh.makeSkull(MobHeads.valueOf("BEE_ANGRY").getTexture().toString(), - mmh.langName.getString(name.toLowerCase() + ".angry", "Angry Bee Head"), entity.getKiller()), entity) ); - if(debug){mmh.logDebug("EDE Angry Bee Head Dropped");} - if(mmh.getConfig().getBoolean("announce.mobs.enabled", true)){ - announceBeheading(entity, mmh.langName.getString(name.toLowerCase() + ".angry", MobHeads.valueOf("BEE_ANGRY").getName() + "").replace(" Head", ""), - entity.getKiller(), mmh.getConfig().getBoolean("announce.mobs.displayname", true)); - } - } - }else if(daAnger == 0&&daNectar == true){ - // ConfigHelper.Double(chanceConfig, "chance_percent.bee.pollinated", defpercent) - if(mmh.DropIt(event, ConfigHelper.Double(chanceConfig, "chance_percent.bee.pollinated", defpercent) )){ - Drops.add( MoreMobHeadsLib.addSound(mmh.makeSkull(MobHeads.valueOf("BEE_POLLINATED").getTexture().toString(), - mmh.langName.getString(name.toLowerCase() + ".pollinated", "Pollinated Bee Head"), entity.getKiller()), entity) ); - if(debug){mmh.logDebug("EDE Pollinated Bee Head Dropped");} - if(mmh.getConfig().getBoolean("announce.mobs.enabled", true)){ - announceBeheading(entity, mmh.langName.getString(name.toLowerCase() + ".pollinated", MobHeads.valueOf("BEE_POLLINATED").getName() + "").replace(" Head", ""), - entity.getKiller(), mmh.getConfig().getBoolean("announce.mobs.displayname", true)); - } - } - }else if(daAnger == 0&&daNectar == false){ - // ConfigHelper.Double(chanceConfig, "chance_percent.bee.chance_percent", defpercent) - if(mmh.DropIt(event, ConfigHelper.Double(chanceConfig, "chance_percent.bee.chance_percent", defpercent) )){ - Drops.add( MoreMobHeadsLib.addSound(mmh.makeSkull(MobHeads.valueOf("BEE").getTexture().toString(), - mmh.langName.getString(name.toLowerCase() + ".none", "Bee Head"), entity.getKiller()), entity) ); - if(debug){mmh.logDebug("EDE Bee Head Dropped");} - if(mmh.getConfig().getBoolean("announce.mobs.enabled", true)){ - announceBeheading(entity, mmh.langName.getString(name.toLowerCase() + ".none", MobHeads.valueOf("BEE").getName() + "").replace(" Head", ""), - entity.getKiller(), mmh.getConfig().getBoolean("announce.mobs.displayname", true)); - } - } - } - break; - case "LLAMA": - Llama daLlama = (Llama) entity; - String daLlamaColor = daLlama.getColor().toString(); - String daLlamaName = LlamaHeads.valueOf(name + "_" + daLlamaColor).getName() + " Head";//daLlamaColor.toLowerCase().replace("b", "B").replace("c", "C").replace("g", "G").replace("wh", "Wh") + " Llama Head"; - //log(name + "_" + daLlamaColor); - // ConfigHelper.Double(chanceConfig, "chance_percent.llama." + daLlamaColor.toLowerCase(), defpercent) - if(mmh.DropIt(event, ConfigHelper.Double(chanceConfig, "chance_percent.llama." + daLlamaColor.toLowerCase(), defpercent) )){ - Drops.add( MoreMobHeadsLib.addSound(mmh.makeSkull(LlamaHeads.valueOf(name + "_" + daLlamaColor).getTexture().toString(), - mmh.langName.getString(name.toLowerCase() + "." + daLlamaColor.toLowerCase(), daLlamaName), entity.getKiller()), entity) ); - if(debug){mmh.logDebug("EDE Llama Head Dropped");} - if(mmh.getConfig().getBoolean("announce.mobs.enabled", true)){ - announceBeheading(entity, mmh.langName.getString(name.toLowerCase() + "." + daLlamaColor.toLowerCase(), LlamaHeads.valueOf(name + "_" + daLlamaColor).getName() + "").replace(" Head", ""), - entity.getKiller(), mmh.getConfig().getBoolean("announce.mobs.displayname", true)); - } - } - break; - case "HORSE": - Horse daHorse = (Horse) entity; - String daHorseColor = daHorse.getColor().toString(); - String daHorseName = HorseHeads.valueOf(name + "_" + daHorseColor).getName() + " Head";//daHorseColor.toLowerCase().replace("b", "B").replace("ch", "Ch").replace("cr", "Cr").replace("d", "D") - //.replace("g", "G").replace("wh", "Wh").replace("_", " ") + " Horse Head"; - // ConfigHelper.Double(chanceConfig, "chance_percent.horse." + daHorseColor.toLowerCase(), defpercent) - if(mmh.DropIt(event, ConfigHelper.Double(chanceConfig, "chance_percent.horse." + daHorseColor.toLowerCase(), defpercent) )){ - Drops.add( MoreMobHeadsLib.addSound(mmh.makeSkull(HorseHeads.valueOf(name + "_" + daHorseColor).getTexture().toString(), - mmh.langName.getString(name.toLowerCase() + "." + daHorseColor.toLowerCase(), daHorseName), entity.getKiller()), entity) ); - if(debug){mmh.logDebug("EDE Horse Head Dropped");} - if(mmh.getConfig().getBoolean("announce.mobs.enabled", true)){ - announceBeheading(entity, mmh.langName.getString(name.toLowerCase() + "." + daHorseColor.toLowerCase(), HorseHeads.valueOf(name + "_" + daHorseColor).getName() + "").replace(" Head", ""), - entity.getKiller(), mmh.getConfig().getBoolean("announce.mobs.displayname", true)); - } - } - break; - case "MOOSHROOM": - name = "MUSHROOM_COW"; - case "MUSHROOM_COW": - MushroomCow daMushroom = (MushroomCow) entity; - String daCowVariant = daMushroom.getVariant().toString(); - String daCowName = daCowVariant.toLowerCase().replace("br", "Br").replace("re", "Re") + " Mooshroom Head"; - if(debug){mmh.logDebug("EDE " + name + "_" + daCowVariant);} - // ConfigHelper.Double(chanceConfig, "chance_percent.mushroom_cow." + daCowVariant.toLowerCase(), defpercent) - if(mmh.DropIt(event, ConfigHelper.Double(chanceConfig, "chance_percent.mushroom_cow." + daCowVariant.toLowerCase(), defpercent) )){ - Drops.add( MoreMobHeadsLib.addSound(mmh.makeSkull(MobHeads.valueOf(name + "_" + daCowVariant).getTexture().toString(), - mmh.langName.getString(name.toLowerCase() + "." + daCowVariant.toLowerCase(), daCowName), entity.getKiller()), entity) ); - if(debug){mmh.logDebug("EDE Mooshroom Head Dropped");} - if(mmh.getConfig().getBoolean("announce.mobs.enabled", true)){ - announceBeheading(entity, mmh.langName.getString(name.toLowerCase() + "." + daCowVariant.toLowerCase(), MobHeads.valueOf(name + "_" + daCowVariant).getName() + "").replace(" Head", ""), - entity.getKiller(), mmh.getConfig().getBoolean("announce.mobs.displayname", true)); - } - } - break; - case "PANDA": - Panda daPanda = (Panda) entity; - String daPandaGene = daPanda.getMainGene().toString(); - String daPandaName = daPandaGene.toLowerCase().replace("br", "Br").replace("ag", "Ag").replace("la", "La") - .replace("no", "No").replace("p", "P").replace("we", "We").replace("wo", "Wo") + " Panda Head"; - if(daPandaGene.equalsIgnoreCase("normal")){daPandaName.replace("normal ", "");} - if(debug){mmh.logDebug("EDE " + name + "_" + daPandaGene);} - // ConfigHelper.Double(chanceConfig, "chance_percent.panda." + daPandaGene.toLowerCase(), defpercent) - if(mmh.DropIt(event, ConfigHelper.Double(chanceConfig, "chance_percent.panda." + daPandaGene.toLowerCase(), defpercent) )){ - Drops.add( MoreMobHeadsLib.addSound(mmh.makeSkull(MobHeads.valueOf(name + "_" + daPandaGene).getTexture().toString(), - mmh.langName.getString(name.toLowerCase() + "." + daPandaGene.toLowerCase(), daPandaName), entity.getKiller()), entity) ); - if(debug){mmh.logDebug("EDE Panda Head Dropped");} - if(mmh.getConfig().getBoolean("announce.mobs.enabled", true)){ - announceBeheading(entity, mmh.langName.getString(name.toLowerCase() + "." + daPandaGene.toLowerCase(), MobHeads.valueOf(name + "_" + daPandaGene).getName() + "").replace(" Head", ""), - entity.getKiller(), mmh.getConfig().getBoolean("announce.mobs.displayname", true)); - } - } - break; - case "PARROT": - Parrot daParrot = (Parrot) entity; - String daParrotVariant = daParrot.getVariant().toString(); - String daParrotName = daParrotVariant.toLowerCase().replace("b", "B").replace("c", "C").replace("g", "G") - .replace("red", "Red") + " Parrot Head"; - if(debug){mmh.logDebug("EDE " + name + "_" + daParrotVariant);} - // ConfigHelper.Double(chanceConfig, "chance_percent.parrot." + daParrotVariant.toLowerCase(), defpercent) - if(mmh.DropIt(event, ConfigHelper.Double(chanceConfig, "chance_percent.parrot." + daParrotVariant.toLowerCase(), defpercent) )){ - Drops.add( MoreMobHeadsLib.addSound(mmh.makeSkull(MobHeads.valueOf(name + "_" + daParrotVariant).getTexture().toString(), - mmh.langName.getString(name.toLowerCase() + "." + daParrotVariant.toLowerCase(), daParrotName), entity.getKiller()), entity) ); - if(debug){mmh.logDebug("EDE Parrot Head Dropped");} - if(mmh.getConfig().getBoolean("announce.mobs.enabled", true)){ - announceBeheading(entity, mmh.langName.getString(name.toLowerCase() + "." + daParrotVariant.toLowerCase(), MobHeads.valueOf(name + "_" + daParrotVariant).getName() + "").replace(" Head", ""), - entity.getKiller(), mmh.getConfig().getBoolean("announce.mobs.displayname", true)); - } - } - break; - case "RABBIT": - String daRabbitType; - Rabbit daRabbit = (Rabbit) entity; - daRabbitType = daRabbit.getRabbitType().toString(); - if(daRabbit.getCustomName() != null){ - if(daRabbit.getCustomName().contains("Toast")){ - daRabbitType = "Toast"; - } - } - String daRabbitName = RabbitHeads.valueOf(name + "_" + daRabbitType).getName() + " Head"; - if(debug){mmh.logDebug("EDE " + name + "_" + daRabbitType);} - // ConfigHelper.Double(chanceConfig, "chance_percent.rabbit." + daRabbitType.toLowerCase(), defpercent) - if(mmh.DropIt(event, ConfigHelper.Double(chanceConfig, "chance_percent.rabbit." + daRabbitType.toLowerCase(), defpercent) )){ - Drops.add( MoreMobHeadsLib.addSound(mmh.makeSkull(RabbitHeads.valueOf(name + "_" + daRabbitType).getTexture().toString(), - mmh.langName.getString(name.toLowerCase() + "." + daRabbitType.toLowerCase(), daRabbitName), entity.getKiller()), entity) ); - if(debug){mmh.logDebug("EDE Rabbit Head Dropped");} - if(mmh.getConfig().getBoolean("announce.mobs.enabled", true)){ - announceBeheading(entity, mmh.langName.getString(name.toLowerCase() + "." + daRabbitType.toLowerCase(), RabbitHeads.valueOf(name + "_" + daRabbitType).getName() + "").replace(" Head", ""), - entity.getKiller(), mmh.getConfig().getBoolean("announce.mobs.displayname", true)); - } - } - break; - case "VILLAGER": - Villager daVillager = (Villager) entity; // Location jobsite = daVillager.getMemory(MemoryKey.JOB_SITE); - String daVillagerType = daVillager.getVillagerType().toString(); - String daVillagerProfession = daVillager.getProfession().toString(); - if(debug){mmh.logDebug("EDE name=" + name);} - if(debug){mmh.logDebug("EDE profession=" + daVillagerProfession);} - if(debug){mmh.logDebug("EDE type=" + daVillagerType);} - String daName = name + "_" + daVillagerProfession + "_" + daVillagerType; - if(debug){mmh.logDebug("EDE " + daName + " " + name + "_" + daVillagerProfession + "_" + daVillagerType);} - String daVillagerName = VillagerHeads.valueOf(daName).getName() + " Head"; - // ConfigHelper.Double(chanceConfig, "chance_percent.villager." + daVillagerType.toLowerCase() + "." + daVillagerProfession.toLowerCase(), defpercent) - if(mmh.DropIt(event, ConfigHelper.Double(chanceConfig, "chance_percent.villager." + daVillagerType.toLowerCase() + "." + daVillagerProfession.toLowerCase(), defpercent) )){ - Drops.add( MoreMobHeadsLib.addSound(mmh.makeSkull(VillagerHeads.valueOf(name + "_" + daVillagerProfession + "_" + daVillagerType).getTexture().toString(), - mmh.langName.getString(name.toLowerCase() + "." + daVillagerType.toLowerCase() + "." + daVillagerProfession.toLowerCase() - , daVillagerName), entity.getKiller()), entity) ); - if(debug){mmh.logDebug("EDE Villager Head Dropped");} - if(mmh.getConfig().getBoolean("announce.mobs.enabled", true)){ - announceBeheading(entity, mmh.langName.getString(name.toLowerCase() + "." + daVillagerType.toLowerCase() + "." + daVillagerProfession.toLowerCase(), - VillagerHeads.valueOf(name + "_" + daVillagerProfession + "_" + daVillagerType).getName() + "").replace(" Head", ""), - entity.getKiller(), mmh.getConfig().getBoolean("announce.mobs.displayname", true)); - } - } - break; - case "ZOMBIE_VILLAGER": - ZombieVillager daZombieVillager = (ZombieVillager) entity; - String daZombieVillagerProfession = daZombieVillager.getVillagerProfession().toString(); - String daZombieVillagerName = ZombieVillagerHeads.valueOf(name + "_" + daZombieVillagerProfession).getName() + " Head"; - if(debug){mmh.logDebug("EDE " + name + "_" + daZombieVillagerProfession);} - // ConfigHelper.Double(chanceConfig, "chance_percent.zombie_villager", defpercent) - if(mmh.DropIt(event, ConfigHelper.Double(chanceConfig, "chance_percent.zombie_villager", defpercent) )){ - Drops.add( MoreMobHeadsLib.addSound(mmh.makeSkull(ZombieVillagerHeads.valueOf(name + "_" + daZombieVillagerProfession).getTexture().toString(), - mmh.langName.getString(name.toLowerCase() + "." + daZombieVillagerProfession.toLowerCase(), daZombieVillagerName), entity.getKiller()), entity) ); - if(debug){mmh.logDebug("EDE Zombie Villager Head Dropped");} - if(mmh.getConfig().getBoolean("announce.mobs.enabled", true)){ - announceBeheading(entity, mmh.langName.getString(name.toLowerCase() + "." + daZombieVillagerProfession.toLowerCase(), ZombieVillagerHeads.valueOf(name + "_" + daZombieVillagerProfession).getName() + "").replace(" Head", ""), - entity.getKiller(), mmh.getConfig().getBoolean("announce.mobs.displayname", true)); - } - } - break; - case "SHEEP": - Sheep daSheep = (Sheep) entity; - String daSheepColor = daSheep.getColor().toString(); - String daSheepName; - - if(daSheep.getCustomName() != null){ - if(daSheep.getCustomName().contains("jeb_")){ - daSheepColor = "jeb_"; - }else{ - daSheepColor = daSheep.getColor().toString(); - } - } - daSheepName = SheepHeads.valueOf(name + "_" + daSheepColor).getName() + " Head"; - if(debug){mmh.logDebug("EDE " + daSheepColor + "_" + name);} - // ConfigHelper.Double(chanceConfig, "chance_percent.sheep." + daSheepColor.toLowerCase(), defpercent) - if(mmh.DropIt(event, ConfigHelper.Double(chanceConfig, "chance_percent.sheep." + daSheepColor.toLowerCase(), defpercent) )){ - Drops.add( MoreMobHeadsLib.addSound(mmh.makeSkull(SheepHeads.valueOf(name + "_" + daSheepColor).getTexture().toString(), - mmh.langName.getString(name.toLowerCase() + "." + daSheepColor.toLowerCase(), daSheepName), entity.getKiller()), entity) ); - if(debug){mmh.logDebug("EDE Sheep Head Dropped");} - if(mmh.getConfig().getBoolean("announce.mobs.enabled", true)){ - announceBeheading(entity, mmh.langName.getString(name.toLowerCase() + "." + daSheepColor.toLowerCase(), SheepHeads.valueOf(name + "_" + daSheepColor).getName() + "").replace(" Head", ""), - entity.getKiller(), mmh.getConfig().getBoolean("announce.mobs.displayname", true)); - } - } - break; - case "TRADER_LLAMA": - TraderLlama daTraderLlama = (TraderLlama) entity; - String daTraderLlamaColor = daTraderLlama.getColor().toString(); - String daTraderLlamaName = LlamaHeads.valueOf(name + "_" + daTraderLlamaColor).getName() + " Head"; - if(debug){mmh.logDebug("EDE " + daTraderLlamaColor + "_" + name);} - // ConfigHelper.Double(chanceConfig, "chance_percent.trader_llama." + daTraderLlamaColor.toLowerCase(), defpercent) - if(mmh.DropIt(event, ConfigHelper.Double(chanceConfig, "chance_percent.trader_llama." + daTraderLlamaColor.toLowerCase(), defpercent) )){ - Drops.add( MoreMobHeadsLib.addSound(mmh.makeSkull(LlamaHeads.valueOf(name + "_" + daTraderLlamaColor).getTexture().toString(), - mmh.langName.getString(name.toLowerCase() + "." + daTraderLlamaColor.toLowerCase(), daTraderLlamaName), entity.getKiller()), entity) ); - if(debug){mmh.logDebug("EDE Trader Llama Head Dropped");} - if(mmh.getConfig().getBoolean("announce.mobs.enabled", true)){ - announceBeheading(entity, mmh.langName.getString(name.toLowerCase() + "." + daTraderLlamaColor.toLowerCase(), LlamaHeads.valueOf(name + "_" + daTraderLlamaColor).getName() + "").replace(" Head", ""), - entity.getKiller(), mmh.getConfig().getBoolean("announce.mobs.displayname", true)); - } - } - break; - case "AXOLOTL": - Axolotl daAxolotl = (Axolotl) entity; - String daAxolotlVariant = daAxolotl.getVariant().toString(); - String daAxolotlName = MobHeads117.valueOf(name + "_" + daAxolotlVariant).getName() + " Head"; - if(debug){mmh.logDebug("EDE " + daAxolotlVariant + "_" + name);} - // ConfigHelper.Double(chanceConfig, "chance_percent.axolotl." + daAxolotlVariant.toLowerCase(), defpercent) - if(mmh.DropIt(event, ConfigHelper.Double(chanceConfig, "chance_percent.axolotl." + daAxolotlVariant.toLowerCase(), defpercent) )){ - Drops.add( MoreMobHeadsLib.addSound(mmh.makeSkull(MobHeads117.valueOf(name + "_" + daAxolotlVariant).getTexture().toString(), - mmh.langName.getString(name.toLowerCase() + "." + daAxolotlVariant.toLowerCase(), daAxolotlName), entity.getKiller()), entity) ); - if(debug){mmh.logDebug("EDE Axolotl Head Dropped");} - if(mmh.getConfig().getBoolean("announce.mobs.enabled", true)){ - announceBeheading(entity, mmh.langName.getString(name.toLowerCase() + "." + daAxolotlVariant.toLowerCase(), MobHeads117.valueOf(name + "_" + daAxolotlVariant).getName() + "").replace(" Head", ""), - entity.getKiller(), mmh.getConfig().getBoolean("announce.mobs.displayname", true)); - } - } - break; - case "GOAT": - Goat daGoat = (Goat) entity; - String daGoatVariant; - String daGoatName;// = MobHeads117.valueOf(name + "_" + daAxolotlVariant).getName() + " Head"; - if(daGoat.isScreaming()) { - // Giving screaming goat head - daGoatVariant = "SCREAMING"; - daGoatName = MobHeads117.valueOf(name + "_" + daGoatVariant).getName() + " Head"; - }else { - // give goat head - daGoatVariant = "NORMAL"; - daGoatName = MobHeads117.valueOf(name + "_" + daGoatVariant).getName() + " Head"; - } - if(debug){mmh.logDebug("EDE " + daGoatVariant + "_" + name);} - // ConfigHelper.Double(chanceConfig, "chance_percent.goat." + daGoatVariant.toLowerCase(), defpercent) - if(mmh.DropIt(event, ConfigHelper.Double(chanceConfig, "chance_percent.goat." + daGoatVariant.toLowerCase(), defpercent) )){ - Drops.add( MoreMobHeadsLib.addSound(mmh.makeSkull(MobHeads117.valueOf(name + "_" + daGoatVariant).getTexture().toString(), - mmh.langName.getString(name.toLowerCase() + "." + daGoatVariant.toLowerCase(), daGoatName), entity.getKiller()), entity) ); - if(debug){mmh.logDebug("EDE Goat Head Dropped");} - if(mmh.getConfig().getBoolean("announce.mobs.enabled", true)){ - announceBeheading(entity, mmh.langName.getString(name.toLowerCase() + "." + daGoatVariant.toLowerCase(), MobHeads117.valueOf(name + "_" + daGoatVariant).getName() + "").replace(" Head", ""), - entity.getKiller(), mmh.getConfig().getBoolean("announce.mobs.displayname", true)); - } - } - break; - case "STRIDER": - Strider daStrider = (Strider) entity; - PersistentDataContainer pdc2 = daStrider.getPersistentDataContainer(); - boolean isShivering = Boolean.parseBoolean( daStrider.getPersistentDataContainer().get(mmh.SHIVERING_KEY, PersistentDataType.STRING) ); - if(mmh.chance25oftrue()) { // chance50oftrue() isShivering - name = name.concat("_SHIVERING"); - // ConfigHelper.Double(chanceConfig, "chance_percent." + name.toLowerCase(), defpercent) - if(mmh.DropIt(event, ConfigHelper.Double(chanceConfig, "chance_percent." + name.toLowerCase(), defpercent) )){ - Drops.add( MoreMobHeadsLib.addSound(mmh.makeSkull(MobHeads.valueOf(name).getTexture().toString(), - mmh.langName.getString(name.toLowerCase() + "_shivering", "Shivering " + event.getEntity().getName() + " Head"), entity.getKiller()), entity) ); - if(debug){mmh.logDebug("EDE " + name + " Head Dropped");} - if(mmh.getConfig().getBoolean("announce.mobs.enabled", true)){ - announceBeheading(entity, mmh.langName.getString(name.toLowerCase(), MobHeads.valueOf(name).getName() + "").replace(" Head", ""), - entity.getKiller(), mmh.getConfig().getBoolean("announce.mobs.displayname", true)); - } - } - }else { - // ConfigHelper.Double(chanceConfig, "chance_percent." + name.toLowerCase(), defpercent) - if(mmh.DropIt(event, ConfigHelper.Double(chanceConfig, "chance_percent." + name.toLowerCase(), defpercent) )){ - Drops.add( MoreMobHeadsLib.addSound(mmh.makeSkull(MobHeads.valueOf(name).getTexture().toString(), - mmh.langName.getString(name.toLowerCase(), event.getEntity().getName() + " Head"), entity.getKiller()), entity) ); - if(debug){mmh.logDebug("EDE " + name + " Head Dropped");} - if(mmh.getConfig().getBoolean("announce.mobs.enabled", true)){ - announceBeheading(entity, mmh.langName.getString(name.toLowerCase(), MobHeads.valueOf(name).getName() + "").replace(" Head", ""), - entity.getKiller(), mmh.getConfig().getBoolean("announce.mobs.displayname", true)); - } - } - } - - if(debug){mmh.logDebug("EDE " + MobHeads.valueOf(name) + " killed");} - break; - case "FROG": - String frogName = MoreMobHeadsLib.getName(name, entity); - String daFrogName = MobHeads119.valueOf(frogName).getName() + " Head"; - // chanceConfig.getDouble("chance_percent." + frogName.replace("_", ".").toLowerCase(), defpercent) - // ConfigHelper.Double(chanceConfig, "chance_percent." + frogName.replace("_", ".").toLowerCase(), defpercent) - if(mmh.DropIt(event, ConfigHelper.Double(chanceConfig, "chance_percent." + frogName.replace("_", ".").toLowerCase(), defpercent) )){ - Drops.add( MoreMobHeadsLib.addSound(mmh.makeSkull(MobHeads119.valueOf(frogName).getTexture().toString(), - mmh.langName.getString(frogName.replace("_", ".").toLowerCase(), daFrogName), entity.getKiller()), entity) ); - if(debug){mmh.logDebug("EDE Frog Head Dropped");} - if(mmh.getConfig().getBoolean("announce.mobs.enabled", true)){ - announceBeheading(entity, mmh.langName.getString(frogName.replace("_", ".").toLowerCase(), MobHeads119.valueOf(frogName).getName() + "").replace(" Head", ""), - entity.getKiller(), mmh.getConfig().getBoolean("announce.mobs.displayname", true)); - } - } - - break; - case "TADPOLE": - case "ALLAY": - case "WARDEN": - //case "TADPOLE": - if(debug){mmh.logDebug("EDE name=" + name + " line:1078");} - if(debug){mmh.logDebug("EDE texture=" + MobHeads119.valueOf(name).getTexture().toString() + " line:1079");} - if(debug){mmh.logDebug("EDE location=" + entity.getLocation().toString() + " line:1080");} - if(debug){mmh.logDebug("EDE getName=" + event.getEntity().getName() + " line:1081");} - if(debug){mmh.logDebug("EDE killer=" + entity.getKiller().toString() + " line:1082");} - // ConfigHelper.Double(chanceConfig, "chance_percent." + name.toLowerCase(), defpercent) - if(mmh.DropIt(event, ConfigHelper.Double(chanceConfig, "chance_percent." + name.toLowerCase(), defpercent) )){ - Drops.add( MoreMobHeadsLib.addSound(mmh.makeSkull(MobHeads119.valueOf(name).getTexture().toString(), - mmh.langName.getString(name.toLowerCase(), event.getEntity().getName() + " Head"), entity.getKiller()), entity) ); - if(debug){mmh.logDebug("EDE " + name + " Head Dropped");} - if(mmh.getConfig().getBoolean("announce.mobs.enabled", true)){ - announceBeheading(entity, mmh.langName.getString(name.toLowerCase(), MobHeads119.valueOf(name).getName() + "").replace(" Head", ""), - entity.getKiller(), mmh.getConfig().getBoolean("announce.mobs.displayname", true)); - } - } - if(debug){mmh.logDebug("EDE " + MobHeads119.valueOf(name) + " killed");} - break; - case "CAMEL": - case "SNIFFER": - if(debug){mmh.logDebug("EDE name=" + name + " line:1097");} - if(debug){mmh.logDebug("EDE texture=" + MobHeads120.valueOf(name).getTexture().toString() + " line:1098");} - if(debug){mmh.logDebug("EDE location=" + entity.getLocation().toString() + " line:1099");} - if(debug){mmh.logDebug("EDE getName=" + event.getEntity().getName() + " line:1100");} - if(debug){mmh.logDebug("EDE killer=" + entity.getKiller().toString() + " line:1101");} - // ConfigHelper.Double(chanceConfig, "chance_percent." + name.toLowerCase(), defpercent) - if(mmh.DropIt(event, ConfigHelper.Double(chanceConfig, "chance_percent." + name.toLowerCase(), defpercent) )){ - Drops.add( MoreMobHeadsLib.addSound(mmh.makeSkull(MobHeads120.valueOf(name).getTexture().toString(), - mmh.langName.getString(name.toLowerCase(), event.getEntity().getName() + " Head"), entity.getKiller()), entity) ); - if(debug){mmh.logDebug("EDE " + name + " Head Dropped");} - if(mmh.getConfig().getBoolean("announce.mobs.enabled", true)){ - announceBeheading(entity, mmh.langName.getString(name.toLowerCase(), MobHeads120.valueOf(name).getName() + "").replace(" Head", ""), - entity.getKiller(), mmh.getConfig().getBoolean("announce.mobs.displayname", true)); - } - } - if(debug){mmh.logDebug("EDE " + MobHeads120.valueOf(name) + " killed");} - break; - case "VEX": - Vex vex = (Vex) entity; - if(coinFlip()) { - // Give angry head - name = name + "_ANGRY"; - } - default: - //mmh.makeSkull(MobHeads.valueOf(name).getTexture(), name); - if(debug){mmh.logDebug("EDE name=" + name + " line:1122");} - if(debug){mmh.logDebug("EDE texture=" + MobHeads.valueOf(name).getTexture().toString() + " line:1123");} - if(debug){mmh.logDebug("EDE location=" + entity.getLocation().toString() + " line:1124");} - if(debug){mmh.logDebug("EDE getName=" + event.getEntity().getName() + " line:1125");} - if(debug){mmh.logDebug("EDE killer=" + entity.getKiller().toString() + " line:1126");} - // ConfigHelper.Double(chanceConfig, "chance_percent." + name.toLowerCase(), defpercent) - if(mmh.DropIt(event, ConfigHelper.Double(chanceConfig, "chance_percent." + name.toLowerCase(), defpercent) )){ - Drops.add( MoreMobHeadsLib.addSound(mmh.makeSkull(MobHeads.valueOf(name).getTexture().toString(), - mmh.langName.getString(name.toLowerCase(), event.getEntity().getName() + " Head"), entity.getKiller()), entity) ); - if(debug){mmh.logDebug("EDE " + name + " Head Dropped");} - if(mmh.getConfig().getBoolean("announce.mobs.enabled", true)){ - announceBeheading(entity, mmh.langName.getString(name.toLowerCase(), MobHeads.valueOf(name).getName() + "").replace(" Head", ""), - entity.getKiller(), mmh.getConfig().getBoolean("announce.mobs.displayname", true)); - } - } - if(debug){mmh.logDebug("EDE " + MobHeads.valueOf(name) + " killed");} - break; - } + } } - //} - //} - return; + return; + } + } + if ((mob_whitelist != null) && !mob_whitelist.isEmpty() && (mob_blacklist != null) + && !mob_blacklist.isEmpty()) { + if (!StrUtils.stringContains(mob_whitelist, name)) {// mob_whitelist.contains(name) + if (debug) { + mmh.log(Level.INFO, "EDE - Mob - Not on whitelist. Mob=" + name); + } + return; + } + } else if ((mob_whitelist != null) && !mob_whitelist.isEmpty()) { + if (!StrUtils.stringContains(mob_whitelist, name) + && StrUtils.stringContains(mob_blacklist, name)) {// mob_whitelist.contains(name) + if (debug) { + mmh.log(Level.INFO, "EDE - Mob - Not on whitelist - Is on blacklist. Mob=" + name); + } + return; + } + } else if ((mob_blacklist != null) && !mob_blacklist.isEmpty()) { + if (StrUtils.stringContains(mob_blacklist, name)) { + if (debug) { + mmh.log(Level.INFO, "EDE - Mob - On blacklist. Mob=" + name); + } + return; + } + } + + switch (name) { + case "CREEPER": + // ConfigHelper.Double(chanceConfig, + // "chance_percent.creeper", defpercent) + Creeper creeper = (Creeper) event.getEntity(); + double cchance = ConfigHelper.Double(chanceConfig, "chance_percent.creeper", defpercent); + if (creeper.isPowered()) { + name = "CREEPER_CHARGED"; + cchance = 1.00; + } + if (mmh.DropIt(event, cchance)) { + if (mmh.getConfig().getBoolean("vanilla_heads.creeper", false) + && (name != "CREEPER_CHARGED")) { + Drops.add(new ItemStack(Material.CREEPER_HEAD)); + } else { // mmh.langName + Drops.add(MoreMobHeadsLib.addSound(mmh.makeSkull(MobHeads.valueOf(name).getTexture().toString(), mmh.langName.getString(name.toLowerCase(), + MobHeads.valueOf(name).getName() + " Head"), entity.getKiller()), entity)); + } // MobHeads.valueOf(name).getName() + " Head" + if (debug) { + mmh.logDebug("EDE Creeper vanilla=" + + mmh.getConfig().getBoolean("vanilla_heads.creeper", false)); + } + if (debug) { + mmh.logDebug("EDE Creeper Head Dropped"); + } + if (mmh.getConfig().getBoolean("announce.mobs.enabled", true)) { + announceBeheading(entity, mmh.langName.getString(name.toLowerCase(), MobHeads.valueOf(name).getName() + "").replace(" Head", ""), + entity.getKiller(), mmh.getConfig().getBoolean("announce.mobs.displayname", true)); + } + } + break; + case "ENDER_DRAGON": + // ConfigHelper.Double(chanceConfig, + // "chance_percent.ender_dragon", defpercent) + if (mmh.DropIt(event, + ConfigHelper.Double(chanceConfig, "chance_percent.ender_dragon", defpercent))) { + if (mmh.getConfig().getBoolean("vanilla_heads.ender_dragon", false)) { + Drops.add(new ItemStack(Material.DRAGON_HEAD)); + } else { + Drops.add(MoreMobHeadsLib.addSound(mmh.makeSkull(MobHeads.valueOf(name).getTexture().toString(), mmh.langName.getString(name.toLowerCase() + , MobHeads.valueOf(name).getName() + " Head"), entity.getKiller()), entity)); + } + if (debug) { + mmh.logDebug("EDE Ender Dragon Head Dropped"); + } + if (mmh.getConfig().getBoolean("announce.mobs.enabled", true)) { + announceBeheading(entity,mmh.langName.getString(name.toLowerCase(),MobHeads.valueOf(name).getName() + "").replace(" Head", "") + ,entity.getKiller(),mmh.getConfig().getBoolean("announce.mobs.displayname",true)); + } + } + break; + case "PIGLIN": + // ConfigHelper.Double(chanceConfig, "chance_percent.ender_dragon", defpercent) + if (mmh.DropIt(event, ConfigHelper.Double(chanceConfig, "chance_percent.piglin", defpercent))) { + if (mmh.getConfig().getBoolean("vanilla_heads.piglin", false)) { + Drops.add(MoreMobHeadsLib.getVanilla(entity.getType())); + } else { + Drops.add(MoreMobHeadsLib + .addSound(mmh.makeSkull(MobHeads.valueOf(name).getTexture().toString(), + mmh.langName.getString(name.toLowerCase(), + MobHeads.valueOf(name).getName() + " Head"), + entity.getKiller()), entity)); + } + if (debug) { + mmh.logDebug("EDE Ender Dragon Head Dropped"); + } + if (mmh.getConfig().getBoolean("announce.mobs.enabled", true)) { + announceBeheading(entity,mmh.langName.getString(name.toLowerCase(), MobHeads.valueOf(name).getName() + "") + .replace(" Head", ""),entity.getKiller(),mmh.getConfig().getBoolean("announce.mobs.displayname", true)); + } + } + break; + case "SKELETON": + // ConfigHelper.Double(chanceConfig, "chance_percent.skeleton", defpercent) + if (mmh.DropIt(event, + ConfigHelper.Double(chanceConfig, "chance_percent.skeleton", defpercent))) { + if (mmh.getConfig().getBoolean("vanilla_heads.skeleton", false)) { + Drops.add(new ItemStack(Material.SKELETON_SKULL)); + } else { + Drops.add(MoreMobHeadsLib.addSound(mmh.makeSkull(MobHeads.valueOf(name).getTexture().toString(),mmh.langName.getString(name.toLowerCase() + ,MobHeads.valueOf(name).getName() + " Head"),entity.getKiller()), entity)); + } + if (debug) { + mmh.logDebug("EDE Skeleton vanilla=" + + mmh.getConfig().getBoolean("vanilla_heads.skeleton", false)); + } + if (debug) {mmh.logDebug("EDE Skeleton Head Dropped");} + if (mmh.getConfig().getBoolean("announce.mobs.enabled", true)) { + announceBeheading(entity,mmh.langName.getString(name.toLowerCase(), MobHeads.valueOf(name).getName() + "") + .replace(" Head", ""),entity.getKiller(),mmh.getConfig().getBoolean("announce.mobs.displayname", true)); + } + } + break; + case "WITHER_SKELETON": + // ConfigHelper.Double(chanceConfig, "chance_percent.wither_skeleton", + // defpercent) + if (mmh.DropIt(event, + ConfigHelper.Double(chanceConfig, "chance_percent.wither_skeleton", defpercent))) { + if (mmh.getConfig().getBoolean("vanilla_heads.wither_skeleton", false)) { + Drops.add(new ItemStack(Material.WITHER_SKELETON_SKULL)); + } else { + Drops.add(MoreMobHeadsLib.addSound(mmh.makeSkull(MobHeads.valueOf(name).getTexture().toString(), mmh.langName.getString(name.toLowerCase() + , MobHeads.valueOf(name).getName() + " Head"), entity.getKiller()), entity)); + } + if (debug) { + mmh.logDebug("EDE Wither Skeleton Head Dropped"); + } + if (mmh.getConfig().getBoolean("announce.mobs.enabled", true)) { + announceBeheading(entity, mmh.langName.getString(name.toLowerCase(), MobHeads.valueOf(name).getName() + "") + .replace(" Head", ""), entity.getKiller(), mmh.getConfig().getBoolean("announce.mobs.displayname", true)); + } + } + break; + case "ZOMBIE": + // ConfigHelper.Double(chanceConfig, "chance_percent.zombie", defpercent) + if (mmh.DropIt(event, ConfigHelper.Double(chanceConfig, "chance_percent.zombie", defpercent))) { + if (mmh.getConfig().getBoolean("vanilla_heads.zombie", false)) { + Drops.add(new ItemStack(Material.ZOMBIE_HEAD)); + } else { + + Drops.add(MoreMobHeadsLib + .addSound(mmh.makeSkull(MobHeads.valueOf(name).getTexture().toString(),mmh.langName.getString(name.toLowerCase(), + MobHeads.valueOf(name).getName() + " Head"),entity.getKiller()), entity)); + /** + * entity.getWorld().dropItemNaturally(entity.getLocation(), + * mmh.makeSkull(MobHeads.valueOf(name).getTexture().toString(), + * mmh.langName.getString(name.toLowerCase(), MobHeads.valueOf(name).getName() + + * " Head"), entity.getKiller()));// + */ + } + if (debug) {mmh.logDebug("EDE Zombie vanilla="+ mmh.getConfig().getBoolean("vanilla_heads.zombie", false));} + if (debug) {mmh.logDebug("EDE Zombie Head Dropped");} + if (mmh.getConfig().getBoolean("announce.mobs.enabled", true)) { + announceBeheading(entity,mmh.langName.getString(name.toLowerCase(), MobHeads.valueOf(name).getName() + "") + .replace(" Head", ""),entity.getKiller(),mmh.getConfig().getBoolean("announce.mobs.displayname", true)); + } + } + break; + case "TROPICAL_FISH": + TropicalFish daFish = (TropicalFish) entity; + DyeColor daFishBody = daFish.getBodyColor(); + DyeColor daFishPatternColor = daFish.getPatternColor(); + Pattern daFishType = daFish.getPattern(); + log("bodycolor=" + daFishBody.toString() + "\nPatternColor=" + daFishPatternColor.toString() + + "\nPattern=" + daFishType.toString()); + // TropicalFishHeads daFishEnum = TropicalFishHeads.getIfPresent(name); + String daFishName = mmh.getNamedTropicalFishName(daFishType, daFishBody, daFishPatternColor); + log("daFishName: " + daFishName); + if (mmh.DropIt(event, ConfigHelper.Double(chanceConfig, "chance_percent.tropical_fish." + daFishName.toLowerCase(), defpercent))) { + Drops.add(MoreMobHeadsLib.addSound(mmh.makeSkull(TropicalFishHeads.valueOf(name + "_" + daFishName).getTexture().toString() + , mmh.langName.getString(name.toLowerCase() + "." + daFishName.toLowerCase(), TropicalFishHeads.valueOf(name + "_" + daFishName).getName() + " Head") + , entity.getKiller()), entity)); + if (debug) { + mmh.logDebug("EDE TROPICAL_FISH:" + daFishName + " head dropped"); + } + if (mmh.getConfig().getBoolean("announce.mobs.enabled", true)) { + announceBeheading(entity, mmh.langName.getString(name.toLowerCase() + "." + daFishName.toLowerCase(), TropicalFishHeads.valueOf(name + "_" + daFishName).getName() + "") + .replace(" Head", ""), entity.getKiller(), mmh.getConfig().getBoolean("announce.mobs.displayname", true)); + } + } + break; + case "WITHER": + if (mmh.DropIt(event, ConfigHelper.Double(chanceConfig, "chance_percent." + name.toLowerCase(), defpercent))) { + String name2 = name + "_NORMAL"; + Drops.add(MoreMobHeadsLib.addSound(mmh.makeSkull(MobHeads.valueOf(name2).getTexture().toString(), mmh.langName.getString(name2.toLowerCase().replace("_", ".") + , MobHeads.valueOf(name2).getName() + " Head"), entity.getKiller()), entity)); + if (debug) { + mmh.logDebug("EDE " + name2 + " Head Dropped"); + } + if (mmh.getConfig().getBoolean("announce.mobs.enabled", true)) { + announceBeheading(entity, mmh.langName.getString(name2.toLowerCase().replace("_", ".") + , MobHeads.valueOf(name2).getName() + "").replace(" Head", ""), entity.getKiller(), mmh.getConfig().getBoolean("announce.mobs.displayname", true)); + } + if (coinFlip()) { + name2 = name + "_PROJECTILE"; + Drops.add(MoreMobHeadsLib.addSound(mmh.makeSkull(MobHeads.valueOf(name2).getTexture().toString(), mmh.langName.getString(name2.toLowerCase() + .replace("_", "."), event.getEntity().getName() + " Head"), entity.getKiller()), entity)); + if (debug) { + mmh.logDebug("EDE " + name2 + " Head Dropped"); + } + } + if (coinFlip()) { + name2 = name + "_BLUE_PROJECTILE"; + Drops.add(MoreMobHeadsLib.addSound(mmh.makeSkull(MobHeads.valueOf(name2).getTexture().toString(), mmh.langName.getString(name2.toLowerCase() + .replaceFirst("_", "."), event.getEntity().getName() + " Head"), entity.getKiller()), entity)); + if (debug) { + mmh.logDebug("EDE " + name2 + " Head Dropped"); + } + } + } + break; + case "WOLF": + Wolf wolf = (Wolf) event.getEntity(); + // ConfigHelper.Double(chanceConfig, "chance_percent." + name.toLowerCase(), + // defpercent) + if (mmh.DropIt(event, ConfigHelper.Double(chanceConfig, "chance_percent." + name.toLowerCase(), + defpercent))) { + if (wolf.isAngry()) { + Drops.add(MoreMobHeadsLib.addSound(mmh.makeSkull(MobHeads.valueOf(name + "_ANGRY").getTexture().toString(), mmh.langName.getString(name.toLowerCase() + "_angry" + , MobHeads.valueOf(name + "_ANGRY").getName() + " Head"), entity.getKiller()), entity)); + if (debug) { + mmh.logDebug("EDE Angry Wolf Head Dropped"); + } + if (mmh.getConfig().getBoolean("announce.mobs.enabled", true)) { + announceBeheading(entity, mmh.langName.getString(name.toLowerCase() + "_angry", MobHeads.valueOf(name + "_ANGRY").getName() + "") + .replace(" Head", ""), entity.getKiller(), mmh.getConfig().getBoolean("announce.mobs.displayname", true)); + } + } else { + Drops.add(MoreMobHeadsLib.addSound(mmh.makeSkull(MobHeads.valueOf(name).getTexture().toString(), mmh.langName.getString(name.toLowerCase() + , event.getEntity().getName() + " Head"), entity.getKiller()), entity)); + if (debug) { + mmh.logDebug("EDE Wolf Head Dropped"); + } + if (mmh.getConfig().getBoolean("announce.mobs.enabled", true)) { + announceBeheading(entity, mmh.langName.getString(name.toLowerCase(), MobHeads.valueOf(name).getName() + "") + .replace(" Head", ""), entity.getKiller(), mmh.getConfig().getBoolean("announce.mobs.displayname", true)); + } + } + } + break; + case "FOX": + Fox dafox = (Fox) entity; + String dafoxtype = dafox.getFoxType().toString(); + if (debug) { + mmh.logDebug("EDE dafoxtype=" + dafoxtype); + } + // ConfigHelper.Double(chanceConfig, "chance_percent.fox." + + // dafoxtype.toLowerCase(), defpercent) + if (mmh.DropIt(event, ConfigHelper.Double(chanceConfig, + "chance_percent.fox." + dafoxtype.toLowerCase(), defpercent))) { + Drops.add(MoreMobHeadsLib.addSound(mmh.makeSkull(MobHeads.valueOf(name + "_" + dafoxtype).getTexture().toString() + , mmh.langName.getString(name.toLowerCase() + "." + dafoxtype.toLowerCase(), MobHeads.valueOf(name + "_" + dafoxtype).getName() + " Head"), entity.getKiller()), entity)); + if (debug) { + mmh.logDebug("EDE Fox Head Dropped"); + } + if (mmh.getConfig().getBoolean("announce.mobs.enabled", true)) { + announceBeheading(entity, + mmh.langName + .getString(name.toLowerCase() + "." + dafoxtype.toLowerCase(), + MobHeads.valueOf(name + "_" + dafoxtype).getName() + "") + .replace(" Head", ""), + entity.getKiller(), + mmh.getConfig().getBoolean("announce.mobs.displayname", true)); + } + } + + break; + case "CAT": + Cat dacat = (Cat) entity; + String dacattype = dacat.getCatType().toString(); + if (debug) { + mmh.logDebug("entity cat=" + dacat.getCatType()); + } + // ConfigHelper.Double(chanceConfig, "chance_percent.cat." + + // dacattype.toLowerCase(), defpercent) + if (mmh.DropIt(event, ConfigHelper.Double(chanceConfig, + "chance_percent.cat." + dacattype.toLowerCase(), defpercent))) { + Drops.add(MoreMobHeadsLib + .addSound(mmh.makeSkull(CatHeads.valueOf(dacattype).getTexture().toString(), + mmh.langName.getString(name.toLowerCase() + "." + dacattype.toLowerCase(), + CatHeads.valueOf(dacattype).getName() + " Head"), + entity.getKiller()), entity)); + if (debug) { + mmh.logDebug("EDE Cat Head Dropped"); + } + if (mmh.getConfig().getBoolean("announce.mobs.enabled", true)) { + announceBeheading(entity, + mmh.langName + .getString(name.toLowerCase() + "." + dacattype.toLowerCase(), + CatHeads.valueOf(dacattype).getName() + "") + .replace(" Head", ""), + entity.getKiller(), + mmh.getConfig().getBoolean("announce.mobs.displayname", true)); + } + } + break; + case "OCELOT": + // ConfigHelper.Double(chanceConfig, "chance_percent." + name.toLowerCase(), + // defpercent) + if (mmh.DropIt(event, ConfigHelper.Double(chanceConfig, "chance_percent." + name.toLowerCase(), + defpercent))) { + Drops.add(MoreMobHeadsLib.addSound( + mmh.makeSkull(MobHeads.valueOf(name).getTexture().toString(), + mmh.langName.getString(MobHeads.valueOf(name).getNameString(), + MobHeads.valueOf(name).getName() + " Head"), + entity.getKiller()), + entity)); + if (debug) { + mmh.logDebug("EDE " + name + " Head Dropped"); + } + if (mmh.getConfig().getBoolean("announce.mobs.enabled", true)) { + announceBeheading(entity, + mmh.langName.getString(MobHeads.valueOf(name).getNameString(), + MobHeads.valueOf(name).getName() + "").replace(" Head", ""), + entity.getKiller(), + mmh.getConfig().getBoolean("announce.mobs.displayname", true)); + } + } + if (debug) { + mmh.logDebug("EDE " + MobHeads.valueOf(name) + " killed"); + } + + break; + case "BEE": + Bee daBee = (Bee) entity; + int daAnger = daBee.getAnger(); + if (debug) { + mmh.logDebug("EDE daAnger=" + daAnger); + } + boolean daNectar = daBee.hasNectar(); + if (debug) { + mmh.logDebug("EDE daNectar=" + daNectar); + } + if ((daAnger >= 1) && (daNectar == true)) { + // ConfigHelper.Double(chanceConfig, "chance_percent.bee.angry_pollinated", + // defpercent) + if (mmh.DropIt(event, ConfigHelper.Double(chanceConfig, + "chance_percent.bee.angry_pollinated", defpercent))) { + Drops.add( + MoreMobHeadsLib.addSound( + mmh.makeSkull( + MobHeads.valueOf("BEE_ANGRY_POLLINATED").getTexture() + .toString(), + mmh.langName.getString(name.toLowerCase() + ".angry_pollinated", + "Angry Pollinated Bee Head"), + entity.getKiller()), + entity)); + if (debug) { + mmh.logDebug("EDE Angry Pollinated Bee Head Dropped"); + } + if (mmh.getConfig().getBoolean("announce.mobs.enabled", true)) { + announceBeheading(entity, + mmh.langName + .getString(name.toLowerCase() + ".angry_pollinated", + MobHeads.valueOf("BEE_ANGRY_POLLINATED").getName() + "") + .replace(" Head", ""), + entity.getKiller(), + mmh.getConfig().getBoolean("announce.mobs.displayname", true)); + } + } + } else if ((daAnger >= 1) && (daNectar == false)) { + // ConfigHelper.Double(chanceConfig, "chance_percent.bee.angry", defpercent) + if (mmh.DropIt(event, + ConfigHelper.Double(chanceConfig, "chance_percent.bee.angry", defpercent))) { + Drops.add( + MoreMobHeadsLib + .addSound( + mmh.makeSkull( + MobHeads.valueOf("BEE_ANGRY").getTexture().toString(), + mmh.langName.getString(name.toLowerCase() + ".angry", + "Angry Bee Head"), + entity.getKiller()), + entity)); + if (debug) { + mmh.logDebug("EDE Angry Bee Head Dropped"); + } + if (mmh.getConfig().getBoolean("announce.mobs.enabled", true)) { + announceBeheading(entity, + mmh.langName + .getString(name.toLowerCase() + ".angry", + MobHeads.valueOf("BEE_ANGRY").getName() + "") + .replace(" Head", ""), + entity.getKiller(), + mmh.getConfig().getBoolean("announce.mobs.displayname", true)); + } + } + } else if ((daAnger == 0) && (daNectar == true)) { + // ConfigHelper.Double(chanceConfig, "chance_percent.bee.pollinated", + // defpercent) + if (mmh.DropIt(event, + ConfigHelper.Double(chanceConfig, "chance_percent.bee.pollinated", defpercent))) { + Drops.add(MoreMobHeadsLib.addSound(mmh.makeSkull( + MobHeads.valueOf("BEE_POLLINATED").getTexture().toString(), mmh.langName + .getString(name.toLowerCase() + ".pollinated", "Pollinated Bee Head"), + entity.getKiller()), entity)); + if (debug) { + mmh.logDebug("EDE Pollinated Bee Head Dropped"); + } + if (mmh.getConfig().getBoolean("announce.mobs.enabled", true)) { + announceBeheading(entity, + mmh.langName + .getString(name.toLowerCase() + ".pollinated", + MobHeads.valueOf("BEE_POLLINATED").getName() + "") + .replace(" Head", ""), + entity.getKiller(), + mmh.getConfig().getBoolean("announce.mobs.displayname", true)); + } + } + } else if ((daAnger == 0) && (daNectar == false)) { + // ConfigHelper.Double(chanceConfig, "chance_percent.bee.chance_percent", + // defpercent) + if (mmh.DropIt(event, ConfigHelper.Double(chanceConfig, "chance_percent.bee.normal", + defpercent))) { + Drops.add(MoreMobHeadsLib + .addSound(mmh.makeSkull(MobHeads.valueOf("BEE").getTexture().toString(), + mmh.langName.getString(name.toLowerCase() + ".none", "Bee Head"), + entity.getKiller()), entity)); + if (debug) { + mmh.logDebug("EDE Bee Head Dropped"); + } + if (mmh.getConfig().getBoolean("announce.mobs.enabled", true)) { + announceBeheading(entity, + mmh.langName + .getString(name.toLowerCase() + ".none", + MobHeads.valueOf("BEE").getName() + "") + .replace(" Head", ""), + entity.getKiller(), + mmh.getConfig().getBoolean("announce.mobs.displayname", true)); + } + } + } + break; + case "LLAMA": + Llama daLlama = (Llama) entity; + String daLlamaColor = daLlama.getColor().toString(); + String daLlamaName = LlamaHeads.valueOf(name + "_" + daLlamaColor).getName() + " Head";// daLlamaColor.toLowerCase().replace("b", + // "B").replace("c", + // "C").replace("g", + // "G").replace("wh", + // "Wh") + // + " + // Llama + // Head"; + // log(name + "_" + daLlamaColor); + // ConfigHelper.Double(chanceConfig, "chance_percent.llama." + + // daLlamaColor.toLowerCase(), defpercent) + if (mmh.DropIt(event, ConfigHelper.Double(chanceConfig, + "chance_percent.llama." + daLlamaColor.toLowerCase(), defpercent))) { + Drops.add(MoreMobHeadsLib.addSound( + mmh.makeSkull(LlamaHeads.valueOf(name + "_" + daLlamaColor).getTexture().toString(), + mmh.langName.getString( + name.toLowerCase() + "." + daLlamaColor.toLowerCase(), daLlamaName), + entity.getKiller()), + entity)); + if (debug) { + mmh.logDebug("EDE Llama Head Dropped"); + } + if (mmh.getConfig().getBoolean("announce.mobs.enabled", true)) { + announceBeheading(entity, + mmh.langName + .getString(name.toLowerCase() + "." + daLlamaColor.toLowerCase(), + LlamaHeads.valueOf(name + "_" + daLlamaColor).getName() + "") + .replace(" Head", ""), + entity.getKiller(), + mmh.getConfig().getBoolean("announce.mobs.displayname", true)); + } + } + break; + case "HORSE": + Horse daHorse = (Horse) entity; + String daHorseColor = daHorse.getColor().toString(); + String daHorseName = HorseHeads.valueOf(name + "_" + daHorseColor).getName() + " Head";// daHorseColor.toLowerCase().replace("b", + // "B").replace("ch", + // "Ch").replace("cr", + // "Cr").replace("d", + // "D") + // .replace("g", "G").replace("wh", "Wh").replace("_", " ") + " Horse Head"; + // ConfigHelper.Double(chanceConfig, "chance_percent.horse." + + // daHorseColor.toLowerCase(), defpercent) + if (mmh.DropIt(event, ConfigHelper.Double(chanceConfig, + "chance_percent.horse." + daHorseColor.toLowerCase(), defpercent))) { + Drops.add(MoreMobHeadsLib.addSound( + mmh.makeSkull(HorseHeads.valueOf(name + "_" + daHorseColor).getTexture().toString(), + mmh.langName.getString( + name.toLowerCase() + "." + daHorseColor.toLowerCase(), daHorseName), + entity.getKiller()), + entity)); + if (debug) { + mmh.logDebug("EDE Horse Head Dropped"); + } + if (mmh.getConfig().getBoolean("announce.mobs.enabled", true)) { + announceBeheading(entity, + mmh.langName + .getString(name.toLowerCase() + "." + daHorseColor.toLowerCase(), + HorseHeads.valueOf(name + "_" + daHorseColor).getName() + "") + .replace(" Head", ""), + entity.getKiller(), + mmh.getConfig().getBoolean("announce.mobs.displayname", true)); + } + } + break; + case "MOOSHROOM": + name = "MUSHROOM_COW"; + case "MUSHROOM_COW": + MushroomCow daMushroom = (MushroomCow) entity; + String daCowVariant = daMushroom.getVariant().toString(); + String daCowName = daCowVariant.toLowerCase().replace("br", "Br").replace("re", "Re") + + " Mooshroom Head"; + if (debug) { + mmh.logDebug("EDE " + name + "_" + daCowVariant); + } + // ConfigHelper.Double(chanceConfig, "chance_percent.mushroom_cow." + + // daCowVariant.toLowerCase(), defpercent) + if (mmh.DropIt(event, ConfigHelper.Double(chanceConfig, + "chance_percent.mushroom_cow." + daCowVariant.toLowerCase(), defpercent))) { + Drops.add(MoreMobHeadsLib.addSound( + mmh.makeSkull(MobHeads.valueOf(name + "_" + daCowVariant).getTexture().toString(), + mmh.langName.getString( + name.toLowerCase() + "." + daCowVariant.toLowerCase(), daCowName), + entity.getKiller()), + entity)); + if (debug) { + mmh.logDebug("EDE Mooshroom Head Dropped"); + } + if (mmh.getConfig().getBoolean("announce.mobs.enabled", true)) { + announceBeheading(entity, + mmh.langName + .getString(name.toLowerCase() + "." + daCowVariant.toLowerCase(), + MobHeads.valueOf(name + "_" + daCowVariant).getName() + "") + .replace(" Head", ""), + entity.getKiller(), + mmh.getConfig().getBoolean("announce.mobs.displayname", true)); + } + } + break; + case "PANDA": + Panda daPanda = (Panda) entity; + String daPandaGene = daPanda.getMainGene().toString(); + String daPandaName = daPandaGene.toLowerCase().replace("br", "Br").replace("ag", "Ag") + .replace("la", "La").replace("no", "No").replace("p", "P").replace("we", "We") + .replace("wo", "Wo") + " Panda Head"; + if (daPandaGene.equalsIgnoreCase("normal")) { + daPandaName.replace("normal ", ""); + } + if (debug) { + mmh.logDebug("EDE " + name + "_" + daPandaGene); + } + // ConfigHelper.Double(chanceConfig, "chance_percent.panda." + + // daPandaGene.toLowerCase(), defpercent) + if (mmh.DropIt(event, ConfigHelper.Double(chanceConfig, + "chance_percent.panda." + daPandaGene.toLowerCase(), defpercent))) { + Drops.add(MoreMobHeadsLib.addSound( + mmh.makeSkull(MobHeads.valueOf(name + "_" + daPandaGene).getTexture().toString(), + mmh.langName.getString(name.toLowerCase() + "." + daPandaGene.toLowerCase(), + daPandaName), + entity.getKiller()), + entity)); + if (debug) { + mmh.logDebug("EDE Panda Head Dropped"); + } + if (mmh.getConfig().getBoolean("announce.mobs.enabled", true)) { + announceBeheading(entity, + mmh.langName + .getString(name.toLowerCase() + "." + daPandaGene.toLowerCase(), + MobHeads.valueOf(name + "_" + daPandaGene).getName() + "") + .replace(" Head", ""), + entity.getKiller(), + mmh.getConfig().getBoolean("announce.mobs.displayname", true)); + } + } + break; + case "PARROT": + Parrot daParrot = (Parrot) entity; + String daParrotVariant = daParrot.getVariant().toString(); + String daParrotName = daParrotVariant.toLowerCase().replace("b", "B").replace("c", "C") + .replace("g", "G").replace("red", "Red") + " Parrot Head"; + if (debug) { + mmh.logDebug("EDE " + name + "_" + daParrotVariant); + } + // ConfigHelper.Double(chanceConfig, "chance_percent.parrot." + + // daParrotVariant.toLowerCase(), defpercent) + if (mmh.DropIt(event, ConfigHelper.Double(chanceConfig, + "chance_percent.parrot." + daParrotVariant.toLowerCase(), defpercent))) { + Drops.add(MoreMobHeadsLib.addSound(mmh.makeSkull( + MobHeads.valueOf(name + "_" + daParrotVariant).getTexture().toString(), + mmh.langName.getString(name.toLowerCase() + "." + daParrotVariant.toLowerCase(), + daParrotName), + entity.getKiller()), entity)); + if (debug) { + mmh.logDebug("EDE Parrot Head Dropped"); + } + if (mmh.getConfig().getBoolean("announce.mobs.enabled", true)) { + announceBeheading(entity, + mmh.langName + .getString(name.toLowerCase() + "." + daParrotVariant.toLowerCase(), + MobHeads.valueOf(name + "_" + daParrotVariant).getName() + "") + .replace(" Head", ""), + entity.getKiller(), + mmh.getConfig().getBoolean("announce.mobs.displayname", true)); + } + } + break; + case "RABBIT": + String daRabbitType; + Rabbit daRabbit = (Rabbit) entity; + daRabbitType = daRabbit.getRabbitType().toString(); + if (daRabbit.getCustomName() != null) { + if (daRabbit.getCustomName().contains("Toast")) { + daRabbitType = "Toast"; + } + } + String daRabbitName = RabbitHeads.valueOf(name + "_" + daRabbitType).getName() + " Head"; + if (debug) { + mmh.logDebug("EDE " + name + "_" + daRabbitType); + } + // ConfigHelper.Double(chanceConfig, "chance_percent.rabbit." + + // daRabbitType.toLowerCase(), defpercent) + if (mmh.DropIt(event, ConfigHelper.Double(chanceConfig, + "chance_percent.rabbit." + daRabbitType.toLowerCase(), defpercent))) { + Drops.add(MoreMobHeadsLib.addSound(mmh.makeSkull( + RabbitHeads.valueOf(name + "_" + daRabbitType).getTexture().toString(), + mmh.langName.getString(name.toLowerCase() + "." + daRabbitType.toLowerCase(), + daRabbitName), + entity.getKiller()), entity)); + if (debug) { + mmh.logDebug("EDE Rabbit Head Dropped"); + } + if (mmh.getConfig().getBoolean("announce.mobs.enabled", true)) { + announceBeheading(entity, + mmh.langName + .getString(name.toLowerCase() + "." + daRabbitType.toLowerCase(), + RabbitHeads.valueOf(name + "_" + daRabbitType).getName() + "") + .replace(" Head", ""), + entity.getKiller(), + mmh.getConfig().getBoolean("announce.mobs.displayname", true)); + } + } + break; + case "VILLAGER": + Villager daVillager = (Villager) entity; // Location jobsite = + // daVillager.getMemory(MemoryKey.JOB_SITE); + String daVillagerType = daVillager.getVillagerType().toString(); + String daVillagerProfession = daVillager.getProfession().toString(); + if (debug) { + mmh.logDebug("EDE name=" + name); + } + if (debug) { + mmh.logDebug("EDE profession=" + daVillagerProfession); + } + if (debug) { + mmh.logDebug("EDE type=" + daVillagerType); + } + String daName = name + "_" + daVillagerProfession + "_" + daVillagerType; + if (debug) { + mmh.logDebug("EDE " + daName + " " + name + "_" + daVillagerProfession + "_" + + daVillagerType); + } + String daVillagerName = VillagerHeads.valueOf(daName).getName() + " Head"; + // ConfigHelper.Double(chanceConfig, "chance_percent.villager." + + // daVillagerType.toLowerCase() + "." + daVillagerProfession.toLowerCase(), + // defpercent) + if (mmh.DropIt(event, + ConfigHelper.Double(chanceConfig, "chance_percent.villager." + + daVillagerType.toLowerCase() + "." + daVillagerProfession.toLowerCase(), + defpercent))) { + Drops.add( + MoreMobHeadsLib + .addSound( + mmh.makeSkull( + VillagerHeads.valueOf(name + "_" + daVillagerProfession + + "_" + daVillagerType).getTexture().toString(), + mmh.langName + .getString( + name.toLowerCase() + "." + + daVillagerType.toLowerCase() + "." + + daVillagerProfession + .toLowerCase(), + daVillagerName), + entity.getKiller()), + entity)); + if (debug) { + mmh.logDebug("EDE Villager Head Dropped"); + } + if (mmh.getConfig().getBoolean("announce.mobs.enabled", true)) { + announceBeheading(entity, mmh.langName.getString( + name.toLowerCase() + "." + daVillagerType.toLowerCase() + "." + + daVillagerProfession.toLowerCase(), + VillagerHeads.valueOf(name + "_" + daVillagerProfession + "_" + daVillagerType) + .getName() + "") + .replace(" Head", ""), entity.getKiller(), + mmh.getConfig().getBoolean("announce.mobs.displayname", true)); + } + } + break; + case "ZOMBIE_VILLAGER": + ZombieVillager daZombieVillager = (ZombieVillager) entity; + String daZombieVillagerProfession = daZombieVillager.getVillagerProfession().toString(); + String daZombieVillagerName = ZombieVillagerHeads + .valueOf(name + "_" + daZombieVillagerProfession).getName() + " Head"; + if (debug) { + mmh.logDebug("EDE " + name + "_" + daZombieVillagerProfession); + } + // ConfigHelper.Double(chanceConfig, "chance_percent.zombie_villager", + // defpercent) + if (mmh.DropIt(event, + ConfigHelper.Double(chanceConfig, "chance_percent.zombie_villager", defpercent))) { + Drops.add( + MoreMobHeadsLib + .addSound( + mmh.makeSkull( + ZombieVillagerHeads + .valueOf(name + "_" + daZombieVillagerProfession) + .getTexture().toString(), + mmh.langName + .getString( + name.toLowerCase() + "." + + daZombieVillagerProfession + .toLowerCase(), + daZombieVillagerName), + entity.getKiller()), + entity)); + if (debug) { + mmh.logDebug("EDE Zombie Villager Head Dropped"); + } + if (mmh.getConfig().getBoolean("announce.mobs.enabled", true)) { + announceBeheading(entity, + mmh.langName.getString( + name.toLowerCase() + "." + daZombieVillagerProfession.toLowerCase(), + ZombieVillagerHeads.valueOf(name + "_" + daZombieVillagerProfession) + .getName() + "") + .replace(" Head", ""), + entity.getKiller(), + mmh.getConfig().getBoolean("announce.mobs.displayname", true)); + } + } + break; + case "SHEEP": + Sheep daSheep = (Sheep) entity; + String daSheepColor = daSheep.getColor().toString(); + String daSheepName; + + if (daSheep.getCustomName() != null) { + if (daSheep.getCustomName().contains("jeb_")) { + daSheepColor = "jeb_"; + } else { + daSheepColor = daSheep.getColor().toString(); + } + } + daSheepName = SheepHeads.valueOf(name + "_" + daSheepColor).getName() + " Head"; + if (debug) { + mmh.logDebug("EDE " + daSheepColor + "_" + name); + } + // ConfigHelper.Double(chanceConfig, "chance_percent.sheep." + + // daSheepColor.toLowerCase(), defpercent) + if (mmh.DropIt(event, ConfigHelper.Double(chanceConfig, + "chance_percent.sheep." + daSheepColor.toLowerCase(), defpercent))) { + Drops.add(MoreMobHeadsLib.addSound( + mmh.makeSkull(SheepHeads.valueOf(name + "_" + daSheepColor).getTexture().toString(), + mmh.langName.getString( + name.toLowerCase() + "." + daSheepColor.toLowerCase(), daSheepName), + entity.getKiller()), + entity)); + if (debug) { + mmh.logDebug("EDE Sheep Head Dropped"); + } + if (mmh.getConfig().getBoolean("announce.mobs.enabled", true)) { + announceBeheading(entity, + mmh.langName + .getString(name.toLowerCase() + "." + daSheepColor.toLowerCase(), + SheepHeads.valueOf(name + "_" + daSheepColor).getName() + "") + .replace(" Head", ""), + entity.getKiller(), + mmh.getConfig().getBoolean("announce.mobs.displayname", true)); + } + } + break; + case "TRADER_LLAMA": + TraderLlama daTraderLlama = (TraderLlama) entity; + String daTraderLlamaColor = daTraderLlama.getColor().toString(); + String daTraderLlamaName = LlamaHeads.valueOf(name + "_" + daTraderLlamaColor).getName() + + " Head"; + if (debug) { + mmh.logDebug("EDE " + daTraderLlamaColor + "_" + name); + } + // ConfigHelper.Double(chanceConfig, "chance_percent.trader_llama." + + // daTraderLlamaColor.toLowerCase(), defpercent) + if (mmh.DropIt(event, ConfigHelper.Double(chanceConfig, + "chance_percent.trader_llama." + daTraderLlamaColor.toLowerCase(), defpercent))) { + Drops.add(MoreMobHeadsLib.addSound(mmh.makeSkull( + LlamaHeads.valueOf(name + "_" + daTraderLlamaColor).getTexture().toString(), + mmh.langName.getString(name.toLowerCase() + "." + daTraderLlamaColor.toLowerCase(), + daTraderLlamaName), + entity.getKiller()), entity)); + if (debug) { + mmh.logDebug("EDE Trader Llama Head Dropped"); + } + if (mmh.getConfig().getBoolean("announce.mobs.enabled", true)) { + announceBeheading(entity, mmh.langName + .getString(name.toLowerCase() + "." + daTraderLlamaColor.toLowerCase(), + LlamaHeads.valueOf(name + "_" + daTraderLlamaColor).getName() + "") + .replace(" Head", ""), entity.getKiller(), + mmh.getConfig().getBoolean("announce.mobs.displayname", true)); + } + } + break; + case "AXOLOTL": + Axolotl daAxolotl = (Axolotl) entity; + String daAxolotlVariant = daAxolotl.getVariant().toString(); + String daAxolotlName = MobHeads117.valueOf(name + "_" + daAxolotlVariant).getName() + " Head"; + if (debug) { + mmh.logDebug("EDE " + daAxolotlVariant + "_" + name); + } + // ConfigHelper.Double(chanceConfig, "chance_percent.axolotl." + + // daAxolotlVariant.toLowerCase(), defpercent) + if (mmh.DropIt(event, ConfigHelper.Double(chanceConfig, + "chance_percent.axolotl." + daAxolotlVariant.toLowerCase(), defpercent))) { + Drops.add(MoreMobHeadsLib.addSound(mmh.makeSkull( + MobHeads117.valueOf(name + "_" + daAxolotlVariant).getTexture().toString(), + mmh.langName.getString(name.toLowerCase() + "." + daAxolotlVariant.toLowerCase(), + daAxolotlName), + entity.getKiller()), entity)); + if (debug) { + mmh.logDebug("EDE Axolotl Head Dropped"); + } + if (mmh.getConfig().getBoolean("announce.mobs.enabled", true)) { + announceBeheading(entity, mmh.langName + .getString(name.toLowerCase() + "." + daAxolotlVariant.toLowerCase(), + MobHeads117.valueOf(name + "_" + daAxolotlVariant).getName() + "") + .replace(" Head", ""), entity.getKiller(), + mmh.getConfig().getBoolean("announce.mobs.displayname", true)); + } + } + break; + case "GOAT": + Goat daGoat = (Goat) entity; + String daGoatVariant; + String daGoatName;// = MobHeads117.valueOf(name + "_" + daAxolotlVariant).getName() + " Head"; + if (daGoat.isScreaming()) { + // Giving screaming goat head + daGoatVariant = "SCREAMING"; + daGoatName = MobHeads117.valueOf(name + "_" + daGoatVariant).getName() + " Head"; + } else { + // give goat head + daGoatVariant = "NORMAL"; + daGoatName = MobHeads117.valueOf(name + "_" + daGoatVariant).getName() + " Head"; + } + if (debug) { + mmh.logDebug("EDE " + daGoatVariant + "_" + name); + } + // ConfigHelper.Double(chanceConfig, "chance_percent.goat." + + // daGoatVariant.toLowerCase(), defpercent) + if (mmh.DropIt(event, ConfigHelper.Double(chanceConfig, + "chance_percent.goat." + daGoatVariant.toLowerCase(), defpercent))) { + Drops.add(MoreMobHeadsLib.addSound(mmh + .makeSkull(MobHeads117.valueOf(name + "_" + daGoatVariant).getTexture().toString(), + mmh.langName.getString( + name.toLowerCase() + "." + daGoatVariant.toLowerCase(), daGoatName), + entity.getKiller()), + entity)); + if (debug) { + mmh.logDebug("EDE Goat Head Dropped"); + } + if (mmh.getConfig().getBoolean("announce.mobs.enabled", true)) { + announceBeheading(entity, + mmh.langName + .getString(name.toLowerCase() + "." + daGoatVariant.toLowerCase(), + MobHeads117.valueOf(name + "_" + daGoatVariant).getName() + "") + .replace(" Head", ""), + entity.getKiller(), + mmh.getConfig().getBoolean("announce.mobs.displayname", true)); + } + } + break; + case "STRIDER": + Strider daStrider = (Strider) entity; + PersistentDataContainer pdc2 = daStrider.getPersistentDataContainer(); + boolean isShivering = Boolean.parseBoolean(daStrider.getPersistentDataContainer().get(mmh.SHIVERING_KEY, PersistentDataType.STRING)); + if (mmh.chance25oftrue()) { // chance50oftrue() + // isShivering + name = name.concat("_SHIVERING"); + // ConfigHelper.Double(chanceConfig, + // "chance_percent." + name.toLowerCase(), + // defpercent) + if (mmh.DropIt(event, ConfigHelper.Double(chanceConfig, "chance_percent." + name.toLowerCase(), defpercent))) { + Drops.add(MoreMobHeadsLib.addSound(mmh.makeSkull(MobHeads.valueOf(name).getTexture().toString(), mmh.langName.getString(name.toLowerCase() + "_shivering", "Shivering " + event.getEntity().getName() + " Head"), entity.getKiller()), entity)); + if (debug) {mmh.logDebug("EDE " + name + " Head Dropped");} + if (mmh.getConfig().getBoolean("announce.mobs.enabled", true)) { + announceBeheading(entity, mmh.langName.getString(name.toLowerCase(), MobHeads.valueOf(name).getName() + "").replace(" Head", ""), entity.getKiller(), + mmh.getConfig().getBoolean("announce.mobs.displayname", true)); + } + } + } else // ConfigHelper.Double(chanceConfig, + // "chance_percent." + name.toLowerCase(), + // defpercent) + if (mmh.DropIt(event, ConfigHelper.Double(chanceConfig, "chance_percent." + name.toLowerCase(), defpercent))) { + Drops.add(MoreMobHeadsLib.addSound(mmh.makeSkull(MobHeads.valueOf(name).getTexture().toString(), mmh.langName.getString(name.toLowerCase(), + event.getEntity().getName() + " Head"), entity.getKiller()), entity)); + if (debug) {mmh.logDebug("EDE " + name + " Head Dropped");} + if (mmh.getConfig().getBoolean("announce.mobs.enabled", true)) { + announceBeheading(entity, mmh.langName.getString(name.toLowerCase(), MobHeads.valueOf(name).getName() + "").replace(" Head", ""), entity.getKiller(), mmh.getConfig().getBoolean("announce.mobs.displayname", true)); + } + } + + if (debug) {mmh.logDebug("EDE " + MobHeads.valueOf(name) + " killed");} + break; + case "FROG": + String frogName = MoreMobHeadsLib.getName(name, entity); + String daFrogName = MobHeads119.valueOf(frogName).getName() + " Head"; + // chanceConfig.getDouble("chance_percent." + frogName.replace("_", + // ".").toLowerCase(), defpercent) + // ConfigHelper.Double(chanceConfig, "chance_percent." + frogName.replace("_", + // ".").toLowerCase(), defpercent) + if (mmh.DropIt(event, ConfigHelper.Double(chanceConfig, "chance_percent." + frogName.replace("_", ".").toLowerCase(), defpercent))) { + Drops.add(MoreMobHeadsLib.addSound(mmh.makeSkull(MobHeads119.valueOf(frogName).getTexture().toString(), mmh.langName.getString(frogName.replace("_", ".").toLowerCase(), + daFrogName), entity.getKiller()), entity)); + if (debug) { + mmh.logDebug("EDE Frog Head Dropped"); + } + if (mmh.getConfig().getBoolean("announce.mobs.enabled", true)) { + announceBeheading(entity, mmh.langName.getString(frogName.replace("_", ".").toLowerCase(), MobHeads119.valueOf(frogName).getName() + "").replace(" Head", ""), + entity.getKiller(), mmh.getConfig().getBoolean("announce.mobs.displayname", true)); + } + } + + break; + case "TADPOLE": + case "ALLAY": + case "WARDEN": + if (debug) {mmh.logDebug("EDE name=" + name);} + if (debug) {mmh.logDebug("EDE texture=" + MobHeads119.valueOf(name).getTexture().toString());} + if (debug) {mmh.logDebug("EDE location=" + entity.getLocation().toString());} + if (debug) {mmh.logDebug("EDE getName=" + event.getEntity().getName());} + if (debug) {mmh.logDebug("EDE killer=" + entity.getKiller().toString());} + // ConfigHelper.Double(chanceConfig, "chance_percent." + name.toLowerCase(), + // defpercent) + if (mmh.DropIt(event, ConfigHelper.Double(chanceConfig, "chance_percent." + name.toLowerCase(), defpercent))) { + Drops.add(MoreMobHeadsLib.addSound(mmh.makeSkull(MobHeads119.valueOf(name).getTexture().toString(), mmh.langName.getString(name.toLowerCase(), + event.getEntity().getName() + " Head"), entity.getKiller()), entity)); + if (debug) { + mmh.logDebug("EDE " + name + " Head Dropped"); + } + if (mmh.getConfig().getBoolean("announce.mobs.enabled", true)) { + announceBeheading(entity, mmh.langName.getString(name.toLowerCase(), MobHeads119.valueOf(name).getName() + "").replace(" Head", ""), + entity.getKiller(), mmh.getConfig().getBoolean("announce.mobs.displayname", true)); + } + } + if (debug) { + mmh.logDebug("EDE " + MobHeads119.valueOf(name) + " killed"); + } + break; + case "CAMEL": + case "SNIFFER": + if (debug) {mmh.logDebug("EDE name=" + name);} + if (debug) {mmh.logDebug("EDE texture=" + MobHeads120.valueOf(name).getTexture().toString());} + if (debug) {mmh.logDebug("EDE location=" + entity.getLocation().toString());} + if (debug) {mmh.logDebug("EDE getName=" + event.getEntity().getName());} + if (debug) {mmh.logDebug("EDE killer=" + entity.getKiller().toString());} + // ConfigHelper.Double(chanceConfig, "chance_percent." + name.toLowerCase(), + // defpercent) + if (mmh.DropIt(event, ConfigHelper.Double(chanceConfig, "chance_percent." + name.toLowerCase(), + defpercent))) { + Drops.add(MoreMobHeadsLib.addSound( + mmh.makeSkull(MobHeads120.valueOf(name).getTexture().toString(), + mmh.langName.getString(name.toLowerCase(), + event.getEntity().getName() + " Head"), + entity.getKiller()), + entity)); + if (debug) { + mmh.logDebug("EDE " + name + " Head Dropped"); + } + if (mmh.getConfig().getBoolean("announce.mobs.enabled", true)) { + announceBeheading(entity, + mmh.langName + .getString(name.toLowerCase(), MobHeads120.valueOf(name).getName() + "") + .replace(" Head", ""), + entity.getKiller(), + mmh.getConfig().getBoolean("announce.mobs.displayname", true)); + } + } + if (debug) { + mmh.logDebug("EDE " + MobHeads120.valueOf(name) + " killed"); + } + break; + case "VEX": + if (debug) {mmh.logDebug("EDE name=" + name);} + if (debug) {mmh.logDebug("EDE texture=" + MobHeads.valueOf(name).getTexture().toString());} + if (debug) {mmh.logDebug("EDE location=" + entity.getLocation().toString());} + if (debug) {mmh.logDebug("EDE getName=" + event.getEntity().getName());} + if (debug) {mmh.logDebug("EDE killer=" + entity.getKiller().toString());} + if (mmh.DropIt(event, ConfigHelper.Double(chanceConfig, "chance_percent." + name.toLowerCase(), + defpercent))) { + Drops.add(MoreMobHeadsLib.addSound(mmh.makeSkull(MobHeads.valueOf(name).getTexture().toString(), + mmh.langName.getString(name.toLowerCase(), event.getEntity().getName() + " Head"), entity.getKiller()), entity)); + if (debug) {mmh.logDebug("EDE " + name + " Head Dropped");} + if (mmh.getConfig().getBoolean("announce.mobs.enabled", true)) { + announceBeheading(entity, mmh.langName.getString(name.toLowerCase(), MobHeads.valueOf(name).getName() + "").replace(" Head", ""), + entity.getKiller(), mmh.getConfig().getBoolean("announce.mobs.displayname", true)); + } + if (coinFlip()) { + String name2 = name; + name2 = name2 + "_ANGRY"; + Drops.add(MoreMobHeadsLib.addSound(mmh.makeSkull(MobHeads.valueOf(name2).getTexture().toString(), + mmh.langName.getString(name2.toLowerCase(), event.getEntity().getName() + " Head"), entity.getKiller()), entity)); + if (debug) {mmh.logDebug("EDE " + name2 + " Head Dropped");} + } + } + if (debug) {mmh.logDebug("EDE " + MobHeads.valueOf(name) + " killed");} + break; + default: + // mmh.makeSkull(MobHeads.valueOf(name).getTexture(), name); + if (debug) { + mmh.logDebug("EDE name=" + name + " line:1122"); + } + if (debug) { + mmh.logDebug( + "EDE texture=" + MobHeads.valueOf(name).getTexture().toString() + " line:1123"); + } + if (debug) { + mmh.logDebug("EDE location=" + entity.getLocation().toString() + " line:1124"); + } + if (debug) { + mmh.logDebug("EDE getName=" + event.getEntity().getName() + " line:1125"); + } + if (debug) { + mmh.logDebug("EDE killer=" + entity.getKiller().toString() + " line:1126"); + } + // ConfigHelper.Double(chanceConfig, "chance_percent." + name.toLowerCase(), + // defpercent) + if (mmh.DropIt(event, ConfigHelper.Double(chanceConfig, "chance_percent." + name.toLowerCase(), + defpercent))) { + Drops.add(MoreMobHeadsLib.addSound( + mmh.makeSkull(MobHeads.valueOf(name).getTexture().toString(), + mmh.langName.getString(name.toLowerCase(), + event.getEntity().getName() + " Head"), + entity.getKiller()), + entity)); + if (debug) { + mmh.logDebug("EDE " + name + " Head Dropped"); + } + if (mmh.getConfig().getBoolean("announce.mobs.enabled", true)) { + announceBeheading(entity, + mmh.langName + .getString(name.toLowerCase(), MobHeads.valueOf(name).getName() + "") + .replace(" Head", ""), + entity.getKiller(), + mmh.getConfig().getBoolean("announce.mobs.displayname", true)); + } + } + if (debug) { + mmh.logDebug("EDE " + MobHeads.valueOf(name) + " killed"); + } + break; + } } + // } + // } + return; } + } } - + @SuppressWarnings({ "static-access", "unused" }) @EventHandler(priority = EventPriority.LOWEST) - public void onCreatureSpawn(CreatureSpawnEvent event){ //onEntitySpawn(EntitySpawnEvent e) { // TODO: onCreatureSpawn - if(mmh.getConfig().getBoolean("wandering_trades.custom_wandering_trader", true)){ + public void onCreatureSpawn(CreatureSpawnEvent event) { // onEntitySpawn(EntitySpawnEvent e) { // TODO: + // onCreatureSpawn + if (mmh.getConfig().getBoolean("wandering_trades.custom_wandering_trader", true)) { Entity entity = event.getEntity(); - if(entity instanceof WanderingTrader){ - //traderHeads2 = YamlConfiguration.loadConfiguration(traderFile2); - if(debug){mmh.logDebug("CSE WanderingTrader spawned");} - WanderingTrader trader = (WanderingTrader) entity; - List recipes = new ArrayList(); - final List oldRecipes = trader.getRecipes(); - - /** - * Player Heads - */ - if(mmh.getConfig().getBoolean("wandering_trades.player_heads.enabled", true)){ - // Check if default max heads is larger than number of playerheads - int numOfplayerheads = (playerhead_recipes.size() - 1) >= 0 ? playerhead_recipes.size() - 1 : 0; - int phMaxDef = (3 >= numOfplayerheads) ? 3: numOfplayerheads; - - int playerRandom = mmh.randomBetween(mmh.getConfig().getInt("wandering_trades.player_heads.min", 0), mmh.getConfig().getInt("wandering_trades.player_heads.max", phMaxDef)); - if(debug){mmh.logDebug("CSE.PH playerRandom=" + playerRandom);} - if(playerRandom > 0){ - if(debug){mmh.logDebug("CSE.PH playerRandom > 0");} - - if(debug){mmh.logDebug("CSE.PH numOfplayerheads=" + numOfplayerheads);} - HashSet used = new HashSet(); - outerLoop: - for(int i=0; i numOfplayerheads) { //while we have already used the number - randomPlayerHead = mmh.randomBetween(0, numOfplayerheads); //generate a new one because it's already used - // infinite loop catch - if(i >= 500) { - if(debug){mmh.logDebug("CSE.PH timed out");} - break outerLoop; - } - } - //by this time, add will be unique - used.add(randomPlayerHead); - recipes.add(playerhead_recipes.get(randomPlayerHead)); - } - used.clear(); - } - } - /** - * Block Heads - */ - if(mmh.getConfig().getBoolean("wandering_trades.block_heads.enabled", true)){ - // check if default max block heads is larger than number of blockheads - int numOfblockheads = BHNum >= 0 ? BHNum : 0; - int bhMaxDef = (5 >= numOfblockheads) ? 5: numOfblockheads; - - int min = mmh.getConfig().getInt("wandering_trades.block_heads.pre_116.min", 0); - int max; - if( Double.parseDouble(mmh.getMCVersion().substring(0, 4)) >= 1.16 ){ - max = mmh.getConfig().getInt("wandering_trades.block_heads.pre_116.max", bhMaxDef); - }else{ - max = mmh.getConfig().getInt("wandering_trades.block_heads.pre_116.max", bhMaxDef); - } - if(debug){mmh.logDebug("CSE BH1 min=" + min + " max=" + max);} - int blockRandom = mmh.randomBetween(min, max); - if(debug){mmh.logDebug("CSE blockRandom=" + blockRandom);} - if(blockRandom > 0){ - if(debug){mmh.logDebug("CSE blockRandom > 0");} - - if(debug){mmh.logDebug("CSE numOfblockheads=" + numOfblockheads);} - HashSet used = new HashSet(); - outerLoop: - for(int i=0; i= 1.16 ){ - // check if default max BH is larger than number of block heads - int numOfblockheads = (BHNum + BHNum2 - 1) >= 0 ? BHNum + BHNum2 - 1 : 0; - int bhMaxDef = (5 >= numOfblockheads) ? 5: numOfblockheads; - - int min = mmh.getConfig().getInt("wandering_trades.block_heads.is_116.min", 0); - int max = mmh.getConfig().getInt("wandering_trades.block_heads.is_116.max", bhMaxDef); - if(debug){mmh.logDebug("CSE BH2 min=" + min + " max=" + max);} - int blockRandom = mmh.randomBetween(min, max); - if(debug){mmh.logDebug("CSE blockRandom=" + blockRandom);} - if(blockRandom > 0){ - if(debug){mmh.logDebug("CSE blockRandom > 0");} - - if(debug){mmh.logDebug("CSE numOfblockheads=" + numOfblockheads);} - HashSet used = new HashSet(); - outerLoop: - for(int i=0; i= 1.17 ){ - // check if default max BH is larger than number of blockheads - int numOfblockheads = (BHNum + BHNum2 + BHNum3 - 1) >=0 ? BHNum + BHNum2 + BHNum3 - 1 : 0; - int bhMaxDef = (5 >= numOfblockheads) ? 5: numOfblockheads; - - int min1 = mmh.getConfig().getInt("wandering_trades.block_heads.is_117.min", 0); - //int max1 = mmh.getConfig().getInt("wandering_trades.block_heads.is_117.max", 5) / 2; - int max1 = mmh.getConfig().getInt("wandering_trades.block_heads.is_117.max", 5); - if(debug){mmh.logDebug("CSE BH2 min=" + min1 + " max=" + max1);} - int blockRandom1 = mmh.randomBetween(min1, max1); - if(debug){mmh.logDebug("CSE blockRandom=" + blockRandom1);} - if(blockRandom1 > 0){ - if(debug){mmh.logDebug("CSE blockRandom > 0");} - - if(debug){mmh.logDebug("CSE numOfblockheads=" + numOfblockheads);} - HashSet used = new HashSet(); - outerLoop: - for(int i=0; i= 0 ? custometrade_recipes.size() - 1 : 0; - numOfCustomTrades = numOfCustomTrades - 1; - int ctMaxDef = (5 >= numOfCustomTrades) ? 5: numOfCustomTrades; - - int customRandom = mmh.randomBetween(mmh.getConfig().getInt("wandering_trades.custom_trades.min", 0), mmh.getConfig().getInt("wandering_trades.custom_trades.max", ctMaxDef)); - - //if(debug){logDebug("CSE numOfCustomTrades=" + numOfCustomTrades);} - //int customRandom = randomBetween(getConfig().getInt("wandering_trades.min_custom_trades", 0), mmh.getConfig().getInt("wandering_trades.max_custom_trades", 3)); - if(debug){mmh.logDebug("CSE customRandom=" + customRandom);} - if(customRandom > 0){ - if(debug){mmh.logDebug("CSE customRandom > 0");} - //for(int randomCustomTrade=1; randomCustomTrade used = new HashSet(); - for(int i=0; i chance){ - - recipes.add(custometrade_recipes.get(i)); - } - if(i >= 500) { - if(debug){mmh.logDebug("CSE.CT timed out");} - break ; - } - } - used.clear(); - } - } - - if(mmh.getConfig().getBoolean("wandering_trades.keep_default_trades", true)){ - recipes.addAll(oldRecipes); - } - trader.setRecipes(recipes); - /**}});//*/ - } - + if (entity instanceof WanderingTrader) { + // traderHeads2 = YamlConfiguration.loadConfiguration(traderFile2); + if (debug) { + mmh.logDebug("CSE WanderingTrader spawned"); } - - } - - @SuppressWarnings({ "unused", "static-access", "rawtypes", "unchecked" }) - public boolean onCommand(CommandSender sender, Command cmd, String label, String[] args){ // TODO: Commands - //log("command=" + cmd.getName() + " args=" + args[0] + args[1]); - if (cmd.getName().equalsIgnoreCase("MMH")){ - if (args.length == 0){ - sender.sendMessage(ChatColor.GREEN + "[]===============[" + ChatColor.YELLOW + mmh.getName() + ChatColor.GREEN + "]===============[]"); - sender.sendMessage(ChatColor.WHITE + " ");// https://ko-fi.com/joelgodofwar - sender.sendMessage(ChatColor.WHITE + " " + mmh.get("mmh.version.donate") + ": https://ko-fi.com/joelgodofwar");// https://ko-fi.com/joelgodofwar - sender.sendMessage(ChatColor.WHITE + " ");// https://ko-fi.com/joelgodofwar - sender.sendMessage(ChatColor.WHITE + " /mmh reload - " + mmh.get("mmh.command.reload", "Reloads this plugin."));//subject to server admin approval"); - sender.sendMessage(ChatColor.WHITE + " /mmh toggledebug - " + mmh.get("mmh.command.debuguse", "Temporarily toggles debug."));//Cancels SinglePlayerSleep"); - if(mmh.getConfig().getBoolean("wandering_trades.custom_wandering_trader", true)){ - sender.sendMessage(ChatColor.WHITE + " /mmh playerheads - " + mmh.get("mmh.command.playerheads", "Shows how to use the playerheads commands")); - //sender.sendMessage(ChatColor.WHITE + " /mmh blockheads - " + mmh.lang.get("blockheads", "Shows how to use the blockheads commands")); - sender.sendMessage(ChatColor.WHITE + " /mmh customtrader - " + mmh.get("mmh.command.customtrader", "Shows how to use the customtrader commands")); + WanderingTrader trader = (WanderingTrader) entity; + List recipes = new ArrayList(); + final List oldRecipes = trader.getRecipes(); + + /** + * Player Heads + */ + if (mmh.getConfig().getBoolean("wandering_trades.player_heads.enabled", true)) { + // Check if default max heads is larger than number of playerheads + int numOfplayerheads = (playerhead_recipes.size() - 1) >= 0 ? playerhead_recipes.size() - 1 : 0; + int phMaxDef = (3 >= numOfplayerheads) ? 3 : numOfplayerheads; + + int playerRandom = mmh.randomBetween(mmh.getConfig().getInt("wandering_trades.player_heads.min", 0), + mmh.getConfig().getInt("wandering_trades.player_heads.max", phMaxDef)); + if (debug) { + mmh.logDebug("CSE.PH playerRandom=" + playerRandom); } - sender.sendMessage(ChatColor.WHITE + " /mmh fixhead - " + mmh.get("mmh.command.headfix") ); - sender.sendMessage(ChatColor.WHITE + " /mmh givemh - " + mmh.get("mmh.command.give.mobhead") ); - sender.sendMessage(ChatColor.WHITE + " /mmh giveph - " + mmh.get("mmh.command.give.playerhead") ); - sender.sendMessage(ChatColor.WHITE + " /mmh givebh - " + mmh.get("mmh.command.give.blockhead") ); - sender.sendMessage(ChatColor.WHITE + " /mmh display perms/vars - " + mmh.get("mmh.command.display.help") ); - sender.sendMessage(ChatColor.WHITE + " "); - sender.sendMessage(ChatColor.GREEN + "[]===============[" + ChatColor.YELLOW + mmh.getName() + ChatColor.GREEN + "]===============[]"); + if (playerRandom > 0) { + if (debug) { + mmh.logDebug("CSE.PH playerRandom > 0"); + } + + if (debug) { + mmh.logDebug("CSE.PH numOfplayerheads=" + numOfplayerheads); + } + HashSet used = new HashSet(); + outerLoop: for (int i = 0; i < playerRandom; i++) { + int randomPlayerHead = mmh.randomBetween(0, numOfplayerheads); + while (used.contains(randomPlayerHead) || (randomPlayerHead > numOfplayerheads)) { // while we + // have + // already + // used + // the + // number + randomPlayerHead = mmh.randomBetween(0, numOfplayerheads); // generate a new one because + // it's already used + // infinite loop catch + if (i >= 500) { + if (debug) { + mmh.logDebug("CSE.PH timed out"); + } + break outerLoop; + } + } + // by this time, add will be unique + used.add(randomPlayerHead); + recipes.add(playerhead_recipes.get(randomPlayerHead)); + } + used.clear(); + } + } + /** + * Block Heads + */ + if (mmh.getConfig().getBoolean("wandering_trades.block_heads.enabled", true)) { + // check if default max block heads is larger than number of blockheads + int numOfblockheads = BHNum >= 0 ? BHNum : 0; + int bhMaxDef = (5 >= numOfblockheads) ? 5 : numOfblockheads; + + int min = mmh.getConfig().getInt("wandering_trades.block_heads.pre_116.min", 0); + int max; + if (Double.parseDouble(mmh.getMCVersion().substring(0, 4)) >= 1.16) { + max = mmh.getConfig().getInt("wandering_trades.block_heads.pre_116.max", bhMaxDef); + } else { + max = mmh.getConfig().getInt("wandering_trades.block_heads.pre_116.max", bhMaxDef); + } + if (debug) { + mmh.logDebug("CSE BH1 min=" + min + " max=" + max); + } + int blockRandom = mmh.randomBetween(min, max); + if (debug) { + mmh.logDebug("CSE blockRandom=" + blockRandom); + } + if (blockRandom > 0) { + if (debug) { + mmh.logDebug("CSE blockRandom > 0"); + } + + if (debug) { + mmh.logDebug("CSE numOfblockheads=" + numOfblockheads); + } + HashSet used = new HashSet(); + outerLoop: for (int i = 0; i < blockRandom; i++) { + if (debug) { + mmh.logDebug("CSE i=" + i); + } + int randomBlockHead = mmh.randomBetween(0, numOfblockheads); + while (used.contains(randomBlockHead)) { // while we have already used the number + randomBlockHead = mmh.randomBetween(0, numOfblockheads); // generate a new one because + // it's already used + if (i >= 500) { + if (debug) { + mmh.logDebug("CSE.BH1 timed out"); + } + break outerLoop; + } + } + // by this time, add will be unique + used.add(randomBlockHead); + + recipes.add(blockhead_recipes.get(randomBlockHead)); + } + used.clear(); + } + } + + /** + * Block Heads 2 + */ + if (mmh.getConfig().getBoolean("wandering_trades.block_heads.enabled", true)) { + if (Double.parseDouble(mmh.getMCVersion().substring(0, 4)) >= 1.16) { + // check if default max BH is larger than number of block heads + int numOfblockheads = ((BHNum + BHNum2) - 1) >= 0 ? (BHNum + BHNum2) - 1 : 0; + int bhMaxDef = (5 >= numOfblockheads) ? 5 : numOfblockheads; + + int min = mmh.getConfig().getInt("wandering_trades.block_heads.is_116.min", 0); + int max = mmh.getConfig().getInt("wandering_trades.block_heads.is_116.max", bhMaxDef); + if (debug) { + mmh.logDebug("CSE BH2 min=" + min + " max=" + max); + } + int blockRandom = mmh.randomBetween(min, max); + if (debug) { + mmh.logDebug("CSE blockRandom=" + blockRandom); + } + if (blockRandom > 0) { + if (debug) { + mmh.logDebug("CSE blockRandom > 0"); + } + + if (debug) { + mmh.logDebug("CSE numOfblockheads=" + numOfblockheads); + } + HashSet used = new HashSet(); + outerLoop: for (int i = 0; i < blockRandom; i++) { + if (debug) { + mmh.logDebug("CSE i=" + i); + } + int randomBlockHead = mmh.randomBetween(BHNum - 1, numOfblockheads); + while (used.contains(randomBlockHead)) { // while we have already used the number + randomBlockHead = mmh.randomBetween(BHNum - 1, numOfblockheads); // generate a new + // one because + // it's already + // used + if (i >= 500) { + if (debug) { + mmh.logDebug("CSE.BH2 timed out"); + } + break outerLoop; + } + } + // by this time, add will be unique + used.add(randomBlockHead); + + recipes.add(blockhead_recipes.get(randomBlockHead)); + } + used.clear(); + } + } + if (Double.parseDouble(mmh.getMCVersion().substring(0, 4)) >= 1.17) { + // check if default max BH is larger than number of blockheads + int numOfblockheads = ((BHNum + BHNum2 + BHNum3) - 1) >= 0 ? (BHNum + BHNum2 + BHNum3) - 1 : 0; + int bhMaxDef = (5 >= numOfblockheads) ? 5 : numOfblockheads; + + int min1 = mmh.getConfig().getInt("wandering_trades.block_heads.is_117.min", 0); + // int max1 = mmh.getConfig().getInt("wandering_trades.block_heads.is_117.max", + // 5) / 2; + int max1 = mmh.getConfig().getInt("wandering_trades.block_heads.is_117.max", 5); + if (debug) { + mmh.logDebug("CSE BH2 min=" + min1 + " max=" + max1); + } + int blockRandom1 = mmh.randomBetween(min1, max1); + if (debug) { + mmh.logDebug("CSE blockRandom=" + blockRandom1); + } + if (blockRandom1 > 0) { + if (debug) { + mmh.logDebug("CSE blockRandom > 0"); + } + + if (debug) { + mmh.logDebug("CSE numOfblockheads=" + numOfblockheads); + } + HashSet used = new HashSet(); + outerLoop: for (int i = 0; i < blockRandom1; i++) { + if (debug) { + mmh.logDebug("CSE i=" + i); + } + int randomBlockHead = mmh.randomBetween((BHNum + BHNum2) - 1, numOfblockheads); + while (used.contains(randomBlockHead) || (randomBlockHead > numOfblockheads)) { // while + // we + // have + // already + // used + // the + // number + randomBlockHead = mmh.randomBetween((BHNum + BHNum2) - 1, numOfblockheads); // generate + // a new + // one + // because + // it's + // already + // used + if (i >= 500) { + if (debug) { + mmh.logDebug("CSE.BH3 timed out"); + } + break outerLoop; + } + } + // by this time, add will be unique + used.add(randomBlockHead); + + recipes.add(blockhead_recipes.get(randomBlockHead)); + } + used.clear(); + } + } + + } + + /** + * Custom Trades + */ + if (mmh.getConfig().getBoolean("wandering_trades.custom_trades.enabled", false)) { + int numOfCustomTrades = (custometrade_recipes.size() - 1) >= 0 ? custometrade_recipes.size() - 1 + : 0; + numOfCustomTrades = numOfCustomTrades - 1; + int ctMaxDef = (5 >= numOfCustomTrades) ? 5 : numOfCustomTrades; + + int customRandom = mmh.randomBetween( + mmh.getConfig().getInt("wandering_trades.custom_trades.min", 0), + mmh.getConfig().getInt("wandering_trades.custom_trades.max", ctMaxDef)); + + // if(debug){logDebug("CSE numOfCustomTrades=" + numOfCustomTrades);} + // int customRandom = + // randomBetween(getConfig().getInt("wandering_trades.min_custom_trades", 0), + // mmh.getConfig().getInt("wandering_trades.max_custom_trades", 3)); + if (debug) { + mmh.logDebug("CSE customRandom=" + customRandom); + } + if (customRandom > 0) { + if (debug) { + mmh.logDebug("CSE customRandom > 0"); + } + // for(int randomCustomTrade=1; randomCustomTrade used = new HashSet(); + for (int i = 0; i < customRandom; i++) { + + double chance = Math.random(); + if (debug) { + mmh.logDebug("CSE chance=" + chance + " line:1540"); + } + if (mmh.traderCustom.getDouble("custom_trades.trade_" + i + ".chance", 0.002) > chance) { + + recipes.add(custometrade_recipes.get(i)); + } + if (i >= 500) { + if (debug) { + mmh.logDebug("CSE.CT timed out"); + } + break; + } + } + used.clear(); + } + } + + if (mmh.getConfig().getBoolean("wandering_trades.keep_default_trades", true)) { + recipes.addAll(oldRecipes); + } + trader.setRecipes(recipes); + /** }});// */ + } + + } + + } + + @Override + @SuppressWarnings({ "unused", "static-access", "rawtypes", "unchecked" }) + public boolean onCommand(CommandSender sender, Command cmd, String label, String[] args) { // TODO: Commands + // log("command=" + cmd.getName() + " args=" + args[0] + args[1]); + if (cmd.getName().equalsIgnoreCase("MMH")) { + if (args.length == 0) { + sender.sendMessage(ChatColor.GREEN + "[]===============[" + ChatColor.YELLOW + mmh.getName() + + ChatColor.GREEN + "]===============[]"); + sender.sendMessage(ChatColor.WHITE + " ");// https://ko-fi.com/joelgodofwar + sender.sendMessage( + ChatColor.WHITE + " " + mmh.get("mmh.version.donate") + ": https://ko-fi.com/joelgodofwar");// https://ko-fi.com/joelgodofwar + sender.sendMessage(ChatColor.WHITE + " ");// https://ko-fi.com/joelgodofwar + sender.sendMessage( + ChatColor.WHITE + " /mmh reload - " + mmh.get("mmh.command.reload", "Reloads this plugin."));// subject + // to + // server + // admin + // approval"); + sender.sendMessage(ChatColor.WHITE + " /mmh toggledebug - " + + mmh.get("mmh.command.debuguse", "Temporarily toggles debug."));// Cancels SinglePlayerSleep"); + if (mmh.getConfig().getBoolean("wandering_trades.custom_wandering_trader", true)) { + sender.sendMessage(ChatColor.WHITE + " /mmh playerheads - " + + mmh.get("mmh.command.playerheads", "Shows how to use the playerheads commands")); + // sender.sendMessage(ChatColor.WHITE + " /mmh blockheads - " + + // mmh.lang.get("blockheads", "Shows how to use the blockheads commands")); + sender.sendMessage(ChatColor.WHITE + " /mmh customtrader - " + + mmh.get("mmh.command.customtrader", "Shows how to use the customtrader commands")); + } + sender.sendMessage(ChatColor.WHITE + " /mmh fixhead - " + mmh.get("mmh.command.headfix")); + sender.sendMessage(ChatColor.WHITE + " /mmh givemh - " + mmh.get("mmh.command.give.mobhead")); + sender.sendMessage(ChatColor.WHITE + " /mmh giveph - " + mmh.get("mmh.command.give.playerhead")); + sender.sendMessage(ChatColor.WHITE + " /mmh givebh - " + mmh.get("mmh.command.give.blockhead")); + sender.sendMessage( + ChatColor.WHITE + " /mmh display perms/vars - " + mmh.get("mmh.command.display.help")); + sender.sendMessage(ChatColor.WHITE + " "); + sender.sendMessage(ChatColor.GREEN + "[]===============[" + ChatColor.YELLOW + mmh.getName() + + ChatColor.GREEN + "]===============[]"); + return true; + } + if (args[0].equalsIgnoreCase("headNBT")) { + if (!(sender instanceof Player)) { return true; } - if(args[0].equalsIgnoreCase("headNBT")){ - if(!(sender instanceof Player)) { - return true; - } - Player player = (Player) sender; - ItemStack mainHand = player.getInventory().getItemInMainHand(); - ItemStack offHand = player.getInventory().getItemInOffHand(); - if( mainHand != null && mainHand.getType().equals(Material.PLAYER_HEAD) ) { - NBTItem item = new NBTItem(mainHand); - log("" + item); - player.sendMessage("" + item); - }else if( offHand != null && offHand.getType().equals(Material.PLAYER_HEAD) ) { - NBTItem item = new NBTItem(offHand); - player.sendMessage("" + item); - log("" + item); - }else { - //log(Level.INFO,"You do not have a head in either hand."); - player.sendMessage("" + mmh.get("mmh.command.headnbt") ); - } + Player player = (Player) sender; + ItemStack mainHand = player.getInventory().getItemInMainHand(); + ItemStack offHand = player.getInventory().getItemInOffHand(); + if ((mainHand != null) && mainHand.getType().equals(Material.PLAYER_HEAD)) { + NBTItem item = new NBTItem(mainHand); + log("" + item); + player.sendMessage("" + item); + } else if ((offHand != null) && offHand.getType().equals(Material.PLAYER_HEAD)) { + NBTItem item = new NBTItem(offHand); + player.sendMessage("" + item); + log("" + item); + } else { + // log(Level.INFO,"You do not have a head in either hand."); + player.sendMessage("" + mmh.get("mmh.command.headnbt")); } - // /mmh display permvar playername - // / 0 1 2 - if(args[0].equalsIgnoreCase("display")){ - if(args[1].equalsIgnoreCase("perms")||args[1].equalsIgnoreCase("permissions")){ - if(sender instanceof Player) { - Player player = (Player) sender; - sender.sendMessage("" + mmh.get("mmh.command.display.you").replace("", player.getDisplayName()) ); - sender.sendMessage("moremobheads.players=" + player.hasPermission("moremobheads.players")); - sender.sendMessage("moremobheads.mobs=" + player.hasPermission("moremobheads.mobs")); - sender.sendMessage("moremobheads.nametag=" + player.hasPermission("moremobheads.nametag")); - sender.sendMessage("moremobheads.reload=" + player.hasPermission("moremobheads.reload")); - sender.sendMessage("moremobheads.toggledebug=" + player.hasPermission("moremobheads.toggledebug")); - sender.sendMessage("moremobheads.showUpdateAvailable=" + player.hasPermission("moremobheads.showUpdateAvailable")); - sender.sendMessage("moremobheads.customtrader=" + player.hasPermission("moremobheads.customtrader")); - sender.sendMessage("moremobheads.playerheads=" + player.hasPermission("moremobheads.playerheads")); - sender.sendMessage("moremobheads.blockheads=" + player.hasPermission("moremobheads.blockheads")); - sender.sendMessage("moremobheads.fixhead=" + player.hasPermission("moremobheads.fixhead")); - sender.sendMessage("moremobheads.give=" + player.hasPermission("moremobheads.give")); - sender.sendMessage("" + mmh.getName() + " " + mmh.getDescription().getVersion() + " display perms end"); - }else { - if(args.length >= 2) { - Player player = sender.getServer().getPlayer(args[2]); - sender.sendMessage("" + mmh.get("mmh.command.display.them").replace("", player.getDisplayName()) ); - sender.sendMessage("moremobheads.players=" + player.hasPermission("moremobheads.players")); - sender.sendMessage("moremobheads.mobs=" + player.hasPermission("moremobheads.mobs")); - sender.sendMessage("moremobheads.nametag=" + player.hasPermission("moremobheads.nametag")); - sender.sendMessage("moremobheads.reload=" + player.hasPermission("moremobheads.reload")); - sender.sendMessage("moremobheads.toggledebug=" + player.hasPermission("moremobheads.toggledebug")); - sender.sendMessage("moremobheads.showUpdateAvailable=" + player.hasPermission("moremobheads.showUpdateAvailable")); - sender.sendMessage("moremobheads.customtrader=" + player.hasPermission("moremobheads.customtrader")); - sender.sendMessage("moremobheads.playerheads=" + player.hasPermission("moremobheads.playerheads")); - sender.sendMessage("moremobheads.blockheads=" + player.hasPermission("moremobheads.blockheads")); - sender.sendMessage("moremobheads.fixhead=" + player.hasPermission("moremobheads.fixhead")); - sender.sendMessage("moremobheads.give=" + player.hasPermission("moremobheads.give")); - sender.sendMessage("" + mmh.getName() + " " + mmh.getDescription().getVersion() + " display perms end"); - }else { - sender.sendMessage("Console can only check permissions of Players."); - } - } - }else if(args[1].equalsIgnoreCase("vars")||args[1].equalsIgnoreCase("variables")){ - sender.sendMessage("" + mmh.getName() + " " + mmh.getDescription().getVersion() + " display varss start"); - sender.sendMessage("debug=" + debug); - sender.sendMessage("daLang=" + mmh.daLang); - - world_whitelist = mmh.getConfig().getString("world.whitelist", ""); - world_blacklist = mmh.getConfig().getString("world.blacklist", ""); - mob_whitelist = mmh.getConfig().getString("mob.whitelist", ""); - mob_blacklist = mmh.getConfig().getString("mob.blacklist", ""); - - sender.sendMessage("world_whitelist=" + world_whitelist); - sender.sendMessage("world_blacklist=" + world_blacklist); - sender.sendMessage("mob_whitelist=" + mob_whitelist); - sender.sendMessage("mob_blacklist=" + mob_blacklist); - sender.sendMessage("" + mmh.getName() + " " + mmh.getDescription().getVersion() + " display varss end"); - }else if(args[1].equalsIgnoreCase("chance")||args[1].equalsIgnoreCase("chance_percent")){ - ConfigurationSection cs = chanceConfig.getConfigurationSection("chance_percent"); - List daSet = new ArrayList(); - //log(Level.INFO, "args.lngth=" + args.length); - if(args.length == 3) { - for(String key : cs.getKeys(true)){ - if(key.contains(args[2])) { - sender.sendMessage("" + key + "=" + cs.get(key)); - daSet.add("" + key + "=" + cs.get(key)); - } - } - - if(!daSet.isEmpty()) { - File chanceFile = new File(mmh.getDataFolder() + "" + File.separatorChar + "logs" + File.separatorChar, "chance_dump" + ".log"); - PrintWriter pw = null; - try { - pw = new PrintWriter( - new OutputStreamWriter(new FileOutputStream(chanceFile), "UTF-8")); - for (String s : daSet) { - pw.println(s); - } - pw.flush(); - } catch (UnsupportedEncodingException | FileNotFoundException e) { - e.printStackTrace(); - } finally { - pw.close(); - } - sender.sendMessage("chance_config.yml has been dumped into " + chanceFile.toString()); - log("chance_config.yml has been dumped into " + chanceFile.toString()); - }else { - sender.sendMessage("" + args[2] + " was not found in chance_percent.yml"); - } - }else { - for(String key : cs.getKeys(true)){ - if(!cs.get(key).toString().contains("MemorySection")) { - sender.sendMessage("" + key + "=" + cs.get(key).toString()); - daSet.add("" + key + "=" + cs.get(key).toString()); - } - } - if(!daSet.isEmpty()) { - File chanceFile = new File(mmh.getDataFolder() + "" + File.separatorChar + "logs" + File.separatorChar, "chance_dump" + ".log"); - PrintWriter pw = null; - try { - pw = new PrintWriter( - new OutputStreamWriter(new FileOutputStream(chanceFile), "UTF-8")); - for (String s : daSet) { - pw.println(s); - } - pw.flush(); - } catch (UnsupportedEncodingException | FileNotFoundException e) { - e.printStackTrace(); - } finally { - pw.close(); - } - sender.sendMessage("chance_config.yml has been dumped into " + chanceFile.toString()); - log("chance_config.yml has been dumped into " + chanceFile.toString()); - }else { - sender.sendMessage("Error dumping chance_percent.yml"); - } - } - //chanceConfig - - - } - } - if(args[0].equalsIgnoreCase("reload")){ - String perm = "moremobheads.reload"; - boolean hasPerm = sender.hasPermission(perm); - if(debug){mmh.logDebug(sender.getName() + " has the permission " + perm + "=" + hasPerm);} - if(hasPerm||!(sender instanceof Player)){ - mmh.configReload(); - blockFile117 = new File(mmh.getDataFolder() + "" + File.separatorChar + "block_heads_1_17.yml"); - blockFile1172 = new File(mmh.getDataFolder() + "" + File.separatorChar + "block_heads_1_17_2.yml"); - blockFile1173 = new File(mmh.getDataFolder() + "" + File.separatorChar + "block_heads_1_17_3.yml"); - blockFile119 = new File(mmh.getDataFolder() + "" + File.separatorChar + "block_heads_1_19.yml"); - if(mmh.getConfig().getBoolean("wandering_trades.custom_wandering_trader", true)){ - if(!blockFile117.exists()){ - mmh.saveResource("block_heads_1_17.yml", true); - mmh.log(Level.INFO, "block_heads_1_17.yml not found! Creating in " + mmh.getDataFolder() + ""); - } - if(!blockFile1172.exists()){ - mmh.saveResource("block_heads_1_17_2.yml", true); - mmh.log(Level.INFO, "block_heads_1_17_2.yml not found! Creating in " + mmh.getDataFolder() + ""); - } - if(!blockFile1173.exists()){ - mmh.saveResource("block_heads_1_17_3.yml", true); - mmh.log(Level.INFO, "block_heads_1_17_3.yml not found! Creating in " + mmh.getDataFolder() + ""); - } - blockHeads = new YamlConfiguration(); - try { - mmh.log(Level.INFO, "Loading " + blockFile117 + "..."); - blockHeads.load(blockFile117); - } catch (IOException | InvalidConfigurationException e1) { - mmh.stacktraceInfo(); - e1.printStackTrace(); - } - blockHeads2 = new YamlConfiguration(); - try { - mmh.log(Level.INFO, "Loading " + blockFile1172 + "..."); - blockHeads2.load(blockFile1172); - } catch (IOException | InvalidConfigurationException e1) { - mmh.stacktraceInfo(); - e1.printStackTrace(); - } - if(Double.parseDouble(mmh.getMCVersion().substring(0, 4)) >= 1.19) { - blockFile1173 = blockFile119; - } - blockHeads3 = new YamlConfiguration(); - try { - mmh.log(Level.INFO, "Loading " + blockFile1173 + "..."); - blockHeads3.load(blockFile1173); - } catch (IOException | InvalidConfigurationException e1) { - mmh.stacktraceInfo(); - e1.printStackTrace(); - } - - boolean showlore = mmh.getConfig().getBoolean("lore.show_plugin_name", true); - ArrayList headlore = new ArrayList(); - headlore.add(ChatColor.AQUA + "" + mmh.getName()); - - mmh.log(Level.INFO, "Loading PlayerHead Recipes..."); - for(int i=1; i < mmh.playerHeads.getInt("players.number") + 1; i++){ - ItemStack price1 = mmh.playerHeads.getItemStack("players.player_" + i + ".price_1", new ItemStack(Material.AIR)); - ItemStack price2 = mmh.playerHeads.getItemStack("players.player_" + i + ".price_2", new ItemStack(Material.AIR)); - ItemStack itemstack = mmh.playerHeads.getItemStack("players.player_" + i + ".itemstack", new ItemStack(Material.AIR)); - if(showlore) { - SkullMeta meta = (SkullMeta)itemstack.getItemMeta(); - meta.setLore(headlore); - itemstack.setItemMeta(meta); - itemstack.setItemMeta(meta); - } - MerchantRecipe recipe = new MerchantRecipe(itemstack, mmh.playerHeads.getInt("players.player_" + i + ".quantity", (int) 3)); - recipe.addIngredient(price1); - recipe.addIngredient(price2); - playerhead_recipes.add(recipe); - } - mmh.log(Level.INFO, playerhead_recipes.size() + " PlayerHead Recipes ADDED..."); - mmh.log(Level.INFO, "Loading BlockHead Recipes..."); - BHNum = blockHeads.getInt("blocks.number"); - // BlockHeads - mmh.log(Level.INFO, "BlockHeads=" + BHNum); - for(int i=1; i < BHNum + 1; i++){ - ItemStack price1 = blockHeads.getItemStack("blocks.block_" + i + ".price_1", new ItemStack(Material.AIR)); - ItemStack price2 = blockHeads.getItemStack("blocks.block_" + i + ".price_2", new ItemStack(Material.AIR)); - ItemStack itemstack = blockHeads.getItemStack("blocks.block_" + i + ".itemstack", new ItemStack(Material.AIR)); - if(showlore) { - SkullMeta meta = (SkullMeta)itemstack.getItemMeta(); - meta.setLore(headlore); - itemstack.setItemMeta(meta); - itemstack.setItemMeta(meta); - } - MerchantRecipe recipe = new MerchantRecipe(itemstack, blockHeads.getInt("blocks.block_" + i + ".quantity", (int) 8)); - recipe.setExperienceReward(true); - recipe.addIngredient(price1); - recipe.addIngredient(price2); - blockhead_recipes.add(recipe); - } - BHNum2 = blockHeads2.getInt("blocks.number"); - // blockHeads 2 - mmh.log(Level.INFO, "BlockHeads2=" + BHNum2); - for(int i=1; i < BHNum2 + 1; i++){ - ItemStack price1 = blockHeads2.getItemStack("blocks.block_" + i + ".price_1", new ItemStack(Material.AIR)); - ItemStack price2 = blockHeads2.getItemStack("blocks.block_" + i + ".price_2", new ItemStack(Material.AIR)); - ItemStack itemstack = blockHeads2.getItemStack("blocks.block_" + i + ".itemstack", new ItemStack(Material.AIR)); - if(showlore) { - SkullMeta meta = (SkullMeta)itemstack.getItemMeta(); - meta.setLore(headlore); - itemstack.setItemMeta(meta); - itemstack.setItemMeta(meta); - } - MerchantRecipe recipe = new MerchantRecipe(itemstack, blockHeads2.getInt("blocks.block_" + i + ".quantity", (int) 8)); - recipe.setExperienceReward(true); - recipe.addIngredient(price1); - recipe.addIngredient(price2); - blockhead_recipes.add(recipe); - } - BHNum3 = blockHeads3.getInt("blocks.number"); - // blockHeads 3 - mmh.log(Level.INFO, "BlockHeads3=" + BHNum3); - for(int i=1; i < BHNum3 + 1; i++){ - ItemStack price1 = blockHeads3.getItemStack("blocks.block_" + i + ".price_1", new ItemStack(Material.AIR)); - ItemStack price2 = blockHeads3.getItemStack("blocks.block_" + i + ".price_2", new ItemStack(Material.AIR)); - ItemStack itemstack = blockHeads3.getItemStack("blocks.block_" + i + ".itemstack", new ItemStack(Material.AIR)); - if(showlore) { - SkullMeta meta = (SkullMeta)itemstack.getItemMeta(); - meta.setLore(headlore); - itemstack.setItemMeta(meta); - itemstack.setItemMeta(meta); - } - MerchantRecipe recipe = new MerchantRecipe(itemstack, blockHeads3.getInt("blocks.block_" + i + ".quantity", (int) 8)); - recipe.setExperienceReward(true); - recipe.addIngredient(price1); - recipe.addIngredient(price2); - blockhead_recipes.add(recipe); - } - - mmh.log(Level.INFO, blockhead_recipes.size() + " BlockHead Recipes ADDED..."); - mmh.log(Level.INFO, "Loading CustomTrades Recipes..."); - for(int i=1; i < mmh.traderCustom.getInt("custom_trades.number") + 1; i++){ - ItemStack price1 = mmh.traderCustom.getItemStack("custom_trades.trade_" + i + ".price_1", new ItemStack(Material.AIR)); - ItemStack price2 = mmh.traderCustom.getItemStack("custom_trades.trade_" + i + ".price_2", new ItemStack(Material.AIR)); - ItemStack itemstack = mmh.traderCustom.getItemStack("custom_trades.trade_" + i + ".itemstack", new ItemStack(Material.AIR)); - MerchantRecipe recipe = new MerchantRecipe(itemstack, mmh.traderCustom.getInt("custom_trades.trade_" + i + ".quantity", (int) 1)); - recipe.setExperienceReward(true); - recipe.addIngredient(price1); - recipe.addIngredient(price2); - custometrade_recipes.add(recipe); - } - mmh.log(Level.INFO, custometrade_recipes.size() + " CustomTrades Recipes ADDED..."); - try { - mmh.beheadingMessages.load(new File(mmh.getDataFolder(), "messages.yml")); - } catch (IOException | InvalidConfigurationException e) { - log("Error loading messages.yml"); - e.printStackTrace(); - } - } - sender.sendMessage(ChatColor.YELLOW + mmh.getName() + ChatColor.RED + " " + mmh.get("mmh.message.reloaded")); - return true; - }else if(!hasPerm){ - sender.sendMessage(ChatColor.YELLOW + mmh.getName() + ChatColor.RED + " " + mmh.get("mmh.message.noperm").toString().replace("", perm) ); - return false; - } - } - if(args[0].equalsIgnoreCase("toggledebug")||args[0].equalsIgnoreCase("td")){ - String perm = "moremobheads.toggledebug"; - boolean hasPerm = sender.hasPermission(perm); - if(debug){logDebug(sender.getName() + " has the permission " + perm + "=" + hasPerm);} - if(sender.isOp()||hasPerm||!(sender instanceof Player)){ - debug = !debug; - mmh.debug = debug; - sender.sendMessage(ChatColor.YELLOW + mmh.getName() + ChatColor.RED + " " + mmh.get("mmh.message.debugtrue").toString().replace("boolean", "" + debug)); - return true; - }else if(!hasPerm){ - sender.sendMessage(ChatColor.YELLOW + mmh.getName() + ChatColor.RED + " " + mmh.get("mmh.message.noperm").toString().replace("", perm) ); - return false; - } - } - if(args[0].equalsIgnoreCase("customtrader")||args[0].equalsIgnoreCase("ct")){ - String perm = "moremobheads.customtrader"; - boolean hasPerm = sender.hasPermission(perm); - if(debug){logDebug(sender.getName() + " has the permission " + perm + "=" + hasPerm);} - if(hasPerm&&sender instanceof Player - && mmh.getConfig().getBoolean("wandering_trades.custom_wandering_trader", true)){ - log("has permission"); + } + // /mmh display permvar playername + // / 0 1 2 + if (args[0].equalsIgnoreCase("display")) { + if (args[1].equalsIgnoreCase("perms") || args[1].equalsIgnoreCase("permissions")) { + if (sender instanceof Player) { Player player = (Player) sender; - if(!(args.length >= 2)){ - sender.sendMessage(ChatColor.GREEN + "[]===============[" + ChatColor.YELLOW + mmh.getName() + ChatColor.GREEN + "]===============[]"); - sender.sendMessage(ChatColor.WHITE + " "); - sender.sendMessage(ChatColor.WHITE + " /mmh ct - " + mmh.get("mmh.command.ct.help")); - sender.sendMessage(ChatColor.WHITE + " /mmh ct add - " + mmh.get("mmh.command.ct.add") + "custom_trades.yml"); - sender.sendMessage(ChatColor.WHITE + " /mmh ct remove # - " + mmh.get("mmh.command.ct.remove")); - sender.sendMessage(ChatColor.WHITE + " /mmh ct replace # - " + mmh.get("mmh.command.ct.replace").replace("", "#")); - sender.sendMessage(ChatColor.WHITE + " "); - sender.sendMessage(ChatColor.GREEN + "[]===============[" + ChatColor.YELLOW + mmh.getName() + ChatColor.GREEN + "]===============[]"); - return true; - }else if(args[1].equalsIgnoreCase("add")){ - if(debug) {logDebug("CMD CT ADD Start -----");} - ItemStack itemstack = player.getInventory().getItemInOffHand(); - ItemStack price1 = player.getInventory().getItem(0); - ItemStack price2 = player.getInventory().getItem(1); - if(price1 == null){price1 = new ItemStack(Material.AIR);} - if(price2 == null){price2 = new ItemStack(Material.AIR);} - //Material price1 = item1.getType(); - //Material price2 = item2.getType(); - - if(itemstack.getType() == Material.AIR||price1 == null||price1.getType() == Material.AIR){ - log("error air"); - sender.sendMessage(ChatColor.GREEN + "[]===============[" + ChatColor.YELLOW + mmh.getName() + ChatColor.GREEN + "]===============[]"); - sender.sendMessage(ChatColor.WHITE + " "); - sender.sendMessage(ChatColor.WHITE + " " + mmh.get("mmh.command.ct.line1") + "custom_trades.yml"); - sender.sendMessage(ChatColor.WHITE + " " + mmh.get("mmh.command.ct.line2")); - sender.sendMessage(ChatColor.WHITE + " " + mmh.get("mmh.command.ct.line3")); - sender.sendMessage(ChatColor.WHITE + " " + mmh.get("mmh.command.ct.line4") + "/mmh ct add"); - sender.sendMessage(ChatColor.WHITE + " " + mmh.get("mmh.command.ct.line5") + "custom trade."); - sender.sendMessage(ChatColor.WHITE + " "); - sender.sendMessage(ChatColor.GREEN + "[]===============[" + ChatColor.YELLOW + mmh.getName() + ChatColor.GREEN + "]===============[]"); - if(debug) {logDebug("CMD CT ADD End Error -----");} - return false; + sender.sendMessage( + "" + mmh.get("mmh.command.display.you").replace("", player.getDisplayName())); + sender.sendMessage("moremobheads.players=" + player.hasPermission("moremobheads.players")); + sender.sendMessage("moremobheads.mobs=" + player.hasPermission("moremobheads.mobs")); + sender.sendMessage("moremobheads.nametag=" + player.hasPermission("moremobheads.nametag")); + sender.sendMessage("moremobheads.reload=" + player.hasPermission("moremobheads.reload")); + sender.sendMessage( + "moremobheads.toggledebug=" + player.hasPermission("moremobheads.toggledebug")); + sender.sendMessage("moremobheads.showUpdateAvailable=" + + player.hasPermission("moremobheads.showUpdateAvailable")); + sender.sendMessage( + "moremobheads.customtrader=" + player.hasPermission("moremobheads.customtrader")); + sender.sendMessage( + "moremobheads.playerheads=" + player.hasPermission("moremobheads.playerheads")); + sender.sendMessage( + "moremobheads.blockheads=" + player.hasPermission("moremobheads.blockheads")); + sender.sendMessage("moremobheads.fixhead=" + player.hasPermission("moremobheads.fixhead")); + sender.sendMessage("moremobheads.give=" + player.hasPermission("moremobheads.give")); + sender.sendMessage( + "" + mmh.getName() + " " + mmh.getDescription().getVersion() + " display perms end"); + } else if (args.length >= 2) { + Player player = sender.getServer().getPlayer(args[2]); + sender.sendMessage("" + + mmh.get("mmh.command.display.them").replace("", player.getDisplayName())); + sender.sendMessage("moremobheads.players=" + player.hasPermission("moremobheads.players")); + sender.sendMessage("moremobheads.mobs=" + player.hasPermission("moremobheads.mobs")); + sender.sendMessage("moremobheads.nametag=" + player.hasPermission("moremobheads.nametag")); + sender.sendMessage("moremobheads.reload=" + player.hasPermission("moremobheads.reload")); + sender.sendMessage( + "moremobheads.toggledebug=" + player.hasPermission("moremobheads.toggledebug")); + sender.sendMessage("moremobheads.showUpdateAvailable=" + + player.hasPermission("moremobheads.showUpdateAvailable")); + sender.sendMessage( + "moremobheads.customtrader=" + player.hasPermission("moremobheads.customtrader")); + sender.sendMessage( + "moremobheads.playerheads=" + player.hasPermission("moremobheads.playerheads")); + sender.sendMessage( + "moremobheads.blockheads=" + player.hasPermission("moremobheads.blockheads")); + sender.sendMessage("moremobheads.fixhead=" + player.hasPermission("moremobheads.fixhead")); + sender.sendMessage("moremobheads.give=" + player.hasPermission("moremobheads.give")); + sender.sendMessage("" + mmh.getName() + " " + mmh.getDescription().getVersion() + + " display perms end"); + } else { + sender.sendMessage("Console can only check permissions of Players."); + } + } else if (args[1].equalsIgnoreCase("vars") || args[1].equalsIgnoreCase("variables")) { + sender.sendMessage( + "" + mmh.getName() + " " + mmh.getDescription().getVersion() + " display varss start"); + sender.sendMessage("debug=" + debug); + sender.sendMessage("daLang=" + mmh.daLang); + + world_whitelist = mmh.getConfig().getString("world.whitelist", ""); + world_blacklist = mmh.getConfig().getString("world.blacklist", ""); + mob_whitelist = mmh.getConfig().getString("mob.whitelist", ""); + mob_blacklist = mmh.getConfig().getString("mob.blacklist", ""); + + sender.sendMessage("world_whitelist=" + world_whitelist); + sender.sendMessage("world_blacklist=" + world_blacklist); + sender.sendMessage("mob_whitelist=" + mob_whitelist); + sender.sendMessage("mob_blacklist=" + mob_blacklist); + sender.sendMessage( + "" + mmh.getName() + " " + mmh.getDescription().getVersion() + " display varss end"); + } else if (args[1].equalsIgnoreCase("chance") || args[1].equalsIgnoreCase("chance_percent")) { + ConfigurationSection cs = chanceConfig.getConfigurationSection("chance_percent"); + List daSet = new ArrayList(); + // log(Level.INFO, "args.lngth=" + args.length); + if (args.length == 3) { + for (String key : cs.getKeys(true)) { + if (key.contains(args[2])) { + sender.sendMessage("" + key + "=" + cs.get(key)); + daSet.add("" + key + "=" + cs.get(key)); + } + } + + if (!daSet.isEmpty()) { + File chanceFile = new File( + mmh.getDataFolder() + "" + File.separatorChar + "logs" + File.separatorChar, + "chance_dump" + ".log"); + PrintWriter pw = null; + try { + pw = new PrintWriter(new OutputStreamWriter(new FileOutputStream(chanceFile), "UTF-8")); + for (String s : daSet) { + pw.println(s); + } + pw.flush(); + } catch (UnsupportedEncodingException | FileNotFoundException e) { + e.printStackTrace(); + } finally { + pw.close(); + } + sender.sendMessage("chance_config.yml has been dumped into " + chanceFile.toString()); + log("chance_config.yml has been dumped into " + chanceFile.toString()); + } else { + sender.sendMessage("" + args[2] + " was not found in chance_percent.yml"); + } + } else { + for (String key : cs.getKeys(true)) { + if (!cs.get(key).toString().contains("MemorySection")) { + sender.sendMessage("" + key + "=" + cs.get(key).toString()); + daSet.add("" + key + "=" + cs.get(key).toString()); + } + } + if (!daSet.isEmpty()) { + File chanceFile = new File( + mmh.getDataFolder() + "" + File.separatorChar + "logs" + File.separatorChar, + "chance_dump" + ".log"); + PrintWriter pw = null; + try { + pw = new PrintWriter(new OutputStreamWriter(new FileOutputStream(chanceFile), "UTF-8")); + for (String s : daSet) { + pw.println(s); + } + pw.flush(); + } catch (UnsupportedEncodingException | FileNotFoundException e) { + e.printStackTrace(); + } finally { + pw.close(); + } + sender.sendMessage("chance_config.yml has been dumped into " + chanceFile.toString()); + log("chance_config.yml has been dumped into " + chanceFile.toString()); + } else { + sender.sendMessage("Error dumping chance_percent.yml"); + } + } + // chanceConfig + + } + } + if (args[0].equalsIgnoreCase("reload")) { + String perm = "moremobheads.reload"; + boolean hasPerm = sender.hasPermission(perm); + if (debug) { + mmh.logDebug(sender.getName() + " has the permission " + perm + "=" + hasPerm); + } + if (hasPerm || !(sender instanceof Player)) { + mmh.configReload(); + blockFile117 = new File(mmh.getDataFolder() + "" + File.separatorChar + "block_heads_1_17.yml"); + blockFile1172 = new File(mmh.getDataFolder() + "" + File.separatorChar + "block_heads_1_17_2.yml"); + blockFile1173 = new File(mmh.getDataFolder() + "" + File.separatorChar + "block_heads_1_17_3.yml"); + blockFile119 = new File(mmh.getDataFolder() + "" + File.separatorChar + "block_heads_1_19.yml"); + if (mmh.getConfig().getBoolean("wandering_trades.custom_wandering_trader", true)) { + if (!blockFile117.exists()) { + mmh.saveResource("block_heads_1_17.yml", true); + mmh.log(Level.INFO, + "block_heads_1_17.yml not found! Creating in " + mmh.getDataFolder() + ""); + } + if (!blockFile1172.exists()) { + mmh.saveResource("block_heads_1_17_2.yml", true); + mmh.log(Level.INFO, + "block_heads_1_17_2.yml not found! Creating in " + mmh.getDataFolder() + ""); + } + if (!blockFile1173.exists()) { + mmh.saveResource("block_heads_1_17_3.yml", true); + mmh.log(Level.INFO, + "block_heads_1_17_3.yml not found! Creating in " + mmh.getDataFolder() + ""); + } + blockHeads = new YamlConfiguration(); + try { + mmh.log(Level.INFO, "Loading " + blockFile117 + "..."); + blockHeads.load(blockFile117); + } catch (IOException | InvalidConfigurationException e1) { + mmh.stacktraceInfo(); + e1.printStackTrace(); + } + blockHeads2 = new YamlConfiguration(); + try { + mmh.log(Level.INFO, "Loading " + blockFile1172 + "..."); + blockHeads2.load(blockFile1172); + } catch (IOException | InvalidConfigurationException e1) { + mmh.stacktraceInfo(); + e1.printStackTrace(); + } + if (Double.parseDouble(mmh.getMCVersion().substring(0, 4)) >= 1.19) { + blockFile1173 = blockFile119; + } + blockHeads3 = new YamlConfiguration(); + try { + mmh.log(Level.INFO, "Loading " + blockFile1173 + "..."); + blockHeads3.load(blockFile1173); + } catch (IOException | InvalidConfigurationException e1) { + mmh.stacktraceInfo(); + e1.printStackTrace(); + } + + boolean showlore = mmh.getConfig().getBoolean("lore.show_plugin_name", true); + ArrayList headlore = new ArrayList(); + headlore.add(ChatColor.AQUA + "" + mmh.getName()); + + mmh.log(Level.INFO, "Loading PlayerHead Recipes..."); + for (int i = 1; i < (mmh.playerHeads.getInt("players.number") + 1); i++) { + ItemStack price1 = mmh.playerHeads.getItemStack("players.player_" + i + ".price_1", + new ItemStack(Material.AIR)); + ItemStack price2 = mmh.playerHeads.getItemStack("players.player_" + i + ".price_2", + new ItemStack(Material.AIR)); + ItemStack itemstack = mmh.playerHeads.getItemStack("players.player_" + i + ".itemstack", + new ItemStack(Material.AIR)); + if (showlore) { + SkullMeta meta = (SkullMeta) itemstack.getItemMeta(); + meta.setLore(headlore); + itemstack.setItemMeta(meta); + itemstack.setItemMeta(meta); + } + MerchantRecipe recipe = new MerchantRecipe(itemstack, + mmh.playerHeads.getInt("players.player_" + i + ".quantity", 3)); + recipe.addIngredient(price1); + recipe.addIngredient(price2); + playerhead_recipes.add(recipe); + } + mmh.log(Level.INFO, playerhead_recipes.size() + " PlayerHead Recipes ADDED..."); + mmh.log(Level.INFO, "Loading BlockHead Recipes..."); + BHNum = blockHeads.getInt("blocks.number"); + // BlockHeads + mmh.log(Level.INFO, "BlockHeads=" + BHNum); + for (int i = 1; i < (BHNum + 1); i++) { + ItemStack price1 = blockHeads.getItemStack("blocks.block_" + i + ".price_1", + new ItemStack(Material.AIR)); + ItemStack price2 = blockHeads.getItemStack("blocks.block_" + i + ".price_2", + new ItemStack(Material.AIR)); + ItemStack itemstack = blockHeads.getItemStack("blocks.block_" + i + ".itemstack", + new ItemStack(Material.AIR)); + if (showlore) { + SkullMeta meta = (SkullMeta) itemstack.getItemMeta(); + meta.setLore(headlore); + itemstack.setItemMeta(meta); + itemstack.setItemMeta(meta); + } + MerchantRecipe recipe = new MerchantRecipe(itemstack, + blockHeads.getInt("blocks.block_" + i + ".quantity", 8)); + recipe.setExperienceReward(true); + recipe.addIngredient(price1); + recipe.addIngredient(price2); + blockhead_recipes.add(recipe); + } + BHNum2 = blockHeads2.getInt("blocks.number"); + // blockHeads 2 + mmh.log(Level.INFO, "BlockHeads2=" + BHNum2); + for (int i = 1; i < (BHNum2 + 1); i++) { + ItemStack price1 = blockHeads2.getItemStack("blocks.block_" + i + ".price_1", + new ItemStack(Material.AIR)); + ItemStack price2 = blockHeads2.getItemStack("blocks.block_" + i + ".price_2", + new ItemStack(Material.AIR)); + ItemStack itemstack = blockHeads2.getItemStack("blocks.block_" + i + ".itemstack", + new ItemStack(Material.AIR)); + if (showlore) { + SkullMeta meta = (SkullMeta) itemstack.getItemMeta(); + meta.setLore(headlore); + itemstack.setItemMeta(meta); + itemstack.setItemMeta(meta); + } + MerchantRecipe recipe = new MerchantRecipe(itemstack, + blockHeads2.getInt("blocks.block_" + i + ".quantity", 8)); + recipe.setExperienceReward(true); + recipe.addIngredient(price1); + recipe.addIngredient(price2); + blockhead_recipes.add(recipe); + } + BHNum3 = blockHeads3.getInt("blocks.number"); + // blockHeads 3 + mmh.log(Level.INFO, "BlockHeads3=" + BHNum3); + for (int i = 1; i < (BHNum3 + 1); i++) { + ItemStack price1 = blockHeads3.getItemStack("blocks.block_" + i + ".price_1", + new ItemStack(Material.AIR)); + ItemStack price2 = blockHeads3.getItemStack("blocks.block_" + i + ".price_2", + new ItemStack(Material.AIR)); + ItemStack itemstack = blockHeads3.getItemStack("blocks.block_" + i + ".itemstack", + new ItemStack(Material.AIR)); + if (showlore) { + SkullMeta meta = (SkullMeta) itemstack.getItemMeta(); + meta.setLore(headlore); + itemstack.setItemMeta(meta); + itemstack.setItemMeta(meta); + } + MerchantRecipe recipe = new MerchantRecipe(itemstack, + blockHeads3.getInt("blocks.block_" + i + ".quantity", 8)); + recipe.setExperienceReward(true); + recipe.addIngredient(price1); + recipe.addIngredient(price2); + blockhead_recipes.add(recipe); + } + + mmh.log(Level.INFO, blockhead_recipes.size() + " BlockHead Recipes ADDED..."); + mmh.log(Level.INFO, "Loading CustomTrades Recipes..."); + for (int i = 1; i < (mmh.traderCustom.getInt("custom_trades.number") + 1); i++) { + ItemStack price1 = mmh.traderCustom.getItemStack("custom_trades.trade_" + i + ".price_1", + new ItemStack(Material.AIR)); + ItemStack price2 = mmh.traderCustom.getItemStack("custom_trades.trade_" + i + ".price_2", + new ItemStack(Material.AIR)); + ItemStack itemstack = mmh.traderCustom.getItemStack( + "custom_trades.trade_" + i + ".itemstack", new ItemStack(Material.AIR)); + MerchantRecipe recipe = new MerchantRecipe(itemstack, + mmh.traderCustom.getInt("custom_trades.trade_" + i + ".quantity", 1)); + recipe.setExperienceReward(true); + recipe.addIngredient(price1); + recipe.addIngredient(price2); + custometrade_recipes.add(recipe); + } + mmh.log(Level.INFO, custometrade_recipes.size() + " CustomTrades Recipes ADDED..."); + try { + mmh.beheadingMessages.load(new File(mmh.getDataFolder(), "messages.yml")); + } catch (IOException | InvalidConfigurationException e) { + log("Error loading messages.yml"); + e.printStackTrace(); + } + } + sender.sendMessage( + ChatColor.YELLOW + mmh.getName() + ChatColor.RED + " " + mmh.get("mmh.message.reloaded")); + return true; + } else if (!hasPerm) { + sender.sendMessage(ChatColor.YELLOW + mmh.getName() + ChatColor.RED + " " + + mmh.get("mmh.message.noperm").toString().replace("", perm)); + return false; + } + } + if (args[0].equalsIgnoreCase("toggledebug") || args[0].equalsIgnoreCase("td")) { + String perm = "moremobheads.toggledebug"; + boolean hasPerm = sender.hasPermission(perm); + if (debug) { + logDebug(sender.getName() + " has the permission " + perm + "=" + hasPerm); + } + if (sender.isOp() || hasPerm || !(sender instanceof Player)) { + debug = !debug; + mmh.debug = debug; + sender.sendMessage(ChatColor.YELLOW + mmh.getName() + ChatColor.RED + " " + + mmh.get("mmh.message.debugtrue").toString().replace("boolean", "" + debug)); + return true; + } else if (!hasPerm) { + sender.sendMessage(ChatColor.YELLOW + mmh.getName() + ChatColor.RED + " " + + mmh.get("mmh.message.noperm").toString().replace("", perm)); + return false; + } + } + if (args[0].equalsIgnoreCase("customtrader") || args[0].equalsIgnoreCase("ct")) { + String perm = "moremobheads.customtrader"; + boolean hasPerm = sender.hasPermission(perm); + if (debug) { + logDebug(sender.getName() + " has the permission " + perm + "=" + hasPerm); + } + if (hasPerm && (sender instanceof Player) + && mmh.getConfig().getBoolean("wandering_trades.custom_wandering_trader", true)) { + log("has permission"); + Player player = (Player) sender; + if (!(args.length >= 2)) { + sender.sendMessage(ChatColor.GREEN + "[]===============[" + ChatColor.YELLOW + mmh.getName() + + ChatColor.GREEN + "]===============[]"); + sender.sendMessage(ChatColor.WHITE + " "); + sender.sendMessage(ChatColor.WHITE + " /mmh ct - " + mmh.get("mmh.command.ct.help")); + sender.sendMessage(ChatColor.WHITE + " /mmh ct add - " + mmh.get("mmh.command.ct.add") + + "custom_trades.yml"); + sender.sendMessage(ChatColor.WHITE + " /mmh ct remove # - " + mmh.get("mmh.command.ct.remove")); + sender.sendMessage(ChatColor.WHITE + " /mmh ct replace # - " + + mmh.get("mmh.command.ct.replace").replace("", "#")); + sender.sendMessage(ChatColor.WHITE + " "); + sender.sendMessage(ChatColor.GREEN + "[]===============[" + ChatColor.YELLOW + mmh.getName() + + ChatColor.GREEN + "]===============[]"); + return true; + } else if (args[1].equalsIgnoreCase("add")) { + if (debug) { + logDebug("CMD CT ADD Start -----"); + } + ItemStack itemstack = player.getInventory().getItemInOffHand(); + ItemStack price1 = player.getInventory().getItem(0); + ItemStack price2 = player.getInventory().getItem(1); + if (price1 == null) { + price1 = new ItemStack(Material.AIR); + } + if (price2 == null) { + price2 = new ItemStack(Material.AIR); + } + // Material price1 = item1.getType(); + // Material price2 = item2.getType(); + + if ((itemstack.getType() == Material.AIR) || (price1 == null) || (price1.getType() == Material.AIR)) { + log("error air"); + sender.sendMessage(ChatColor.GREEN + "[]===============[" + ChatColor.YELLOW + mmh.getName() + + ChatColor.GREEN + "]===============[]"); + sender.sendMessage(ChatColor.WHITE + " "); + sender.sendMessage( + ChatColor.WHITE + " " + mmh.get("mmh.command.ct.line1") + "custom_trades.yml"); + sender.sendMessage(ChatColor.WHITE + " " + mmh.get("mmh.command.ct.line2")); + sender.sendMessage(ChatColor.WHITE + " " + mmh.get("mmh.command.ct.line3")); + sender.sendMessage(ChatColor.WHITE + " " + mmh.get("mmh.command.ct.line4") + "/mmh ct add"); + sender.sendMessage( + ChatColor.WHITE + " " + mmh.get("mmh.command.ct.line5") + "custom trade."); + sender.sendMessage(ChatColor.WHITE + " "); + sender.sendMessage(ChatColor.GREEN + "[]===============[" + ChatColor.YELLOW + mmh.getName() + + ChatColor.GREEN + "]===============[]"); + if (debug) { + logDebug("CMD CT ADD End Error -----"); + } + return false; + } + int tradeNumber = (int) mmh.traderCustom.get("custom_trades.number", 1); + mmh.traderCustom.set("custom_trades.trade_" + (tradeNumber + 1) + ".price_1", price1); + mmh.traderCustom.set("custom_trades.trade_" + (tradeNumber + 1) + ".price_2", price2); + mmh.traderCustom.set("custom_trades.trade_" + (tradeNumber + 1) + ".itemstack", itemstack); + mmh.traderCustom.set("custom_trades.trade_" + (tradeNumber + 1) + ".quantity", + itemstack.getAmount()); + mmh.traderCustom.set("custom_trades.trade_" + (tradeNumber + 1) + ".chance", 0.002); + mmh.traderCustom.set("custom_trades.number", (tradeNumber + 1)); + if (debug) { + logDebug("CMD CT ADD price1=" + price1.getType()); + } + if (debug) { + logDebug("CMD CT ADD price2=" + price2.getType()); + } + if (debug) { + logDebug("CMD CT ADD itemstack=" + itemstack.getType()); + } + if (debug) { + if (itemstack.getType() == Material.PLAYER_HEAD) { + ItemMeta skullMeta = itemstack.getItemMeta(); + logDebug("CMD CT ADD IS DisplayName=" + skullMeta.getDisplayName()); + if (skullMeta.hasLore()) { + logDebug("CMD CT ADD IS lore=" + String.join(",", skullMeta.getLore())); + } + } + } + if (debug) { + logDebug("CMD CT ADD quantity=" + itemstack.getAmount()); + } + if (debug) { + logDebug("CMD CT ADD chance=0.002"); + } + // log("customFile=" + customFile); + try { + mmh.traderCustom.save(mmh.customFile); + mmh.traderCustom.load(mmh.customFile); + } catch (IOException | InvalidConfigurationException e) { + mmh.stacktraceInfo(); + e.printStackTrace(); + } + if (debug) { + logDebug("CMD CT ADD End -----"); + } + sender.sendMessage(ChatColor.YELLOW + mmh.getName() + ChatColor.WHITE + " trade_" + + (tradeNumber + 1) + " " + mmh.get("mmh.message.ct.successadd")); + return true; + } else if (args[1].equalsIgnoreCase("remove")) { + if (debug) { + logDebug("CMD CT Remove Start -----"); + } + if (!(args.length >= 3)) { + sender.sendMessage(ChatColor.YELLOW + mmh.getName() + ChatColor.RED + " " + + mmh.get("mmh.command.ct.argument")); + return false; + } else if (mmh.isInteger(args[2])) { + mmh.traderCustom.set("custom_trades.trade_" + args[2] + ".price_1", ""); + mmh.traderCustom.set("custom_trades.trade_" + args[2] + ".price_2", ""); + mmh.traderCustom.set("custom_trades.trade_" + args[2] + ".itemstack", ""); + mmh.traderCustom.set("custom_trades.trade_" + args[2] + ".quantity", ""); + mmh.traderCustom.set("custom_trades.trade_" + args[2] + ".chance", ""); + if (debug) { + logDebug("customFile=" + mmh.customFile); } - int tradeNumber = (int)mmh.traderCustom.get("custom_trades.number", 1); - mmh.traderCustom.set("custom_trades.trade_" + (tradeNumber + 1) + ".price_1", price1); - mmh.traderCustom.set("custom_trades.trade_" + (tradeNumber + 1) + ".price_2", price2); - mmh.traderCustom.set("custom_trades.trade_" + (tradeNumber + 1) + ".itemstack", itemstack); - mmh.traderCustom.set("custom_trades.trade_" + (tradeNumber + 1) + ".quantity", itemstack.getAmount()); - mmh.traderCustom.set("custom_trades.trade_" + (tradeNumber + 1) + ".chance", 0.002); - mmh.traderCustom.set("custom_trades.number", (tradeNumber + 1)); - if(debug) {logDebug("CMD CT ADD price1=" + price1.getType());} - if(debug) {logDebug("CMD CT ADD price2=" + price2.getType());} - if(debug) {logDebug("CMD CT ADD itemstack=" + itemstack.getType());} - if(debug) {if(itemstack.getType() == Material.PLAYER_HEAD) { - ItemMeta skullMeta = itemstack.getItemMeta(); - logDebug("CMD CT ADD IS DisplayName=" + skullMeta.getDisplayName()); - if(skullMeta.hasLore()) { - logDebug("CMD CT ADD IS lore=" + String.join(",",skullMeta.getLore())); - } - }} - if(debug) {logDebug("CMD CT ADD quantity=" + itemstack.getAmount());} - if(debug) {logDebug("CMD CT ADD chance=0.002");} - //log("customFile=" + customFile); try { mmh.traderCustom.save(mmh.customFile); mmh.traderCustom.load(mmh.customFile); } catch (IOException | InvalidConfigurationException e) { - mmh.stacktraceInfo(); - e.printStackTrace(); + if (debug) { + logDebug("CMD CT Remove End Exception -----"); + } + sender.sendMessage(ChatColor.YELLOW + mmh.getName() + ChatColor.RED + " " + + mmh.get("mmh.command.ct.error")); + return false; + // e.printStackTrace(); } - if(debug) {logDebug("CMD CT ADD End -----");} - sender.sendMessage(ChatColor.YELLOW + mmh.getName() + ChatColor.WHITE + " trade_" + (tradeNumber + 1) + " " + mmh.get("mmh.message.ct.successadd")); + if (debug) { + logDebug("CMD CT Remove End -----"); + } + sender.sendMessage(ChatColor.YELLOW + mmh.getName() + ChatColor.WHITE + " trade_" + + args[2] + " " + mmh.get("mmh.message.ct.successrem")); return true; - }else if(args[1].equalsIgnoreCase("remove")){ - if(debug) {logDebug("CMD CT Remove Start -----");} - if(!(args.length >= 3)){ - sender.sendMessage(ChatColor.YELLOW + mmh.getName() + ChatColor.RED + " " + mmh.get("mmh.command.ct.argument")); - return false; - }else{ - if(mmh.isInteger(args[2])){ - mmh.traderCustom.set("custom_trades.trade_" + args[2] + ".price_1", ""); - mmh.traderCustom.set("custom_trades.trade_" + args[2] + ".price_2", ""); - mmh.traderCustom.set("custom_trades.trade_" + args[2] + ".itemstack", ""); - mmh.traderCustom.set("custom_trades.trade_" + args[2] + ".quantity", ""); - mmh.traderCustom.set("custom_trades.trade_" + args[2] + ".chance", ""); - if(debug){logDebug("customFile=" + mmh.customFile);} - try { - mmh.traderCustom.save(mmh.customFile); - mmh.traderCustom.load(mmh.customFile); - } catch (IOException | InvalidConfigurationException e) { - if(debug) {logDebug("CMD CT Remove End Exception -----");} - sender.sendMessage(ChatColor.YELLOW + mmh.getName() + ChatColor.RED + " " + mmh.get("mmh.command.ct.error")); - return false; - //e.printStackTrace(); - } - if(debug) {logDebug("CMD CT Remove End -----");} - sender.sendMessage(ChatColor.YELLOW + mmh.getName() + ChatColor.WHITE + " trade_" + args[2] + " " + mmh.get("mmh.message.ct.successrem")); - return true; - }else{ - if(debug) {logDebug("CMD CT Remove End 2 -----");} - sender.sendMessage(ChatColor.YELLOW + mmh.getName() + ChatColor.RED + " " + mmh.get("mmh.command.ct.numberreq")); - return false; - } - } - }else if(args[1].equalsIgnoreCase("replace")){ - if(debug) {logDebug("CMD CT Replace Start -----");} - if(args.length != 3){ - sender.sendMessage(ChatColor.YELLOW + mmh.getName() + ChatColor.RED + " " + mmh.get("mmh.command.ct.argument")); - return false; - }else{ - if(mmh.isInteger(args[2])){ - ItemStack itemstack = player.getInventory().getItemInOffHand(); - ItemStack price1 = player.getInventory().getItem(0); - ItemStack price2 = player.getInventory().getItem(1); - if(price1 == null){price1 = new ItemStack(Material.AIR);} - if(price2 == null){price2 = new ItemStack(Material.AIR);} - if(itemstack.getType() == Material.AIR||price1 == null||price1.getType() == Material.AIR){ - sender.sendMessage(ChatColor.GREEN + "[]===============[" + ChatColor.YELLOW + mmh.getName() + ChatColor.GREEN + "]===============[]"); - sender.sendMessage(ChatColor.WHITE + " "); - sender.sendMessage(ChatColor.WHITE + " " + mmh.get("mmh.command.ct.line1") + "custom_trades.yml"); - sender.sendMessage(ChatColor.WHITE + " " + mmh.get("mmh.command.ct.line2")); - sender.sendMessage(ChatColor.WHITE + " " + mmh.get("mmh.command.ct.line3")); - sender.sendMessage(ChatColor.WHITE + " " + mmh.get("mmh.command.ct.line4") + "/mmh ct add"); - sender.sendMessage(ChatColor.WHITE + " " + mmh.get("mmh.command.ct.line5") + "custom trade."); - sender.sendMessage(ChatColor.WHITE + " "); - sender.sendMessage(ChatColor.GREEN + "[]===============[" + ChatColor.YELLOW + mmh.getName() + ChatColor.GREEN + "]===============[]"); - if(debug) {logDebug("CMD CT Replace End Error -----");} - return false; - } - int tradeNumber = Integer.parseInt(args[2]); - mmh.traderCustom.set("custom_trades.trade_" + (tradeNumber) + ".price_1", price1); - mmh.traderCustom.set("custom_trades.trade_" + (tradeNumber) + ".price_2", price2); - mmh.traderCustom.set("custom_trades.trade_" + (tradeNumber) + ".itemstack", itemstack); - mmh.traderCustom.set("custom_trades.trade_" + (tradeNumber) + ".quantity", itemstack.getAmount()); - mmh.traderCustom.set("custom_trades.trade_" + (tradeNumber) + ".chance", 0.002); - if(debug) {logDebug("CMD CT Replace price1=" + price1.getType());} - if(debug) {logDebug("CMD CT Replace price2=" + price2.getType());} - if(debug) {logDebug("CMD CT Replace itemstack=" + itemstack.getType());} - if(debug) {if(itemstack.getType() == Material.PLAYER_HEAD) { - ItemMeta skullMeta = itemstack.getItemMeta(); - logDebug("CMD CT Replace IS DisplayName=" + skullMeta.getDisplayName()); - if(skullMeta.hasLore()) { - logDebug("CMD CT Replace IS lore=" + String.join(",",skullMeta.getLore())); - } - }} - if(debug) {logDebug("CMD CT Replace quantity=" + itemstack.getAmount());} - if(debug) {logDebug("CMD CT Replace chance=0.002");} - - //log("customFile=" + customFile); - try { - mmh.traderCustom.save(mmh.customFile); - mmh.traderCustom.load(mmh.customFile); - } catch (IOException | InvalidConfigurationException e) { - if(debug) {logDebug("CMD CT Replace End Exception -----");} - sender.sendMessage(ChatColor.YELLOW + mmh.getName() + ChatColor.RED + " " + mmh.get("mmh.command.ct.error")); - return false; - //e.printStackTrace(); - } - if(debug) {logDebug("CMD CT Replace End -----");} - sender.sendMessage(ChatColor.YELLOW + mmh.getName() + ChatColor.WHITE + " trade_" + args[2] + " " + mmh.get("mmh.message.ct.successrep")); - return true; - }else{ - if(debug) {logDebug("CMD CT Replace End 2 -----");} - sender.sendMessage(ChatColor.YELLOW + mmh.getName() + ChatColor.RED + " " + mmh.get("mmh.command.ct.numberreq")); - return false; - } + } else { + if (debug) { + logDebug("CMD CT Remove End 2 -----"); } + sender.sendMessage(ChatColor.YELLOW + mmh.getName() + ChatColor.RED + " " + + mmh.get("mmh.command.ct.numberreq")); + return false; } - }else if(!(sender instanceof Player)){ - if(debug) {logDebug("CMD CT Replace End Console -----");} - sender.sendMessage(ChatColor.YELLOW + mmh.getName() + ChatColor.RED + " " + mmh.get("mmh.message.noconsole")); - return false; - }else if(!hasPerm){ - if(debug) {logDebug("CMD CT Replace End !Perm -----");} - sender.sendMessage(ChatColor.YELLOW + mmh.getName() + ChatColor.RED + " " + mmh.get("mmh.message.nopermordisabled").toString().replace("", perm) ); - return false; - } - } - if(args[0].equalsIgnoreCase("playerheads")||args[0].equalsIgnoreCase("ph")){ - String perm = "moremobheads.playerheads"; - boolean hasPerm = sender.hasPermission(perm); - if(debug){logDebug(sender.getName() + " has the permission " + perm + "=" + hasPerm);} - if(hasPerm&&sender instanceof Player - && mmh.getConfig().getBoolean("wandering_trades.custom_wandering_trader", true)){ - Player player = (Player) sender; - if(!(args.length >= 2)){ - sender.sendMessage(ChatColor.GREEN + "[]===============[" + ChatColor.YELLOW + mmh.getName() + ChatColor.GREEN + "]===============[]"); - sender.sendMessage(ChatColor.WHITE + " "); - sender.sendMessage(ChatColor.WHITE + " /mmh ph - " + mmh.get("mmh.command.ct.help")); - sender.sendMessage(ChatColor.WHITE + " /mmh ph add - " + mmh.get("mmh.command.ct.add") + "player_heads.yml"); - sender.sendMessage(ChatColor.WHITE + " /mmh ph remove # - " + mmh.get("mmh.command.ct.remove").replace("custom_trades", "playerheads") ); - sender.sendMessage(ChatColor.WHITE + " /mmh ph replace # - " + mmh.get("mmh.command.ct.replace").replace("", "#").replace("custom trade", "pleayerhead") ); - //sender.sendMessage(ChatColor.WHITE + " "); - sender.sendMessage(ChatColor.WHITE + " "); - sender.sendMessage(ChatColor.GREEN + "[]===============[" + ChatColor.YELLOW + mmh.getName() + ChatColor.GREEN + "]===============[]"); - return true; - }else if(args[1].equalsIgnoreCase("add")){ - if(debug) {logDebug("CMD PH ADD Start -----");} + } else if (args[1].equalsIgnoreCase("replace")) { + if (debug) { + logDebug("CMD CT Replace Start -----"); + } + if (args.length != 3) { + sender.sendMessage(ChatColor.YELLOW + mmh.getName() + ChatColor.RED + " " + + mmh.get("mmh.command.ct.argument")); + return false; + } else if (mmh.isInteger(args[2])) { ItemStack itemstack = player.getInventory().getItemInOffHand(); ItemStack price1 = player.getInventory().getItem(0); ItemStack price2 = player.getInventory().getItem(1); - if(price1 == null){price1 = new ItemStack(Material.AIR);} - if(price2 == null){price2 = new ItemStack(Material.AIR);} - //Material price1 = item1.getType(); - //Material price2 = item2.getType(); - - if(itemstack.getType() == Material.AIR||price1 == null||price1.getType() == Material.AIR||itemstack.getType() != Material.PLAYER_HEAD){ - sender.sendMessage(ChatColor.GREEN + "[]===============[" + ChatColor.YELLOW + mmh.getName() + ChatColor.GREEN + "]===============[]"); + if (price1 == null) { + price1 = new ItemStack(Material.AIR); + } + if (price2 == null) { + price2 = new ItemStack(Material.AIR); + } + if ((itemstack.getType() == Material.AIR) || (price1 == null) + || (price1.getType() == Material.AIR)) { + sender.sendMessage(ChatColor.GREEN + "[]===============[" + ChatColor.YELLOW + + mmh.getName() + ChatColor.GREEN + "]===============[]"); sender.sendMessage(ChatColor.WHITE + " "); - if(itemstack.getType() != Material.PLAYER_HEAD){ - sender.sendMessage(ChatColor.RED + " MUST BE PLAYERHEAD"); - sender.sendMessage(ChatColor.WHITE + " "); - } - sender.sendMessage(ChatColor.WHITE + " " + mmh.get("mmh.command.ct.line1") + "player_heads.yml"); + sender.sendMessage(ChatColor.WHITE + " " + mmh.get("mmh.command.ct.line1") + + "custom_trades.yml"); sender.sendMessage(ChatColor.WHITE + " " + mmh.get("mmh.command.ct.line2")); sender.sendMessage(ChatColor.WHITE + " " + mmh.get("mmh.command.ct.line3")); - sender.sendMessage(ChatColor.WHITE + " " + mmh.get("mmh.command.ct.line4") + "/mmh ph add"); - sender.sendMessage(ChatColor.WHITE + " " + mmh.get("mmh.command.ct.line5") + "player head."); + sender.sendMessage( + ChatColor.WHITE + " " + mmh.get("mmh.command.ct.line4") + "/mmh ct add"); + sender.sendMessage( + ChatColor.WHITE + " " + mmh.get("mmh.command.ct.line5") + "custom trade."); sender.sendMessage(ChatColor.WHITE + " "); - sender.sendMessage(ChatColor.GREEN + "[]===============[" + ChatColor.YELLOW + mmh.getName() + ChatColor.GREEN + "]===============[]"); - if(debug) {logDebug("CMD PH ADD End Error -----");} + sender.sendMessage(ChatColor.GREEN + "[]===============[" + ChatColor.YELLOW + + mmh.getName() + ChatColor.GREEN + "]===============[]"); + if (debug) { + logDebug("CMD CT Replace End Error -----"); + } return false; } - int tradeNumber = (int) mmh.playerHeads.get("players.number", 1); - mmh.playerHeads.set("players.player_" + (tradeNumber + 1) + ".price_1", price1); - mmh.playerHeads.set("players.player_" + (tradeNumber + 1) + ".price_2", price2); - mmh.playerHeads.set("players.player_" + (tradeNumber + 1) + ".itemstack", itemstack); - mmh.playerHeads.set("players.player_" + (tradeNumber + 1) + ".quantity", itemstack.getAmount()); - if(debug) {logDebug("CMD PH ADD price1=" + price1.getType());} - if(debug) {logDebug("CMD PH ADD price2=" + price2.getType());} - if(debug) {logDebug("CMD PH ADD itemstack=" + itemstack.getType());} - if(debug) {if(itemstack.getType() == Material.PLAYER_HEAD) { - ItemMeta skullMeta = itemstack.getItemMeta(); - logDebug("CMD PH ADD IS DisplayName=" + skullMeta.getDisplayName()); - if(skullMeta.hasLore()) { - logDebug("CMD PH ADD IS lore=" + String.join(",",skullMeta.getLore())); + int tradeNumber = Integer.parseInt(args[2]); + mmh.traderCustom.set("custom_trades.trade_" + (tradeNumber) + ".price_1", price1); + mmh.traderCustom.set("custom_trades.trade_" + (tradeNumber) + ".price_2", price2); + mmh.traderCustom.set("custom_trades.trade_" + (tradeNumber) + ".itemstack", itemstack); + mmh.traderCustom.set("custom_trades.trade_" + (tradeNumber) + ".quantity", + itemstack.getAmount()); + mmh.traderCustom.set("custom_trades.trade_" + (tradeNumber) + ".chance", 0.002); + if (debug) { + logDebug("CMD CT Replace price1=" + price1.getType()); + } + if (debug) { + logDebug("CMD CT Replace price2=" + price2.getType()); + } + if (debug) { + logDebug("CMD CT Replace itemstack=" + itemstack.getType()); + } + if (debug) { + if (itemstack.getType() == Material.PLAYER_HEAD) { + ItemMeta skullMeta = itemstack.getItemMeta(); + logDebug("CMD CT Replace IS DisplayName=" + skullMeta.getDisplayName()); + if (skullMeta.hasLore()) { + logDebug("CMD CT Replace IS lore=" + String.join(",", skullMeta.getLore())); + } } - }} - if(debug) {logDebug("CMD PH ADD quantity=" + itemstack.getAmount());} - //playerHeads.set("players.player_" + (tradeNumber + 1) + ".chance", 0.002); - mmh.playerHeads.set("players.number", (tradeNumber + 1)); - //log("customFile=" + customFile); + } + if (debug) { + logDebug("CMD CT Replace quantity=" + itemstack.getAmount()); + } + if (debug) { + logDebug("CMD CT Replace chance=0.002"); + } + + // log("customFile=" + customFile); + try { + mmh.traderCustom.save(mmh.customFile); + mmh.traderCustom.load(mmh.customFile); + } catch (IOException | InvalidConfigurationException e) { + if (debug) { + logDebug("CMD CT Replace End Exception -----"); + } + sender.sendMessage(ChatColor.YELLOW + mmh.getName() + ChatColor.RED + " " + + mmh.get("mmh.command.ct.error")); + return false; + // e.printStackTrace(); + } + if (debug) { + logDebug("CMD CT Replace End -----"); + } + sender.sendMessage(ChatColor.YELLOW + mmh.getName() + ChatColor.WHITE + " trade_" + + args[2] + " " + mmh.get("mmh.message.ct.successrep")); + return true; + } else { + if (debug) { + logDebug("CMD CT Replace End 2 -----"); + } + sender.sendMessage(ChatColor.YELLOW + mmh.getName() + ChatColor.RED + " " + + mmh.get("mmh.command.ct.numberreq")); + return false; + } + } + } else if (!(sender instanceof Player)) { + if (debug) { + logDebug("CMD CT Replace End Console -----"); + } + sender.sendMessage( + ChatColor.YELLOW + mmh.getName() + ChatColor.RED + " " + mmh.get("mmh.message.noconsole")); + return false; + } else if (!hasPerm) { + if (debug) { + logDebug("CMD CT Replace End !Perm -----"); + } + sender.sendMessage(ChatColor.YELLOW + mmh.getName() + ChatColor.RED + " " + + mmh.get("mmh.message.nopermordisabled").toString().replace("", perm)); + return false; + } + } + if (args[0].equalsIgnoreCase("playerheads") || args[0].equalsIgnoreCase("ph")) { + String perm = "moremobheads.playerheads"; + boolean hasPerm = sender.hasPermission(perm); + if (debug) { + logDebug(sender.getName() + " has the permission " + perm + "=" + hasPerm); + } + if (hasPerm && (sender instanceof Player) + && mmh.getConfig().getBoolean("wandering_trades.custom_wandering_trader", true)) { + Player player = (Player) sender; + if (!(args.length >= 2)) { + sender.sendMessage(ChatColor.GREEN + "[]===============[" + ChatColor.YELLOW + mmh.getName() + + ChatColor.GREEN + "]===============[]"); + sender.sendMessage(ChatColor.WHITE + " "); + sender.sendMessage(ChatColor.WHITE + " /mmh ph - " + mmh.get("mmh.command.ct.help")); + sender.sendMessage(ChatColor.WHITE + " /mmh ph add - " + mmh.get("mmh.command.ct.add") + + "player_heads.yml"); + sender.sendMessage(ChatColor.WHITE + " /mmh ph remove # - " + + mmh.get("mmh.command.ct.remove").replace("custom_trades", "playerheads")); + sender.sendMessage(ChatColor.WHITE + " /mmh ph replace # - " + mmh.get("mmh.command.ct.replace") + .replace("", "#").replace("custom trade", "pleayerhead")); + // sender.sendMessage(ChatColor.WHITE + " "); + sender.sendMessage(ChatColor.WHITE + " "); + sender.sendMessage(ChatColor.GREEN + "[]===============[" + ChatColor.YELLOW + mmh.getName() + + ChatColor.GREEN + "]===============[]"); + return true; + } else if (args[1].equalsIgnoreCase("add")) { + if (debug) { + logDebug("CMD PH ADD Start -----"); + } + ItemStack itemstack = player.getInventory().getItemInOffHand(); + ItemStack price1 = player.getInventory().getItem(0); + ItemStack price2 = player.getInventory().getItem(1); + if (price1 == null) { + price1 = new ItemStack(Material.AIR); + } + if (price2 == null) { + price2 = new ItemStack(Material.AIR); + } + // Material price1 = item1.getType(); + // Material price2 = item2.getType(); + + if ((itemstack.getType() == Material.AIR) || (price1 == null) || (price1.getType() == Material.AIR) + || (itemstack.getType() != Material.PLAYER_HEAD)) { + sender.sendMessage(ChatColor.GREEN + "[]===============[" + ChatColor.YELLOW + mmh.getName() + + ChatColor.GREEN + "]===============[]"); + sender.sendMessage(ChatColor.WHITE + " "); + if (itemstack.getType() != Material.PLAYER_HEAD) { + sender.sendMessage(ChatColor.RED + " MUST BE PLAYERHEAD"); + sender.sendMessage(ChatColor.WHITE + " "); + } + sender.sendMessage( + ChatColor.WHITE + " " + mmh.get("mmh.command.ct.line1") + "player_heads.yml"); + sender.sendMessage(ChatColor.WHITE + " " + mmh.get("mmh.command.ct.line2")); + sender.sendMessage(ChatColor.WHITE + " " + mmh.get("mmh.command.ct.line3")); + sender.sendMessage(ChatColor.WHITE + " " + mmh.get("mmh.command.ct.line4") + "/mmh ph add"); + sender.sendMessage( + ChatColor.WHITE + " " + mmh.get("mmh.command.ct.line5") + "player head."); + sender.sendMessage(ChatColor.WHITE + " "); + sender.sendMessage(ChatColor.GREEN + "[]===============[" + ChatColor.YELLOW + mmh.getName() + + ChatColor.GREEN + "]===============[]"); + if (debug) { + logDebug("CMD PH ADD End Error -----"); + } + return false; + } + int tradeNumber = (int) mmh.playerHeads.get("players.number", 1); + mmh.playerHeads.set("players.player_" + (tradeNumber + 1) + ".price_1", price1); + mmh.playerHeads.set("players.player_" + (tradeNumber + 1) + ".price_2", price2); + mmh.playerHeads.set("players.player_" + (tradeNumber + 1) + ".itemstack", itemstack); + mmh.playerHeads.set("players.player_" + (tradeNumber + 1) + ".quantity", itemstack.getAmount()); + if (debug) { + logDebug("CMD PH ADD price1=" + price1.getType()); + } + if (debug) { + logDebug("CMD PH ADD price2=" + price2.getType()); + } + if (debug) { + logDebug("CMD PH ADD itemstack=" + itemstack.getType()); + } + if (debug) { + if (itemstack.getType() == Material.PLAYER_HEAD) { + ItemMeta skullMeta = itemstack.getItemMeta(); + logDebug("CMD PH ADD IS DisplayName=" + skullMeta.getDisplayName()); + if (skullMeta.hasLore()) { + logDebug("CMD PH ADD IS lore=" + String.join(",", skullMeta.getLore())); + } + } + } + if (debug) { + logDebug("CMD PH ADD quantity=" + itemstack.getAmount()); + } + // playerHeads.set("players.player_" + (tradeNumber + 1) + ".chance", 0.002); + mmh.playerHeads.set("players.number", (tradeNumber + 1)); + // log("customFile=" + customFile); + try { + mmh.playerHeads.save(mmh.playerFile); + mmh.playerHeads.load(mmh.playerFile); + } catch (IOException | InvalidConfigurationException e) { + if (debug) { + logDebug("CMD PH ADD End Exception -----"); + } + mmh.stacktraceInfo(); + e.printStackTrace(); + } + if (debug) { + logDebug("CMD PH ADD End -----"); + } + sender.sendMessage(ChatColor.YELLOW + mmh.getName() + ChatColor.WHITE + " player_" + + (tradeNumber + 1) + " " + mmh.get("mmh.message.ct.successadd")); + return true; + } else if (args[1].equalsIgnoreCase("remove")) { + if (debug) { + logDebug("CMD PH Remove Start -----"); + } + if (!(args.length >= 3)) { + sender.sendMessage(ChatColor.YELLOW + mmh.getName() + ChatColor.RED + " " + + mmh.get("mmh.command.ct.argument")); + return false; + } else if (mmh.isInteger(args[2])) { + mmh.playerHeads.set("players.player_" + args[2] + ".price_1", ""); + mmh.playerHeads.set("players.player_" + args[2] + ".price_2", ""); + mmh.playerHeads.set("players.player_" + args[2] + ".itemstack", ""); + mmh.playerHeads.set("players.player_" + args[2] + ".quantity", ""); + // playerHeads.set("custom_trades.trade_" + args[2] + ".chance", ""); + if (debug) { + logDebug("playerFile=" + mmh.playerFile); + } try { mmh.playerHeads.save(mmh.playerFile); mmh.playerHeads.load(mmh.playerFile); } catch (IOException | InvalidConfigurationException e) { - if(debug) {logDebug("CMD PH ADD End Exception -----");} - mmh.stacktraceInfo(); - e.printStackTrace(); + if (debug) { + logDebug("CMD PH Remove End Exception -----"); + } + sender.sendMessage(ChatColor.YELLOW + mmh.getName() + ChatColor.RED + " " + + mmh.get("mmh.command.ct.error") + "custom_trades.yml!"); + return false; + // e.printStackTrace(); } - if(debug) {logDebug("CMD PH ADD End -----");} - sender.sendMessage(ChatColor.YELLOW + mmh.getName() + ChatColor.WHITE + " player_" + (tradeNumber + 1) + " " + mmh.get("mmh.message.ct.successadd")); + if (debug) { + logDebug("CMD PH Remove End -----"); + } + sender.sendMessage(ChatColor.YELLOW + mmh.getName() + ChatColor.WHITE + " player_" + + args[2] + " " + mmh.get("mmh.message.ct.successrem")); return true; - }else if(args[1].equalsIgnoreCase("remove")){ - if(debug) {logDebug("CMD PH Remove Start -----");} - if(!(args.length >= 3)){ - sender.sendMessage(ChatColor.YELLOW + mmh.getName() + ChatColor.RED + " " + mmh.get("mmh.command.ct.argument")); - return false; - }else{ - if(mmh.isInteger(args[2])){ - mmh.playerHeads.set("players.player_" + args[2] + ".price_1", ""); - mmh.playerHeads.set("players.player_" + args[2] + ".price_2", ""); - mmh.playerHeads.set("players.player_" + args[2] + ".itemstack", ""); - mmh.playerHeads.set("players.player_" + args[2] + ".quantity", ""); - //playerHeads.set("custom_trades.trade_" + args[2] + ".chance", ""); - if(debug){logDebug("playerFile=" + mmh.playerFile);} - try { - mmh.playerHeads.save(mmh.playerFile); - mmh.playerHeads.load(mmh.playerFile); - } catch (IOException | InvalidConfigurationException e) { - if(debug) {logDebug("CMD PH Remove End Exception -----");} - sender.sendMessage(ChatColor.YELLOW + mmh.getName() + ChatColor.RED + " " + mmh.get("mmh.command.ct.error") + "custom_trades.yml!"); - return false; - //e.printStackTrace(); - } - if(debug) {logDebug("CMD PH Remove End -----");} - sender.sendMessage(ChatColor.YELLOW + mmh.getName() + ChatColor.WHITE + " player_" + args[2] + " " + mmh.get("mmh.message.ct.successrem")); - return true; - }else{ - if(debug) {logDebug("CMD PH Remove End 2 -----");} - sender.sendMessage(ChatColor.YELLOW + mmh.getName() + ChatColor.RED + " " + mmh.get("mmh.command.ct.numberreq")); - return false; - } - } - }else if(args[1].equalsIgnoreCase("replace")){ - if(debug) {logDebug("CMD PH Replace Start -----");} - if(args.length != 3){ - sender.sendMessage(ChatColor.YELLOW + mmh.getName() + ChatColor.RED + " " + mmh.get("mmh.command.ct.argument")); - return false; - }else{ - if(mmh.isInteger(args[2])){ - ItemStack itemstack = player.getInventory().getItemInOffHand(); - ItemStack price1 = player.getInventory().getItem(0); - ItemStack price2 = player.getInventory().getItem(1); - if(price1 == null){price1 = new ItemStack(Material.AIR);} - if(price2 == null){price2 = new ItemStack(Material.AIR);} - if(itemstack.getType() == Material.AIR||price1 == null||price1.getType() == Material.AIR||itemstack.getType() != Material.PLAYER_HEAD){ - sender.sendMessage(ChatColor.GREEN + "[]===============[" + ChatColor.YELLOW + mmh.getName() + ChatColor.GREEN + "]===============[]"); - sender.sendMessage(ChatColor.WHITE + " "); - if(itemstack.getType() != Material.PLAYER_HEAD){ - sender.sendMessage(ChatColor.RED + " " + mmh.get("mmh.command.playerhead.msg") ); - sender.sendMessage(ChatColor.WHITE + " "); - } - sender.sendMessage(ChatColor.WHITE + " " + mmh.get("mmh.command.ct.line1") + "player_heads.yml"); - sender.sendMessage(ChatColor.WHITE + " " + mmh.get("mmh.command.ct.line2")); - sender.sendMessage(ChatColor.WHITE + " " + mmh.get("mmh.command.ct.line3")); - sender.sendMessage(ChatColor.WHITE + " " + mmh.get("mmh.command.ct.line4") + "/mmh ph add"); - sender.sendMessage(ChatColor.WHITE + " " + mmh.get("mmh.command.ct.line5") + "player head."); - sender.sendMessage(ChatColor.WHITE + " "); - sender.sendMessage(ChatColor.GREEN + "[]===============[" + ChatColor.YELLOW + mmh.getName() + ChatColor.GREEN + "]===============[]"); - if(debug) {logDebug("CMD PH Replace End Error -----");} - return false; - } - int tradeNumber = Integer.parseInt(args[2]); - mmh.playerHeads.set("players.player_" + (tradeNumber) + ".price_1", price1); - mmh.playerHeads.set("players.player_" + (tradeNumber) + ".price_2", price2); - mmh.playerHeads.set("players.player_" + (tradeNumber) + ".itemstack", itemstack); - mmh.playerHeads.set("players.player_" + (tradeNumber) + ".quantity", itemstack.getAmount()); - if(debug) {logDebug("CMD PH Replace price1=" + price1.getType());} - if(debug) {logDebug("CMD PH Replace price2=" + price2.getType());} - if(debug) {logDebug("CMD PH Replace itemstack=" + itemstack.getType());} - if(debug) {if(itemstack.getType() == Material.PLAYER_HEAD) { - ItemMeta skullMeta = itemstack.getItemMeta(); - logDebug("CMD PH Replace IS DisplayName=" + skullMeta.getDisplayName()); - if(skullMeta.hasLore()) { - logDebug("CMD PH Replace IS lore=" + String.join(",",skullMeta.getLore())); - } - }} - if(debug) {logDebug("CMD PH Replace quantity=" + itemstack.getAmount());} - //playerHeads.set("players.player_" + (tradeNumber + 1) + ".chance", 0.002); - //log("customFile=" + customFile); - try { - mmh.playerHeads.save(mmh.playerFile); - mmh.playerHeads.load(mmh.playerFile); - } catch (IOException | InvalidConfigurationException e) { - if(debug) {logDebug("CMD PH Replace End Exception -----");} - sender.sendMessage(ChatColor.YELLOW + mmh.getName() + ChatColor.RED + " " + mmh.get("mmh.command.ct.error") + "player_heads.yml!"); - return false; - //e.printStackTrace(); - } - if(debug) {logDebug("CMD PH Replace End -----");} - sender.sendMessage(ChatColor.YELLOW + mmh.getName() + ChatColor.WHITE + " player_" + args[2] + " " + mmh.get("mmh.message.ct.successrep")); - return true; - }else{ - if(debug) {logDebug("CMD PH Replace End 2 -----");} - sender.sendMessage(ChatColor.YELLOW + mmh.getName() + ChatColor.RED + " " + mmh.get("mmh.command.ct.numberreq")); - return false; - } + } else { + if (debug) { + logDebug("CMD PH Remove End 2 -----"); } + sender.sendMessage(ChatColor.YELLOW + mmh.getName() + ChatColor.RED + " " + + mmh.get("mmh.command.ct.numberreq")); + return false; } - }else if(!(sender instanceof Player)){ - if(debug) {logDebug("CMD PH Replace End Console -----");} - sender.sendMessage(ChatColor.YELLOW + mmh.getName() + ChatColor.RED + " " + mmh.get("mmh.message.noconsole")); - return false; - }else if(!hasPerm){ - if(debug) {logDebug("CMD PH Replace End !Perm -----");} - sender.sendMessage(ChatColor.YELLOW + mmh.getName() + ChatColor.RED + " " + mmh.get("mmh.message.nopermordisabled").toString().replace("", perm) ); - return false; - } - } - if(args[0].equalsIgnoreCase("fixhead")||args[0].equalsIgnoreCase("fh")){ - String perm = "moremobheads.fixhead"; - boolean hasPerm = sender.hasPermission(perm); - if(debug){logDebug(sender.getName() + " has the permission " + perm + "=" + hasPerm);} - if(sender instanceof Player) { - Player player = (Player) sender; - if(hasPerm) { - if(!args[1].isEmpty()) { - if(args[1].equalsIgnoreCase("name")) { - if(debug) {logDebug("CMD FH Name Start -----");} - // FixHead NBT - ItemStack mainHand = player.getInventory().getItemInMainHand(); - if( mainHand != null ){ - if( mainHand.getType().equals(Material.PLAYER_HEAD) ) { - String texture = mainHand.getItemMeta().getDisplayName(); - - SkullMeta skullname = (SkullMeta) mainHand.getItemMeta(); - if(skullname.getOwner() != null){ - String name = skullname.getOwner().toString(); - if(debug){logDebug("EPIE name=" + name);} - if(debug){logDebug("EPIE lore=" + skullname.getLore());} - if(skullname.getOwner().toString().length() >= 40){ - if(debug){logDebug("EPIE ownerName.lngth >= 40");} - ItemStack itmStack = mainHand; - //SkullMeta skullname = (SkullMeta) e.getItem().getItemStack().getItemMeta(); - String daMobName = "null"; - if(skullname != null){ - String isCat = CatHeads.getNameFromTexture(skullname.getOwner().toString()); - String isHorse = HorseHeads.getNameFromTexture(skullname.getOwner().toString()); - String isLlama = LlamaHeads.getNameFromTexture(skullname.getOwner().toString()); - String isMobHead = MobHeads.getNameFromTexture(skullname.getOwner().toString()); - String isRabbit = RabbitHeads.getNameFromTexture(skullname.getOwner().toString()); - String isSheep = SheepHeads.getNameFromTexture(skullname.getOwner().toString()); - String isVillager = VillagerHeads.getNameFromTexture(skullname.getOwner().toString()); - String isZombieVillager = ZombieVillagerHeads.getNameFromTexture(skullname.getOwner().toString()); - String isplayerhead = mmh.isPlayerHead(skullname.getOwner().toString()); - String isblockhead = mmh.isBlockHead(skullname.getOwner().toString()); - String isblockhead2 = mmh.isBlockHead2(skullname.getOwner().toString()); - String isblockhead3 = mmh.isBlockHead3(skullname.getOwner().toString()); - if(isCat != null){ daMobName = isCat; } - if(isHorse != null){ daMobName = isHorse; } - if(isLlama != null){ daMobName = isLlama; } - if(isMobHead != null){ daMobName = isMobHead; } - if(isRabbit != null){ daMobName = isRabbit; } - if(isSheep != null){ daMobName = isSheep; } - if(isVillager != null){ daMobName = isVillager; } - if(isZombieVillager != null){ daMobName = isZombieVillager; } - if(daMobName == null){ - if(blockHeads != null){ - if(isblockhead != null){ daMobName = isblockhead; } - } - if(blockHeads2 != null){ - if(isblockhead2 != null){ daMobName = isblockhead2; } - } - if(blockHeads3 != null){ - if(isblockhead3 != null){ daMobName = isblockhead3; } - } - if(mmh.playerHeads != null){ - if(isplayerhead != null){ daMobName = isplayerhead; } - } - } - ArrayList lore = new ArrayList(); - //log("" + meta.getOwner().toString()); - //String name = LlamaHeads.getNameFromTexture(meta.getOwner().toString()); - if(debug){logDebug("EPIE mobname from texture=" + daMobName);} - List skullLore = skullname.getLore(); - if(skullLore != null){ - if(skullLore.toString().contains( mmh.get("mmh.message.lore_killed_by").replace("", "") )){ - lore.addAll(skullname.getLore()); - } - } - if(skullLore == null||!skullname.getLore().toString().contains(mmh.getName())){ - if(mmh.getConfig().getBoolean("lore.show_plugin_name", true)){ - lore.add(ChatColor.AQUA + "" + mmh.getName()); - } - } - if(daMobName != "null"){ - daMobName = mmh.langName.getString(daMobName.toLowerCase().replace(" ", "."), daMobName); - }else{ - daMobName = mmh.langName.getString(daMobName.toLowerCase().replace(" ", "."), "404 Name Not Found"); - } - skullname.setLore(lore); - skullname.setDisplayName(daMobName); - itmStack.setItemMeta(skullname); - //fixHeadNBT(skullname.getOwner(), daMobName, lore); - if(debug) {logDebug("CMD FH Name End -----");} - sender.sendMessage("" + mmh.get("mmh.command.fixhead.name") ); - //if(debug){logDebug("test3a");} - return true; - }else{ - if(debug) {logDebug("CMD FH Name End Meta Null -----");} - return false; - } - } - } - }else { - if(debug) {logDebug("CMD FH Name End Error -----");} - sender.sendMessage("An Error occured."); - return false; - } - } + } else if (args[1].equalsIgnoreCase("replace")) { + if (debug) { + logDebug("CMD PH Replace Start -----"); + } + if (args.length != 3) { + sender.sendMessage(ChatColor.YELLOW + mmh.getName() + ChatColor.RED + " " + + mmh.get("mmh.command.ct.argument")); + return false; + } else if (mmh.isInteger(args[2])) { + ItemStack itemstack = player.getInventory().getItemInOffHand(); + ItemStack price1 = player.getInventory().getItem(0); + ItemStack price2 = player.getInventory().getItem(1); + if (price1 == null) { + price1 = new ItemStack(Material.AIR); + } + if (price2 == null) { + price2 = new ItemStack(Material.AIR); + } + if ((itemstack.getType() == Material.AIR) || (price1 == null) + || (price1.getType() == Material.AIR) + || (itemstack.getType() != Material.PLAYER_HEAD)) { + sender.sendMessage(ChatColor.GREEN + "[]===============[" + ChatColor.YELLOW + + mmh.getName() + ChatColor.GREEN + "]===============[]"); + sender.sendMessage(ChatColor.WHITE + " "); + if (itemstack.getType() != Material.PLAYER_HEAD) { + sender.sendMessage(ChatColor.RED + " " + mmh.get("mmh.command.playerhead.msg")); + sender.sendMessage(ChatColor.WHITE + " "); } - - if(args[1].equalsIgnoreCase("stack")) { - if(debug) {logDebug("CMD FH Stack Start -----");} - // FixHead Stack - ItemStack mainHand = player.getInventory().getItemInMainHand(); - ItemStack offHand = player.getInventory().getItemInOffHand(); - if( mainHand != null && offHand != null ){ - if( mainHand.getType().equals(Material.PLAYER_HEAD) && offHand.getType().equals(Material.PLAYER_HEAD) ) { - ItemStack is = mmh.fixHeadStack(offHand, mainHand); - //is.setAmount(mainHand.getAmount()); - if(is != mainHand) { - player.getInventory().setItemInMainHand(is); - if(debug) {logDebug("is=" + is.getType());} - if(debug) {logDebug("CMD FH Stack End -----");} - sender.sendMessage("" + mmh.get("mmh.command.fixhead.stack.success") ); - return true; - }else { - if(debug) {logDebug("CMD FH Stack End Error -----");} - sender.sendMessage("" + mmh.get("mmh.command.fixhead.stack.error") ); - return false; - } - }else if( !mainHand.getType().equals(Material.PLAYER_HEAD) && !offHand.getType().equals(Material.PLAYER_HEAD) ){ - if(debug) {logDebug("CMD FH Stack End Error Main Off -----");} - sender.sendMessage("" + mmh.get("mmh.command.fixhead.stack.notph") ); - return false; - }else if( !mainHand.getType().equals(Material.PLAYER_HEAD) && offHand.getType().equals(Material.PLAYER_HEAD) ){ - if(debug) {logDebug("CMD FH Stack End Error Main -----");} - sender.sendMessage("" + mmh.get("mmh.command.fixhead.stack.main") ); - return false; - }else if( mainHand.getType().equals(Material.PLAYER_HEAD) && !offHand.getType().equals(Material.PLAYER_HEAD) ){ - if(debug) {logDebug("CMD FH Stack End Error Off -----");} - sender.sendMessage("" + mmh.get("mmh.command.fixhead.stack.off") ); - return false; - } + sender.sendMessage(ChatColor.WHITE + " " + mmh.get("mmh.command.ct.line1") + + "player_heads.yml"); + sender.sendMessage(ChatColor.WHITE + " " + mmh.get("mmh.command.ct.line2")); + sender.sendMessage(ChatColor.WHITE + " " + mmh.get("mmh.command.ct.line3")); + sender.sendMessage( + ChatColor.WHITE + " " + mmh.get("mmh.command.ct.line4") + "/mmh ph add"); + sender.sendMessage( + ChatColor.WHITE + " " + mmh.get("mmh.command.ct.line5") + "player head."); + sender.sendMessage(ChatColor.WHITE + " "); + sender.sendMessage(ChatColor.GREEN + "[]===============[" + ChatColor.YELLOW + + mmh.getName() + ChatColor.GREEN + "]===============[]"); + if (debug) { + logDebug("CMD PH Replace End Error -----"); + } + return false; + } + int tradeNumber = Integer.parseInt(args[2]); + mmh.playerHeads.set("players.player_" + (tradeNumber) + ".price_1", price1); + mmh.playerHeads.set("players.player_" + (tradeNumber) + ".price_2", price2); + mmh.playerHeads.set("players.player_" + (tradeNumber) + ".itemstack", itemstack); + mmh.playerHeads.set("players.player_" + (tradeNumber) + ".quantity", + itemstack.getAmount()); + if (debug) { + logDebug("CMD PH Replace price1=" + price1.getType()); + } + if (debug) { + logDebug("CMD PH Replace price2=" + price2.getType()); + } + if (debug) { + logDebug("CMD PH Replace itemstack=" + itemstack.getType()); + } + if (debug) { + if (itemstack.getType() == Material.PLAYER_HEAD) { + ItemMeta skullMeta = itemstack.getItemMeta(); + logDebug("CMD PH Replace IS DisplayName=" + skullMeta.getDisplayName()); + if (skullMeta.hasLore()) { + logDebug("CMD PH Replace IS lore=" + String.join(",", skullMeta.getLore())); } } } - - }else if(!hasPerm){ - if(debug) {logDebug("CMD FH Stack End !Perm -----");} - sender.sendMessage(ChatColor.YELLOW + mmh.getName() + ChatColor.RED + " " + mmh.get("mmh.message.noperm").toString().replace("", perm) ); + if (debug) { + logDebug("CMD PH Replace quantity=" + itemstack.getAmount()); + } + // playerHeads.set("players.player_" + (tradeNumber + 1) + ".chance", 0.002); + // log("customFile=" + customFile); + try { + mmh.playerHeads.save(mmh.playerFile); + mmh.playerHeads.load(mmh.playerFile); + } catch (IOException | InvalidConfigurationException e) { + if (debug) { + logDebug("CMD PH Replace End Exception -----"); + } + sender.sendMessage(ChatColor.YELLOW + mmh.getName() + ChatColor.RED + " " + + mmh.get("mmh.command.ct.error") + "player_heads.yml!"); + return false; + // e.printStackTrace(); + } + if (debug) { + logDebug("CMD PH Replace End -----"); + } + sender.sendMessage(ChatColor.YELLOW + mmh.getName() + ChatColor.WHITE + " player_" + + args[2] + " " + mmh.get("mmh.message.ct.successrep")); + return true; + } else { + if (debug) { + logDebug("CMD PH Replace End 2 -----"); + } + sender.sendMessage(ChatColor.YELLOW + mmh.getName() + ChatColor.RED + " " + + mmh.get("mmh.command.ct.numberreq")); return false; } } - } - if(args[0].equalsIgnoreCase("giveMH")){ - // /mmh giveMH player mob qty - // cmd 0 1 2 3 - if( args.length==4 ){ - String perm = "moremobheads.give"; - boolean hasPerm = sender.hasPermission(perm); - if(debug){logDebug(sender.getName() + " has the permission " + perm + "=" + hasPerm);} - if(hasPerm) { - Player player = Bukkit.getPlayer(args[1]); - if(!args[2].isEmpty()) { - String mob = args[2].toLowerCase(); - log("mob=" + mob); - if(!args[3].isEmpty()) { - int number = Integer.parseInt(args[3]); - String[] splitmob = mob.split("\\."); - switch (splitmob[0]) { - case "creeper": - if(mmh.getConfig().getBoolean("vanilla_heads.creeper", false)){ - player.getWorld().dropItemNaturally(player.getLocation(), new ItemStack(Material.CREEPER_HEAD)); - }else{ // mmh.langName - player.getWorld().dropItemNaturally(player.getLocation(), MoreMobHeadsLib.addSound( mmh.makeSkulls(MobHeads.valueOf(splitmob[0].toUpperCase()).getTexture().toString(), - mmh.langName.getString(splitmob[0].toLowerCase(), MobHeads.valueOf(splitmob[0].toUpperCase()).getName() + " Head"), number ), EntityType.CREEPER) ); - } // MobHeads.valueOf(name).getName() + " Head" - break; - case "zombie": - if(mmh.getConfig().getBoolean("vanilla_heads.zombie", false)){ - player.getWorld().dropItemNaturally(player.getLocation(), new ItemStack(Material.ZOMBIE_HEAD)); - }else{ // mmh.langName - player.getWorld().dropItemNaturally(player.getLocation(), MoreMobHeadsLib.addSound( mmh.makeSkulls(MobHeads.valueOf(splitmob[0].toUpperCase()).getTexture().toString(), - mmh.langName.getString(splitmob[0].toLowerCase(), MobHeads.valueOf(splitmob[0].toUpperCase()).getName() + " Head"), number ), EntityType.ZOMBIE) ); - } // MobHeads.valueOf(name).getName() + " Head" - break; - - case "piglin": - if(mmh.getConfig().getBoolean("vanilla_heads.piglin", false)){ - player.getWorld().dropItemNaturally(player.getLocation(), MoreMobHeadsLib.getVanilla(EntityType.fromName("PIGLIN")) ); - }else{ // mmh.langName - player.getWorld().dropItemNaturally(player.getLocation(), MoreMobHeadsLib.addSound( mmh.makeSkulls(MobHeads.valueOf(splitmob[0].toUpperCase()).getTexture().toString(), - mmh.langName.getString(splitmob[0].toLowerCase(), MobHeads.valueOf(splitmob[0].toUpperCase()).getName() + " Head"), number ), EntityType.PIGLIN) ); - } // MobHeads.valueOf(name).getName() + " Head" - break; - case "skeleton": - if(mmh.getConfig().getBoolean("vanilla_heads.skeleton", false)){ - player.getWorld().dropItemNaturally(player.getLocation(), new ItemStack(Material.SKELETON_SKULL)); - }else{ // mmh.langName - player.getWorld().dropItemNaturally(player.getLocation(), MoreMobHeadsLib.addSound( mmh.makeSkulls(MobHeads.valueOf(splitmob[0].toUpperCase()).getTexture().toString(), - mmh.langName.getString(splitmob[0].toLowerCase(), MobHeads.valueOf(splitmob[0].toUpperCase()).getName() + " Head"), number ), EntityType.SKELETON) ); - } // MobHeads.valueOf(name).getName() + " Head" - break; - case "wither_skeleton": - if(mmh.getConfig().getBoolean("vanilla_heads.wither_skeleton", false)){ - player.getWorld().dropItemNaturally(player.getLocation(), new ItemStack(Material.WITHER_SKELETON_SKULL)); - }else{ // mmh.langName - player.getWorld().dropItemNaturally(player.getLocation(), MoreMobHeadsLib.addSound( mmh.makeSkulls(MobHeads.valueOf(splitmob[0].toUpperCase()).getTexture().toString(), - mmh.langName.getString(splitmob[0].toLowerCase(), MobHeads.valueOf(splitmob[0].toUpperCase()).getName() + " Head"), number ), EntityType.WITHER_SKELETON) ); - } // MobHeads.valueOf(name).getName() + " Head" - break; - case "ender_dragon": - if(mmh.getConfig().getBoolean("vanilla_heads.ender_dragon", false)){ - player.getWorld().dropItemNaturally(player.getLocation(), new ItemStack(Material.DRAGON_HEAD)); - }else{ // mmh.langName - player.getWorld().dropItemNaturally(player.getLocation(), MoreMobHeadsLib.addSound( mmh.makeSkulls(MobHeads.valueOf(splitmob[0].toUpperCase()).getTexture().toString(), - mmh.langName.getString(splitmob[0].toLowerCase(), MobHeads.valueOf(splitmob[0].toUpperCase()).getName() + " Head"), number ), EntityType.ENDER_DRAGON) ); - } // MobHeads.valueOf(name).getName() + " Head" - break; - case "cat": - player.getWorld().dropItemNaturally(player.getLocation(), - MoreMobHeadsLib.addSound( mmh.makeSkulls(CatHeads.valueOf(splitmob[1].toUpperCase()).getTexture().toString(), - mmh.langName.getString(splitmob[0].toLowerCase() + "." + splitmob[1].toLowerCase(), CatHeads.valueOf(splitmob[1].toUpperCase()).getName() + " Head"), number ), EntityType.CAT) ); - break; - case "bee": - log("splitmob.length=" + splitmob.length); - if(splitmob.length == 1) { - player.getWorld().dropItemNaturally(player.getLocation(), MoreMobHeadsLib.addSound( mmh.makeSkulls(MobHeads.valueOf(splitmob[0].toUpperCase()).getTexture().toString(), - mmh.langName.getString(splitmob[0].toLowerCase() + ".none", MobHeads.valueOf(splitmob[0].toUpperCase()).getName() + " Head"), number ), EntityType.BEE) ); - }else { - player.getWorld().dropItemNaturally(player.getLocation(), MoreMobHeadsLib.addSound( mmh.makeSkulls( MobHeads.valueOf( mob.toUpperCase().replace(".", "_") ).getTexture().toString(), - mmh.langName.getString(mob.toLowerCase().replace(".", "_"), MobHeads.valueOf(mob.toUpperCase().replace(".", "_")).getName() + " Head"), number ), EntityType.BEE) ); - } - break; - case "villager": // villager type profession, villager profession type - // name = splitmob[0], type = splitmob[1], profession = splitmob[2] - player.getWorld().dropItemNaturally(player.getLocation(), MoreMobHeadsLib.addSound( mmh.makeSkulls(VillagerHeads.valueOf( splitmob[0].toUpperCase() + "_" + splitmob[2].toUpperCase() + "_" + splitmob[1].toUpperCase() ).getTexture().toString(), - mmh.langName.getString( splitmob[0].toLowerCase() + "." + splitmob[1].toLowerCase() + "." + splitmob[2].toLowerCase() - , VillagerHeads.valueOf(splitmob[0].toUpperCase() + "_" + splitmob[2].toUpperCase() + "_" + splitmob[1].toUpperCase()).getName() + " Head"), number ), EntityType.VILLAGER) ); - break; - case "zombie_villager": - player.getWorld().dropItemNaturally(player.getLocation(), MoreMobHeadsLib.addSound( mmh.makeSkulls(ZombieVillagerHeads.valueOf(splitmob[0].toUpperCase() + "_" + splitmob[2].toUpperCase() ).getTexture().toString(), - mmh.langName.getString(splitmob[0].toLowerCase() + "." + splitmob[2].toLowerCase(), ZombieVillagerHeads.valueOf(splitmob[0].toUpperCase() + "_" + splitmob[2].toUpperCase() ).getName() ), number ), EntityType.ZOMBIE_VILLAGER) ); - break; - case "llama": - case "trader_llama": - player.getWorld().dropItemNaturally(player.getLocation(), MoreMobHeadsLib.addSound( mmh.makeSkulls(LlamaHeads.valueOf( splitmob[0].toUpperCase() + "_" + splitmob[1].toUpperCase() ).getTexture().toString(), - mmh.langName.getString(splitmob[0].toLowerCase() + "." + splitmob[1].toLowerCase(), LlamaHeads.valueOf( splitmob[0].toUpperCase() + "_" + splitmob[1].toUpperCase() ).getName()), number ), EntityType.LLAMA) ); - break; - case "horse": - player.getWorld().dropItemNaturally(player.getLocation(), MoreMobHeadsLib.addSound( mmh.makeSkulls(HorseHeads.valueOf( splitmob[0].toUpperCase() + "_" + splitmob[1].toUpperCase() ).getTexture().toString(), - mmh.langName.getString(splitmob[0].toLowerCase() + "." + splitmob[1].toLowerCase(), HorseHeads.valueOf( splitmob[0].toUpperCase() + "_" + splitmob[1].toUpperCase() ).getName()), number ), EntityType.HORSE) ); - break; - case "rabbit": - player.getWorld().dropItemNaturally(player.getLocation(), MoreMobHeadsLib.addSound( mmh.makeSkulls(RabbitHeads.valueOf( splitmob[0].toUpperCase() + "_" + splitmob[1].toUpperCase() ).getTexture().toString(), - mmh.langName.getString(splitmob[0].toLowerCase() + "." + splitmob[1].toLowerCase(), RabbitHeads.valueOf( splitmob[0].toUpperCase() + "_" + splitmob[1].toUpperCase() ).getName()), number ), EntityType.RABBIT) ); - break; - case "sheep": - String sheeptype; - if(splitmob[1].equalsIgnoreCase("jeb_")) { - sheeptype = "jeb_"; - }else { - sheeptype = splitmob[1].toUpperCase(); - } - player.getWorld().dropItemNaturally(player.getLocation(), MoreMobHeadsLib.addSound( mmh.makeSkulls(SheepHeads.valueOf( splitmob[0].toUpperCase() + "_" + sheeptype ).getTexture().toString(), - mmh.langName.getString(splitmob[0].toLowerCase() + "." + splitmob[1].toLowerCase(), SheepHeads.valueOf( splitmob[0].toUpperCase() + "_" + sheeptype ).getName()), number ), EntityType.SHEEP) ); - break; - case "goat": - player.getWorld().dropItemNaturally(player.getLocation(), MoreMobHeadsLib.addSound( mmh.makeSkulls(MobHeads117.valueOf( splitmob[0].toUpperCase() + "_" + splitmob[1].toUpperCase() ).getTexture().toString(), - mmh.langName.getString(splitmob[0].toLowerCase() + "." + splitmob[1].toLowerCase(), MobHeads117.valueOf( splitmob[0].toUpperCase() + "_" + splitmob[1].toUpperCase() ).getName()), number ), EntityType.fromName("goat") ) ); - break; - case "axolotl": - player.getWorld().dropItemNaturally(player.getLocation(), MoreMobHeadsLib.addSound( mmh.makeSkulls(MobHeads117.valueOf( splitmob[0].toUpperCase() + "_" + splitmob[1].toUpperCase() ).getTexture().toString(), - mmh.langName.getString(splitmob[0].toLowerCase() + "." + splitmob[1].toLowerCase(), MobHeads117.valueOf( splitmob[0].toUpperCase() + "_" + splitmob[1].toUpperCase() ).getName()), number ), EntityType.fromName("axolotl") ) ); - break; - case "frog": - player.getWorld().dropItemNaturally(player.getLocation(), MoreMobHeadsLib.addSound( mmh.makeSkulls(MobHeads119.valueOf( splitmob[0].toUpperCase() + "_" + splitmob[1].toUpperCase() ).getTexture().toString(), - mmh.langName.getString(splitmob[0].toLowerCase() + "." + splitmob[1].toLowerCase(), MobHeads119.valueOf( splitmob[0].toUpperCase() + "_" + splitmob[1].toUpperCase() ).getName()), number ), EntityType.fromName("frog") ) ); - break; - case "camel": - player.getWorld().dropItemNaturally(player.getLocation(), MoreMobHeadsLib.addSound( mmh.makeSkulls(MobHeads120.valueOf( splitmob[0].toUpperCase() ).getTexture().toString(), - mmh.langName.getString(splitmob[0].toLowerCase(), MobHeads120.valueOf( splitmob[0].toUpperCase() ).getName()), number ), EntityType.fromName("camel") ) ); - break; - case "sniffer": - player.getWorld().dropItemNaturally(player.getLocation(), MoreMobHeadsLib.addSound( mmh.makeSkulls(MobHeads120.valueOf( splitmob[0].toUpperCase() ).getTexture().toString(), - mmh.langName.getString(splitmob[0].toLowerCase(), MobHeads120.valueOf( splitmob[0].toUpperCase() ).getName()), number ), EntityType.fromName("sniffer") ) ); - break; - case "allay": - case "tadpole": - case "warden": - player.getWorld().dropItemNaturally(player.getLocation(), MoreMobHeadsLib.addSound( mmh.makeSkulls(MobHeads119.valueOf(mob.toUpperCase().replace(".", "_")).getTexture().toString(), - mmh.langName.getString(mob.toLowerCase(), MobHeads119.valueOf(mob.toUpperCase().replace(".", "_")).getName() + " Head"), number ), EntityType.fromName(splitmob[0].toString()) ) ); - break; - case "tropical_fish":// TropicalFishHeads - String fishType = splitmob[1].toUpperCase(); - player.getWorld().dropItemNaturally(player.getLocation(), MoreMobHeadsLib.addSound( mmh.makeSkulls(TropicalFishHeads.valueOf( splitmob[0].toUpperCase() + "_" + fishType ).getTexture().toString(), - mmh.langName.getString(splitmob[0].toLowerCase() + "." + splitmob[1].toLowerCase(), TropicalFishHeads.valueOf( splitmob[0].toUpperCase() + "_" + fishType ).getName()), number ), EntityType.TROPICAL_FISH) ); - break; - default: - player.getWorld().dropItemNaturally(player.getLocation(), MoreMobHeadsLib.addSound( mmh.makeSkulls(MobHeads.valueOf(mob.toUpperCase().replace(".", "_")).getTexture().toString(), - mmh.langName.getString(mob.toLowerCase(), MobHeads.valueOf(mob.toUpperCase().replace(".", "_")).getName() + " Head"), number ), EntityType.fromName(splitmob[0].toString()) ) ); - break; - } - } - } - }else if(!hasPerm){ - sender.sendMessage(ChatColor.YELLOW + mmh.getName() + ChatColor.RED + " " + mmh.get("mmh.message.noperm").toString().replace("", perm) ); - return false; - } - }else { - sender.sendMessage("" + mmh.get("mmh.command.usage") + ", /mmh givemh playername mobname 1"); - return false; - } - - } - // /mmh giveph player - // /mmh giveph player player - // 0 1 2 3 - if(args[0].equalsIgnoreCase("givePH")){ - if( args.length >= 2 ){ - String perm = "moremobheads.give"; - boolean hasPerm = sender.hasPermission(perm); - if(debug){logDebug(sender.getName() + " has the permission " + perm + "=" + hasPerm);} - if( hasPerm ){ - if(debug) {logDebug("CMD GPH args.length=" + args.length);} - if( args.length==2 && sender instanceof Player ){ - mmh.givePlayerHead((Player) sender,args[1]); - if(debug) {logDebug("CMD GPH args1=" + args[1]);} - return true; - }else if( args.length==3){ - Player player = Bukkit.getPlayer(args[1]); - mmh.givePlayerHead(player,args[2]); - if(debug) {logDebug("CMD GPH args1=" + args[1] + ", args2=" +args[2]);} - return true; - }else if( args.length==2 && !(sender instanceof Player) ){ - sender.sendMessage("" + mmh.get("mmh.command.give.console") + "" + mmh.get("mmh.command.usage") + ":" ); - sender.sendMessage("\"/mmh giveph playername 1\" - " + mmh.get("mmh.command.give.playerhead.you") ); - sender.sendMessage("\"/mmh giveph playername playername 1\" - " + mmh.get("mmh.command.give.playerhead.them") ); - return false; - } - }else if( !hasPerm ){ - sender.sendMessage(ChatColor.YELLOW + mmh.getName() + ChatColor.RED + " " + mmh.get("mmh.message.noperm").toString().replace("", perm) ); - return false; - } - }else { - sender.sendMessage("" + mmh.get("mmh.command.usage") + ":" ); - sender.sendMessage("\"/mmh giveph playername 1\" - " + mmh.get("mmh.command.give.playerhead.you") ); - sender.sendMessage("\"/mmh giveph playername playername 1\" - " + mmh.get("mmh.command.give.playerhead.them") ); - return false; + } else if (!(sender instanceof Player)) { + if (debug) { + logDebug("CMD PH Replace End Console -----"); } + sender.sendMessage( + ChatColor.YELLOW + mmh.getName() + ChatColor.RED + " " + mmh.get("mmh.message.noconsole")); return false; - } - // /mmh givebh block - // /mmh givebh player block - // 0 1 2 3 - if(args[0].equalsIgnoreCase("giveBH")){ - if(debug){logDebug("Start GiveBH");} - if(debug){logDebug("Command=" + cmd.getName() + ", arguments=" + Arrays.toString(args));} - if( args.length >= 2 ){ - String perm = "moremobheads.give"; - boolean hasPerm = sender.hasPermission(perm); - if(debug){logDebug(sender.getName() + " has the permission " + perm + "=" + hasPerm);} - if( hasPerm ){ - if(debug) {logDebug("CMD GBH args.length=" + args.length);} - if( args.length==2 && sender instanceof Player ){ - mmh.giveBlockHead((Player) sender,args[1].replace("_", " ")); - if(debug) {logDebug("CMD GBH args1=" + args[1]);} - if(debug){logDebug("End GiveBH True 1");} - return true; - }else if( args.length==3){ - Player player = Bukkit.getPlayer(args[1]); - mmh.giveBlockHead(player,args[2].replace("_", " ")); - if(debug) {logDebug("CMD GBH args1=" + args[1] + ", args2=" +args[2]);} - if(debug){logDebug("End GiveBH True 2");} - return true; - }else if( args.length==2 && !(sender instanceof Player) ){ - sender.sendMessage("" + mmh.get("mmh.command.give.console") + " mmh giveBh "); - if(debug){logDebug("End GiveBH False 1");} - return false; - } - }else if( !hasPerm ){ - sender.sendMessage(ChatColor.YELLOW + mmh.getName() + ChatColor.RED + " " + mmh.get("mmh.message.noperm").toString().replace("", perm) ); - if(debug){logDebug("End GiveBH False 2");} - return false; - } - }else { - sender.sendMessage("" + mmh.get("mmh.command.usage") + ":" ); - sender.sendMessage("\"/mmh givebh \" - " + mmh.get("mmh.command.give.blockhead.you") ); - sender.sendMessage("\"/mmh giveph playername \" - " + mmh.get("mmh.command.give.blockhead.them") ); - if(debug){logDebug("End GiveBH False 3");} - return false; + } else if (!hasPerm) { + if (debug) { + logDebug("CMD PH Replace End !Perm -----"); } - if(debug){logDebug("End GiveBH False 4");} + sender.sendMessage(ChatColor.YELLOW + mmh.getName() + ChatColor.RED + " " + + mmh.get("mmh.message.nopermordisabled").toString().replace("", perm)); return false; } } - return false; + if (args[0].equalsIgnoreCase("fixhead") || args[0].equalsIgnoreCase("fh")) { + String perm = "moremobheads.fixhead"; + boolean hasPerm = sender.hasPermission(perm); + if (debug) { + logDebug(sender.getName() + " has the permission " + perm + "=" + hasPerm); + } + if (sender instanceof Player) { + Player player = (Player) sender; + if (hasPerm) { + if (!args[1].isEmpty()) { + if (args[1].equalsIgnoreCase("name")) { + if (debug) { + logDebug("CMD FH Name Start -----"); + } + // FixHead NBT + ItemStack mainHand = player.getInventory().getItemInMainHand(); + if (mainHand != null) { + if (mainHand.getType().equals(Material.PLAYER_HEAD)) { + String texture = mainHand.getItemMeta().getDisplayName(); + + SkullMeta skullname = (SkullMeta) mainHand.getItemMeta(); + if (skullname.getOwner() != null) { + String name = skullname.getOwner().toString(); + if (debug) { + logDebug("EPIE name=" + name); + } + if (debug) { + logDebug("EPIE lore=" + skullname.getLore()); + } + if (skullname.getOwner().toString().length() >= 40) { + if (debug) { + logDebug("EPIE ownerName.lngth >= 40"); + } + ItemStack itmStack = mainHand; + // SkullMeta skullname = (SkullMeta) + // e.getItem().getItemStack().getItemMeta(); + String daMobName = "null"; + if (skullname != null) { + String isCat = CatHeads + .getNameFromTexture(skullname.getOwner().toString()); + String isHorse = HorseHeads + .getNameFromTexture(skullname.getOwner().toString()); + String isLlama = LlamaHeads + .getNameFromTexture(skullname.getOwner().toString()); + String isMobHead = MobHeads + .getNameFromTexture(skullname.getOwner().toString()); + String isRabbit = RabbitHeads + .getNameFromTexture(skullname.getOwner().toString()); + String isSheep = SheepHeads + .getNameFromTexture(skullname.getOwner().toString()); + String isVillager = VillagerHeads + .getNameFromTexture(skullname.getOwner().toString()); + String isZombieVillager = ZombieVillagerHeads + .getNameFromTexture(skullname.getOwner().toString()); + String isplayerhead = mmh + .isPlayerHead(skullname.getOwner().toString()); + String isblockhead = mmh + .isBlockHead(skullname.getOwner().toString()); + String isblockhead2 = mmh + .isBlockHead2(skullname.getOwner().toString()); + String isblockhead3 = mmh + .isBlockHead3(skullname.getOwner().toString()); + if (isCat != null) { + daMobName = isCat; + } + if (isHorse != null) { + daMobName = isHorse; + } + if (isLlama != null) { + daMobName = isLlama; + } + if (isMobHead != null) { + daMobName = isMobHead; + } + if (isRabbit != null) { + daMobName = isRabbit; + } + if (isSheep != null) { + daMobName = isSheep; + } + if (isVillager != null) { + daMobName = isVillager; + } + if (isZombieVillager != null) { + daMobName = isZombieVillager; + } + if (daMobName == null) { + if (blockHeads != null) { + if (isblockhead != null) { + daMobName = isblockhead; + } + } + if (blockHeads2 != null) { + if (isblockhead2 != null) { + daMobName = isblockhead2; + } + } + if (blockHeads3 != null) { + if (isblockhead3 != null) { + daMobName = isblockhead3; + } + } + if (mmh.playerHeads != null) { + if (isplayerhead != null) { + daMobName = isplayerhead; + } + } + } + ArrayList lore = new ArrayList(); + // log("" + meta.getOwner().toString()); + // String name = + // LlamaHeads.getNameFromTexture(meta.getOwner().toString()); + if (debug) { + logDebug("EPIE mobname from texture=" + daMobName); + } + List skullLore = skullname.getLore(); + if (skullLore != null) { + if (skullLore.toString().contains( ChatColorUtils.setColors( mmh.langName.getString("killedby", "Killed By ") ) ) ) { + lore.addAll(skullname.getLore()); + } + } + if ((skullLore == null) || !skullname.getLore().toString() + .contains(mmh.getName())) { + if (mmh.getConfig().getBoolean("lore.show_plugin_name", true)) { + lore.add(ChatColor.AQUA + "" + mmh.getName()); + } + } + if (daMobName != "null") { + daMobName = mmh.langName.getString( + daMobName.toLowerCase().replace(" ", "."), daMobName); + } else { + daMobName = mmh.langName.getString( + daMobName.toLowerCase().replace(" ", "."), + "404 Name Not Found"); + } + skullname.setLore(lore); + skullname.setDisplayName(daMobName); + itmStack.setItemMeta(skullname); + // fixHeadNBT(skullname.getOwner(), daMobName, lore); + if (debug) { + logDebug("CMD FH Name End -----"); + } + sender.sendMessage("" + mmh.get("mmh.command.fixhead.name")); + // if(debug){logDebug("test3a");} + return true; + } else { + if (debug) { + logDebug("CMD FH Name End Meta Null -----"); + } + return false; + } + } + } + } else { + if (debug) { + logDebug("CMD FH Name End Error -----"); + } + sender.sendMessage("An Error occured."); + return false; + } + } + } + + if (args[1].equalsIgnoreCase("stack")) { + if (debug) { + logDebug("CMD FH Stack Start -----"); + } + // FixHead Stack + ItemStack mainHand = player.getInventory().getItemInMainHand(); + ItemStack offHand = player.getInventory().getItemInOffHand(); + if ((mainHand != null) && (offHand != null)) { + if (mainHand.getType().equals(Material.PLAYER_HEAD) + && offHand.getType().equals(Material.PLAYER_HEAD)) { + ItemStack is = mmh.fixHeadStack(offHand, mainHand); + // is.setAmount(mainHand.getAmount()); + if (is != mainHand) { + player.getInventory().setItemInMainHand(is); + if (debug) { + logDebug("is=" + is.getType()); + } + if (debug) { + logDebug("CMD FH Stack End -----"); + } + sender.sendMessage("" + mmh.get("mmh.command.fixhead.stack.success")); + return true; + } else { + if (debug) { + logDebug("CMD FH Stack End Error -----"); + } + sender.sendMessage("" + mmh.get("mmh.command.fixhead.stack.error")); + return false; + } + } else if (!mainHand.getType().equals(Material.PLAYER_HEAD) + && !offHand.getType().equals(Material.PLAYER_HEAD)) { + if (debug) { + logDebug("CMD FH Stack End Error Main Off -----"); + } + sender.sendMessage("" + mmh.get("mmh.command.fixhead.stack.notph")); + return false; + } else if (!mainHand.getType().equals(Material.PLAYER_HEAD) + && offHand.getType().equals(Material.PLAYER_HEAD)) { + if (debug) { + logDebug("CMD FH Stack End Error Main -----"); + } + sender.sendMessage("" + mmh.get("mmh.command.fixhead.stack.main")); + return false; + } else if (mainHand.getType().equals(Material.PLAYER_HEAD) + && !offHand.getType().equals(Material.PLAYER_HEAD)) { + if (debug) { + logDebug("CMD FH Stack End Error Off -----"); + } + sender.sendMessage("" + mmh.get("mmh.command.fixhead.stack.off")); + return false; + } + } + } + } + + } else if (!hasPerm) { + if (debug) { + logDebug("CMD FH Stack End !Perm -----"); + } + sender.sendMessage(ChatColor.YELLOW + mmh.getName() + ChatColor.RED + " " + + mmh.get("mmh.message.noperm").toString().replace("", perm)); + return false; + } + } + } + if (args[0].equalsIgnoreCase("giveMH")) { + // /mmh giveMH player mob qty + // cmd 0 1 2 3 + if (args.length == 4) { + String perm = "moremobheads.give"; + boolean hasPerm = sender.hasPermission(perm); + if (debug) { + logDebug(sender.getName() + " has the permission " + perm + "=" + hasPerm); + } + if (hasPerm) { + Player player = Bukkit.getPlayer(args[1]); + if (!args[2].isEmpty()) { + String mob = args[2].toLowerCase(); + log("mob=" + mob); + if (!args[3].isEmpty()) { + int number = Integer.parseInt(args[3]); + String[] splitmob = mob.split("\\."); + if (debug) {logDebug("CMD GMH splitmob[0]=" + splitmob[0]);} + switch (splitmob[0]) { + case "creeper_charged": + player.getWorld().dropItemNaturally(player.getLocation(), MoreMobHeadsLib.addSound( + mmh.makeSkulls(MobHeads.valueOf(splitmob[0].toUpperCase()).getTexture().toString(), + mmh.langName.getString(splitmob[0].toLowerCase(), MobHeads.valueOf(splitmob[0].toUpperCase()).getName() + " Head"), number), EntityType.CREEPER) + ); + break; + case "creeper": + if (mmh.getConfig().getBoolean("vanilla_heads.creeper", false)) { + player.getWorld().dropItemNaturally(player.getLocation(), new ItemStack(Material.CREEPER_HEAD)); + } else { // mmh.langName + player.getWorld().dropItemNaturally(player.getLocation(), MoreMobHeadsLib.addSound(mmh.makeSkulls(MobHeads.valueOf(splitmob[0].toUpperCase()).getTexture().toString(), mmh.langName.getString(splitmob[0].toLowerCase(), MobHeads.valueOf(splitmob[0].toUpperCase()).getName() + " Head"), number), EntityType.CREEPER)); + } // MobHeads.valueOf(name).getName() + " + // Head" + break; + case "mushroom_cow": + player.getWorld().dropItemNaturally(player.getLocation(), MoreMobHeadsLib.addSound( + mmh.makeSkulls(MobHeads.valueOf(splitmob[0].toUpperCase() + "_" + splitmob[1].toUpperCase()).getTexture().toString(), + mmh.langName.getString(splitmob[0].toLowerCase() + "." + splitmob[1].toLowerCase(), MobHeads.valueOf(splitmob[0].toUpperCase() + "_" + splitmob[1].toUpperCase()).getName()), number), EntityType.MUSHROOM_COW)); + break; + case "strider_shivering": + player.getWorld().dropItemNaturally(player.getLocation(), MoreMobHeadsLib.addSound( + mmh.makeSkulls(MobHeads.valueOf(splitmob[0].toUpperCase()).getTexture().toString(), + mmh.langName.getString(splitmob[0].toLowerCase(), MobHeads.valueOf(splitmob[0].toUpperCase()).getName() + " Head"), number), EntityType.STRIDER) + ); + break; + case "zombie": + if (mmh.getConfig().getBoolean("vanilla_heads.zombie", false)) { + player.getWorld().dropItemNaturally(player.getLocation(), new ItemStack(Material.ZOMBIE_HEAD)); + } else { // mmh.langName + player.getWorld().dropItemNaturally(player.getLocation(), MoreMobHeadsLib.addSound(mmh.makeSkulls(MobHeads.valueOf(splitmob[0].toUpperCase()).getTexture().toString(), mmh.langName.getString(splitmob[0].toLowerCase(), MobHeads.valueOf(splitmob[0].toUpperCase()).getName() + " Head"), number), EntityType.ZOMBIE)); + } // MobHeads.valueOf(name).getName() + " + // Head" + break; + + case "piglin": + if (mmh.getConfig().getBoolean("vanilla_heads.piglin", false)) { + player.getWorld().dropItemNaturally(player.getLocation(), MoreMobHeadsLib.getVanilla(EntityType.fromName("PIGLIN"))); + } else { // mmh.langName + player.getWorld().dropItemNaturally(player.getLocation(), MoreMobHeadsLib.addSound(mmh.makeSkulls(MobHeads.valueOf(splitmob[0].toUpperCase()).getTexture().toString(), mmh.langName.getString(splitmob[0].toLowerCase(), MobHeads.valueOf(splitmob[0].toUpperCase()).getName() + " Head"), number), EntityType.PIGLIN)); + } // MobHeads.valueOf(name).getName() + " + // Head" + break; + case "skeleton": + if (mmh.getConfig().getBoolean("vanilla_heads.skeleton", false)) { + player.getWorld().dropItemNaturally(player.getLocation(), new ItemStack(Material.SKELETON_SKULL)); + } else { // mmh.langName + player.getWorld().dropItemNaturally(player.getLocation(), MoreMobHeadsLib.addSound(mmh.makeSkulls(MobHeads.valueOf(splitmob[0].toUpperCase()).getTexture().toString(), mmh.langName.getString(splitmob[0].toLowerCase(), MobHeads.valueOf(splitmob[0].toUpperCase()).getName() + " Head"), number), EntityType.SKELETON)); + } // MobHeads.valueOf(name).getName() + " + // Head" + break; + case "wither_skeleton": + if (mmh.getConfig().getBoolean("vanilla_heads.wither_skeleton", false)) { + player.getWorld().dropItemNaturally(player.getLocation(), new ItemStack(Material.WITHER_SKELETON_SKULL)); + } else { // mmh.langName + player.getWorld().dropItemNaturally(player.getLocation(), MoreMobHeadsLib.addSound(mmh.makeSkulls(MobHeads.valueOf(splitmob[0].toUpperCase()).getTexture().toString(), mmh.langName.getString(splitmob[0].toLowerCase(), MobHeads.valueOf(splitmob[0].toUpperCase()).getName() + " Head"), number), EntityType.WITHER_SKELETON)); + } // MobHeads.valueOf(name).getName() + " + // Head" + break; + case "ender_dragon": + if (mmh.getConfig().getBoolean("vanilla_heads.ender_dragon", false)) { + player.getWorld().dropItemNaturally(player.getLocation(), new ItemStack(Material.DRAGON_HEAD)); + } else { // mmh.langName + player.getWorld().dropItemNaturally(player.getLocation(), MoreMobHeadsLib.addSound(mmh.makeSkulls(MobHeads.valueOf(splitmob[0].toUpperCase()).getTexture().toString(), mmh.langName.getString(splitmob[0].toLowerCase(), MobHeads.valueOf(splitmob[0].toUpperCase()).getName() + " Head"), number), EntityType.ENDER_DRAGON)); + } // MobHeads.valueOf(name).getName() + " + // Head" + break; + case "cat": + player.getWorld().dropItemNaturally(player.getLocation(), MoreMobHeadsLib.addSound(mmh.makeSkulls(CatHeads.valueOf(splitmob[1].toUpperCase()).getTexture().toString(), mmh.langName.getString(splitmob[0].toLowerCase() + "." + splitmob[1].toLowerCase(), CatHeads.valueOf(splitmob[1].toUpperCase()).getName() + " Head"), number), EntityType.CAT)); + break; + case "bee": + log("splitmob.length=" + splitmob.length); + if (splitmob.length == 1) { + player.getWorld().dropItemNaturally(player.getLocation(), MoreMobHeadsLib.addSound(mmh.makeSkulls(MobHeads.valueOf(splitmob[0].toUpperCase()).getTexture().toString(), mmh.langName.getString(splitmob[0].toLowerCase() + ".none", MobHeads.valueOf(splitmob[0].toUpperCase()).getName() + " Head"), number), EntityType.BEE)); + } else { + player.getWorld().dropItemNaturally(player.getLocation(), MoreMobHeadsLib.addSound(mmh.makeSkulls(MobHeads.valueOf(mob.toUpperCase().replace(".", "_")).getTexture().toString(), mmh.langName.getString(mob.toLowerCase().replace(".", "_"), MobHeads.valueOf(mob.toUpperCase().replace(".", "_")).getName() + " Head"), number), EntityType.BEE)); + } + break; + case "villager": // villager type profession, + // villager profession type + // name = splitmob[0], type = splitmob[1], + // profession = splitmob[2] + player.getWorld().dropItemNaturally(player.getLocation(), MoreMobHeadsLib.addSound(mmh.makeSkulls(VillagerHeads.valueOf(splitmob[0].toUpperCase() + "_" + splitmob[2].toUpperCase() + "_" + splitmob[1].toUpperCase()).getTexture().toString(), mmh.langName.getString(splitmob[0].toLowerCase() + "." + splitmob[1].toLowerCase() + "." + splitmob[2].toLowerCase(), VillagerHeads.valueOf(splitmob[0].toUpperCase() + "_" + splitmob[2].toUpperCase() + "_" + splitmob[1].toUpperCase()).getName() + " Head"), number), EntityType.VILLAGER)); + break; + case "zombie_villager": + player.getWorld().dropItemNaturally(player.getLocation(), MoreMobHeadsLib.addSound(mmh.makeSkulls(ZombieVillagerHeads.valueOf(splitmob[0].toUpperCase() + "_" + splitmob[1].toUpperCase()).getTexture().toString(), mmh.langName.getString(splitmob[0].toLowerCase() + "." + splitmob[1].toLowerCase(), ZombieVillagerHeads.valueOf(splitmob[0].toUpperCase() + "_" + splitmob[1].toUpperCase()).getName()), number), EntityType.ZOMBIE_VILLAGER)); + break; + case "llama": + case "trader_llama": + player.getWorld().dropItemNaturally(player.getLocation(), MoreMobHeadsLib.addSound(mmh.makeSkulls(LlamaHeads.valueOf(splitmob[0].toUpperCase() + "_" + splitmob[1].toUpperCase()).getTexture().toString(), mmh.langName.getString(splitmob[0].toLowerCase() + "." + splitmob[1].toLowerCase(), LlamaHeads.valueOf(splitmob[0].toUpperCase() + "_" + splitmob[1].toUpperCase()).getName()), number), EntityType.LLAMA)); + break; + case "horse": + player.getWorld().dropItemNaturally(player.getLocation(), MoreMobHeadsLib.addSound(mmh.makeSkulls(HorseHeads.valueOf(splitmob[0].toUpperCase() + "_" + splitmob[1].toUpperCase()).getTexture().toString(), mmh.langName.getString(splitmob[0].toLowerCase() + "." + splitmob[1].toLowerCase(), HorseHeads.valueOf(splitmob[0].toUpperCase() + "_" + splitmob[1].toUpperCase()).getName()), number), EntityType.HORSE)); + break; + case "rabbit": + if( splitmob[1].equalsIgnoreCase("Toast") ) { + player.getWorld().dropItemNaturally(player.getLocation(), MoreMobHeadsLib.addSound( + mmh.makeSkulls(RabbitHeads.valueOf(splitmob[0].toUpperCase() + "_" + StrUtils.toTitleCase( splitmob[1] )).getTexture().toString(), + mmh.langName.getString(splitmob[0].toLowerCase() + "." + splitmob[1].toLowerCase(), RabbitHeads.valueOf(splitmob[0].toUpperCase() + "_" + StrUtils.toTitleCase( splitmob[1] )).getName()), number), EntityType.RABBIT)); + break; + } + player.getWorld().dropItemNaturally(player.getLocation(), MoreMobHeadsLib.addSound( + mmh.makeSkulls(RabbitHeads.valueOf(splitmob[0].toUpperCase() + "_" + splitmob[1].toUpperCase()).getTexture().toString(), + mmh.langName.getString(splitmob[0].toLowerCase() + "." + splitmob[1].toLowerCase(), RabbitHeads.valueOf(splitmob[0].toUpperCase() + "_" + splitmob[1].toUpperCase()).getName()), number), EntityType.RABBIT)); + break; + case "sheep": + String sheeptype; + if (splitmob[1].equalsIgnoreCase("jeb_")) { + sheeptype = "jeb_"; + } else { + sheeptype = splitmob[1].toUpperCase(); + } + player.getWorld().dropItemNaturally(player.getLocation(), MoreMobHeadsLib.addSound(mmh.makeSkulls(SheepHeads.valueOf(splitmob[0].toUpperCase() + "_" + sheeptype).getTexture().toString(), mmh.langName.getString(splitmob[0].toLowerCase() + "." + splitmob[1].toLowerCase(), SheepHeads.valueOf(splitmob[0].toUpperCase() + "_" + sheeptype).getName()), number), EntityType.SHEEP)); + break; + case "goat": + player.getWorld().dropItemNaturally(player.getLocation(), MoreMobHeadsLib.addSound(mmh.makeSkulls(MobHeads117.valueOf(splitmob[0].toUpperCase() + "_" + splitmob[1].toUpperCase()).getTexture().toString(), mmh.langName.getString(splitmob[0].toLowerCase() + "." + splitmob[1].toLowerCase(), MobHeads117.valueOf(splitmob[0].toUpperCase() + "_" + splitmob[1].toUpperCase()).getName()), number), EntityType.fromName("goat"))); + break; + case "axolotl": + player.getWorld().dropItemNaturally(player.getLocation(), MoreMobHeadsLib.addSound(mmh.makeSkulls(MobHeads117.valueOf(splitmob[0].toUpperCase() + "_" + splitmob[1].toUpperCase()).getTexture().toString(), mmh.langName.getString(splitmob[0].toLowerCase() + "." + splitmob[1].toLowerCase(), MobHeads117.valueOf(splitmob[0].toUpperCase() + "_" + splitmob[1].toUpperCase()).getName()), number), EntityType.fromName("axolotl"))); + break; + case "frog": + player.getWorld().dropItemNaturally(player.getLocation(), MoreMobHeadsLib.addSound(mmh.makeSkulls(MobHeads119.valueOf(splitmob[0].toUpperCase() + "_" + splitmob[1].toUpperCase()).getTexture().toString(), mmh.langName.getString(splitmob[0].toLowerCase() + "." + splitmob[1].toLowerCase(), MobHeads119.valueOf(splitmob[0].toUpperCase() + "_" + splitmob[1].toUpperCase()).getName()), number), EntityType.fromName("frog"))); + break; + case "camel": + player.getWorld().dropItemNaturally(player.getLocation(), MoreMobHeadsLib.addSound(mmh.makeSkulls(MobHeads120.valueOf(splitmob[0].toUpperCase()).getTexture().toString(), mmh.langName.getString(splitmob[0].toLowerCase(), MobHeads120.valueOf(splitmob[0].toUpperCase()).getName()), number), EntityType.fromName("camel"))); + break; + case "sniffer": + player.getWorld().dropItemNaturally(player.getLocation(), MoreMobHeadsLib.addSound(mmh.makeSkulls(MobHeads120.valueOf(splitmob[0].toUpperCase()).getTexture().toString(), mmh.langName.getString(splitmob[0].toLowerCase(), MobHeads120.valueOf(splitmob[0].toUpperCase()).getName()), number), EntityType.fromName("sniffer"))); + break; + case "allay": + case "tadpole": + case "warden": + player.getWorld().dropItemNaturally(player.getLocation(), MoreMobHeadsLib.addSound(mmh.makeSkulls(MobHeads119.valueOf(mob.toUpperCase().replace(".", "_")).getTexture().toString(), mmh.langName.getString(mob.toLowerCase(), MobHeads119.valueOf(mob.toUpperCase().replace(".", "_")).getName() + " Head"), number), EntityType.fromName(splitmob[0].toString()))); + break; + case "tropical_fish":// TropicalFishHeads + String fishType = splitmob[1].toUpperCase(); + log("splitmob[0]=" + splitmob[0]); + log("splitmob[1]=" + splitmob[1]); + log("fishType=" + fishType); + player.getWorld().dropItemNaturally(player.getLocation(), MoreMobHeadsLib.addSound(mmh.makeSkulls(TropicalFishHeads.valueOf(splitmob[0].toUpperCase() + "_" + fishType.toUpperCase()).getTexture().toString(), mmh.langName.getString(splitmob[0].toLowerCase() + "." + splitmob[1].toLowerCase(), TropicalFishHeads.valueOf(splitmob[0].toUpperCase() + "_" + fishType.toUpperCase()).getName()), number), EntityType.TROPICAL_FISH)); + break; + default: + player.getWorld().dropItemNaturally(player.getLocation(), MoreMobHeadsLib.addSound( + mmh.makeSkulls(MobHeads.valueOf(mob.toUpperCase().replace(".", "_")).getTexture().toString(), + mmh.langName.getString(mob.toLowerCase(), MobHeads.valueOf(mob.toUpperCase().replace(".", "_")).getName() + " Head"), number), EntityType.fromName(splitmob[0].toString()))); + break; + } + } + } + } else if (!hasPerm) { + sender.sendMessage(ChatColor.YELLOW + mmh.getName() + ChatColor.RED + " " + + mmh.get("mmh.message.noperm").toString().replace("", perm)); + return false; + } + } else { + sender.sendMessage("" + mmh.get("mmh.command.usage") + ", /mmh givemh playername mobname 1"); + return false; + } + + } + // /mmh giveph player + // /mmh giveph player player + // 0 1 2 3 + if (args[0].equalsIgnoreCase("givePH")) { + if (args.length >= 2) { + String perm = "moremobheads.give"; + boolean hasPerm = sender.hasPermission(perm); + if (debug) { + logDebug(sender.getName() + " has the permission " + perm + "=" + hasPerm); + } + if (hasPerm) { + if (debug) { + logDebug("CMD GPH args.length=" + args.length); + } + if ((args.length == 2) && (sender instanceof Player)) { + mmh.givePlayerHead((Player) sender, args[1]); + if (debug) { + logDebug("CMD GPH args1=" + args[1]); + } + return true; + } else if (args.length == 3) { + Player player = Bukkit.getPlayer(args[1]); + mmh.givePlayerHead(player, args[2]); + if (debug) { + logDebug("CMD GPH args1=" + args[1] + ", args2=" + args[2]); + } + return true; + } else if ((args.length == 2) && !(sender instanceof Player)) { + sender.sendMessage( + "" + mmh.get("mmh.command.give.console") + "" + mmh.get("mmh.command.usage") + ":"); + sender.sendMessage( + "\"/mmh giveph playername 1\" - " + mmh.get("mmh.command.give.playerhead.you")); + sender.sendMessage("\"/mmh giveph playername playername 1\" - " + + mmh.get("mmh.command.give.playerhead.them")); + return false; + } + } else if (!hasPerm) { + sender.sendMessage(ChatColor.YELLOW + mmh.getName() + ChatColor.RED + " " + + mmh.get("mmh.message.noperm").toString().replace("", perm)); + return false; + } + } else { + sender.sendMessage("" + mmh.get("mmh.command.usage") + ":"); + sender.sendMessage("\"/mmh giveph playername 1\" - " + mmh.get("mmh.command.give.playerhead.you")); + sender.sendMessage( + "\"/mmh giveph playername playername 1\" - " + mmh.get("mmh.command.give.playerhead.them")); + return false; + } + return false; + } + // /mmh givebh block + // /mmh givebh player block + // 0 1 2 3 + if (args[0].equalsIgnoreCase("giveBH")) { + if (debug) { + logDebug("Start GiveBH"); + } + if (debug) { + logDebug("Command=" + cmd.getName() + ", arguments=" + Arrays.toString(args)); + } + if (args.length >= 2) { + String perm = "moremobheads.give"; + boolean hasPerm = sender.hasPermission(perm); + if (debug) { + logDebug(sender.getName() + " has the permission " + perm + "=" + hasPerm); + } + if (hasPerm) { + if (debug) { + logDebug("CMD GBH args.length=" + args.length); + } + if ((args.length == 2) && (sender instanceof Player)) { + mmh.giveBlockHead((Player) sender, args[1].replace("_", " ")); + if (debug) { + logDebug("CMD GBH args1=" + args[1]); + } + if (debug) { + logDebug("End GiveBH True 1"); + } + return true; + } else if (args.length == 3) { + Player player = Bukkit.getPlayer(args[1]); + mmh.giveBlockHead(player, args[2].replace("_", " ")); + if (debug) { + logDebug("CMD GBH args1=" + args[1] + ", args2=" + args[2]); + } + if (debug) { + logDebug("End GiveBH True 2"); + } + return true; + } else if ((args.length == 2) && !(sender instanceof Player)) { + sender.sendMessage( + "" + mmh.get("mmh.command.give.console") + " mmh giveBh "); + if (debug) { + logDebug("End GiveBH False 1"); + } + return false; + } + } else if (!hasPerm) { + sender.sendMessage(ChatColor.YELLOW + mmh.getName() + ChatColor.RED + " " + + mmh.get("mmh.message.noperm").toString().replace("", perm)); + if (debug) { + logDebug("End GiveBH False 2"); + } + return false; + } + } else { + sender.sendMessage("" + mmh.get("mmh.command.usage") + ":"); + sender.sendMessage("\"/mmh givebh \" - " + mmh.get("mmh.command.give.blockhead.you")); + sender.sendMessage( + "\"/mmh giveph playername \" - " + mmh.get("mmh.command.give.blockhead.them")); + if (debug) { + logDebug("End GiveBH False 3"); + } + return false; + } + if (debug) { + logDebug("End GiveBH False 4"); + } + return false; + } + if (args[0].equalsIgnoreCase("dev")) { + if (sender instanceof Player) { + Player player = (Player) sender; + if (player.getName().equalsIgnoreCase("JoelGodOfWar") + || player.getName().equalsIgnoreCase("JoelYahwehOfWar")) { + mmh.isDev = !mmh.isDev; + player.sendMessage("You have toggled isDev to " + mmh.isDev); + return true; + } else { + player.sendMessage("You are not the developer."); + return false; + } + } + } + } + return false; } - - @SuppressWarnings("static-access") - public List onTabComplete(CommandSender sender, Command command, String alias, String[] args) { // TODO: Tab Complete + + @Override + @SuppressWarnings("static-access") + public List onTabComplete(CommandSender sender, Command command, String alias, String[] args) { // TODO: Tab + // Complete if (command.getName().equalsIgnoreCase("mmh")) { - List autoCompletes = new ArrayList<>(); //create a new string list for tab completion + List autoCompletes = new ArrayList<>(); // create a new string list for tab completion if (args.length == 1) { // reload, toggledebug, playerheads, customtrader, headfix autoCompletes.add("reload"); autoCompletes.add("toggledebug"); @@ -2570,168 +3486,171 @@ public class EventHandler_1_20_R1 implements CommandExecutor, TabCompleter , Lis autoCompletes.add("display"); return autoCompletes; // then return the list } - if(args.length > 1) { - if( args[0].equalsIgnoreCase("display") && args[1].isEmpty() ) { + if (args.length > 1) { + if (args[0].equalsIgnoreCase("display") && args[1].isEmpty()) { autoCompletes.add("permissions"); autoCompletes.add("variables"); return autoCompletes; // then return the list - }else if( args[0].equalsIgnoreCase("display") && args[1].equalsIgnoreCase("permissions") ) { - if( args[1].equalsIgnoreCase("permissions") ) { + } else if (args[0].equalsIgnoreCase("display") && args[1].equalsIgnoreCase("permissions")) { + if (args[1].equalsIgnoreCase("permissions")) { return null; } } - if( args[0].equalsIgnoreCase("fixhead") || args[0].equalsIgnoreCase("fh") && args[1].isEmpty() ) { + if (args[0].equalsIgnoreCase("fixhead") || (args[0].equalsIgnoreCase("fh") && args[1].isEmpty())) { autoCompletes.add("name"); autoCompletes.add("stack"); return autoCompletes; // then return the list } - if( args[0].equalsIgnoreCase("playerheads") || args[0].equalsIgnoreCase("ph") && args[1].isEmpty() ) { + if (args[0].equalsIgnoreCase("playerheads") || (args[0].equalsIgnoreCase("ph") && args[1].isEmpty())) { autoCompletes.add("add"); autoCompletes.add("remove"); autoCompletes.add("replace"); return autoCompletes; // then return the list - }else if( (args[0].equalsIgnoreCase("playerheads") || args[0].equalsIgnoreCase("ph")) && (args[1].equalsIgnoreCase("remove") || args[1].equalsIgnoreCase("replace")) ) { - if( args[1].equalsIgnoreCase("remove") ) { + } else if ((args[0].equalsIgnoreCase("playerheads") || args[0].equalsIgnoreCase("ph")) + && (args[1].equalsIgnoreCase("remove") || args[1].equalsIgnoreCase("replace"))) { + if (args[1].equalsIgnoreCase("remove")) { autoCompletes.add("0"); return autoCompletes; // then return the list } - if( args[1].equalsIgnoreCase("replace") ) { + if (args[1].equalsIgnoreCase("replace")) { autoCompletes.add("0"); return autoCompletes; // then return the list } } - if( args[0].equalsIgnoreCase("customtrader") || args[0].equalsIgnoreCase("ct") && args[1].isEmpty() ) { + if (args[0].equalsIgnoreCase("customtrader") || (args[0].equalsIgnoreCase("ct") && args[1].isEmpty())) { autoCompletes.add("add"); autoCompletes.add("remove"); autoCompletes.add("replace"); return autoCompletes; // then return the list - }else if( (args[0].equalsIgnoreCase("customtrader") || args[0].equalsIgnoreCase("ct")) && (args[1].equalsIgnoreCase("remove") || args[1].equalsIgnoreCase("replace")) ) { - if( args[1].equalsIgnoreCase("remove") ) { + } else if ((args[0].equalsIgnoreCase("customtrader") || args[0].equalsIgnoreCase("ct")) + && (args[1].equalsIgnoreCase("remove") || args[1].equalsIgnoreCase("replace"))) { + if (args[1].equalsIgnoreCase("remove")) { autoCompletes.add("0"); return autoCompletes; // then return the list } - if( args[1].equalsIgnoreCase("replace") ) { + if (args[1].equalsIgnoreCase("replace")) { autoCompletes.add("0"); return autoCompletes; // then return the list } } - if( args[0].equalsIgnoreCase("givebh") ) { - if( args.length < 2 ) { + if (args[0].equalsIgnoreCase("givebh")) { + if (args.length < 2) { // /mmh giveph block // /mmh giveph @p block - // /cmd 0 1 2 + // /cmd 0 1 2 // return null to list all players. return null; } - if( args.length > 2 ) { - for(int i = 1; i < blockHeads.getInt("blocks.number"); ++i) { + if (args.length > 2) { + for (int i = 1; i < blockHeads.getInt("blocks.number"); ++i) { ItemStack stack = blockHeads.getItemStack("blocks.block_" + i + ".itemstack"); String name = stack.getItemMeta().getDisplayName().replace(" ", "_"); - autoCompletes.add( ChatColor.stripColor( name ) ); + autoCompletes.add(ChatColor.stripColor(name)); } - if(Double.parseDouble(StrUtils.Left(mmh.getMCVersion(), 4)) >= 1.16) { - for(int i = 1; i < blockHeads2.getInt("blocks.number"); ++i) { + if (Double.parseDouble(StrUtils.Left(mmh.getMCVersion(), 4)) >= 1.16) { + for (int i = 1; i < blockHeads2.getInt("blocks.number"); ++i) { ItemStack stack = blockHeads2.getItemStack("blocks.block_" + i + ".itemstack"); String name = stack.getItemMeta().getDisplayName().replace(" ", "_"); - autoCompletes.add( ChatColor.stripColor( name ) ); + autoCompletes.add(ChatColor.stripColor(name)); } } - if(Double.parseDouble(StrUtils.Left(mmh.getMCVersion(), 4)) >= 1.17) { - for(int i = 1; i < blockHeads3.getInt("blocks.number"); ++i) { + if (Double.parseDouble(StrUtils.Left(mmh.getMCVersion(), 4)) >= 1.17) { + for (int i = 1; i < blockHeads3.getInt("blocks.number"); ++i) { ItemStack stack = blockHeads3.getItemStack("blocks.block_" + i + ".itemstack"); String name = stack.getItemMeta().getDisplayName().replace(" ", "_"); - autoCompletes.add( ChatColor.stripColor( name ) ); + autoCompletes.add(ChatColor.stripColor(name)); } } return autoCompletes; } } - if( args[0].equalsIgnoreCase("giveph") ) { - //return null; - if( args.length < 2 ) { + if (args[0].equalsIgnoreCase("giveph")) { + // return null; + if (args.length < 2) { // /mmh giveph @p @P - // /cmd 0 1 2 + // /cmd 0 1 2 // return null to list all players. return null; } - if( args.length == 2 ) { + if (args.length == 2) { // /mmh giveph @p @P - // /cmd 0 1 2 + // /cmd 0 1 2 // return null to list all players. return null; } - + } - if( args[0].equalsIgnoreCase("givemh") ) { - if( args.length < 2 ) { + if (args[0].equalsIgnoreCase("givemh")) { + if (args.length < 2) { // /mmh give @p - // /cmd 0 1 + // /cmd 0 1 // return null to list all players. return null; - }else if( args.length > 2 ) { - if(debug) {mmh.logDebug("TC arg1!null args.length=" + args.length);} - if( args.length == 3 ) { - + } else if (args.length > 2) { + if (debug) { + mmh.logDebug("TC arg1!null args.length=" + args.length); + } + if (args.length == 3) { + // /mmh give @p moblist # - // /cmd 0 1 2 3 - for(String key : chanceConfig.getConfigurationSection("chance_percent").getKeys(true)) { - //System.out.println(key); - autoCompletes.add(key); - //System.out.println(key); - if(key.equalsIgnoreCase("wolf")) { - autoCompletes.add("wolf.angry"); - }else if(key.equalsIgnoreCase("wither")) { - autoCompletes.add("wither.1"); - autoCompletes.add("wither.2"); - autoCompletes.add("wither.3"); - autoCompletes.add("wither.4"); - autoCompletes.remove(autoCompletes.indexOf("wither")); - }else if(key.equalsIgnoreCase("zombie_villager")) { - autoCompletes.add("zombie_villager.armorer"); - autoCompletes.add("zombie_villager.butcher"); - autoCompletes.add("zombie_villager.cartographer"); - autoCompletes.add("zombie_villager.cleric"); - autoCompletes.add("zombie_villager.farmer"); - autoCompletes.add("zombie_villager.fisherman"); - autoCompletes.add("zombie_villager.fletcher"); - autoCompletes.add("zombie_villager.leatherworker"); - autoCompletes.add("zombie_villager.librarian"); - autoCompletes.add("zombie_villager.mason"); - autoCompletes.add("zombie_villager.nitwit"); - autoCompletes.add("zombie_villager.none"); - autoCompletes.add("zombie_villager.shepherd"); - autoCompletes.add("zombie_villager.toolsmith"); - autoCompletes.add("zombie_villager.weaponsmith"); - autoCompletes.remove(autoCompletes.indexOf("zombie_villager")); - } - } - autoCompletes.remove(autoCompletes.indexOf("axolotl")); - autoCompletes.remove(autoCompletes.indexOf("bee.chance_percent")); - autoCompletes.remove(autoCompletes.indexOf("cat")); - autoCompletes.remove(autoCompletes.indexOf("fox")); - autoCompletes.remove(autoCompletes.indexOf("goat")); - autoCompletes.remove(autoCompletes.indexOf("horse")); - autoCompletes.remove(autoCompletes.indexOf("llama")); - autoCompletes.remove(autoCompletes.indexOf("panda")); - autoCompletes.remove(autoCompletes.indexOf("parrot")); - autoCompletes.remove(autoCompletes.indexOf("rabbit")); - autoCompletes.remove(autoCompletes.indexOf("sheep")); - autoCompletes.remove(autoCompletes.indexOf("trader_llama")); - autoCompletes.remove(autoCompletes.indexOf("mushroom_cow")); - autoCompletes.remove(autoCompletes.indexOf("tropical_fish")); - autoCompletes.remove(autoCompletes.indexOf("villager")); - autoCompletes.remove(autoCompletes.indexOf("villager.desert")); - autoCompletes.remove(autoCompletes.indexOf("villager.jungle")); - autoCompletes.remove(autoCompletes.indexOf("villager.plains")); - autoCompletes.remove(autoCompletes.indexOf("villager.savanna")); - autoCompletes.remove(autoCompletes.indexOf("villager.snow")); - autoCompletes.remove(autoCompletes.indexOf("villager.swamp")); - autoCompletes.remove(autoCompletes.indexOf("villager.taiga")); - autoCompletes.remove(autoCompletes.indexOf("frog")); - - return autoCompletes; - }else if( args.length == 4 ) { + // /cmd 0 1 2 3 + for (String key : chanceConfig.getConfigurationSection("chance_percent").getKeys(true)) { + // System.out.println(key); + autoCompletes.add(key); + // System.out.println(key); + if (key.equalsIgnoreCase("wolf")) { + autoCompletes.add("wolf.angry"); + } else if (key.equalsIgnoreCase("wither")) { + autoCompletes.add("wither.normal"); + autoCompletes.add("wither.projectile"); + autoCompletes.add("wither.blue_projectile"); + autoCompletes.remove(autoCompletes.indexOf("wither")); + } else if (key.equalsIgnoreCase("zombie_villager")) { + autoCompletes.add("zombie_villager.armorer"); + autoCompletes.add("zombie_villager.butcher"); + autoCompletes.add("zombie_villager.cartographer"); + autoCompletes.add("zombie_villager.cleric"); + autoCompletes.add("zombie_villager.farmer"); + autoCompletes.add("zombie_villager.fisherman"); + autoCompletes.add("zombie_villager.fletcher"); + autoCompletes.add("zombie_villager.leatherworker"); + autoCompletes.add("zombie_villager.librarian"); + autoCompletes.add("zombie_villager.mason"); + autoCompletes.add("zombie_villager.nitwit"); + autoCompletes.add("zombie_villager.none"); + autoCompletes.add("zombie_villager.shepherd"); + autoCompletes.add("zombie_villager.toolsmith"); + autoCompletes.add("zombie_villager.weaponsmith"); + autoCompletes.remove(autoCompletes.indexOf("zombie_villager")); + } + } + autoCompletes.remove(autoCompletes.indexOf("axolotl")); + autoCompletes.remove(autoCompletes.indexOf("bee.chance_percent")); + autoCompletes.remove(autoCompletes.indexOf("cat")); + autoCompletes.remove(autoCompletes.indexOf("fox")); + autoCompletes.remove(autoCompletes.indexOf("goat")); + autoCompletes.remove(autoCompletes.indexOf("horse")); + autoCompletes.remove(autoCompletes.indexOf("llama")); + autoCompletes.remove(autoCompletes.indexOf("panda")); + autoCompletes.remove(autoCompletes.indexOf("parrot")); + autoCompletes.remove(autoCompletes.indexOf("rabbit")); + autoCompletes.remove(autoCompletes.indexOf("sheep")); + autoCompletes.remove(autoCompletes.indexOf("trader_llama")); + autoCompletes.remove(autoCompletes.indexOf("mushroom_cow")); + autoCompletes.remove(autoCompletes.indexOf("tropical_fish")); + autoCompletes.remove(autoCompletes.indexOf("villager")); + autoCompletes.remove(autoCompletes.indexOf("villager.desert")); + autoCompletes.remove(autoCompletes.indexOf("villager.jungle")); + autoCompletes.remove(autoCompletes.indexOf("villager.plains")); + autoCompletes.remove(autoCompletes.indexOf("villager.savanna")); + autoCompletes.remove(autoCompletes.indexOf("villager.snow")); + autoCompletes.remove(autoCompletes.indexOf("villager.swamp")); + autoCompletes.remove(autoCompletes.indexOf("villager.taiga")); + autoCompletes.remove(autoCompletes.indexOf("frog")); + + return autoCompletes; + } else if (args.length == 4) { autoCompletes.add("1"); return autoCompletes; } @@ -2741,128 +3660,135 @@ public class EventHandler_1_20_R1 implements CommandExecutor, TabCompleter , Lis } return null; } - - private void log(String msg) { - mmh.log(msg); - } - private void logDebug(String msg) { - mmh.logDebug(msg); - } - - public boolean coinFlip() { - return Math.random() < 0.5; - } - - @EventHandler - public void onStriderShiver(StriderTemperatureChangeEvent event){ - Strider strider = event.getEntity(); - PersistentDataContainer pdc = strider.getPersistentDataContainer(); - if (event.isShivering()) { - pdc.set(mmh.SHIVERING_KEY, PersistentDataType.STRING, "true"); - }else { - pdc.set(mmh.SHIVERING_KEY, PersistentDataType.STRING, "false"); - } + + private void log(String msg) { + mmh.log(msg); } - - public void announceBeheading(Entity entity, String entityName2, Player player, boolean display) { - UUID damagingPlayerUUID = player != null ? player.getUniqueId() : null; - ItemStack damagingWeapon = mmh.playerWeapons.get(damagingPlayerUUID); - String killerName = player.getDisplayName(); + + private void logDebug(String msg) { + mmh.logDebug(msg); + } + + public boolean coinFlip() { + Random random = new Random(); + return random.nextDouble() < 0.5; + } + + @EventHandler + public void onStriderShiver(StriderTemperatureChangeEvent event) { + Strider strider = event.getEntity(); + PersistentDataContainer pdc = strider.getPersistentDataContainer(); + if (event.isShivering()) { + pdc.set(mmh.SHIVERING_KEY, PersistentDataType.STRING, "true"); + } else { + pdc.set(mmh.SHIVERING_KEY, PersistentDataType.STRING, "false"); + } + } + + public void announceBeheading(Entity entity, String entityName2, Player player, boolean display) { + UUID damagingPlayerUUID = player != null ? player.getUniqueId() : null; + ItemStack damagingWeapon = mmh.playerWeapons.get(damagingPlayerUUID); + String killerName = player.getDisplayName(); String entityName = entityName2; - if(display){ + if (display) { killerName = player.getDisplayName(); entityName = entityName2; - }else { + } else { killerName = player.getName(); entityName = entity.getName(); } - if (damagingPlayerUUID != null && damagingWeapon != null) { - Player damagingPlayer = Bukkit.getPlayer(damagingPlayerUUID); - if (damagingPlayer != null) { - String weaponName = damagingWeapon.getItemMeta().getDisplayName(); - if(!damagingWeapon.getItemMeta().hasDisplayName()) { - weaponName = damagingWeapon.getType().name(); - } - int randomIndex = (int) (Math.random() * mmh.beheadingMessages.getConfigurationSection("messages").getKeys(false).size()) + 1; - String announcement = mmh.beheadingMessages.getString("messages.message_" + randomIndex, " beheaded with .") - .replace("", killerName).replace("", entityName).replace("", weaponName); - //log(Ansi.GREEN + "announcement=" + ChatColorUtils.setColors( announcement ) + Ansi.RESET); - Bukkit.broadcastMessage( ChatColorUtils.setColors( announcement ) ); - } - }else if(damagingPlayerUUID != null && damagingWeapon == null) { // Bare Hands? - String weaponName = "Bare Hands"; - int randomIndex = (int) (Math.random() * mmh.beheadingMessages.getConfigurationSection("messages").getKeys(false).size()) + 1; - String announcement = mmh.beheadingMessages.getString("messages.message_" + randomIndex, " beheaded with .") - .replace("", killerName).replace("", entityName).replace("", weaponName); - //log(Ansi.GREEN + "announcement=" + ChatColorUtils.setColors( announcement ) + Ansi.RESET); - Bukkit.broadcastMessage( ChatColorUtils.setColors( announcement ) ); - } + if ((damagingPlayerUUID != null) && (damagingWeapon != null)) { + Player damagingPlayer = Bukkit.getPlayer(damagingPlayerUUID); + if (damagingPlayer != null) { + String weaponName = damagingWeapon.getItemMeta().getDisplayName(); + if (!damagingWeapon.getItemMeta().hasDisplayName()) { + weaponName = damagingWeapon.getType().name(); + } + int randomIndex = (int) (Math.random() * mmh.beheadingMessages.getConfigurationSection("messages").getKeys(false).size()) + 1; + String announcement = mmh.beheadingMessages.getString("messages.message_" + randomIndex, "%killerName% beheaded %entityName% with %weaponName%.") + .replace("%killerName%", killerName).replace("%entityName%", entityName).replace("%weaponName%", weaponName); - mmh.playerWeapons.remove(damagingPlayerUUID); - } - - //public class EquipmentSlotResolver { + Bukkit.broadcastMessage(ChatColorUtils.setColors(announcement)); + } + } else if ((damagingPlayerUUID != null) && (damagingWeapon == null)) { // Bare Hands? + String weaponName = "Bare Hands"; + int randomIndex = (int) (Math.random() * mmh.beheadingMessages.getConfigurationSection("messages").getKeys(false).size()) + 1; + String announcement = mmh.beheadingMessages.getString("messages.message_" + randomIndex, "%killerName% beheaded %entityName% with %weaponName%.") + .replace("%killerName%", killerName).replace("%entityName%", entityName).replace("%weaponName%", weaponName); - public Optional resolveDamagingWeapon(PlayerInventory playerInventory, DamageCause damageCause) { - if(debug){mmh.logDebug("DamageCause=" + damageCause.toString());} - switch (damageCause) { - case ENTITY_ATTACK: - // Check if the player is holding any item in the main hand - ItemStack mainHandItem = playerInventory.getItemInMainHand(); - if(debug){mmh.logDebug("mainHandItem=" + mainHandItem.getType().toString());} - if (!mainHandItem.getType().equals(Material.AIR)) { - return Optional.of(mainHandItem); - } - break; - case PROJECTILE: - // Ranged damage - Optional bowItem = getWeaponItem(playerInventory, Material.BOW); - if (bowItem.isPresent()) { - return bowItem; - } - Optional crossbowItem = getWeaponItem(playerInventory, Material.CROSSBOW); - if (crossbowItem.isPresent()) { - return crossbowItem; - } - Optional tridentItem = getWeaponItem(playerInventory, Material.TRIDENT); - if (tridentItem.isPresent()) { - return tridentItem; - } - Optional snowItem = getWeaponItem(playerInventory, Material.SNOWBALL); - if (snowItem.isPresent()) { - return snowItem; - } - Optional eggItem = getWeaponItem(playerInventory, Material.EGG); - if (eggItem.isPresent()) { - return eggItem; - } - break; - case MAGIC: - // Potion - return getWeaponItem(playerInventory, Material.SPLASH_POTION); - case ENTITY_EXPLOSION: - return Optional.of(new ItemStack(Material.TNT)); - - default: - break; - } + Bukkit.broadcastMessage(ChatColorUtils.setColors(announcement)); - return Optional.empty(); - } + } - private Optional getWeaponItem(PlayerInventory playerInventory, Material material) { - ItemStack mainHandItem = playerInventory.getItemInMainHand(); - ItemStack offHandItem = playerInventory.getItemInOffHand(); + mmh.playerWeapons.remove(damagingPlayerUUID); + } - if (mainHandItem.getType() == material) { - return Optional.of(mainHandItem); - } else if (offHandItem.getType() == material) { - return Optional.of(offHandItem); - } + // public class EquipmentSlotResolver { + + public Optional resolveDamagingWeapon(PlayerInventory playerInventory, DamageCause damageCause) { + if (debug) { + mmh.logDebug("DamageCause=" + damageCause.toString()); + } + switch (damageCause) { + case ENTITY_ATTACK: + // Check if the player is holding any item in the main hand + ItemStack mainHandItem = playerInventory.getItemInMainHand(); + if (debug) { + mmh.logDebug("mainHandItem=" + mainHandItem.getType().toString()); + } + if (!mainHandItem.getType().equals(Material.AIR)) { + return Optional.of(mainHandItem); + } + break; + case PROJECTILE: + // Ranged damage + Optional bowItem = getWeaponItem(playerInventory, Material.BOW); + if (bowItem.isPresent()) { + return bowItem; + } + Optional crossbowItem = getWeaponItem(playerInventory, Material.CROSSBOW); + if (crossbowItem.isPresent()) { + return crossbowItem; + } + Optional tridentItem = getWeaponItem(playerInventory, Material.TRIDENT); + if (tridentItem.isPresent()) { + return tridentItem; + } + Optional snowItem = getWeaponItem(playerInventory, Material.SNOWBALL); + if (snowItem.isPresent()) { + return snowItem; + } + Optional eggItem = getWeaponItem(playerInventory, Material.EGG); + if (eggItem.isPresent()) { + return eggItem; + } + break; + case MAGIC: + // Potion + return getWeaponItem(playerInventory, Material.SPLASH_POTION); + case ENTITY_EXPLOSION: + return Optional.of(new ItemStack(Material.TNT)); + + default: + break; + } + + return Optional.empty(); + } + + private Optional getWeaponItem(PlayerInventory playerInventory, Material material) { + ItemStack mainHandItem = playerInventory.getItemInMainHand(); + ItemStack offHandItem = playerInventory.getItemInOffHand(); + + if (mainHandItem.getType() == material) { + return Optional.of(mainHandItem); + } else if (offHandItem.getType() == material) { + return Optional.of(offHandItem); + } + + return Optional.empty(); + } + // } - return Optional.empty(); - } - //} - } \ No newline at end of file diff --git a/src/com/github/joelgodofwar/mmh/util/ChatColorUtils.java b/src/com/github/joelgodofwar/mmh/util/ChatColorUtils.java index bce39d4..ba46753 100644 --- a/src/com/github/joelgodofwar/mmh/util/ChatColorUtils.java +++ b/src/com/github/joelgodofwar/mmh/util/ChatColorUtils.java @@ -1,5 +1,8 @@ package com.github.joelgodofwar.mmh.util; +import java.util.regex.Matcher; +import java.util.regex.Pattern; + import org.bukkit.ChatColor; public class ChatColorUtils @@ -52,36 +55,35 @@ public class ChatColorUtils .replace("", "" + ChatColor.ITALIC).replace("", "" + ChatColor.RESET); return s; } - public static String setColors(String s) - { - s = s.replace("&0", ChatColor.BLACK.toString() ) .replace("&1", ChatColor.DARK_BLUE.toString() ) - .replace("&2", ChatColor.DARK_GREEN.toString() ) .replace("&3", ChatColor.DARK_AQUA.toString() ) - .replace("&4", ChatColor.DARK_RED.toString() ) .replace("&5", ChatColor.DARK_PURPLE.toString() ) - .replace("&6", ChatColor.GOLD.toString() ) .replace("&7", ChatColor.GRAY.toString() ) - .replace("&8", ChatColor.DARK_GRAY.toString() ) .replace("&9", ChatColor.BLUE.toString() ) - .replace("&a", ChatColor.GREEN.toString() ) .replace("&b", ChatColor.AQUA.toString() ) - .replace("&c", ChatColor.RED.toString() ) .replace("&d", ChatColor.LIGHT_PURPLE.toString() ) - .replace("&e", ChatColor.YELLOW.toString() ) .replace("&f", ChatColor.WHITE.toString() ) - .replace("&k", ChatColor.MAGIC.toString() ) .replace("&l", ChatColor.BOLD.toString() ) - .replace("&m", ChatColor.STRIKETHROUGH.toString() ) .replace("&n", ChatColor.UNDERLINE.toString() ) - .replace("&o", ChatColor.ITALIC.toString() ) .replace("&r", ChatColor.RESET.toString() ) - .replace("&A", ChatColor.GREEN.toString() ) .replace("&B", ChatColor.AQUA.toString() ) - .replace("&C", ChatColor.RED.toString() ) .replace("&D", ChatColor.LIGHT_PURPLE.toString() ) - .replace("&E", ChatColor.YELLOW.toString() ) .replace("&F", ChatColor.WHITE.toString() ) - .replace("&K", ChatColor.MAGIC.toString() ) .replace("&L", ChatColor.BOLD.toString() ) - .replace("&M", ChatColor.STRIKETHROUGH.toString() ) .replace("&N", ChatColor.UNDERLINE.toString() ) - .replace("&O", ChatColor.ITALIC.toString() ) .replace("&R", ChatColor.RESET.toString() ) - .replace("", ChatColor.BLACK.toString() ) .replace("", ChatColor.DARK_BLUE.toString() ) - .replace("", ChatColor.DARK_GREEN.toString() ) .replace("", ChatColor.DARK_AQUA.toString() ) - .replace("", ChatColor.DARK_RED.toString() ) .replace("", ChatColor.DARK_PURPLE.toString() ) - .replace("", ChatColor.GOLD.toString() ) .replace("", ChatColor.GRAY.toString() ) - .replace("", ChatColor.DARK_GRAY.toString() ) .replace("", ChatColor.BLUE.toString() ) - .replace("", ChatColor.GREEN.toString() ) .replace("", ChatColor.AQUA.toString() ) - .replace("", ChatColor.RED.toString() ) .replace("", ChatColor.LIGHT_PURPLE.toString() ) - .replace("", ChatColor.YELLOW.toString() ) .replace("", ChatColor.WHITE.toString() ) - .replace("", ChatColor.MAGIC.toString() ) .replace("", ChatColor.BOLD.toString() ) - .replace("", ChatColor.STRIKETHROUGH.toString() ) .replace("", ChatColor.UNDERLINE.toString() ) - .replace("", ChatColor.ITALIC.toString() ) .replace("", ChatColor.RESET.toString() ); - return s; + public static String setColors(String string) { + // Replace color placeholders while ignoring case + Pattern pattern = Pattern.compile("<(\\w+)>", Pattern.CASE_INSENSITIVE); + Matcher matcher = pattern.matcher(string); + while (matcher.find()) { + String colorPlaceholder = matcher.group(1); + String color = setColors2("<" + colorPlaceholder.toUpperCase() + ">"); + if (color != null) { + string = string.replaceFirst(Pattern.quote(matcher.group()), color); + } + } + + // Apply color formatting + string = ChatColor.translateAlternateColorCodes('&', string); + + return string; + } + public static String setColors2(String string) { + string = string.replace("", "&0" ) .replace("", "&1" ) + .replace("", "&2" ) .replace("", "&3" ) + .replace("", "&4" ) .replace("", "&5" ) + .replace("", "&6" ) .replace("", "&7" ) + .replace("", "&8" ) .replace("", "&9" ) + .replace("", "&a" ) .replace("", "&b" ) + .replace("", "&c" ) .replace("", "&d" ) + .replace("", "&e" ) .replace("", "&f" ) + .replace("", "&k" ) .replace("", "&l" ) + .replace("", "&m" ) .replace("", "&n" ) + .replace("", "&o" ) .replace("", "&r" ); + return string; } } \ No newline at end of file diff --git a/src/com/github/joelgodofwar/mmh/util/StrUtils.java b/src/com/github/joelgodofwar/mmh/util/StrUtils.java index 7515a3c..8ed0bcb 100644 --- a/src/com/github/joelgodofwar/mmh/util/StrUtils.java +++ b/src/com/github/joelgodofwar/mmh/util/StrUtils.java @@ -8,24 +8,24 @@ public class StrUtils { if (input.length() > chars){ //System.out.println("Right input=" + input); return input.substring(input.length() - chars); - } + } else{ return input; } } - + /** StringLeft */ public static String Left(String input, int chars){ if (input.length() > chars){ //System.out.println("Left input=" + input); //System.out.println("Left chars=" + chars); return input.substring(0, chars); - } + } else{ return input; } } - + /** */ public static boolean stringContains(String string, String string2){ String[] string3 = string.toUpperCase().split(", "); @@ -36,7 +36,7 @@ public class StrUtils { } return false; } - + public static boolean stringEquals(String string1, String string2) { //string1 = ChatColor.stripColor(string1); //string2 = ChatColor.stripColor(string2); @@ -45,4 +45,12 @@ public class StrUtils { } return false; } + + public static String toTitleCase(String input) { + if ((input == null) || input.isEmpty()) { + return input; + } + + return input.substring(0, 1).toUpperCase() + input.substring(1).toLowerCase(); + } } diff --git a/src/main/resources/chance_config.yml b/src/main/resources/chance_config.yml index 04dfef6..1868476 100644 --- a/src/main/resources/chance_config.yml +++ b/src/main/resources/chance_config.yml @@ -1,5 +1,5 @@ # DO NOT CHANGE VERSION -version: 1.0.22 +version: 1.0.25 # Following are chance percent settings for each mob and variants of mobs. # Hieronder volgen instellingen voor het toevalspercentage voor elke mob en varianten van mobs. # Voici les paramètres de pourcentage de chance pour chaque mob et les variantes de mobs. @@ -7,306 +7,305 @@ version: 1.0.22 # 以下是每个生物及其变形的机会百分比设置。 # Následuje nastavení procenta Å¡ancí pro každý mob a varianty mobs. # A seguir, estão as configurações de porcentagem de chance para cada mob e variantes de mobs. -# 0.001 = 1/10 of 1 percent, 0.01 = 1 percent, 1.00 = 100 percent +# 0.1 = 1/10 of 1 percent, 1.0 = 1 percent, 100.0 = 100 percent , 0.0 will cancel looting. chance_percent: - player: 0.50 - named_mob: 0.10 - allay: 0.20 + player: 50.0 + named_mob: 10.0 + allay: 20.0 axolotl: - blue: 1.00 - cyan: 0.20 - gold: 0.20 - lucy: 0.20 - wild: 0.20 - bat: 0.10 + blue: 100.0 + cyan: 20.0 + gold: 20.0 + lucy: 20.0 + wild: 20.0 + bat: 10.0 bee: - angry_pollinated: 0.20 - angry: 0.20 - pollinated: 0.20 - chance_percent: 0.20 - blaze: 0.005 - camel: 0.27 + angry_pollinated: 20.0 + angry: 20.0 + pollinated: 20.0 + normal: 20.0 + blaze: 0.5 + camel: 27.0 cat: - all_black: 0.33 - black: 0.33 - british_shorthair: 0.33 - calico: 0.33 - jellie: 0.33 - persian: 0.33 - ragdoll: 0.33 - red: 0.33 - siamese: 0.33 - tabby: 0.33 - white: 0.33 - cave_spider: 0.005 - chicken: 0.01 - cod: 0.10 - cow: 0.01 - creeper: 0.50 - creeper_charged: 1.00 - dolphin: 0.33 - donkey: 0.20 - drowned: 0.05 - elder_guardian: 1.00 - ender_dragon: 1.00 - enderman: 0.005 - endermite: 0.10 - evoker: 0.25 + all_black: 33.0 + black: 33.0 + british_shorthair: 33.0 + calico: 33.0 + jellie: 33.0 + persian: 33.0 + ragdoll: 33.0 + red: 33.0 + siamese: 33.0 + tabby: 33.0 + white: 33.0 + cave_spider: 0.5 + chicken: 1.0 + cod: 10.0 + cow: 1.0 + creeper: 50.0 + creeper_charged: 100.0 + dolphin: 33.0 + donkey: 20.0 + drowned: 5.0 + elder_guardian: 100.0 + ender_dragon: 100.0 + enderman: 0.5 + endermite: 10.0 + evoker: 25.0 fox: - red: 0.10 - snow: 0.10 + red: 10.0 + snow: 20.0 frog: - cold: 0.20 - temperate: 0.20 - warm: 0.20 - ghast: 0.0625 - giant: 0.025 - glow_squid: 0.05 + cold: 20.0 + temperate: 20.0 + warm: 20.0 + ghast: 6.25 + giant: 2.5 + glow_squid: 5.0 goat: - normal: 0.01 - screaming: 1.00 - guardian: 0.005 - hoglin: 0.03 + normal: 1.0 + screaming: 100.0 + guardian: 0.5 + hoglin: 3.0 horse: - black: 0.27 - brown: 0.27 - chestnut: 0.27 - creamy: 0.27 - dark_brown: 0.27 - gray: 0.27 - white: 0.27 - husk: 0.06 - illusioner: 0.25 - iron_golem: 0.05 + black: 27.0 + brown: 27.0 + chestnut: 27.0 + creamy: 27.0 + dark_brown: 27.0 + gray: 27.0 + white: 27.0 + husk: 6.0 + illusioner: 25.0 + iron_golem: 5.0 llama: - brown: 0.24 - creamy: 0.24 - gray: 0.24 - white: 0.24 - magma_cube: 0.005 - mule: 0.20 + brown: 24.0 + creamy: 24.0 + gray: 24.0 + white: 24.0 + magma_cube: 0.5 + mule: 20.0 mushroom_cow: - red: 0.10 - brown: 0.10 - ocelot: 0.20 + red: 1.0 + brown: 10.0 + ocelot: 20.0 panda: - aggressive: 0.27 - brown: 0.27 - lazy: 0.27 - normal: 0.27 - playful: 0.27 - weak: 0.27 - worried: 0.27 + aggressive: 27.0 + brown: 27.0 + lazy: 27.0 + normal: 27.0 + playful: 27.0 + weak: 27.0 + worried: 27.0 parrot: - blue: 0.25 - cyan: 0.25 - gray: 0.25 - green: 0.25 - red: 0.25 - phantom: 0.10 - pig: 0.01 - piglin: 0.04 - piglin_brute: 0.10 - pig_zombie: 0.005 - pillager: 0.025 - polar_bear: 0.20 - pufferfish: 0.15 + blue: 25.0 + cyan: 25.0 + gray: 25.0 + green: 25.0 + red: 25.0 + phantom: 10.0 + pig: 1.0 + piglin: 4.0 + piglin_brute: 10.0 + pig_zombie: 0.5 + pillager: 2.5 + polar_bear: 20.0 + pufferfish: 15.0 rabbit: - black: 0.26 - black_and_white: 0.26 - brown: 0.26 - gold: 0.26 - salt_and_pepper: 0.26 - the_killer_bunny: 1.00 - toast: 0.26 - white: 0.26 - ravager: 0.25 - salmon: 0.10 + black: 26.0 + black_and_white: 26.0 + brown: 26.0 + gold: 26.0 + salt_and_pepper: 26.0 + the_killer_bunny: 100.0 + toast: 26.0 + white: 26.0 + ravager: 25.0 + salmon: 10.0 sheep: - black: 0.0175 - blue: 0.0175 - brown: 0.0175 - cyan: 0.0175 - gray: 0.0175 - green: 0.0175 - jeb_: 0.10 - light_blue: 0.0175 - light_gray: 0.0175 - lime: 0.0175 - magenta: 0.0175 - orange: 0.0175 - pink: 0.0175 - purple: 0.0175 - red: 0.0175 - white: 0.0175 - yellow: 0.0175 - shulker: 0.05 - silverfish: 0.05 - skeleton: 0.025 - skeleton_horse: 0.20 - slime: 0.005 - sniffer: 0.50 - snowman: 0.05 - spider: 0.005 - squid: 0.05 - stray: 0.06 - strider: 0.10 - strider_shivering: 0.10 - tadpole: 0.10 + black: 1.75 + blue: 1.75 + brown: 1.75 + cyan: 1.75 + gray: 1.75 + green: 1.75 + jeb_: 10.0 + light_blue: 1.75 + light_gray: 1.75 + lime: 1.75 + magenta: 1.75 + orange: 1.75 + pink: 1.75 + purple: 1.75 + red: 1.75 + white: 1.75 + yellow: 1.75 + shulker: 5.0 + silverfish: 5.0 + skeleton: 2.5 + skeleton_horse: 20.0 + slime: 0.5 + sniffer: 50.0 + snowman: 5.0 + spider: 0.5 + squid: 5.0 + stray: 6.0 + strider: 10.0 + tadpole: 10.0 trader_llama: - brown: 0.24 - creamy: 0.24 - gray: 0.24 - white: 0.24 + brown: 24.0 + creamy: 24.0 + gray: 24.0 + white: 24.0 tropical_fish: - tropical_fish: 0.10 - anemone: 0.50 - black_tang: 0.50 - blue_tang: 0.50 - butterflyfish: 0.50 - cichlid: 0.50 - clownfish: 0.50 - cotton_candy_betta: 0.50 - dottyback: 0.50 - emperor_red_snapper: 0.50 - goatfish: 0.50 - moorish_idol: 0.50 - ornate_butterflyfish: 0.50 - parrotfish: 0.50 - queen_angelfish: 0.50 - red_cichlid: 0.50 - red_lipped_blenny: 0.50 - red_snapper: 0.50 - threadfin: 0.50 - tomato_clownfish: 0.50 - triggerfish: 0.50 - yellow_parrotfish: 0.50 - yellow_tang: 0.50 - turtle: 0.10 - vex: 0.10 + tropical_fish: 10.0 + anemone: 50.0 + black_tang: 50.0 + blue_tang: 50.0 + butterflyfish: 50.0 + cichlid: 50.0 + clownfish: 50.0 + cotton_candy_betta: 50.0 + dottyback: 50.0 + emperor_red_snapper: 50.0 + goatfish: 50.0 + moorish_idol: 50.0 + ornate_butterflyfish: 50.0 + parrotfish: 50.0 + queen_angelfish: 50.0 + red_cichlid: 50.0 + red_lipped_blenny: 50.0 + red_snapper: 50.0 + threadfin: 50.0 + tomato_clownfish: 50.0 + triggerfish: 50.0 + yellowtail_parrotfish: 50.0 + yellow_tang: 50.0 + turtle: 10.0 + vex: 10.0 villager: desert: - armorer: 1.00 - butcher: 1.00 - cartographer: 1.00 - cleric: 1.00 - farmer: 1.00 - fisherman: 1.00 - fletcher: 1.00 - leatherworker: 1.00 - librarian: 1.00 - mason: 1.00 - nitwit: 1.00 - none: 1.00 - shepherd: 1.00 - toolsmith: 1.00 - weaponsmith: 1.00 + armorer: 100.0 + butcher: 100.0 + cartographer: 100.0 + cleric: 100.0 + farmer: 100.0 + fisherman: 100.0 + fletcher: 100.0 + leatherworker: 100.0 + librarian: 100.0 + mason: 100.0 + nitwit: 100.0 + none: 100.0 + shepherd: 100.0 + toolsmith: 100.0 + weaponsmith: 100.0 jungle: - armorer: 1.00 - butcher: 1.00 - cartographer: 1.00 - cleric: 1.00 - farmer: 1.00 - fisherman: 1.00 - fletcher: 1.00 - leatherworker: 1.00 - librarian: 1.00 - mason: 1.00 - nitwit: 1.00 - none: 1.00 - shepherd: 1.00 - toolsmith: 1.00 - weaponsmith: 1.00 + armorer: 100.0 + butcher: 100.0 + cartographer: 100.0 + cleric: 100.0 + farmer: 100.0 + fisherman: 100.0 + fletcher: 100.0 + leatherworker: 100.0 + librarian: 100.0 + mason: 100.0 + nitwit: 100.0 + none: 100.0 + shepherd: 100.0 + toolsmith: 100.0 + weaponsmith: 100.0 plains: - armorer: 1.00 - butcher: 1.00 - cartographer: 1.00 - cleric: 1.00 - farmer: 1.00 - fisherman: 1.00 - fletcher: 1.00 - leatherworker: 1.00 - librarian: 1.00 - mason: 1.00 - nitwit: 1.00 - none: 1.00 - shepherd: 1.00 - toolsmith: 1.00 - weaponsmith: 1.00 + armorer: 100.0 + butcher: 100.0 + cartographer: 100.0 + cleric: 100.0 + farmer: 100.0 + fisherman: 100.0 + fletcher: 100.0 + leatherworker: 100.0 + librarian: 100.0 + mason: 100.0 + nitwit: 100.0 + none: 100.0 + shepherd: 100.0 + toolsmith: 100.0 + weaponsmith: 100.0 savanna: - armorer: 1.00 - butcher: 1.00 - cartographer: 1.00 - cleric: 1.00 - farmer: 1.00 - fisherman: 1.00 - fletcher: 1.00 - leatherworker: 1.00 - librarian: 1.00 - mason: 1.00 - nitwit: 1.00 - none: 1.00 - shepherd: 1.00 - toolsmith: 1.00 - weaponsmith: 1.00 + armorer: 100.0 + butcher: 100.0 + cartographer: 100.0 + cleric: 100.0 + farmer: 100.0 + fisherman: 100.0 + fletcher: 100.0 + leatherworker: 100.0 + librarian: 100.0 + mason: 100.0 + nitwit: 100.0 + none: 100.0 + shepherd: 100.0 + toolsmith: 100.0 + weaponsmith: 100.0 snow: - armorer: 1.00 - butcher: 1.00 - cartographer: 1.00 - cleric: 1.00 - farmer: 1.00 - fisherman: 1.00 - fletcher: 1.00 - leatherworker: 1.00 - librarian: 1.00 - mason: 1.00 - nitwit: 1.00 - none: 1.00 - shepherd: 1.00 - toolsmith: 1.00 - weaponsmith: 1.00 + armorer: 100.0 + butcher: 100.0 + cartographer: 100.0 + cleric: 100.0 + farmer: 100.0 + fisherman: 100.0 + fletcher: 100.0 + leatherworker: 100.0 + librarian: 100.0 + mason: 100.0 + nitwit: 100.0 + none: 100.0 + shepherd: 100.0 + toolsmith: 100.0 + weaponsmith: 100.0 swamp: - armorer: 1.00 - butcher: 1.00 - cartographer: 1.00 - cleric: 1.00 - farmer: 1.00 - fisherman: 1.00 - fletcher: 1.00 - leatherworker: 1.00 - librarian: 1.00 - mason: 1.00 - nitwit: 1.00 - none: 1.00 - shepherd: 1.00 - toolsmith: 1.00 - weaponsmith: 1.00 + armorer: 100.0 + butcher: 100.0 + cartographer: 100.0 + cleric: 100.0 + farmer: 100.0 + fisherman: 100.0 + fletcher: 100.0 + leatherworker: 100.0 + librarian: 100.0 + mason: 100.0 + nitwit: 100.0 + none: 100.0 + shepherd: 100.0 + toolsmith: 100.0 + weaponsmith: 100.0 taiga: - armorer: 1.00 - butcher: 1.00 - cartographer: 1.00 - cleric: 1.00 - farmer: 1.00 - fisherman: 1.00 - fletcher: 1.00 - leatherworker: 1.00 - librarian: 1.00 - mason: 1.00 - nitwit: 1.00 - none: 1.00 - shepherd: 1.00 - toolsmith: 1.00 - weaponsmith: 1.00 - vindicator: 0.05 - wandering_trader: 1.00 - warden: 1.00 - witch: 0.005 - wither: 1.00 - wither_skeleton: 0.025 - wolf: 0.02 - zoglin: 0.20 - zombie: 0.025 - zombie_horse: 1.00 - zombie_pigman: 0.005 - zombified_piglin: 0.005 - zombie_villager: 0.50 \ No newline at end of file + armorer: 100.0 + butcher: 100.0 + cartographer: 100.0 + cleric: 100.0 + farmer: 100.0 + fisherman: 100.0 + fletcher: 100.0 + leatherworker: 100.0 + librarian: 100.0 + mason: 100.0 + nitwit: 100.0 + none: 100.0 + shepherd: 100.0 + toolsmith: 100.0 + weaponsmith: 100.0 + vindicator: 5.0 + wandering_trader: 100.0 + warden: 100.0 + witch: 0.5 + wither: 100.0 + wither_skeleton: 2.5 + wolf: 20.0 + zoglin: 20.0 + zombie: 2.5 + zombie_horse: 100.0 + zombie_pigman: 0.5 + zombified_piglin: 0.5 + zombie_villager: 50.0 \ No newline at end of file diff --git a/src/main/resources/lang/cs_CZ_mobnames.yml b/src/main/resources/lang/cs_CZ_mobnames.yml index ce49a58..184b02f 100644 --- a/src/main/resources/lang/cs_CZ_mobnames.yml +++ b/src/main/resources/lang/cs_CZ_mobnames.yml @@ -293,10 +293,9 @@ wandering_trader: Wandering Trader Head warden: Warden Head witch: Witch Head wither: - 1: Wither Head - 2: Invulnerable Wither Head - 3: Armored Wither Head - 4: Armored Invulnerable Wither Head + normal: Wither Head + projectile: Wither Projectile + blue_projectile: Blue Wither Projectile wither_skeleton: Wither Skeleton Head wolf: Wolf Head wolf_angry: Angry Wolf Head diff --git a/src/main/resources/lang/de_DE_mobnames.yml b/src/main/resources/lang/de_DE_mobnames.yml index 71b9e11..590a3c2 100644 --- a/src/main/resources/lang/de_DE_mobnames.yml +++ b/src/main/resources/lang/de_DE_mobnames.yml @@ -293,10 +293,9 @@ wandering_trader: Wandering Trader Head warden: Warden Head witch: Witch Head wither: - 1: Wither Head - 2: Invulnerable Wither Head - 3: Armored Wither Head - 4: Armored Invulnerable Wither Head + normal: Wither Head + projectile: Wither Projectile + blue_projectile: Blue Wither Projectile wither_skeleton: Wither Skeleton Head wolf: Wolf Head wolf_angry: Angry Wolf Head diff --git a/src/main/resources/lang/en_US_mobnames.yml b/src/main/resources/lang/en_US_mobnames.yml index 8142720..71d96bc 100644 --- a/src/main/resources/lang/en_US_mobnames.yml +++ b/src/main/resources/lang/en_US_mobnames.yml @@ -1,4 +1,4 @@ -killedby: Killed By +killedby: Killed By player: Player Head allay: Allay Head axolotl: @@ -173,6 +173,7 @@ tropical_fish: yellow_tang: Yellow Tang Head turtle: Turtle Head vex: Vex Head +vex_angry: Angry Vex Head villager: desert: armorer: Desert Armorer Villager Head @@ -291,10 +292,9 @@ wandering_trader: Wandering Trader Head warden: Warden Head witch: Witch Head wither: - 1: Wither Head - 2: Invulnerable Wither Head - 3: Armored Wither Head - 4: Armored Invulnerable Wither Head + normal: Wither Head + projectile: Wither Projectile Head + blue_projectile: Blue Wither Projectile Head wither_skeleton: Wither Skeleton Head wolf: Wolf Head wolf_angry: Angry Wolf Head diff --git a/src/main/resources/lang/es_ES_mobnames.yml b/src/main/resources/lang/es_ES_mobnames.yml index 4f50608..6d14606 100644 --- a/src/main/resources/lang/es_ES_mobnames.yml +++ b/src/main/resources/lang/es_ES_mobnames.yml @@ -292,10 +292,9 @@ wandering_trader: Wandering Trader Head warden: Warden Head witch: Witch Head wither: - 1: Wither Head - 2: Invulnerable Wither Head - 3: Armored Wither Head - 4: Armored Invulnerable Wither Head + normal: Wither Head + projectile: Wither Projectile + blue_projectile: Blue Wither Projectile wither_skeleton: Wither Skeleton Head wolf: Wolf Head zoglin: Zoglin Head diff --git a/src/main/resources/lang/es_MX_mobnames.yml b/src/main/resources/lang/es_MX_mobnames.yml index 3f4c3f1..516c674 100644 --- a/src/main/resources/lang/es_MX_mobnames.yml +++ b/src/main/resources/lang/es_MX_mobnames.yml @@ -294,10 +294,9 @@ wandering_trader: Cabeza de Mercader Errante warden: Cabeza de Warden witch: Cabeza de Bruja wither: - 1: Cabeza de Wither - 2: Invulnerable Wither Head - 3: Armored Wither Head - 4: Armored Invulnerable Wither Head + normal: Wither Head + projectile: Wither Projectile + blue_projectile: Blue Wither Projectile wither_skeleton: Cabeza de Esqueleto Negro wolf: Cabeza de Lobo zoglin: Cabeza de Zoglin diff --git a/src/main/resources/lang/fr_FR_mobnames.yml b/src/main/resources/lang/fr_FR_mobnames.yml index c51af97..5737328 100644 --- a/src/main/resources/lang/fr_FR_mobnames.yml +++ b/src/main/resources/lang/fr_FR_mobnames.yml @@ -293,10 +293,9 @@ wandering_trader: Wandering Trader Head warden: Warden Head witch: Witch Head wither: - 1: Wither Head - 2: Invulnerable Wither Head - 3: Armored Wither Head - 4: Armored Invulnerable Wither Head + normal: Wither Head + projectile: Wither Projectile + blue_projectile: Blue Wither Projectile wither_skeleton: Wither Skeleton Head wolf: Wolf Head wolf_angry: Angry Wolf Head diff --git a/src/main/resources/lang/hu_HU_mobnames.yml b/src/main/resources/lang/hu_HU_mobnames.yml index 0a54103..aea79da 100644 --- a/src/main/resources/lang/hu_HU_mobnames.yml +++ b/src/main/resources/lang/hu_HU_mobnames.yml @@ -293,10 +293,9 @@ wandering_trader: Wandering Trader Head warden: Warden Head witch: Witch Head wither: - 1: Wither Head - 2: Invulnerable Wither Head - 3: Armored Wither Head - 4: Armored Invulnerable Wither Head + normal: Wither Head + projectile: Wither Projectile + blue_projectile: Blue Wither Projectile wither_skeleton: Wither Skeleton Head wolf: Wolf Head wolf_angry: Angry Wolf Head diff --git a/src/main/resources/lang/it_IT_mobnames.yml b/src/main/resources/lang/it_IT_mobnames.yml index 73728bb..79f6ce4 100644 --- a/src/main/resources/lang/it_IT_mobnames.yml +++ b/src/main/resources/lang/it_IT_mobnames.yml @@ -293,10 +293,9 @@ wandering_trader: Wandering Trader Head warden: Warden Head witch: Witch Head wither: - 1: Wither Head - 2: Invulnerable Wither Head - 3: Armored Wither Head - 4: Armored Invulnerable Wither Head + normal: Wither Head + projectile: Wither Projectile + blue_projectile: Blue Wither Projectile wither_skeleton: Wither Skeleton Head wolf: Wolf Head wolf_angry: Angry Wolf Head diff --git a/src/main/resources/lang/ja_JP_mobnames.yml b/src/main/resources/lang/ja_JP_mobnames.yml index e284ae9..7a7ba73 100644 --- a/src/main/resources/lang/ja_JP_mobnames.yml +++ b/src/main/resources/lang/ja_JP_mobnames.yml @@ -293,10 +293,9 @@ wandering_trader: Wandering Trader Head warden: Warden Head witch: Witch Head wither: - 1: Wither Head - 2: Invulnerable Wither Head - 3: Armored Wither Head - 4: Armored Invulnerable Wither Head + normal: Wither Head + projectile: Wither Projectile + blue_projectile: Blue Wither Projectile wither_skeleton: Wither Skeleton Head wolf: Wolf Head wolf_angry: Angry Wolf Head diff --git a/src/main/resources/lang/ko_KR_mobnames.yml b/src/main/resources/lang/ko_KR_mobnames.yml index b872d22..a065955 100644 --- a/src/main/resources/lang/ko_KR_mobnames.yml +++ b/src/main/resources/lang/ko_KR_mobnames.yml @@ -293,10 +293,9 @@ wandering_trader: Wandering Trader Head warden: Warden Head witch: Witch Head wither: - 1: Wither Head - 2: Invulnerable Wither Head - 3: Armored Wither Head - 4: Armored Invulnerable Wither Head + normal: Wither Head + projectile: Wither Projectile + blue_projectile: Blue Wither Projectile wither_skeleton: Wither Skeleton Head wolf: Wolf Head wolf_angry: Angry Wolf Head diff --git a/src/main/resources/lang/lang_en_US.properties b/src/main/resources/lang/lang_en_US.properties index 203af20..bcdc051 100644 --- a/src/main/resources/lang/lang_en_US.properties +++ b/src/main/resources/lang/lang_en_US.properties @@ -40,7 +40,7 @@ mmh.message.ct.successadd=Successfully added! mmh.message.ct.successrem=Successfully removed! mmh.message.ct.successrep=Successfully replaced! mmh.message.debugtrue=Debug set to boolean. -mmh.message.lore_killed_by=Killed by +mmh.message.lore_killed_by=Killed by mmh.message.noconsole=Console can not use this command mmh.message.noperm=You do not have the permission (). mmh.message.nopermordisabled=You do not have the permission (), or customtrader is disabled. diff --git a/src/main/resources/lang/lol_US_mobnames.yml b/src/main/resources/lang/lol_US_mobnames.yml index f2fa66a..65913a8 100644 --- a/src/main/resources/lang/lol_US_mobnames.yml +++ b/src/main/resources/lang/lol_US_mobnames.yml @@ -293,10 +293,9 @@ wandering_trader: Wandering Trader Head warden: Warden Head witch: Witch Head wither: - 1: Wither Head - 2: Invulnerable Wither Head - 3: Armored Wither Head - 4: Armored Invulnerable Wither Head + normal: Wither Head + projectile: Wither Projectile + blue_projectile: Blue Wither Projectile wither_skeleton: Wither Skeleton Head wolf: Wolf Head wolf_angry: Angry Wolf Head diff --git a/src/main/resources/lang/my_MY_mobnames.yml b/src/main/resources/lang/my_MY_mobnames.yml index e578814..c915883 100644 --- a/src/main/resources/lang/my_MY_mobnames.yml +++ b/src/main/resources/lang/my_MY_mobnames.yml @@ -293,10 +293,9 @@ wandering_trader: Wandering Trader Head warden: Warden Head witch: Witch Head wither: - 1: Wither Head - 2: Invulnerable Wither Head - 3: Armored Wither Head - 4: Armored Invulnerable Wither Head + normal: Wither Head + projectile: Wither Projectile + blue_projectile: Blue Wither Projectile wither_skeleton: Wither Skeleton Head wolf: Wolf Head wolf_angry: Angry Wolf Head diff --git a/src/main/resources/lang/nl_NL_mobnames.yml b/src/main/resources/lang/nl_NL_mobnames.yml index 4ed5151..e57ff5f 100644 --- a/src/main/resources/lang/nl_NL_mobnames.yml +++ b/src/main/resources/lang/nl_NL_mobnames.yml @@ -293,10 +293,9 @@ wandering_trader: Wandering Trader Head warden: Warden Head witch: Witch Head wither: - 1: Wither Head - 2: Invulnerable Wither Head - 3: Armored Wither Head - 4: Armored Invulnerable Wither Head + normal: Wither Head + projectile: Wither Projectile + blue_projectile: Blue Wither Projectile wither_skeleton: Wither Skeleton Head wolf: Wolf Head wolf_angry: Angry Wolf Head diff --git a/src/main/resources/lang/pl_PL_mobnames.yml b/src/main/resources/lang/pl_PL_mobnames.yml index e982117..6742dd5 100644 --- a/src/main/resources/lang/pl_PL_mobnames.yml +++ b/src/main/resources/lang/pl_PL_mobnames.yml @@ -293,10 +293,9 @@ wandering_trader: Wandering Trader Head warden: Warden Head witch: Witch Head wither: - 1: Wither Head - 2: Invulnerable Wither Head - 3: Armored Wither Head - 4: Armored Invulnerable Wither Head + normal: Wither Head + projectile: Wither Projectile + blue_projectile: Blue Wither Projectile wither_skeleton: Wither Skeleton Head wolf: Wolf Head wolf_angry: Angry Wolf Head diff --git a/src/main/resources/lang/pt_BR_mobnames.yml b/src/main/resources/lang/pt_BR_mobnames.yml index c46c7a7..7cdcf16 100644 --- a/src/main/resources/lang/pt_BR_mobnames.yml +++ b/src/main/resources/lang/pt_BR_mobnames.yml @@ -293,10 +293,9 @@ wandering_trader: Wandering Trader Head warden: Warden Head witch: Witch Head wither: - 1: Wither Head - 2: Invulnerable Wither Head - 3: Armored Wither Head - 4: Armored Invulnerable Wither Head + normal: Wither Head + projectile: Wither Projectile + blue_projectile: Blue Wither Projectile wither_skeleton: Wither Skeleton Head wolf: Wolf Head wolf_angry: Angry Wolf Head diff --git a/src/main/resources/lang/ru_RU_mobnames.yml b/src/main/resources/lang/ru_RU_mobnames.yml index 852d213..7c2a002 100644 --- a/src/main/resources/lang/ru_RU_mobnames.yml +++ b/src/main/resources/lang/ru_RU_mobnames.yml @@ -293,10 +293,9 @@ wandering_trader: Wandering Trader Head warden: Warden Head witch: Witch Head wither: - 1: Wither Head - 2: Invulnerable Wither Head - 3: Armored Wither Head - 4: Armored Invulnerable Wither Head + normal: Wither Head + projectile: Wither Projectile + blue_projectile: Blue Wither Projectile wither_skeleton: Wither Skeleton Head wolf: Wolf Head wolf_angry: Angry Wolf Head diff --git a/src/main/resources/lang/sv_SV_mobnames.yml b/src/main/resources/lang/sv_SV_mobnames.yml index 4b8ab5d..0c343b7 100644 --- a/src/main/resources/lang/sv_SV_mobnames.yml +++ b/src/main/resources/lang/sv_SV_mobnames.yml @@ -293,10 +293,9 @@ wandering_trader: Wandering Trader Head warden: Warden Head witch: Witch Head wither: - 1: Wither Head - 2: Invulnerable Wither Head - 3: Armored Wither Head - 4: Armored Invulnerable Wither Head + normal: Wither Head + projectile: Wither Projectile + blue_projectile: Blue Wither Projectile wither_skeleton: Wither Skeleton Head wolf: Wolf Head wolf_angry: Angry Wolf Head diff --git a/src/main/resources/lang/tr_TR_mobnames.yml b/src/main/resources/lang/tr_TR_mobnames.yml index fd679b5..3394968 100644 --- a/src/main/resources/lang/tr_TR_mobnames.yml +++ b/src/main/resources/lang/tr_TR_mobnames.yml @@ -293,10 +293,9 @@ wandering_trader: Wandering Trader Head warden: Warden Head witch: Witch Head wither: - 1: Wither Head - 2: Invulnerable Wither Head - 3: Armored Wither Head - 4: Armored Invulnerable Wither Head + normal: Wither Head + projectile: Wither Projectile + blue_projectile: Blue Wither Projectile wither_skeleton: Wither Skeleton Head wolf: Wolf Head wolf_angry: Angry Wolf Head diff --git a/src/main/resources/lang/zh_CN_mobnames.yml b/src/main/resources/lang/zh_CN_mobnames.yml index 23d9281..6c2876a 100644 --- a/src/main/resources/lang/zh_CN_mobnames.yml +++ b/src/main/resources/lang/zh_CN_mobnames.yml @@ -291,11 +291,10 @@ vindicator: 卫道士头 wandering_trader: 流浪商人头 warden: 守望者头 witch: 巫婆头 -wither: - 1: 枯萎头 - 2: Invulnerable Wither Head - 3: Armored Wither Head - 4: Armored Invulnerable Wither Head +wither: + normal: 枯萎头 + projectile: 枯萎投射物 + blue_projectile: 蓝色枯萎投射物 wither_skeleton: 凋灵骷髅头 wolf: 狼头 zoglin: Zoglin头 diff --git a/src/main/resources/lang/zh_TW_mobnames.yml b/src/main/resources/lang/zh_TW_mobnames.yml index 4b54acc..7913073 100644 --- a/src/main/resources/lang/zh_TW_mobnames.yml +++ b/src/main/resources/lang/zh_TW_mobnames.yml @@ -293,10 +293,9 @@ wandering_trader: Wandering Trader Head warden: Warden Head witch: Witch Head wither: - 1: Wither Head - 2: Invulnerable Wither Head - 3: Armored Wither Head - 4: Armored Invulnerable Wither Head + normal: Wither Head + projectile: Wither Projectile + blue_projectile: Blue Wither Projectile wither_skeleton: Wither Skeleton Head wolf: Wolf Head wolf_angry: Angry Wolf Head diff --git a/src/main/resources/messages.yml b/src/main/resources/messages.yml index 72b56de..bf21abf 100644 --- a/src/main/resources/messages.yml +++ b/src/main/resources/messages.yml @@ -1,7 +1,9 @@ +# DO NOT CHANGE VERSION +version: 1.0.2 # Configuration file for announcement messages messages: - message_1: Using , beheaded . - message_2: struck down using . - message_3: delivered a fatal blow to with . - message_4: was beheaded by using . - message_5: took down with . + message_1: "Using %weaponName%, %killerName% beheaded %entityName%." + message_2: "%killerName% struck down %entityName% using %weaponName%." + message_3: "%killerName% delivered a fatal blow to %entityName% with %weaponName%." + message_4: "%entityName% was beheaded by %killerName% using %weaponName%." + message_5: "%killerName% took down %entityName% with %weaponName%." diff --git a/src/main/resources/plugin.yml b/src/main/resources/plugin.yml index 8d17e02..68b601c 100644 --- a/src/main/resources/plugin.yml +++ b/src/main/resources/plugin.yml @@ -1,9 +1,8 @@ name: MoreMobHeads main: com.github.joelgodofwar.mmh.MoreMobHeads -version: 1.15_1.0.32.D1 +version: 1.15_1.0.32.D8 author: JoelYahwehOfWar api-version: 1.13 -folia-supported: true softdepend: [SilenceMobs, PlaceholderAPI] commands: @@ -44,4 +43,4 @@ permissions: default: false moremobheads.give: description: Allows player to use give command. - default: false + default: false \ No newline at end of file