Advertisement
Guest User

Untitled

a guest
Apr 5th, 2022
142
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 10.18 KB | None | 0 0
  1. import org.bukkit.Bukkit;
  2. import org.bukkit.ChatColor;
  3. import org.bukkit.Material;
  4. import org.bukkit.NamespacedKey;
  5. import org.bukkit.enchantments.Enchantment;
  6. import org.bukkit.entity.EntityType;
  7. import org.bukkit.entity.Player;
  8. import org.bukkit.event.EventHandler;
  9. import org.bukkit.event.Listener;
  10. import org.bukkit.event.block.BlockBreakEvent;
  11. import org.bukkit.event.entity.EntityDamageByEntityEvent;
  12. import org.bukkit.inventory.ItemFlag;
  13. import org.bukkit.inventory.ItemStack;
  14. import org.bukkit.inventory.ShapedRecipe;
  15. import org.bukkit.inventory.meta.ItemMeta;
  16. import org.bukkit.plugin.java.JavaPlugin;
  17.  
  18. import java.util.ArrayList;
  19. import java.util.List;
  20.  
  21. public final class OpPickaxes extends JavaPlugin implements Listener {
  22.  
  23. @Override
  24. public void onEnable() {
  25.  
  26. getServer().broadcastMessage(ChatColor.GOLD + "The plugin is working!");
  27. this.getServer().getPluginManager().registerEvents(this, this);
  28. Bukkit.addRecipe(ePick());
  29. Bukkit.addRecipe(fastPick());
  30. Bukkit.addRecipe(sharpPick());
  31. Bukkit.addRecipe(woodCutter());
  32. Bukkit.addRecipe(oreConverter());
  33.  
  34.  
  35.  
  36. }
  37.  
  38. @Override
  39. public void onDisable() {
  40. // Plugin shutdown logic
  41. }
  42.  
  43. public ShapedRecipe ePick() {
  44.  
  45. // telling the item that I want as the output
  46. ItemStack item = new ItemStack(Material.IRON_PICKAXE);
  47. ItemMeta meta = item.getItemMeta();
  48. assert meta != null;
  49. meta.setDisplayName(ChatColor.GREEN + "EMERALD PICKAXE");
  50. meta.addEnchant(Enchantment.LOOT_BONUS_BLOCKS, 255, true);
  51. meta.setUnbreakable(true);
  52. List<String> list = new ArrayList<>();
  53. list.add("");
  54. list.add("Try mining an ore... you may get a lot of it");
  55. meta.setLore(list);
  56. meta.addItemFlags(ItemFlag.HIDE_ENCHANTS);
  57. meta.addItemFlags(ItemFlag.HIDE_UNBREAKABLE);
  58. item.setItemMeta(meta);
  59.  
  60. // defining the namespaced key
  61. NamespacedKey key = new NamespacedKey(this, "emerald_pickaxe");
  62. ShapedRecipe recipe = new ShapedRecipe(key, item);
  63. // giving the shape of the recipe or how to craft the item
  64. recipe.shape("EEE", " S ", " S ");
  65. recipe.setIngredient('E', Material.EMERALD_BLOCK);
  66. recipe.setIngredient('S', Material.STICK);
  67.  
  68.  
  69. return recipe;
  70. }
  71.  
  72. public ShapedRecipe sharpPick() {
  73.  
  74. ItemStack item = new ItemStack(Material.WOODEN_PICKAXE);
  75. ItemMeta meta = item.getItemMeta();
  76. assert meta != null;
  77. meta.setDisplayName(ChatColor.GREEN + "A VERY SHARP PICKAXE");
  78. meta.addEnchant(Enchantment.DAMAGE_ALL, 68, true);
  79. meta.setUnbreakable(true);
  80. meta.addItemFlags(ItemFlag.HIDE_ENCHANTS);
  81. meta.addItemFlags(ItemFlag.HIDE_UNBREAKABLE);
  82. item.setItemMeta(meta);
  83.  
  84. NamespacedKey key = new NamespacedKey(this, "sharp_pickaxe");
  85. ShapedRecipe recipe = new ShapedRecipe(key, item);
  86.  
  87. recipe.shape("EEE", " S ", " S ");
  88. recipe.setIngredient('E', Material.IRON_SWORD);
  89. recipe.setIngredient('S', Material.STICK);
  90.  
  91.  
  92. return recipe;
  93. }
  94.  
  95. public ShapedRecipe oreConverter() {
  96.  
  97. ItemStack item = new ItemStack(Material.DIAMOND_PICKAXE);
  98. ItemMeta meta = item.getItemMeta();
  99. assert meta != null;
  100. meta.setDisplayName(ChatColor.GREEN + "ORE CONVERTER");
  101. List<String> list = new ArrayList<>();
  102. list.add("");
  103. list.add(ChatColor.BLUE + "A pickaxe that converts the ore you are mining to a block");
  104. meta.setLore(list);
  105. meta.setUnbreakable(true);
  106. meta.addEnchant(Enchantment.DAMAGE_ARTHROPODS, 100, true);
  107. meta.addItemFlags(ItemFlag.HIDE_ENCHANTS);
  108. meta.addItemFlags(ItemFlag.HIDE_UNBREAKABLE);
  109. item.setItemMeta(meta);
  110.  
  111. NamespacedKey key = new NamespacedKey(this, "ore_pickaxe");
  112. ShapedRecipe recipe = new ShapedRecipe(key, item);
  113.  
  114. recipe.shape("EAB", " S ", " S ");
  115. recipe.setIngredient('E', Material.IRON_BLOCK);
  116. recipe.setIngredient('A', Material.COAL_BLOCK);
  117. recipe.setIngredient('B', Material.COPPER_BLOCK);
  118. recipe.setIngredient('S', Material.STICK);
  119.  
  120.  
  121. return recipe;
  122. }
  123.  
  124.  
  125. @EventHandler
  126. public void oreConverter(BlockBreakEvent event) {
  127. if (event.getPlayer().getInventory().getItemInMainHand().hasItemMeta() && event.getPlayer().getInventory().getItemInMainHand().getType().equals(Material.DIAMOND_PICKAXE)) {
  128.  
  129. if (event.getBlock().getType().equals(Material.COAL_ORE)) {
  130. event.setCancelled(true);
  131. event.getBlock().setType(Material.COAL_BLOCK);
  132. }
  133.  
  134. if (event.getBlock().getType().equals(Material.DEEPSLATE_COAL_ORE)) {
  135. event.setCancelled(true);
  136. event.getBlock().setType(Material.COAL_BLOCK);
  137. }
  138.  
  139. if (event.getBlock().getType().equals(Material.COPPER_ORE)) {
  140. event.setCancelled(true);
  141. event.getBlock().setType(Material.COPPER_BLOCK);
  142. }
  143.  
  144. if (event.getBlock().getType().equals(Material.DEEPSLATE_COPPER_ORE)) {
  145. event.setCancelled(true);
  146. event.getBlock().setType(Material.COPPER_BLOCK);
  147. }
  148.  
  149. if (event.getBlock().getType().equals(Material.LAPIS_ORE)) {
  150. event.setCancelled(true);
  151. event.getBlock().setType(Material.LAPIS_BLOCK);
  152. }
  153.  
  154. if (event.getBlock().getType().equals(Material.DEEPSLATE_LAPIS_ORE)) {
  155. event.setCancelled(true);
  156. event.getBlock().setType(Material.LAPIS_BLOCK);
  157. }
  158.  
  159. if (event.getBlock().getType().equals(Material.REDSTONE_ORE)) {
  160. event.setCancelled(true);
  161. event.getBlock().setType(Material.REDSTONE_BLOCK);
  162. }
  163.  
  164. if (event.getBlock().getType().equals(Material.DEEPSLATE_REDSTONE_ORE)) {
  165. event.setCancelled(true);
  166. event.getBlock().setType(Material.REDSTONE_BLOCK);
  167. }
  168.  
  169. if (event.getBlock().getType().equals(Material.GOLD_ORE)) {
  170. event.setCancelled(true);
  171. event.getBlock().setType(Material.GOLD_BLOCK);
  172. }
  173.  
  174. if (event.getBlock().getType().equals(Material.DEEPSLATE_GOLD_ORE)) {
  175. event.setCancelled(true);
  176. event.getBlock().setType(Material.GOLD_BLOCK);
  177. }
  178.  
  179. if (event.getBlock().getType().equals(Material.NETHER_QUARTZ_ORE)) {
  180. event.setCancelled(true);
  181. event.getBlock().setType(Material.QUARTZ_BLOCK);
  182. }
  183.  
  184. if (event.getBlock().getType().equals(Material.IRON_ORE)) {
  185. event.setCancelled(true);
  186. event.getBlock().setType(Material.IRON_BLOCK);
  187. }
  188.  
  189. if (event.getBlock().getType().equals(Material.DEEPSLATE_IRON_ORE)) {
  190. event.setCancelled(true);
  191. event.getBlock().setType(Material.IRON_BLOCK);
  192. }
  193.  
  194. if (event.getBlock().getType().equals(Material.DIAMOND_ORE)) {
  195. event.setCancelled(true);
  196. event.getBlock().setType(Material.DIAMOND_BLOCK);
  197. }
  198.  
  199. if (event.getBlock().getType().equals(Material.DEEPSLATE_DIAMOND_ORE)) {
  200. event.setCancelled(true);
  201. event.getBlock().setType(Material.DIAMOND_BLOCK);
  202. }
  203.  
  204. if (event.getBlock().getType().equals(Material.ANCIENT_DEBRIS)) {
  205. event.setCancelled(true);
  206. event.getBlock().setType(Material.NETHERITE_BLOCK);
  207. }
  208.  
  209.  
  210. }
  211. }
  212.  
  213.  
  214. public ShapedRecipe woodCutter() {
  215.  
  216. ItemStack item = new ItemStack(Material.NETHERITE_AXE);
  217. ItemMeta meta = item.getItemMeta();
  218. assert meta != null;
  219. meta.setDisplayName(ChatColor.GREEN + "" + ChatColor.BOLD + "Axe Pickaxe");
  220. meta.addEnchant(Enchantment.DIG_SPEED, 68, false);
  221. meta.setUnbreakable(true);
  222. List<String> list = new ArrayList<>();
  223. list.add("");
  224. list.add("This isn't a pickaxe... huh");
  225. meta.setLore(list);
  226. meta.addItemFlags(ItemFlag.HIDE_UNBREAKABLE);
  227. meta.addItemFlags(ItemFlag.HIDE_ENCHANTS);
  228. item.setItemMeta(meta);
  229.  
  230. NamespacedKey key = new NamespacedKey(this, "wood_cutter");
  231. ShapedRecipe recipe = new ShapedRecipe(key, item);
  232.  
  233. recipe.shape("LLL", " S ", " S ");
  234. recipe.setIngredient('L', Material.OAK_LOG);
  235. recipe.setIngredient('S', Material.STICK);
  236.  
  237.  
  238. return recipe;
  239. }
  240. public ShapedRecipe fastPick() {
  241. ItemStack item = new ItemStack(Material.NETHERITE_PICKAXE);
  242. ItemMeta meta = item.getItemMeta();
  243. assert meta != null;
  244. meta.addEnchant(Enchantment.DIG_SPEED, 255, true);
  245. meta.setUnbreakable(true);
  246. List<String> list = new ArrayList<>();
  247. list.add("");
  248. list.add("Just your standard fast pickaxe");
  249. meta.setLore(list);
  250. meta.addItemFlags(ItemFlag.HIDE_ENCHANTS);
  251. meta.addItemFlags(ItemFlag.HIDE_UNBREAKABLE);
  252. meta.addItemFlags(ItemFlag.HIDE_ATTRIBUTES);
  253.  
  254. NamespacedKey key = new NamespacedKey(this, "fast_pick");
  255. ShapedRecipe recipe = new ShapedRecipe(key, item);
  256.  
  257. recipe.shape("DDD", " S ", " S ");
  258. recipe.setIngredient('D', Material.DIAMOND_BLOCK);
  259. recipe.setIngredient('S', Material.STICK);
  260.  
  261.  
  262. return null;
  263. }
  264.  
  265.  
  266. @EventHandler
  267. public void entityDamage(EntityDamageByEntityEvent event) {
  268. // tells if the entity that did the damage is a player or not
  269. if (event.getDamager().getType().equals(EntityType.PLAYER)) {
  270. Player player = (Player) event.getDamager();
  271. // gets if the player's item in hand was a netherite axe and if it had an item meta
  272. if (player.getInventory().getItemInMainHand().hasItemMeta() && player.getInventory().getItemInMainHand().getType().equals(Material.NETHERITE_AXE)) {
  273. event.setCancelled(true);
  274.  
  275. }
  276. }
  277. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement