diff --git a/.gradle/8.8/checksums/checksums.lock b/.gradle/8.8/checksums/checksums.lock index f8c0b5d..7bdf644 100644 Binary files a/.gradle/8.8/checksums/checksums.lock and b/.gradle/8.8/checksums/checksums.lock differ diff --git a/.gradle/8.8/checksums/md5-checksums.bin b/.gradle/8.8/checksums/md5-checksums.bin index 7bbd38e..37092b7 100644 Binary files a/.gradle/8.8/checksums/md5-checksums.bin and b/.gradle/8.8/checksums/md5-checksums.bin differ diff --git a/.gradle/8.8/checksums/sha1-checksums.bin b/.gradle/8.8/checksums/sha1-checksums.bin index 3cb35da..4c274e3 100644 Binary files a/.gradle/8.8/checksums/sha1-checksums.bin and b/.gradle/8.8/checksums/sha1-checksums.bin differ diff --git a/.gradle/8.8/executionHistory/executionHistory.bin b/.gradle/8.8/executionHistory/executionHistory.bin index 730805f..a51829b 100644 Binary files a/.gradle/8.8/executionHistory/executionHistory.bin and b/.gradle/8.8/executionHistory/executionHistory.bin differ diff --git a/.gradle/8.8/executionHistory/executionHistory.lock b/.gradle/8.8/executionHistory/executionHistory.lock index 3d8020d..fef9fbd 100644 Binary files a/.gradle/8.8/executionHistory/executionHistory.lock and b/.gradle/8.8/executionHistory/executionHistory.lock differ diff --git a/.gradle/8.8/fileHashes/fileHashes.bin b/.gradle/8.8/fileHashes/fileHashes.bin index 608e274..a984c04 100644 Binary files a/.gradle/8.8/fileHashes/fileHashes.bin and b/.gradle/8.8/fileHashes/fileHashes.bin differ diff --git a/.gradle/8.8/fileHashes/fileHashes.lock b/.gradle/8.8/fileHashes/fileHashes.lock index 1871e1c..d457a37 100644 Binary files a/.gradle/8.8/fileHashes/fileHashes.lock and b/.gradle/8.8/fileHashes/fileHashes.lock differ diff --git a/.gradle/8.8/fileHashes/resourceHashesCache.bin b/.gradle/8.8/fileHashes/resourceHashesCache.bin index f745458..c367ad3 100644 Binary files a/.gradle/8.8/fileHashes/resourceHashesCache.bin and b/.gradle/8.8/fileHashes/resourceHashesCache.bin differ diff --git a/.gradle/buildOutputCleanup/buildOutputCleanup.lock b/.gradle/buildOutputCleanup/buildOutputCleanup.lock index a87d594..950d49d 100644 Binary files a/.gradle/buildOutputCleanup/buildOutputCleanup.lock and b/.gradle/buildOutputCleanup/buildOutputCleanup.lock differ diff --git a/.gradle/file-system.probe b/.gradle/file-system.probe index 72038b8..fbe433b 100644 Binary files a/.gradle/file-system.probe and b/.gradle/file-system.probe differ diff --git a/build/classes/java/main/CoswayUtil/BankingSystem.class b/build/classes/java/main/CoswayUtil/BankingSystem.class new file mode 100644 index 0000000..3b9bc9f Binary files /dev/null and b/build/classes/java/main/CoswayUtil/BankingSystem.class differ diff --git a/build/classes/java/main/CoswayUtil/CheckCommand.class b/build/classes/java/main/CoswayUtil/CheckCommand.class new file mode 100644 index 0000000..978c666 Binary files /dev/null and b/build/classes/java/main/CoswayUtil/CheckCommand.class differ diff --git a/build/classes/java/main/CoswayUtil/CoswayUtil$2.class b/build/classes/java/main/CoswayUtil/CoswayUtil$2.class index a4ffb8d..994d828 100644 Binary files a/build/classes/java/main/CoswayUtil/CoswayUtil$2.class and b/build/classes/java/main/CoswayUtil/CoswayUtil$2.class differ diff --git a/build/classes/java/main/CoswayUtil/CoswayUtil$AnchorShield$1.class b/build/classes/java/main/CoswayUtil/CoswayUtil$AnchorShield$1.class index 4bc5c75..66f97ab 100644 Binary files a/build/classes/java/main/CoswayUtil/CoswayUtil$AnchorShield$1.class and b/build/classes/java/main/CoswayUtil/CoswayUtil$AnchorShield$1.class differ diff --git a/build/classes/java/main/CoswayUtil/CoswayUtil$AnchorShield$2.class b/build/classes/java/main/CoswayUtil/CoswayUtil$AnchorShield$2.class index b4344f5..419bf5e 100644 Binary files a/build/classes/java/main/CoswayUtil/CoswayUtil$AnchorShield$2.class and b/build/classes/java/main/CoswayUtil/CoswayUtil$AnchorShield$2.class differ diff --git a/build/classes/java/main/CoswayUtil/CoswayUtil$AnchorShield$3.class b/build/classes/java/main/CoswayUtil/CoswayUtil$AnchorShield$3.class index e987357..d27e0b6 100644 Binary files a/build/classes/java/main/CoswayUtil/CoswayUtil$AnchorShield$3.class and b/build/classes/java/main/CoswayUtil/CoswayUtil$AnchorShield$3.class differ diff --git a/build/classes/java/main/CoswayUtil/CoswayUtil$AnchorShield$4.class b/build/classes/java/main/CoswayUtil/CoswayUtil$AnchorShield$4.class index 994cf6f..721a7b7 100644 Binary files a/build/classes/java/main/CoswayUtil/CoswayUtil$AnchorShield$4.class and b/build/classes/java/main/CoswayUtil/CoswayUtil$AnchorShield$4.class differ diff --git a/build/classes/java/main/CoswayUtil/CoswayUtil$AnchorShield.class b/build/classes/java/main/CoswayUtil/CoswayUtil$AnchorShield.class index db4aabc..3423ee5 100644 Binary files a/build/classes/java/main/CoswayUtil/CoswayUtil$AnchorShield.class and b/build/classes/java/main/CoswayUtil/CoswayUtil$AnchorShield.class differ diff --git a/build/classes/java/main/CoswayUtil/CoswayUtil.class b/build/classes/java/main/CoswayUtil/CoswayUtil.class index efff24c..c522da6 100644 Binary files a/build/classes/java/main/CoswayUtil/CoswayUtil.class and b/build/classes/java/main/CoswayUtil/CoswayUtil.class differ diff --git a/build/classes/java/main/CoswayUtil/FireflySimulator$1.class b/build/classes/java/main/CoswayUtil/FireflySimulator$1.class index 89887e8..8dc28e1 100644 Binary files a/build/classes/java/main/CoswayUtil/FireflySimulator$1.class and b/build/classes/java/main/CoswayUtil/FireflySimulator$1.class differ diff --git a/build/classes/java/main/CoswayUtil/FireflySimulator$2.class b/build/classes/java/main/CoswayUtil/FireflySimulator$2.class index 8173864..07e6d9f 100644 Binary files a/build/classes/java/main/CoswayUtil/FireflySimulator$2.class and b/build/classes/java/main/CoswayUtil/FireflySimulator$2.class differ diff --git a/build/classes/java/main/CoswayUtil/FireflySimulator.class b/build/classes/java/main/CoswayUtil/FireflySimulator.class index 4a1eed8..9f0d205 100644 Binary files a/build/classes/java/main/CoswayUtil/FireflySimulator.class and b/build/classes/java/main/CoswayUtil/FireflySimulator.class differ diff --git a/build/libs/CoswayUtil-1.13-RELEASE.jar b/build/libs/CoswayUtil-1.13-RELEASE.jar index 7e857e5..4a7c4f0 100644 Binary files a/build/libs/CoswayUtil-1.13-RELEASE.jar and b/build/libs/CoswayUtil-1.13-RELEASE.jar differ diff --git a/build/resources/main/plugin.yml b/build/resources/main/plugin.yml index 681b253..a2f9668 100644 --- a/build/resources/main/plugin.yml +++ b/build/resources/main/plugin.yml @@ -64,4 +64,10 @@ commands: permission: CoswayUtil.admin coswaygetpdc: description: get set value of a players persistent data container key - usage: /coswaygetpdc \ No newline at end of file + usage: /coswaygetpdc + writecheck: + description: Writes a check to another player. + usage: /writecheck + cashcheck: + description: Cash a check you are holding. + usage: /cashcheck \ No newline at end of file diff --git a/build/tmp/compileJava/compileTransaction/stash-dir/CoswayUtil.class.uniqueId16 b/build/tmp/compileJava/compileTransaction/stash-dir/CoswayUtil.class.uniqueId16 index 428c055..06d1538 100644 Binary files a/build/tmp/compileJava/compileTransaction/stash-dir/CoswayUtil.class.uniqueId16 and b/build/tmp/compileJava/compileTransaction/stash-dir/CoswayUtil.class.uniqueId16 differ diff --git a/build/tmp/compileJava/compileTransaction/stash-dir/FireflySimulator$1.class.uniqueId15 b/build/tmp/compileJava/compileTransaction/stash-dir/FireflySimulator$1.class.uniqueId15 index 89887e8..8dc28e1 100644 Binary files a/build/tmp/compileJava/compileTransaction/stash-dir/FireflySimulator$1.class.uniqueId15 and b/build/tmp/compileJava/compileTransaction/stash-dir/FireflySimulator$1.class.uniqueId15 differ diff --git a/build/tmp/compileJava/compileTransaction/stash-dir/FireflySimulator$2.class.uniqueId28 b/build/tmp/compileJava/compileTransaction/stash-dir/FireflySimulator$2.class.uniqueId28 index 8173864..07e6d9f 100644 Binary files a/build/tmp/compileJava/compileTransaction/stash-dir/FireflySimulator$2.class.uniqueId28 and b/build/tmp/compileJava/compileTransaction/stash-dir/FireflySimulator$2.class.uniqueId28 differ diff --git a/build/tmp/compileJava/compileTransaction/stash-dir/FireflySimulator.class.uniqueId32 b/build/tmp/compileJava/compileTransaction/stash-dir/FireflySimulator.class.uniqueId32 index 4a1eed8..9f0d205 100644 Binary files a/build/tmp/compileJava/compileTransaction/stash-dir/FireflySimulator.class.uniqueId32 and b/build/tmp/compileJava/compileTransaction/stash-dir/FireflySimulator.class.uniqueId32 differ diff --git a/build/tmp/compileJava/previous-compilation-data.bin b/build/tmp/compileJava/previous-compilation-data.bin index 03e25d5..595689d 100644 Binary files a/build/tmp/compileJava/previous-compilation-data.bin and b/build/tmp/compileJava/previous-compilation-data.bin differ diff --git a/src/main/java/CoswayUtil/BankingSystem.java b/src/main/java/CoswayUtil/BankingSystem.java new file mode 100644 index 0000000..cff35ca --- /dev/null +++ b/src/main/java/CoswayUtil/BankingSystem.java @@ -0,0 +1,84 @@ +package CoswayUtil; + +import net.milkbowl.vault.economy.Economy; +import org.bukkit.Bukkit; +import org.bukkit.ChatColor; +import org.bukkit.Material; +import org.bukkit.NamespacedKey; +import org.bukkit.entity.Player; +import org.bukkit.event.EventHandler; +import org.bukkit.event.Listener; +import org.bukkit.event.player.PlayerInteractEvent; +import org.bukkit.inventory.ItemStack; +import org.bukkit.inventory.meta.ItemMeta; +import org.bukkit.persistence.PersistentDataContainer; +import org.bukkit.persistence.PersistentDataType; +import org.bukkit.plugin.java.JavaPlugin; + +public class BankingSystem implements Listener { + private final CoswayUtil plugin; + private final Economy economy; + private final NamespacedKey recipientKey; + private final NamespacedKey amountKey; + + public BankingSystem(CoswayUtil plugin, Economy economy) { + this.plugin = plugin; + this.economy = economy; + this.recipientKey = new NamespacedKey(plugin, "check_recipient"); + this.amountKey = new NamespacedKey(plugin, "check_amount"); + Bukkit.getPluginManager().registerEvents(this, plugin); + } + + public void writeCheck(Player sender, String recipientName, double amount) { + Player recipient = Bukkit.getPlayer(recipientName); + if (recipient == null) { + sender.sendMessage(ChatColor.RED + "Player not found!"); + return; + } + if (amount <= 0) { + sender.sendMessage(ChatColor.RED + "Invalid check amount!"); + return; + } + if (!economy.has(sender, amount)) { + sender.sendMessage(ChatColor.RED + "You do not have enough funds to cover this check."); + return; + } + + economy.withdrawPlayer(sender, amount); + ItemStack check = new ItemStack(Material.PAPER); + ItemMeta meta = check.getItemMeta(); + if (meta != null) { + meta.setDisplayName(ChatColor.GOLD + "C.S.E.L. Check"); + meta.getPersistentDataContainer().set(recipientKey, PersistentDataType.STRING, recipientName); + meta.getPersistentDataContainer().set(amountKey, PersistentDataType.DOUBLE, amount); + check.setItemMeta(meta); + } + sender.getInventory().addItem(check); + sender.sendMessage(ChatColor.GREEN + "You have written a check for " + ChatColor.GOLD + "$" + amount + ChatColor.GREEN + " to " + recipientName); + } + + @EventHandler + public void onCheckUse(PlayerInteractEvent event) { + Player player = event.getPlayer(); + ItemStack item = player.getInventory().getItemInMainHand(); + if (item.getType() != Material.PAPER || !item.hasItemMeta()) return; + + ItemMeta meta = item.getItemMeta(); + if (meta == null) return; + + PersistentDataContainer pdc = meta.getPersistentDataContainer(); + if (!pdc.has(recipientKey, PersistentDataType.STRING) || !pdc.has(amountKey, PersistentDataType.DOUBLE)) return; + + String recipientName = pdc.get(recipientKey, PersistentDataType.STRING); + double amount = pdc.get(amountKey, PersistentDataType.DOUBLE); + + if (!player.getName().equalsIgnoreCase(recipientName)) { + player.sendMessage(ChatColor.RED + "This check is not written to you!"); + return; + } + + economy.depositPlayer(player, amount); + player.getInventory().getItemInMainHand().setAmount(0); + player.sendMessage(ChatColor.GREEN + "You have cashed a check for " + ChatColor.GOLD + "$" + amount); + } +} diff --git a/src/main/java/CoswayUtil/CheckCommand.java b/src/main/java/CoswayUtil/CheckCommand.java new file mode 100644 index 0000000..c40a857 --- /dev/null +++ b/src/main/java/CoswayUtil/CheckCommand.java @@ -0,0 +1,121 @@ +package CoswayUtil; + +import net.milkbowl.vault.economy.Economy; +import org.bukkit.Bukkit; +import org.bukkit.Material; +import org.bukkit.NamespacedKey; +import org.bukkit.command.Command; +import org.bukkit.command.CommandExecutor; +import org.bukkit.command.CommandSender; +import org.bukkit.entity.Player; +import org.bukkit.inventory.ItemStack; +import org.bukkit.inventory.meta.ItemMeta; +import org.bukkit.persistence.PersistentDataType; + +import java.util.Arrays; + +public class CheckCommand implements CommandExecutor { + private final CoswayUtil plugin; + private final Economy econ; + private final NamespacedKey recipientKey; + private final NamespacedKey amountKey; + + public CheckCommand(CoswayUtil plugin, Economy econ) { + this.plugin = plugin; + this.econ = econ; + this.recipientKey = new NamespacedKey(plugin, "check_recipient"); + this.amountKey = new NamespacedKey(plugin, "check_amount"); + } + + @Override + public boolean onCommand(CommandSender sender, Command cmd, String label, String[] args) { + if (!(sender instanceof Player player)) { + sender.sendMessage("Only players can use this command."); + return true; + } + + if (cmd.getName().equalsIgnoreCase("writecheck")) { + if (args.length != 2) { + player.sendMessage("Usage: /writecheck "); + return true; + } + + Player recipient = Bukkit.getPlayerExact(args[0]); + if (recipient == null) { + player.sendMessage("Player not found!"); + return true; + } + + double amount; + try { + amount = Double.parseDouble(args[1]); + if (amount <= 0) { + player.sendMessage("Amount must be positive."); + return true; + } + } catch (NumberFormatException e) { + player.sendMessage("Invalid amount."); + return true; + } + + if (!econ.has(player, amount)) { + player.sendMessage("Insufficient funds."); + return true; + } + + econ.withdrawPlayer(player, amount); + player.getInventory().addItem(createCheck(recipient.getName(), amount)); + player.sendMessage("Check for " + amount + " written to " + recipient.getName() + "."); + return true; + } + + if (cmd.getName().equalsIgnoreCase("cashcheck")) { + ItemStack check = player.getInventory().getItemInMainHand(); + if (!isCheck(check)) { + player.sendMessage("You must hold a valid check to cash it."); + return true; + } + + ItemMeta meta = check.getItemMeta(); + String recipient = meta.getPersistentDataContainer().get(recipientKey, PersistentDataType.STRING); + Double amount = meta.getPersistentDataContainer().get(amountKey, PersistentDataType.DOUBLE); + + if (recipient == null || amount == null) { + player.sendMessage("Invalid check."); + return true; + } + + if (!player.getName().equalsIgnoreCase(recipient)) { + player.sendMessage("This check is not made out to you!"); + return true; + } + + econ.depositPlayer(player, amount); + player.getInventory().setItemInMainHand(null); + player.sendMessage("You cashed a check for " + amount + "."); + return true; + } + + return false; + } + + private ItemStack createCheck(String recipient, double amount) { + ItemStack check = new ItemStack(Material.PAPER); + ItemMeta meta = check.getItemMeta(); + meta.setDisplayName("§6C.S.E.L. Check"); + meta.setLore(Arrays.asList("§7Recipient: §b" + recipient, "§7Amount: §a" + amount)); + + meta.getPersistentDataContainer().set(recipientKey, PersistentDataType.STRING, recipient); + meta.getPersistentDataContainer().set(amountKey, PersistentDataType.DOUBLE, amount); + + check.setItemMeta(meta); + return check; + } + + private boolean isCheck(ItemStack item) { + if (item == null || item.getType() != Material.PAPER || !item.hasItemMeta()) { + return false; + } + return item.getItemMeta().getPersistentDataContainer().has(recipientKey, PersistentDataType.STRING); + } +} diff --git a/src/main/java/CoswayUtil/CoswayUtil.java b/src/main/java/CoswayUtil/CoswayUtil.java index 2cd536a..3afe17e 100644 --- a/src/main/java/CoswayUtil/CoswayUtil.java +++ b/src/main/java/CoswayUtil/CoswayUtil.java @@ -96,6 +96,9 @@ public final class CoswayUtil extends JavaPlugin implements Listener { getLogger().severe("Vault not found or no economy provider found."); getServer().getPluginManager().disablePlugin(this); return; + } else { + getCommand("writecheck").setExecutor(new CheckCommand(this, economy)); + getCommand("cashcheck").setExecutor(new CheckCommand(this, economy)); } new BlockShop(this, economy).register(); @@ -129,7 +132,9 @@ public final class CoswayUtil extends JavaPlugin implements Listener { registration("Note Studio",1); new TreasureFountain(this); getServer().getPluginManager().registerEvents(new TreasureFountain(this), this); - registration("Treasure Fountain",3); + registration("Treasure Fountain (W.I.P.)",3); + new BankingSystem(this,economy); + registration("Banking System",3); new BukkitRunnable() { @Override @@ -259,12 +264,12 @@ public final class CoswayUtil extends JavaPlugin implements Listener { target = getServer().getPlayer(args[0]); } assert target != null; - setpdc(target,args[1],args[2]); String msg = getpdc(target,args[1]); if(msg == null) { msg = "&cNULL"; } - returnMsg(player,"&aSet "+args[1]+" from "+msg+" to "+args[2]+" for "+target.getName()); + setpdc(target,args[1],args[2]); + returnMsg(player,"&aSet &7&l"+args[1]+"&a from &6&l"+msg+"&a to &e&l"+args[2]+"&a for &d&l"+target.getName()); } } if (cmd.getName().equalsIgnoreCase("coswaygetpdc") && sender instanceof Player player) { diff --git a/src/main/java/CoswayUtil/FireflySimulator.java b/src/main/java/CoswayUtil/FireflySimulator.java index 43d2939..52b7c73 100644 --- a/src/main/java/CoswayUtil/FireflySimulator.java +++ b/src/main/java/CoswayUtil/FireflySimulator.java @@ -30,17 +30,19 @@ public class FireflySimulator { public void run() { for (Player player : Bukkit.getOnlinePlayers()) { if (player.getWorld().getTime() == 13000) { // Only at night - if(Objects.equals(getpdc(player,"music"), true)) { + if(Objects.equals(getpdc(player,"music"), "true")) { player.stopAllSounds(); player.playSound(player.getLocation().clone().add(0, 100, 0), Sound.MUSIC_DISC_MALL, 10, 1); } + //statMsg(player,"your music settings are set to "+getpdc(player,"music")); statMsg(player,"&6time for bed"); } if (player.getWorld().getTime() == 1137) { // Only at night - if(Objects.equals(getpdc(player,"music"), true)) { + if(Objects.equals(getpdc(player,"music"), "true")) { player.stopAllSounds(); player.playSound(player.getLocation().clone().add(0, 100, 0), Sound.MUSIC_DISC_OTHERSIDE, 10, 1); } + //statMsg(player,"your music settings are set to "+getpdc(player,"music")); statMsg(player,"&eRize and Shine!"); } } diff --git a/src/main/resources/plugin.yml b/src/main/resources/plugin.yml index 5fccb92..bc0f0f7 100644 --- a/src/main/resources/plugin.yml +++ b/src/main/resources/plugin.yml @@ -64,4 +64,10 @@ commands: permission: CoswayUtil.admin coswaygetpdc: description: get set value of a players persistent data container key - usage: /coswaygetpdc \ No newline at end of file + usage: /coswaygetpdc + writecheck: + description: Writes a check to another player. + usage: /writecheck + cashcheck: + description: Cash a check you are holding. + usage: /cashcheck \ No newline at end of file