From a5f7e6f2d3eabec32834199b3c2a451b19eff0b9 Mon Sep 17 00:00:00 2001 From: Pelt10 Date: Thu, 18 Oct 2018 21:25:29 +0200 Subject: [PATCH] Update to spigot 1.12.2-R0.1 --- .gitignore | 3 + pom.xml | 2 +- .../lootreplacer/LootReplacer.java | 166 +++++++++--------- .../fastsurvival/others/HigherCrafts.java | 102 +++++------ 4 files changed, 141 insertions(+), 132 deletions(-) create mode 100644 .gitignore diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..e6ebc35 --- /dev/null +++ b/.gitignore @@ -0,0 +1,3 @@ +.idea/ +target/ +*.iml \ No newline at end of file diff --git a/pom.xml b/pom.xml index a42ba75..69d0b09 100644 --- a/pom.xml +++ b/pom.xml @@ -42,7 +42,7 @@ org.spigotmc spigot - 1.8.3-R0.1-SNAPSHOT + 1.12.2-R0.1-SNAPSHOT \ No newline at end of file diff --git a/src/main/java/net/zyuiop/fastsurvival/lootreplacer/LootReplacer.java b/src/main/java/net/zyuiop/fastsurvival/lootreplacer/LootReplacer.java index b160124..33c3490 100644 --- a/src/main/java/net/zyuiop/fastsurvival/lootreplacer/LootReplacer.java +++ b/src/main/java/net/zyuiop/fastsurvival/lootreplacer/LootReplacer.java @@ -24,12 +24,14 @@ package net.zyuiop.fastsurvival.lootreplacer; +import net.minecraft.server.v1_12_R1.NBTTagByte; +import net.minecraft.server.v1_12_R1.NBTTagCompound; import org.bukkit.Bukkit; import org.bukkit.Material; import org.bukkit.block.Block; import org.bukkit.block.BlockState; -import org.bukkit.block.ContainerBlock; import org.bukkit.configuration.ConfigurationSection; +import org.bukkit.craftbukkit.v1_12_R1.inventory.CraftItemStack; import org.bukkit.event.EventHandler; import org.bukkit.event.Listener; import org.bukkit.event.block.BlockBreakEvent; @@ -39,10 +41,8 @@ import org.bukkit.inventory.Inventory; import org.bukkit.inventory.InventoryHolder; import org.bukkit.inventory.ItemStack; -import org.bukkit.inventory.meta.ItemMeta; import org.bukkit.material.MaterialData; -import java.util.ArrayList; import java.util.Map; import java.util.Random; @@ -51,83 +51,85 @@ */ public class LootReplacer implements Listener { - public LootReplacer(ConfigurationSection configuration) { - for (Map map : configuration.getMapList("rules")) { - LootRule rule = LootRule.addRule(map); - if (rule != null) { - Bukkit.getLogger().info("[LootReplacer] Replaced " + rule.getSource() + " loots with " + rule.getTarget().getItemType() + ", multiplying stack size by " + rule.getMultiplier()); - } - } - } - - public static boolean isMarked(ItemStack stack) { - return stack.getItemMeta() != null && stack.getItemMeta().getDisplayName() != null && stack.getItemMeta().getDisplayName().startsWith("§r"); - } - - public static ItemStack mark(ItemStack stack) { - if (isMarked(stack)) - return stack; - - ItemMeta meta = stack.getItemMeta(); - meta.setDisplayName("§r" + meta.getDisplayName()); - ItemStack ret = stack.clone(); - ret.setItemMeta(meta); - return ret; - } - - @EventHandler - public void playerDrop(PlayerDropItemEvent event) { - event.getItemDrop().setItemStack(mark(event.getItemDrop().getItemStack())); // Avoid duplication bug. - } - - @EventHandler - public void blockBreak(BlockBreakEvent event) { - BlockState state = event.getBlock().getState(); - if (state instanceof InventoryHolder) { - Inventory inventory = ((InventoryHolder) state).getInventory(); - for (int slot = 0; slot < inventory.getSize(); slot++) { - ItemStack stack = inventory.getItem(slot); - if (stack != null) { - inventory.setItem(slot, mark(stack)); - } - } - } - } - - @EventHandler - public void blockExplode(EntityExplodeEvent entityExplodeEvent) { - for (Block block : entityExplodeEvent.blockList()) { - BlockState state = block.getState(); - if (state instanceof InventoryHolder) { - Inventory inventory = ((InventoryHolder) state).getInventory(); - for (int slot = 0; slot < inventory.getSize(); slot++) { - ItemStack stack = inventory.getItem(slot); - if (stack != null) { - inventory.setItem(slot, mark(stack)); - } - } - } - } - } - - @EventHandler - public void itemSpawn(ItemSpawnEvent event) { - ItemStack stack = event.getEntity().getItemStack(); - if (stack == null || isMarked(stack)) - return; - - Material material = stack.getType(); - LootRule rule = LootRule.getRule(material); - if (rule == null) - return; - - if (rule.getProbability() < 1 && new Random().nextDouble() > rule.getProbability()) - return; - - MaterialData target = rule.getTarget(); - ItemStack replace = new ItemStack(target.getItemType(), stack.getAmount() * rule.getMultiplier()); - replace.setData(target); - - event.getEntity().setItemStack(mark(replace)); - } + public LootReplacer(ConfigurationSection configuration) { + for (Map map : configuration.getMapList("rules")) { + LootRule rule = LootRule.addRule(map); + if (rule != null) { + Bukkit.getLogger().info("[LootReplacer] Replaced " + rule.getSource() + " loots with " + rule.getTarget().getItemType() + ", multiplying stack size by " + rule.getMultiplier()); + } + } + } + + public static boolean isMarked(ItemStack stack) { + net.minecraft.server.v1_12_R1.ItemStack craftStack = CraftItemStack.asNMSCopy(stack); + return craftStack.getTag() != null && craftStack.getTag().getByte("fastsurvival") == (byte)1; + } + + public static ItemStack mark(ItemStack stack) { + if (isMarked(stack)) + return stack; + + + net.minecraft.server.v1_12_R1.ItemStack craftStack = CraftItemStack.asNMSCopy(stack); + NBTTagCompound nbtTag = craftStack.getTag() != null ? craftStack.getTag() : new NBTTagCompound(); + nbtTag.set("fastsurvial", new NBTTagByte((byte)1)); + + net.minecraft.server.v1_12_R1.ItemStack ret = craftStack.cloneItemStack(); + ret.setTag(nbtTag); + return CraftItemStack.asBukkitCopy(ret); + } + + @EventHandler + public void playerDrop(PlayerDropItemEvent event) { + event.getItemDrop().setItemStack(mark(event.getItemDrop().getItemStack())); // Avoid duplication bug. + } + + @EventHandler + public void blockBreak(BlockBreakEvent event) { + BlockState state = event.getBlock().getState(); + if (state instanceof InventoryHolder) { + Inventory inventory = ((InventoryHolder) state).getInventory(); + for (int slot = 0; slot < inventory.getSize(); slot++) { + ItemStack stack = inventory.getItem(slot); + if (stack != null) { + inventory.setItem(slot, mark(stack)); + } + } + } + } + + @EventHandler + public void blockExplode(EntityExplodeEvent entityExplodeEvent) { + for (Block block : entityExplodeEvent.blockList()) { + BlockState state = block.getState(); + if (state instanceof InventoryHolder) { + Inventory inventory = ((InventoryHolder) state).getInventory(); + for (int slot = 0; slot < inventory.getSize(); slot++) { + ItemStack stack = inventory.getItem(slot); + if (stack != null) { + inventory.setItem(slot, mark(stack)); + } + } + } + } + } + + @EventHandler + public void itemSpawn(ItemSpawnEvent event) { + ItemStack stack = event.getEntity().getItemStack(); + if (stack == null || isMarked(stack)) + return; + + Material material = stack.getType(); + LootRule rule = LootRule.getRule(material); + if (rule == null) + return; + if (rule.getProbability() < 1 && new Random().nextDouble() > rule.getProbability()) + return; + MaterialData target = rule.getTarget(); + ItemStack replace = new ItemStack(target.getItemType(), stack.getAmount() * rule.getMultiplier()); + replace.setData(target); + + event.getEntity().setItemStack(mark(replace)); + } } diff --git a/src/main/java/net/zyuiop/fastsurvival/others/HigherCrafts.java b/src/main/java/net/zyuiop/fastsurvival/others/HigherCrafts.java index 3c366cf..1b312ba 100644 --- a/src/main/java/net/zyuiop/fastsurvival/others/HigherCrafts.java +++ b/src/main/java/net/zyuiop/fastsurvival/others/HigherCrafts.java @@ -30,70 +30,74 @@ import org.bukkit.event.Listener; import org.bukkit.event.inventory.CraftItemEvent; import org.bukkit.event.inventory.PrepareItemCraftEvent; +import org.bukkit.inventory.CraftingInventory; import org.bukkit.inventory.ItemStack; +import org.bukkit.inventory.Recipe; import org.bukkit.inventory.ShapedRecipe; /** * @author zyuiop */ public class HigherCrafts implements Listener { - public HigherCrafts() { - final ShapedRecipe cobblePickaxe = new ShapedRecipe(new ItemStack(Material.STONE_PICKAXE)); - cobblePickaxe.shape("WWW", "ASA", "ASA"); - cobblePickaxe.setIngredient('W', Material.WOOD); - cobblePickaxe.setIngredient('S', Material.STICK); - cobblePickaxe.setIngredient('A', Material.AIR); - - final ShapedRecipe cobbleAxe = new ShapedRecipe(new ItemStack(Material.STONE_AXE)); - cobbleAxe.shape("WWA", "WSA", "ASA"); - cobbleAxe.setIngredient('W', Material.WOOD); - cobbleAxe.setIngredient('S', Material.STICK); - cobbleAxe.setIngredient('A', Material.AIR); + public HigherCrafts() { + final ShapedRecipe cobblePickaxe = new ShapedRecipe(new ItemStack(Material.STONE_PICKAXE)); + cobblePickaxe.shape("WWW", "ASA", "ASA"); + cobblePickaxe.setIngredient('W', Material.WOOD); + cobblePickaxe.setIngredient('S', Material.STICK); + cobblePickaxe.setIngredient('A', Material.AIR); + final ShapedRecipe cobbleAxe = new ShapedRecipe(new ItemStack(Material.STONE_AXE)); + cobbleAxe.shape("WWA", "WSA", "ASA"); + cobbleAxe.setIngredient('W', Material.WOOD); + cobbleAxe.setIngredient('S', Material.STICK); + cobbleAxe.setIngredient('A', Material.AIR); +/* final ShapedRecipe cobbleAxeB = new ShapedRecipe(new ItemStack(Material.STONE_AXE)); cobbleAxeB.shape("AWW", "ASW", "ASA"); cobbleAxeB.setIngredient('W', Material.WOOD); cobbleAxeB.setIngredient('S', Material.STICK); - cobbleAxeB.setIngredient('A', Material.AIR); + cobbleAxeB.setIngredient('A', Material.AIR);*/ + + final ShapedRecipe cobbleSword = new ShapedRecipe(new ItemStack(Material.STONE_SWORD)); + cobbleSword.shape("AWA", "AWA", "ASA"); + cobbleSword.setIngredient('W', Material.WOOD); + cobbleSword.setIngredient('S', Material.STICK); + cobbleSword.setIngredient('A', Material.AIR); + + final ShapedRecipe cobbleShovel = new ShapedRecipe(new ItemStack(Material.STONE_SPADE)); + cobbleShovel.shape("AWA", "ASA", "ASA"); + cobbleShovel.setIngredient('W', Material.WOOD); + cobbleShovel.setIngredient('S', Material.STICK); + cobbleShovel.setIngredient('A', Material.AIR); - final ShapedRecipe cobbleSword = new ShapedRecipe(new ItemStack(Material.STONE_SWORD)); - cobbleSword.shape("AWA", "AWA", "ASA"); - cobbleSword.setIngredient('W', Material.WOOD); - cobbleSword.setIngredient('S', Material.STICK); - cobbleSword.setIngredient('A', Material.AIR); + Bukkit.getServer().addRecipe(cobbleAxe); + Bukkit.getServer().addRecipe(cobblePickaxe); + Bukkit.getServer().addRecipe(cobbleSword); +// Bukkit.getServer().addRecipe(cobbleAxeB); + Bukkit.getServer().addRecipe(cobbleShovel); + } - final ShapedRecipe cobbleShoveel = new ShapedRecipe(new ItemStack(Material.STONE_SPADE)); - cobbleShoveel.shape("AWA", "ASA", "ASA"); - cobbleShoveel.setIngredient('W', Material.WOOD); - cobbleShoveel.setIngredient('S', Material.STICK); - cobbleShoveel.setIngredient('A', Material.AIR); + @EventHandler + public void onCraft(CraftItemEvent event) { + craftEvent(event.getRecipe(), event.getInventory()); + } - Bukkit.getServer().addRecipe(cobbleAxe); - Bukkit.getServer().addRecipe(cobblePickaxe); - Bukkit.getServer().addRecipe(cobbleSword); - Bukkit.getServer().addRecipe(cobbleAxeB); - Bukkit.getServer().addRecipe(cobbleSword); - } + @EventHandler + public void onCraft(PrepareItemCraftEvent event) { + if (event.getRecipe() == null) + return; - @EventHandler - public void onCraft(CraftItemEvent event) { - if (event.getRecipe().getResult().getType() == Material.WOOD_PICKAXE) - event.getInventory().setResult(new ItemStack(Material.STONE_PICKAXE)); - else if (event.getRecipe().getResult().getType() == Material.WOOD_AXE) - event.getInventory().setResult(new ItemStack(Material.STONE_AXE)); - else if (event.getRecipe().getResult().getType() == Material.WOOD_SWORD) - event.getInventory().setResult(new ItemStack(Material.STONE_SWORD)); - else if (event.getRecipe().getResult().getType() == Material.WOOD_SPADE) - event.getInventory().setResult(new ItemStack(Material.STONE_SPADE)); - } + craftEvent(event.getRecipe(), event.getInventory()); + } - @EventHandler - public void onCraft(PrepareItemCraftEvent event) { - if (event.getRecipe().getResult().getType() == Material.WOOD_PICKAXE) - event.getInventory().setResult(new ItemStack(Material.STONE_PICKAXE)); - else if (event.getRecipe().getResult().getType() == Material.WOOD_AXE) - event.getInventory().setResult(new ItemStack(Material.STONE_AXE)); - else if (event.getRecipe().getResult().getType() == Material.WOOD_SPADE) - event.getInventory().setResult(new ItemStack(Material.STONE_SPADE)); - } + private void craftEvent(Recipe recipe, CraftingInventory inventory) { + if (recipe.getResult().getType() == Material.WOOD_PICKAXE) + inventory.setResult(new ItemStack(Material.STONE_PICKAXE)); + else if (recipe.getResult().getType() == Material.WOOD_AXE) + inventory.setResult(new ItemStack(Material.STONE_AXE)); + else if (recipe.getResult().getType() == Material.WOOD_SWORD) + inventory.setResult(new ItemStack(Material.STONE_SWORD)); + else if (recipe.getResult().getType() == Material.WOOD_SPADE) + inventory.setResult(new ItemStack(Material.STONE_SPADE)); + } }