diff --git a/dependency-reduced-pom.xml b/dependency-reduced-pom.xml index 68e7910..0277f84 100644 --- a/dependency-reduced-pom.xml +++ b/dependency-reduced-pom.xml @@ -4,7 +4,7 @@ me.ghotimayo ClassicSwords ClassicSwords - BETA-0.1 + BETA-1.0 Old combat for new minecraft @@ -46,7 +46,7 @@ org.spigotmc spigot-api - 1.12-R0.1-SNAPSHOT + 1.13.2-R0.1-SNAPSHOT provided @@ -58,13 +58,13 @@ org.bukkit craftbukkit - 1.12.2-R0.1-SNAPSHOT + 1.13.2-R0.1-SNAPSHOT provided org.bukkit bukkit - 1.12.2-R0.1-SNAPSHOT + 1.13.2-R0.1-SNAPSHOT compile diff --git a/pom.xml b/pom.xml index 4d2d260..470d555 100644 --- a/pom.xml +++ b/pom.xml @@ -3,7 +3,7 @@ 4.0.0 me.ghotimayo ClassicSwords - BETA-0.1 + BETA-1.0 ClassicSwords Old combat for new minecraft diff --git a/src/com/fpghoti/classicswords/ClassicSwordsMain.java b/src/com/fpghoti/classicswords/ClassicSwordsMain.java index 03a0d0e..d2d87ef 100644 --- a/src/com/fpghoti/classicswords/ClassicSwordsMain.java +++ b/src/com/fpghoti/classicswords/ClassicSwordsMain.java @@ -1,10 +1,6 @@ package com.fpghoti.classicswords; -import java.util.ArrayList; - import org.bukkit.Bukkit; -import org.bukkit.OfflinePlayer; -import org.bukkit.Sound; import org.bukkit.configuration.file.FileConfiguration; import org.bukkit.entity.Player; import org.bukkit.inventory.ItemStack; @@ -13,11 +9,11 @@ import org.bukkit.plugin.PluginManager; import org.bukkit.plugin.java.JavaPlugin; import org.bukkit.scheduler.BukkitRunnable; -import com.fpghoti.classicswords.commands.CSword; -import com.fpghoti.classicswords.event.BlockingEvent; -import com.fpghoti.classicswords.event.InventoryEvent; -import com.fpghoti.classicswords.event.RegenEvent; -import com.fpghoti.classicswords.event.SwingEvent; +import com.fpghoti.classicswords.commands.CSwordCommand; +import com.fpghoti.classicswords.event.BlockingListener; +import com.fpghoti.classicswords.event.InventoryListener; +import com.fpghoti.classicswords.event.RegenListener; +import com.fpghoti.classicswords.event.SwingListener; import com.fpghoti.classicswords.item.CItemType; import com.fpghoti.classicswords.item.ClassicSword; import com.fpghoti.classicswords.item.SetAttributes; @@ -30,7 +26,7 @@ public class ClassicSwordsMain extends JavaPlugin{ plugin = this; SetAttributes.defineSwords(); registerEvents(); - getCommand("CSword").setExecutor(new CSword(this)); + getCommand("CSword").setExecutor(new CSwordCommand()); registerConfig(); messageSet(); startItemCheck(); @@ -61,11 +57,11 @@ public class ClassicSwordsMain extends JavaPlugin{ } public void registerEvents(){ PluginManager pm = getServer().getPluginManager(); - pm.registerEvents(new SwingEvent(this), this); - InventoryEvent ie = new InventoryEvent(this); + pm.registerEvents(new SwingListener(this), this); + InventoryListener ie = new InventoryListener(); pm.registerEvents(ie, this); - pm.registerEvents(new BlockingEvent(this), this); - pm.registerEvents(new RegenEvent(this), this); + pm.registerEvents(new BlockingListener(), this); + pm.registerEvents(new RegenListener(this), this); } FileConfiguration config = this.getConfig(); diff --git a/src/com/fpghoti/classicswords/commands/CSword.java b/src/com/fpghoti/classicswords/commands/CSwordCommand.java similarity index 62% rename from src/com/fpghoti/classicswords/commands/CSword.java rename to src/com/fpghoti/classicswords/commands/CSwordCommand.java index 40ec1a3..e9bc852 100644 --- a/src/com/fpghoti/classicswords/commands/CSword.java +++ b/src/com/fpghoti/classicswords/commands/CSwordCommand.java @@ -6,16 +6,9 @@ import org.bukkit.command.CommandExecutor; import org.bukkit.command.CommandSender; import org.bukkit.entity.Player; -import com.fpghoti.classicswords.ClassicSwordsMain; -import com.fpghoti.classicswords.item.CItem; +import com.fpghoti.classicswords.item.CItemManager; -public class CSword implements CommandExecutor{ - - private ClassicSwordsMain plugin; - - public CSword(ClassicSwordsMain plugin) { - this.plugin = plugin; - } +public class CSwordCommand implements CommandExecutor{ public boolean onCommand(CommandSender sender, Command command, String label, String[] args){ if(label.equalsIgnoreCase("csword")){ @@ -23,15 +16,15 @@ public class CSword implements CommandExecutor{ Player p = (Player) sender; if(args[0] != null){ if(args[0].equalsIgnoreCase("wood")){ - CItem.givecWoodSword(p, false); + CItemManager.givecWoodSword(p, false); }else if(args[0].equalsIgnoreCase("stone")){ - CItem.givecStoneSword(p, false); + CItemManager.givecStoneSword(p, false); }else if(args[0].equalsIgnoreCase("iron")){ - CItem.givecIronSword(p, false); + CItemManager.givecIronSword(p, false); }else if(args[0].equalsIgnoreCase("gold")){ - CItem.givecGoldSword(p, false); + CItemManager.givecGoldSword(p, false); }else if(args[0].equalsIgnoreCase("diamond")){ - CItem.givecDiamondSword(p, false); + CItemManager.givecDiamondSword(p, false); }else{ p.sendMessage(ChatColor.RED + "That is not a valid cSword type!"); } diff --git a/src/com/fpghoti/classicswords/event/BlockingEvent.java b/src/com/fpghoti/classicswords/event/BlockingListener.java similarity index 53% rename from src/com/fpghoti/classicswords/event/BlockingEvent.java rename to src/com/fpghoti/classicswords/event/BlockingListener.java index 1aca2dc..e75d14c 100644 --- a/src/com/fpghoti/classicswords/event/BlockingEvent.java +++ b/src/com/fpghoti/classicswords/event/BlockingListener.java @@ -1,5 +1,6 @@ package com.fpghoti.classicswords.event; +import org.bukkit.Location; import org.bukkit.entity.Entity; import org.bukkit.entity.Player; import org.bukkit.event.EventHandler; @@ -12,13 +13,7 @@ import org.bukkit.event.inventory.InventoryOpenEvent; import com.fpghoti.classicswords.ClassicSwordsMain; -public class BlockingEvent implements Listener{ - - private ClassicSwordsMain plugin; - - public BlockingEvent(ClassicSwordsMain plugin) { - this.plugin = plugin; - } +public class BlockingListener implements Listener{ @SuppressWarnings("deprecation") @EventHandler(priority = EventPriority.HIGHEST) @@ -31,6 +26,7 @@ public class BlockingEvent implements Listener{ if(newdamage < 0) { newdamage = 0; } + if(event.getDamage(DamageModifier.BLOCKING) >= 0){ return; } @@ -38,9 +34,29 @@ public class BlockingEvent implements Listener{ if(event.getFinalDamage() >= newdamage) { event.setDamage(DamageModifier.BLOCKING, newdamage * -1); } + } } } + //For future use + + @SuppressWarnings("unused") + private boolean hitShield(Location attacker, Location victim) { + double attackerPitch = Math.toRadians(attacker.getPitch()); + double attackerYaw = Math.toRadians(attacker.getYaw()); + double attackerX = -Math.cos(attackerPitch) * Math.sin(attackerYaw); + double attackerY = -Math.sin(attackerPitch); + double attackerZ = Math.cos(attackerPitch) * Math.cos(attackerYaw); + double victimPitch = Math.toRadians(victim.getPitch()); + double victimYaw = Math.toRadians(victim.getYaw()); + double victimX = -Math.cos(victimPitch) * Math.sin(victimYaw); + double victimY = -Math.sin(victimPitch); + double victimZ = Math.cos(victimPitch) * Math.cos(victimYaw); + return (victimX * attackerX + victimY * attackerY + victimZ * attackerZ) < 0.6D; + } + + + } diff --git a/src/com/fpghoti/classicswords/event/InventoryEvent.java b/src/com/fpghoti/classicswords/event/InventoryListener.java similarity index 91% rename from src/com/fpghoti/classicswords/event/InventoryEvent.java rename to src/com/fpghoti/classicswords/event/InventoryListener.java index 3370674..cfd8cd2 100644 --- a/src/com/fpghoti/classicswords/event/InventoryEvent.java +++ b/src/com/fpghoti/classicswords/event/InventoryListener.java @@ -14,18 +14,11 @@ import org.bukkit.event.player.PlayerKickEvent; import org.bukkit.event.player.PlayerQuitEvent; import org.bukkit.inventory.ItemStack; -import com.fpghoti.classicswords.ClassicSwordsMain; import com.fpghoti.classicswords.item.CItemType; import com.fpghoti.classicswords.item.ClassicSword; import com.fpghoti.classicswords.util.Storage; -public class InventoryEvent implements Listener{ - - private ClassicSwordsMain plugin; - - public InventoryEvent(ClassicSwordsMain plugin) { - this.plugin = plugin; - } +public class InventoryListener implements Listener{ @EventHandler public void onInvOpen(InventoryOpenEvent event){ diff --git a/src/com/fpghoti/classicswords/event/RegenEvent.java b/src/com/fpghoti/classicswords/event/RegenListener.java similarity index 85% rename from src/com/fpghoti/classicswords/event/RegenEvent.java rename to src/com/fpghoti/classicswords/event/RegenListener.java index 6c94310..f404218 100644 --- a/src/com/fpghoti/classicswords/event/RegenEvent.java +++ b/src/com/fpghoti/classicswords/event/RegenListener.java @@ -1,12 +1,7 @@ package com.fpghoti.classicswords.event; -import java.util.HashMap; -import java.util.Map; -import java.util.UUID; - import org.bukkit.Bukkit; import org.bukkit.attribute.Attribute; -import org.bukkit.entity.Entity; import org.bukkit.entity.EntityType; import org.bukkit.entity.Player; import org.bukkit.event.EventHandler; @@ -17,11 +12,11 @@ import org.bukkit.event.entity.EntityRegainHealthEvent; import com.fpghoti.classicswords.ClassicSwordsMain; import com.fpghoti.classicswords.util.Storage; -public class RegenEvent implements Listener{ +public class RegenListener implements Listener{ private ClassicSwordsMain plugin; - public RegenEvent(ClassicSwordsMain plugin) { + public RegenListener(ClassicSwordsMain plugin) { this.plugin = plugin; } diff --git a/src/com/fpghoti/classicswords/event/SwingEvent.java b/src/com/fpghoti/classicswords/event/SwingListener.java similarity index 93% rename from src/com/fpghoti/classicswords/event/SwingEvent.java rename to src/com/fpghoti/classicswords/event/SwingListener.java index 6434f63..110bee4 100644 --- a/src/com/fpghoti/classicswords/event/SwingEvent.java +++ b/src/com/fpghoti/classicswords/event/SwingListener.java @@ -1,12 +1,8 @@ package com.fpghoti.classicswords.event; -import java.util.Map; - import org.bukkit.Bukkit; import org.bukkit.GameMode; -import org.bukkit.Material; import org.bukkit.Sound; -import org.bukkit.enchantments.Enchantment; import org.bukkit.entity.Player; import org.bukkit.event.EventHandler; import org.bukkit.event.EventPriority; @@ -17,19 +13,17 @@ import org.bukkit.event.block.BlockDamageEvent; import org.bukkit.event.entity.EntityDamageByEntityEvent; import org.bukkit.event.player.PlayerInteractEvent; import org.bukkit.inventory.ItemStack; -import org.bukkit.util.Vector; import com.fpghoti.classicswords.ClassicSwordsMain; -import com.fpghoti.classicswords.item.CItem; import com.fpghoti.classicswords.item.CItemType; import com.fpghoti.classicswords.item.ClassicSword; import com.fpghoti.classicswords.util.Storage; -public class SwingEvent implements Listener{ +public class SwingListener implements Listener{ private ClassicSwordsMain plugin; - public SwingEvent(ClassicSwordsMain plugin) { + public SwingListener(ClassicSwordsMain plugin) { this.plugin = plugin; } diff --git a/src/com/fpghoti/classicswords/item/CItem.java b/src/com/fpghoti/classicswords/item/CItem.java deleted file mode 100644 index c0d3230..0000000 --- a/src/com/fpghoti/classicswords/item/CItem.java +++ /dev/null @@ -1,269 +0,0 @@ -package com.fpghoti.classicswords.item; - -import org.bukkit.Material; -import org.bukkit.craftbukkit.v1_13_R2.inventory.CraftItemStack; -import org.bukkit.entity.Player; -import org.bukkit.inventory.ItemFlag; -import org.bukkit.inventory.ItemStack; -import org.bukkit.inventory.meta.ItemMeta; - -import net.md_5.bungee.api.ChatColor; -import net.minecraft.server.v1_13_R2.NBTTagCompound; -import net.minecraft.server.v1_13_R2.NBTTagDouble; -import net.minecraft.server.v1_13_R2.NBTTagInt; -import net.minecraft.server.v1_13_R2.NBTTagList; -import net.minecraft.server.v1_13_R2.NBTTagString; - -public class CItem { - - public static void givecDiamondSword(Player p, Boolean hold){ - ItemStack csword = new ItemStack(Material.SHIELD, 1, (short)1); - ItemMeta meta = csword.getItemMeta(); - meta.setUnbreakable(true); - meta.addItemFlags(ItemFlag.HIDE_UNBREAKABLE); - meta.setDisplayName("Classic Diamond Sword"); - csword.setItemMeta(meta); - net.minecraft.server.v1_13_R2.ItemStack nmsStack = CraftItemStack.asNMSCopy(csword); - NBTTagCompound compound = (nmsStack.hasTag()) ? nmsStack.getTag() : new NBTTagCompound(); - NBTTagList modifiers = new NBTTagList(); - NBTTagCompound damage = new NBTTagCompound(); - - - - damage.set("AttributeName", new NBTTagString("generic.attackDamage")); - damage.set("Name", new NBTTagString("generic.attackDamage")); - damage.set("Amount", new NBTTagInt(7)); - damage.set("Operation", new NBTTagInt(0)); - damage.set("UUIDLeast", new NBTTagInt(894654)); - damage.set("UUIDMost", new NBTTagInt(2872)); - damage.set("Slot", new NBTTagString("mainhand")); - - NBTTagCompound atspeed = new NBTTagCompound(); - - - - atspeed.set("AttributeName", new NBTTagString("generic.attackSpeed")); - atspeed.set("Name", new NBTTagString("generic.attackSpeed")); - atspeed.set("Amount", new NBTTagDouble(1021.6)); - atspeed.set("Operation", new NBTTagInt(0)); - atspeed.set("UUIDLeast", new NBTTagInt(894654)); - atspeed.set("UUIDMost", new NBTTagInt(2872)); - atspeed.set("Slot", new NBTTagString("mainhand")); - - modifiers.add(damage); - modifiers.add(atspeed); - compound.set("AttributeModifiers", modifiers); - nmsStack.setTag(compound); - csword = CraftItemStack.asBukkitCopy(nmsStack); - - - - - if(hold){ - p.getInventory().setItemInMainHand(csword); - }else{ - p.sendMessage(ChatColor.AQUA + "Spawning in a cSword..."); - p.getInventory().addItem(csword); - } - } - public static void givecWoodSword(Player p, Boolean hold){ - ItemStack csword = new ItemStack(Material.SHIELD, 1, (short)2); - ItemMeta meta = csword.getItemMeta(); - meta.setUnbreakable(true); - meta.addItemFlags(ItemFlag.HIDE_UNBREAKABLE); - meta.setDisplayName("Classic Wood Sword"); - csword.setItemMeta(meta); - net.minecraft.server.v1_13_R2.ItemStack nmsStack = CraftItemStack.asNMSCopy(csword); - NBTTagCompound compound = (nmsStack.hasTag()) ? nmsStack.getTag() : new NBTTagCompound(); - NBTTagList modifiers = new NBTTagList(); - NBTTagCompound damage = new NBTTagCompound(); - - - - damage.set("AttributeName", new NBTTagString("generic.attackDamage")); - damage.set("Name", new NBTTagString("generic.attackDamage")); - damage.set("Amount", new NBTTagInt(4)); - damage.set("Operation", new NBTTagInt(0)); - damage.set("UUIDLeast", new NBTTagInt(894654)); - damage.set("UUIDMost", new NBTTagInt(2872)); - damage.set("Slot", new NBTTagString("mainhand")); - - NBTTagCompound atspeed = new NBTTagCompound(); - - - - atspeed.set("AttributeName", new NBTTagString("generic.attackSpeed")); - atspeed.set("Name", new NBTTagString("generic.attackSpeed")); - atspeed.set("Amount", new NBTTagDouble(1021.6)); - atspeed.set("Operation", new NBTTagInt(0)); - atspeed.set("UUIDLeast", new NBTTagInt(894654)); - atspeed.set("UUIDMost", new NBTTagInt(2872)); - atspeed.set("Slot", new NBTTagString("mainhand")); - - modifiers.add(damage); - modifiers.add(atspeed); - compound.set("AttributeModifiers", modifiers); - nmsStack.setTag(compound); - csword = CraftItemStack.asBukkitCopy(nmsStack); - - - - - if(hold){ - p.getInventory().setItemInMainHand(csword); - }else{ - p.sendMessage(ChatColor.AQUA + "Spawning in a cSword..."); - p.getInventory().addItem(csword); - } - } - public static void givecStoneSword(Player p, Boolean hold){ - ItemStack csword = new ItemStack(Material.SHIELD, 1, (short)3); - ItemMeta meta = csword.getItemMeta(); - meta.setUnbreakable(true); - meta.addItemFlags(ItemFlag.HIDE_UNBREAKABLE); - meta.setDisplayName("Classic Stone Sword"); - csword.setItemMeta(meta); - net.minecraft.server.v1_13_R2.ItemStack nmsStack = CraftItemStack.asNMSCopy(csword); - NBTTagCompound compound = (nmsStack.hasTag()) ? nmsStack.getTag() : new NBTTagCompound(); - NBTTagList modifiers = new NBTTagList(); - NBTTagCompound damage = new NBTTagCompound(); - - - - damage.set("AttributeName", new NBTTagString("generic.attackDamage")); - damage.set("Name", new NBTTagString("generic.attackDamage")); - damage.set("Amount", new NBTTagInt(5)); - damage.set("Operation", new NBTTagInt(0)); - damage.set("UUIDLeast", new NBTTagInt(894654)); - damage.set("UUIDMost", new NBTTagInt(2872)); - damage.set("Slot", new NBTTagString("mainhand")); - - NBTTagCompound atspeed = new NBTTagCompound(); - - - - atspeed.set("AttributeName", new NBTTagString("generic.attackSpeed")); - atspeed.set("Name", new NBTTagString("generic.attackSpeed")); - atspeed.set("Amount", new NBTTagDouble(1021.6)); - atspeed.set("Operation", new NBTTagInt(0)); - atspeed.set("UUIDLeast", new NBTTagInt(894654)); - atspeed.set("UUIDMost", new NBTTagInt(2872)); - atspeed.set("Slot", new NBTTagString("mainhand")); - - modifiers.add(damage); - modifiers.add(atspeed); - compound.set("AttributeModifiers", modifiers); - nmsStack.setTag(compound); - csword = CraftItemStack.asBukkitCopy(nmsStack); - - - - - if(hold){ - p.getInventory().setItemInMainHand(csword); - }else{ - p.sendMessage(ChatColor.AQUA + "Spawning in a cSword..."); - p.getInventory().addItem(csword); - } - } - public static void givecIronSword(Player p, Boolean hold){ - ItemStack csword = new ItemStack(Material.SHIELD, 1, (short)4); - ItemMeta meta = csword.getItemMeta(); - meta.setUnbreakable(true); - meta.addItemFlags(ItemFlag.HIDE_UNBREAKABLE); - meta.setDisplayName("Classic Iron Sword"); - csword.setItemMeta(meta); - net.minecraft.server.v1_13_R2.ItemStack nmsStack = CraftItemStack.asNMSCopy(csword); - NBTTagCompound compound = (nmsStack.hasTag()) ? nmsStack.getTag() : new NBTTagCompound(); - NBTTagList modifiers = new NBTTagList(); - NBTTagCompound damage = new NBTTagCompound(); - - - - damage.set("AttributeName", new NBTTagString("generic.attackDamage")); - damage.set("Name", new NBTTagString("generic.attackDamage")); - damage.set("Amount", new NBTTagInt(6)); - damage.set("Operation", new NBTTagInt(0)); - damage.set("UUIDLeast", new NBTTagInt(894654)); - damage.set("UUIDMost", new NBTTagInt(2872)); - damage.set("Slot", new NBTTagString("mainhand")); - - NBTTagCompound atspeed = new NBTTagCompound(); - - - - atspeed.set("AttributeName", new NBTTagString("generic.attackSpeed")); - atspeed.set("Name", new NBTTagString("generic.attackSpeed")); - atspeed.set("Amount", new NBTTagDouble(1021.6)); - atspeed.set("Operation", new NBTTagInt(0)); - atspeed.set("UUIDLeast", new NBTTagInt(894654)); - atspeed.set("UUIDMost", new NBTTagInt(2872)); - atspeed.set("Slot", new NBTTagString("mainhand")); - - modifiers.add(damage); - modifiers.add(atspeed); - compound.set("AttributeModifiers", modifiers); - nmsStack.setTag(compound); - csword = CraftItemStack.asBukkitCopy(nmsStack); - - - - - if(hold){ - p.getInventory().setItemInMainHand(csword); - }else{ - p.sendMessage(ChatColor.AQUA + "Spawning in a cSword..."); - p.getInventory().addItem(csword); - } - } - public static void givecGoldSword(Player p, Boolean hold){ - ItemStack csword = new ItemStack(Material.SHIELD, 1, (short)5); - ItemMeta meta = csword.getItemMeta(); - meta.setUnbreakable(true); - meta.addItemFlags(ItemFlag.HIDE_UNBREAKABLE); - meta.setDisplayName("Classic Gold Sword"); - csword.setItemMeta(meta); - net.minecraft.server.v1_13_R2.ItemStack nmsStack = CraftItemStack.asNMSCopy(csword); - NBTTagCompound compound = (nmsStack.hasTag()) ? nmsStack.getTag() : new NBTTagCompound(); - NBTTagList modifiers = new NBTTagList(); - NBTTagCompound damage = new NBTTagCompound(); - - - - damage.set("AttributeName", new NBTTagString("generic.attackDamage")); - damage.set("Name", new NBTTagString("generic.attackDamage")); - damage.set("Amount", new NBTTagInt(4)); - damage.set("Operation", new NBTTagInt(0)); - damage.set("UUIDLeast", new NBTTagInt(894654)); - damage.set("UUIDMost", new NBTTagInt(2872)); - damage.set("Slot", new NBTTagString("mainhand")); - - NBTTagCompound atspeed = new NBTTagCompound(); - - - - atspeed.set("AttributeName", new NBTTagString("generic.attackSpeed")); - atspeed.set("Name", new NBTTagString("generic.attackSpeed")); - atspeed.set("Amount", new NBTTagDouble(1021.6)); - atspeed.set("Operation", new NBTTagInt(0)); - atspeed.set("UUIDLeast", new NBTTagInt(894654)); - atspeed.set("UUIDMost", new NBTTagInt(2872)); - atspeed.set("Slot", new NBTTagString("mainhand")); - - modifiers.add(damage); - modifiers.add(atspeed); - compound.set("AttributeModifiers", modifiers); - nmsStack.setTag(compound); - csword = CraftItemStack.asBukkitCopy(nmsStack); - - - - - if(hold){ - p.getInventory().setItemInMainHand(csword); - }else{ - p.sendMessage(ChatColor.AQUA + "Spawning in a cSword..."); - p.getInventory().addItem(csword); - } - } -} diff --git a/src/com/fpghoti/classicswords/item/CItemManager.java b/src/com/fpghoti/classicswords/item/CItemManager.java new file mode 100644 index 0000000..b0b83dc --- /dev/null +++ b/src/com/fpghoti/classicswords/item/CItemManager.java @@ -0,0 +1,275 @@ +package com.fpghoti.classicswords.item; + +import org.bukkit.Material; +import org.bukkit.craftbukkit.v1_13_R2.inventory.CraftItemStack; +import org.bukkit.entity.Player; +import org.bukkit.inventory.ItemFlag; +import org.bukkit.inventory.ItemStack; +import org.bukkit.inventory.meta.Damageable; +import org.bukkit.inventory.meta.ItemMeta; + +import net.md_5.bungee.api.ChatColor; +import net.minecraft.server.v1_13_R2.NBTTagCompound; +import net.minecraft.server.v1_13_R2.NBTTagDouble; +import net.minecraft.server.v1_13_R2.NBTTagInt; +import net.minecraft.server.v1_13_R2.NBTTagList; +import net.minecraft.server.v1_13_R2.NBTTagString; + +public class CItemManager { + + public static void givecDiamondSword(Player p, Boolean hold){ + ItemStack csword = new ItemStack(Material.SHIELD, 1); + ItemMeta meta = csword.getItemMeta(); + ((Damageable)meta).setDamage(1); + meta.setUnbreakable(true); + meta.addItemFlags(ItemFlag.HIDE_UNBREAKABLE); + meta.setDisplayName("Classic Diamond Sword"); + csword.setItemMeta(meta); + net.minecraft.server.v1_13_R2.ItemStack nmsStack = CraftItemStack.asNMSCopy(csword); + NBTTagCompound compound = (nmsStack.hasTag()) ? nmsStack.getTag() : new NBTTagCompound(); + NBTTagList modifiers = new NBTTagList(); + NBTTagCompound damage = new NBTTagCompound(); + + + + damage.set("AttributeName", new NBTTagString("generic.attackDamage")); + damage.set("Name", new NBTTagString("generic.attackDamage")); + damage.set("Amount", new NBTTagInt(7)); + damage.set("Operation", new NBTTagInt(0)); + damage.set("UUIDLeast", new NBTTagInt(894654)); + damage.set("UUIDMost", new NBTTagInt(2872)); + damage.set("Slot", new NBTTagString("mainhand")); + + NBTTagCompound atspeed = new NBTTagCompound(); + + + + atspeed.set("AttributeName", new NBTTagString("generic.attackSpeed")); + atspeed.set("Name", new NBTTagString("generic.attackSpeed")); + atspeed.set("Amount", new NBTTagDouble(1021.6)); + atspeed.set("Operation", new NBTTagInt(0)); + atspeed.set("UUIDLeast", new NBTTagInt(894654)); + atspeed.set("UUIDMost", new NBTTagInt(2872)); + atspeed.set("Slot", new NBTTagString("mainhand")); + + modifiers.add(damage); + modifiers.add(atspeed); + compound.set("AttributeModifiers", modifiers); + nmsStack.setTag(compound); + csword = CraftItemStack.asBukkitCopy(nmsStack); + + + + + if(hold){ + p.getInventory().setItemInMainHand(csword); + }else{ + p.sendMessage(ChatColor.AQUA + "Spawning in a cSword..."); + p.getInventory().addItem(csword); + } + } + public static void givecWoodSword(Player p, Boolean hold){ + ItemStack csword = new ItemStack(Material.SHIELD, 1); + ItemMeta meta = csword.getItemMeta(); + ((Damageable)meta).setDamage(2); + meta.setUnbreakable(true); + meta.addItemFlags(ItemFlag.HIDE_UNBREAKABLE); + meta.setDisplayName("Classic Wood Sword"); + csword.setItemMeta(meta); + net.minecraft.server.v1_13_R2.ItemStack nmsStack = CraftItemStack.asNMSCopy(csword); + NBTTagCompound compound = (nmsStack.hasTag()) ? nmsStack.getTag() : new NBTTagCompound(); + NBTTagList modifiers = new NBTTagList(); + NBTTagCompound damage = new NBTTagCompound(); + + + + damage.set("AttributeName", new NBTTagString("generic.attackDamage")); + damage.set("Name", new NBTTagString("generic.attackDamage")); + damage.set("Amount", new NBTTagInt(4)); + damage.set("Operation", new NBTTagInt(0)); + damage.set("UUIDLeast", new NBTTagInt(894654)); + damage.set("UUIDMost", new NBTTagInt(2872)); + damage.set("Slot", new NBTTagString("mainhand")); + + NBTTagCompound atspeed = new NBTTagCompound(); + + + + atspeed.set("AttributeName", new NBTTagString("generic.attackSpeed")); + atspeed.set("Name", new NBTTagString("generic.attackSpeed")); + atspeed.set("Amount", new NBTTagDouble(1021.6)); + atspeed.set("Operation", new NBTTagInt(0)); + atspeed.set("UUIDLeast", new NBTTagInt(894654)); + atspeed.set("UUIDMost", new NBTTagInt(2872)); + atspeed.set("Slot", new NBTTagString("mainhand")); + + modifiers.add(damage); + modifiers.add(atspeed); + compound.set("AttributeModifiers", modifiers); + nmsStack.setTag(compound); + csword = CraftItemStack.asBukkitCopy(nmsStack); + + + + + if(hold){ + p.getInventory().setItemInMainHand(csword); + }else{ + p.sendMessage(ChatColor.AQUA + "Spawning in a cSword..."); + p.getInventory().addItem(csword); + } + } + public static void givecStoneSword(Player p, Boolean hold){ + ItemStack csword = new ItemStack(Material.SHIELD, 1); + ItemMeta meta = csword.getItemMeta(); + ((Damageable)meta).setDamage(3); + meta.setUnbreakable(true); + meta.addItemFlags(ItemFlag.HIDE_UNBREAKABLE); + meta.setDisplayName("Classic Stone Sword"); + csword.setItemMeta(meta); + net.minecraft.server.v1_13_R2.ItemStack nmsStack = CraftItemStack.asNMSCopy(csword); + NBTTagCompound compound = (nmsStack.hasTag()) ? nmsStack.getTag() : new NBTTagCompound(); + NBTTagList modifiers = new NBTTagList(); + NBTTagCompound damage = new NBTTagCompound(); + + + + damage.set("AttributeName", new NBTTagString("generic.attackDamage")); + damage.set("Name", new NBTTagString("generic.attackDamage")); + damage.set("Amount", new NBTTagInt(5)); + damage.set("Operation", new NBTTagInt(0)); + damage.set("UUIDLeast", new NBTTagInt(894654)); + damage.set("UUIDMost", new NBTTagInt(2872)); + damage.set("Slot", new NBTTagString("mainhand")); + + NBTTagCompound atspeed = new NBTTagCompound(); + + + + atspeed.set("AttributeName", new NBTTagString("generic.attackSpeed")); + atspeed.set("Name", new NBTTagString("generic.attackSpeed")); + atspeed.set("Amount", new NBTTagDouble(1021.6)); + atspeed.set("Operation", new NBTTagInt(0)); + atspeed.set("UUIDLeast", new NBTTagInt(894654)); + atspeed.set("UUIDMost", new NBTTagInt(2872)); + atspeed.set("Slot", new NBTTagString("mainhand")); + + modifiers.add(damage); + modifiers.add(atspeed); + compound.set("AttributeModifiers", modifiers); + nmsStack.setTag(compound); + csword = CraftItemStack.asBukkitCopy(nmsStack); + + + + + if(hold){ + p.getInventory().setItemInMainHand(csword); + }else{ + p.sendMessage(ChatColor.AQUA + "Spawning in a cSword..."); + p.getInventory().addItem(csword); + } + } + public static void givecIronSword(Player p, Boolean hold){ + ItemStack csword = new ItemStack(Material.SHIELD, 1); + ItemMeta meta = csword.getItemMeta(); + ((Damageable)meta).setDamage(4); + meta.setUnbreakable(true); + meta.addItemFlags(ItemFlag.HIDE_UNBREAKABLE); + meta.setDisplayName("Classic Iron Sword"); + csword.setItemMeta(meta); + net.minecraft.server.v1_13_R2.ItemStack nmsStack = CraftItemStack.asNMSCopy(csword); + NBTTagCompound compound = (nmsStack.hasTag()) ? nmsStack.getTag() : new NBTTagCompound(); + NBTTagList modifiers = new NBTTagList(); + NBTTagCompound damage = new NBTTagCompound(); + + + + damage.set("AttributeName", new NBTTagString("generic.attackDamage")); + damage.set("Name", new NBTTagString("generic.attackDamage")); + damage.set("Amount", new NBTTagInt(6)); + damage.set("Operation", new NBTTagInt(0)); + damage.set("UUIDLeast", new NBTTagInt(894654)); + damage.set("UUIDMost", new NBTTagInt(2872)); + damage.set("Slot", new NBTTagString("mainhand")); + + NBTTagCompound atspeed = new NBTTagCompound(); + + + + atspeed.set("AttributeName", new NBTTagString("generic.attackSpeed")); + atspeed.set("Name", new NBTTagString("generic.attackSpeed")); + atspeed.set("Amount", new NBTTagDouble(1021.6)); + atspeed.set("Operation", new NBTTagInt(0)); + atspeed.set("UUIDLeast", new NBTTagInt(894654)); + atspeed.set("UUIDMost", new NBTTagInt(2872)); + atspeed.set("Slot", new NBTTagString("mainhand")); + + modifiers.add(damage); + modifiers.add(atspeed); + compound.set("AttributeModifiers", modifiers); + nmsStack.setTag(compound); + csword = CraftItemStack.asBukkitCopy(nmsStack); + + + + + if(hold){ + p.getInventory().setItemInMainHand(csword); + }else{ + p.sendMessage(ChatColor.AQUA + "Spawning in a cSword..."); + p.getInventory().addItem(csword); + } + } + public static void givecGoldSword(Player p, Boolean hold){ + ItemStack csword = new ItemStack(Material.SHIELD, 1); + ItemMeta meta = csword.getItemMeta(); + ((Damageable)meta).setDamage(5); + meta.setUnbreakable(true); + meta.addItemFlags(ItemFlag.HIDE_UNBREAKABLE); + meta.setDisplayName("Classic Gold Sword"); + csword.setItemMeta(meta); + net.minecraft.server.v1_13_R2.ItemStack nmsStack = CraftItemStack.asNMSCopy(csword); + NBTTagCompound compound = (nmsStack.hasTag()) ? nmsStack.getTag() : new NBTTagCompound(); + NBTTagList modifiers = new NBTTagList(); + NBTTagCompound damage = new NBTTagCompound(); + + + + damage.set("AttributeName", new NBTTagString("generic.attackDamage")); + damage.set("Name", new NBTTagString("generic.attackDamage")); + damage.set("Amount", new NBTTagInt(4)); + damage.set("Operation", new NBTTagInt(0)); + damage.set("UUIDLeast", new NBTTagInt(894654)); + damage.set("UUIDMost", new NBTTagInt(2872)); + damage.set("Slot", new NBTTagString("mainhand")); + + NBTTagCompound atspeed = new NBTTagCompound(); + + + + atspeed.set("AttributeName", new NBTTagString("generic.attackSpeed")); + atspeed.set("Name", new NBTTagString("generic.attackSpeed")); + atspeed.set("Amount", new NBTTagDouble(1021.6)); + atspeed.set("Operation", new NBTTagInt(0)); + atspeed.set("UUIDLeast", new NBTTagInt(894654)); + atspeed.set("UUIDMost", new NBTTagInt(2872)); + atspeed.set("Slot", new NBTTagString("mainhand")); + + modifiers.add(damage); + modifiers.add(atspeed); + compound.set("AttributeModifiers", modifiers); + nmsStack.setTag(compound); + csword = CraftItemStack.asBukkitCopy(nmsStack); + + + + + if(hold){ + p.getInventory().setItemInMainHand(csword); + }else{ + p.sendMessage(ChatColor.AQUA + "Spawning in a cSword..."); + p.getInventory().addItem(csword); + } + } +} diff --git a/src/com/fpghoti/classicswords/item/CItemType.java b/src/com/fpghoti/classicswords/item/CItemType.java index bee28a3..3454135 100644 --- a/src/com/fpghoti/classicswords/item/CItemType.java +++ b/src/com/fpghoti/classicswords/item/CItemType.java @@ -1,7 +1,6 @@ package com.fpghoti.classicswords.item; import org.bukkit.Material; -import org.bukkit.inventory.ItemStack; import com.fpghoti.classicswords.util.Storage; diff --git a/src/com/fpghoti/classicswords/item/ClassicSword.java b/src/com/fpghoti/classicswords/item/ClassicSword.java index 68d92d8..032c87c 100644 --- a/src/com/fpghoti/classicswords/item/ClassicSword.java +++ b/src/com/fpghoti/classicswords/item/ClassicSword.java @@ -1,7 +1,6 @@ package com.fpghoti.classicswords.item; import java.lang.reflect.Constructor; -import java.util.Random; import org.bukkit.Bukkit; import org.bukkit.Material; @@ -12,6 +11,7 @@ import org.bukkit.entity.Player; import org.bukkit.inventory.Inventory; import org.bukkit.inventory.ItemFlag; import org.bukkit.inventory.ItemStack; +import org.bukkit.inventory.meta.Damageable; import org.bukkit.inventory.meta.ItemMeta; import com.fpghoti.classicswords.item.CItemType.SwordType; @@ -29,8 +29,11 @@ public class ClassicSword { String name; - ItemStack csword = new ItemStack(Material.SHIELD, 1, CItemType.getSwordModel(type)); + ItemStack csword = new ItemStack(Material.SHIELD, 1); + ItemMeta meta = csword.getItemMeta(); + ((Damageable)meta).setDamage(CItemType.getSwordModel(type)); + if(old.hasItemMeta()) { ItemMeta ometa = old.getItemMeta(); if(ometa.hasDisplayName()) { @@ -66,7 +69,9 @@ public class ClassicSword { NBTTagCompound cstag = new NBTTagCompound(); - int dur = old.getType().getMaxDurability() - old.getDurability(); + //int dur = old.getType().getMaxDurability() - old.getDurability(); + int dur = old.getType().getMaxDurability() - ((Damageable)old.getItemMeta()).getDamage(); + cstag.set("Durability", new NBTTagInt(dur)); cstag.set("Type", new NBTTagString(CItemType.getShortName(type))); @@ -88,9 +93,11 @@ public class ClassicSword { if(isCShield(old)) { String name; - ItemStack csword = new ItemStack(Material.SHIELD, 1, CItemType.getSwordBlockModel(type)); + ItemStack csword = new ItemStack(Material.SHIELD, 1); ItemMeta meta = csword.getItemMeta(); + ((Damageable)meta).setDamage(CItemType.getSwordBlockModel(type)); + if(old.hasItemMeta()) { ItemMeta ometa = old.getItemMeta(); if(ometa.hasDisplayName()) { @@ -157,9 +164,11 @@ public class ClassicSword { String name; - ItemStack csword = new ItemStack(Material.SHIELD, 1, CItemType.getSwordModel(type)); + ItemStack csword = new ItemStack(Material.SHIELD, 1); - ItemMeta meta = csword.getItemMeta(); + ItemMeta meta = csword.getItemMeta(); + ((Damageable)meta).setDamage(CItemType.getSwordModel(type)); + if(old.hasItemMeta()) { ItemMeta ometa = old.getItemMeta(); if(ometa.hasDisplayName()) { @@ -268,7 +277,8 @@ public class ClassicSword { nmsStack.setTag(compound); csword = CraftItemStack.asBukkitCopy(nmsStack); - csword.setDurability((short)(csword.getType().getMaxDurability() - (short)((int)getCShieldDurability(old)))); + //csword.setDurability((short)(csword.getType().getMaxDurability() - (short)((int)getCShieldDurability(old)))); + ((Damageable)csword.getItemMeta()).setDamage(csword.getType().getMaxDurability() - ((int)getCShieldDurability(old))); return csword; } diff --git a/src/com/fpghoti/classicswords/util/Storage.java b/src/com/fpghoti/classicswords/util/Storage.java index c74cb4d..8d1c880 100644 --- a/src/com/fpghoti/classicswords/util/Storage.java +++ b/src/com/fpghoti/classicswords/util/Storage.java @@ -1,6 +1,5 @@ package com.fpghoti.classicswords.util; -import java.util.ArrayList; import java.util.HashMap; import java.util.HashSet; import java.util.Map;