From d1e86ac898918d5154cc132fb8868f1ed06656f4 Mon Sep 17 00:00:00 2001 From: Torrie Fischer Date: Mon, 2 May 2022 07:35:22 +0200 Subject: [PATCH] Initial commit --- .gitignore | 2 + pom.xml | 54 ++++++++++++++ .../gg/malloc/coins/CoinPickupHandler.java | 71 +++++++++++++++++++ .../java/gg/malloc/coins/CoinsCommand.java | 40 +++++++++++ src/main/java/gg/malloc/coins/Plugin.java | 33 +++++++++ src/main/resources/plugin.yml | 10 +++ 6 files changed, 210 insertions(+) create mode 100644 .gitignore create mode 100644 pom.xml create mode 100644 src/main/java/gg/malloc/coins/CoinPickupHandler.java create mode 100644 src/main/java/gg/malloc/coins/CoinsCommand.java create mode 100644 src/main/java/gg/malloc/coins/Plugin.java create mode 100644 src/main/resources/plugin.yml diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..ab42bab --- /dev/null +++ b/.gitignore @@ -0,0 +1,2 @@ +target +test-server diff --git a/pom.xml b/pom.xml new file mode 100644 index 0000000..edc6ff5 --- /dev/null +++ b/pom.xml @@ -0,0 +1,54 @@ + + + 4.0.0 + + gg.malloc.coins + malloc-coins + 1.0-SNAPSHOT + + + 1.8 + 1.8 + UTF-8 + + + + + spigotmc-repo + https://hub.spigotmc.org/nexus/content/repositories/snapshots/ + + + codemc-repo + https://repo.codemc.org/repository/maven-public/ + default + + + jitpack.io + https://jitpack.io + + + + + + org.spigotmc + spigot-api + 1.18.2-R0.1-SNAPSHOT + provided + + + de.tr7zw + item-nbt-api-plugin + 2.9.2 + provided + + + com.github.MilkBowl + VaultAPI + 1.7 + provided + + + + diff --git a/src/main/java/gg/malloc/coins/CoinPickupHandler.java b/src/main/java/gg/malloc/coins/CoinPickupHandler.java new file mode 100644 index 0000000..bb90c94 --- /dev/null +++ b/src/main/java/gg/malloc/coins/CoinPickupHandler.java @@ -0,0 +1,71 @@ +package gg.malloc.coins; + +import org.bukkit.event.EventHandler; +import org.bukkit.event.Listener; +import org.bukkit.event.player.PlayerInteractEvent; +import org.bukkit.event.player.PlayerPickupItemEvent; +import org.bukkit.event.inventory.PrepareItemCraftEvent; +import org.bukkit.Material; +import org.bukkit.inventory.ItemStack; +import org.bukkit.SoundCategory; +import org.bukkit.Sound; +import net.milkbowl.vault.economy.Economy; +import de.tr7zw.nbtapi.NBTItem; +import de.tr7zw.nbtapi.NBTCompound; + +public class CoinPickupHandler implements Listener { + + Economy m_vault; + + public CoinPickupHandler(Economy vault) { + m_vault = vault; + } + + @EventHandler + public void onInteract(PlayerInteractEvent evt) { + if (evt.getItem() != null) { + NBTItem nbt = new NBTItem(evt.getItem()); + System.out.println(nbt); + if (nbt.hasKey("malloc")) { + NBTCompound mallocData = nbt.getCompound("malloc"); + if (mallocData.hasKey("coinValue")) { + evt.setCancelled(true); + int coinValue = mallocData.getInteger("coinValue") * evt.getItem().getAmount(); + m_vault.depositPlayer(evt.getPlayer(), coinValue); + evt.getPlayer().getWorld().playSound(evt.getPlayer(), Sound.BLOCK_CHAIN_PLACE, SoundCategory.PLAYERS, (float)1.0, (float)1.0); + evt.getPlayer().getInventory().setItem(evt.getHand(), null); + evt.setCancelled(true); + } + } + } + } + + @EventHandler + public void onItemCraftPrepare(PrepareItemCraftEvent evt) { + for(ItemStack item : evt.getInventory().getMatrix()) { + if (item != null) { + NBTItem nbt = new NBTItem(item); + if (nbt.hasKey("malloc")) { + evt.getInventory().setResult(null); + return; + } + } + } + } + + @EventHandler + public void onItemPickup(PlayerPickupItemEvent evt) { + NBTItem nbt = new NBTItem(evt.getItem().getItemStack()); + System.out.println(nbt); + if (nbt.hasKey("malloc")) { + NBTCompound mallocData = nbt.getCompound("malloc"); + if (mallocData.hasKey("coinValue")) { + evt.setCancelled(true); + int coinValue = mallocData.getInteger("coinValue") * evt.getItem().getItemStack().getAmount(); + m_vault.depositPlayer(evt.getPlayer(), coinValue); + evt.getPlayer().getWorld().playSound(evt.getPlayer(), Sound.BLOCK_CHAIN_PLACE, SoundCategory.PLAYERS, (float)1.0, (float)1.0); + evt.getItem().remove(); + } + } + } +} diff --git a/src/main/java/gg/malloc/coins/CoinsCommand.java b/src/main/java/gg/malloc/coins/CoinsCommand.java new file mode 100644 index 0000000..9faaf13 --- /dev/null +++ b/src/main/java/gg/malloc/coins/CoinsCommand.java @@ -0,0 +1,40 @@ +package gg.malloc.coins; +import org.bukkit.command.Command; +import org.bukkit.command.CommandExecutor; +import org.bukkit.command.CommandSender; +import org.bukkit.entity.Player; +import org.bukkit.inventory.PlayerInventory; +import org.bukkit.inventory.ItemStack; +import org.bukkit.inventory.meta.ItemMeta; +import org.bukkit.Material; + +import de.tr7zw.nbtapi.NBTItem; +import de.tr7zw.nbtapi.NBTCompound; + + +public class CoinsCommand implements CommandExecutor { + + @Override + public boolean onCommand(CommandSender sender, Command command, String s, String[] args) { + if (sender instanceof Player) { + Player player = (Player) sender; + PlayerInventory inventory = player.getInventory(); + ItemStack itemStack = new ItemStack(Material.IRON_NUGGET, 64); + ItemMeta coinMeta = itemStack.getItemMeta(); + coinMeta.setCustomModelData(93197); + coinMeta.setDisplayName("Grist"); + // TODO: Lore + itemStack.setItemMeta(coinMeta); + + NBTItem nbt = new NBTItem(itemStack); + nbt.addCompound("malloc").setInteger("coinValue", 1); + inventory.addItem(nbt.getItem()); + sender.sendMessage("You received 64 grist"); + return true; + } else { + sender.sendMessage("You must be a player."); + return false; + } + } + +} diff --git a/src/main/java/gg/malloc/coins/Plugin.java b/src/main/java/gg/malloc/coins/Plugin.java new file mode 100644 index 0000000..8f1db9b --- /dev/null +++ b/src/main/java/gg/malloc/coins/Plugin.java @@ -0,0 +1,33 @@ +package gg.malloc.coins; + +import net.milkbowl.vault.economy.Economy; +import org.bukkit.plugin.java.JavaPlugin; +import org.bukkit.plugin.RegisteredServiceProvider; + +public class Plugin extends JavaPlugin { + + Economy m_vault; + + @Override + public void onEnable() { + if (setupVault()) { + getLogger().info("Malloc Coins registered"); + getServer().getPluginManager().registerEvents(new CoinPickupHandler(m_vault), this); + getCommand("coins").setExecutor(new CoinsCommand()); + } else { + getLogger().info("Unable to register Malloc Coins: no vaul!"); + } + } + + private boolean setupVault() { + if (getServer().getPluginManager().getPlugin("Vault") == null) { + return false; + } + RegisteredServiceProvider rsp = getServer().getServicesManager().getRegistration(Economy.class); + if (rsp == null) { + return false; + } + m_vault = rsp.getProvider(); + return m_vault != null; + } +} diff --git a/src/main/resources/plugin.yml b/src/main/resources/plugin.yml new file mode 100644 index 0000000..1d6d333 --- /dev/null +++ b/src/main/resources/plugin.yml @@ -0,0 +1,10 @@ +name: Malloc-Coins +version: 1.0 +api-version: 1.18 +main: gg.malloc.coins.Plugin +depend: + - NBTAPI + - Vault +commands: + coins: + description: Gives you 64 coins