From 9f5876480ca26ded1452f2d584fbf4e0c5c8f268 Mon Sep 17 00:00:00 2001 From: bunchy7s Date: Tue, 19 May 2026 14:06:26 -0500 Subject: [PATCH] Initial commit: Fix resource packaging and instant-bonemeal logic --- README.md | 3 + pom.xml | 65 ++++++++ src/main/java/kcompost/QuickComposter.java | 28 ++++ .../kcompost/listeners/PlayerListener.java | 156 ++++++++++++++++++ .../java/kcompost/managers/PluginManager.java | 16 ++ src/main/java/kcompost/utils/Utils.java | 21 +++ src/main/resources/config.yml | 63 +++++++ src/main/resources/plugin.yml | 6 + target/QuickComposter-1.0.jar | Bin 0 -> 8720 bytes target/antrun/build-main.xml | 6 + target/classes/config.yml | 63 +++++++ target/classes/kcompost/QuickComposter.class | Bin 0 -> 1202 bytes .../kcompost/listeners/PlayerListener.class | Bin 0 -> 7365 bytes .../kcompost/managers/PluginManager.class | Bin 0 -> 547 bytes target/classes/kcompost/utils/Utils.class | Bin 0 -> 1268 bytes target/classes/plugin.yml | 6 + target/maven-archiver/pom.properties | 5 + .../compile/default-compile/createdFiles.lst | 4 + .../compile/default-compile/inputFiles.lst | 4 + 19 files changed, 446 insertions(+) create mode 100644 README.md create mode 100644 pom.xml create mode 100644 src/main/java/kcompost/QuickComposter.java create mode 100644 src/main/java/kcompost/listeners/PlayerListener.java create mode 100644 src/main/java/kcompost/managers/PluginManager.java create mode 100644 src/main/java/kcompost/utils/Utils.java create mode 100644 src/main/resources/config.yml create mode 100644 src/main/resources/plugin.yml create mode 100644 target/QuickComposter-1.0.jar create mode 100644 target/antrun/build-main.xml create mode 100644 target/classes/config.yml create mode 100644 target/classes/kcompost/QuickComposter.class create mode 100644 target/classes/kcompost/listeners/PlayerListener.class create mode 100644 target/classes/kcompost/managers/PluginManager.class create mode 100644 target/classes/kcompost/utils/Utils.class create mode 100644 target/classes/plugin.yml create mode 100644 target/maven-archiver/pom.properties create mode 100644 target/maven-status/maven-compiler-plugin/compile/default-compile/createdFiles.lst create mode 100644 target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst diff --git a/README.md b/README.md new file mode 100644 index 0000000..182439e --- /dev/null +++ b/README.md @@ -0,0 +1,3 @@ +# QuickComposter + +A lightweight Minecraft plugin for Paper/Folia that allows players to quickly fill composters by right-clicking with compostable items. (or any item, can be configured) diff --git a/pom.xml b/pom.xml new file mode 100644 index 0000000..e075323 --- /dev/null +++ b/pom.xml @@ -0,0 +1,65 @@ + + + 4.0.0 + + kcompost + QuickComposter + 1.0 + + QuickComposter + https://coldfiles.dev/ + + + UTF-8 + 21 + 21 + + + + + papermc + https://repo.papermc.io/repository/maven-public/ + + + + + + io.papermc.paper + paper-api + 1.21-R0.1-SNAPSHOT + provided + + + + + ${project.basedir}/src/main/java + + + ${project.basedir}/src/main/resources + true + + + + + org.apache.maven.plugins + maven-antrun-plugin + 3.1.0 + + + install + + run + + + + + + + + + + + + \ No newline at end of file diff --git a/src/main/java/kcompost/QuickComposter.java b/src/main/java/kcompost/QuickComposter.java new file mode 100644 index 0000000..c8cb3ba --- /dev/null +++ b/src/main/java/kcompost/QuickComposter.java @@ -0,0 +1,28 @@ +package kcompost; + +import org.bukkit.plugin.java.JavaPlugin; +import kcompost.managers.PluginManager; +import kcompost.listeners.PlayerListener; + +public class QuickComposter extends JavaPlugin { + + @Override + public void onEnable() { + // Save default config + saveDefaultConfig(); + + // Initialize managers + PluginManager.getInstance().initialize(); + + // Register listeners + getServer().getPluginManager().registerEvents(new PlayerListener(this), this); + + getLogger().info("QuickComposter has been enabled!"); + } + + @Override + public void onDisable() { + getLogger().info("QuickComposter has been disabled!"); + } + +} \ No newline at end of file diff --git a/src/main/java/kcompost/listeners/PlayerListener.java b/src/main/java/kcompost/listeners/PlayerListener.java new file mode 100644 index 0000000..16104f3 --- /dev/null +++ b/src/main/java/kcompost/listeners/PlayerListener.java @@ -0,0 +1,156 @@ +package kcompost.listeners; + +import kcompost.QuickComposter; +import org.bukkit.Bukkit; +import org.bukkit.Material; +import org.bukkit.block.Block; +import org.bukkit.block.data.Levelled; +import org.bukkit.entity.Player; +import org.bukkit.event.EventHandler; +import org.bukkit.event.EventPriority; +import org.bukkit.event.Listener; +import org.bukkit.event.block.Action; +import org.bukkit.event.player.PlayerInteractEvent; +import org.bukkit.inventory.ItemStack; +import org.bukkit.inventory.EquipmentSlot; + +import java.util.HashSet; +import java.util.List; +import java.util.Set; + +public class PlayerListener implements Listener { + + private final QuickComposter plugin; + + public PlayerListener(QuickComposter plugin) { + this.plugin = plugin; + } + + @EventHandler(priority = EventPriority.HIGHEST, ignoreCancelled = true) + public void onComposterInteract(PlayerInteractEvent event) { + if (event.getAction() != Action.RIGHT_CLICK_BLOCK) return; + if (event.getHand() != EquipmentSlot.HAND) return; + + Block block = event.getClickedBlock(); + if (block == null || block.getType() != Material.COMPOSTER) return; + + Player player = event.getPlayer(); + ItemStack itemInHand = player.getInventory().getItemInMainHand(); + Material type = itemInHand.getType(); + + if (type == Material.AIR) return; + + // Config checks + boolean useAnyItem = plugin.getConfig().getBoolean("use-any-item", false); + if (!useAnyItem) { + List supported = plugin.getConfig().getStringList("supported-items"); + boolean found = false; + for (String s : supported) { + if (s.equalsIgnoreCase(type.name())) { + found = true; + break; + } + } + if (!found) return; + } + + Levelled composter = (Levelled) block.getBlockData(); + if (composter.getLevel() >= composter.getMaximumLevel()) return; + + if (handleQuickCompost(player, block, itemInHand)) { + event.setCancelled(true); + } + } + + private boolean handleQuickCompost(Player player, Block block, ItemStack item) { + Levelled composter = (Levelled) block.getBlockData(); + int currentLevel = composter.getLevel(); + int maxLevel = composter.getMaximumLevel(); + int targetLevel = maxLevel - 1; + int amountInHand = item.getAmount(); + + boolean instantBonemeal = plugin.getConfig().getBoolean("instant-bonemeal", false); + if (instantBonemeal) { + int needed = targetLevel - currentLevel; + if (amountInHand < needed) { + return false; + } + } + + // Folia compatibility check + boolean isFolia = false; + try { + Class.forName("io.papermc.paper.threadedregions.RegionScheduler"); + isFolia = true; + } catch (ClassNotFoundException ignored) {} + + if (isFolia) { + Bukkit.getRegionScheduler().execute(plugin, block.getLocation(), () -> { + processCompost(player, block, item); + }); + } else { + processCompost(player, block, item); + } + return true; + } + + private void processCompost(Player player, Block block, ItemStack item) { + if (block.getType() != Material.COMPOSTER) return; + + Levelled composter = (Levelled) block.getBlockData(); + int currentLevel = composter.getLevel(); + int maxLevel = composter.getMaximumLevel(); + + // In Minecraft, level 7 is full, level 8 is ready to harvest (bonemeal) + int targetLevel = maxLevel - 1; + + if (currentLevel >= targetLevel) return; + + int amountInHand = item.getAmount(); + if (amountInHand <= 0) return; + + int itemsConsumed = 0; + boolean instantBonemeal = plugin.getConfig().getBoolean("instant-bonemeal", false); + + if (instantBonemeal) { + int needed = targetLevel - currentLevel; + if (amountInHand >= needed) { + itemsConsumed = needed; + composter.setLevel(0); + block.setBlockData(composter); + block.getWorld().dropItemNaturally(block.getLocation().add(0, 1, 0), new ItemStack(Material.BONE_MEAL)); + } + } else { + while (currentLevel < targetLevel && itemsConsumed < amountInHand) { + itemsConsumed++; + currentLevel++; + } + composter.setLevel(currentLevel); + block.setBlockData(composter); + } + + if (itemsConsumed > 0) { + + final int finalConsumed = itemsConsumed; + + // Folia compatibility check for entity scheduler + boolean isFolia = false; + try { + Class.forName("io.papermc.paper.threadedregions.EntityScheduler"); + isFolia = true; + } catch (ClassNotFoundException ignored) {} + + if (isFolia) { + player.getScheduler().execute(plugin, () -> { + item.setAmount(amountInHand - finalConsumed); + }, null, 0); + } else { + item.setAmount(amountInHand - finalConsumed); + } + + // Play sound and effect + block.getWorld().playEffect(block.getLocation(), org.bukkit.Effect.COMPOSTER_FILL_ATTEMPT, 0); + block.getWorld().playSound(block.getLocation(), org.bukkit.Sound.BLOCK_COMPOSTER_FILL, 1.0f, 1.0f); + } + } +} \ No newline at end of file diff --git a/src/main/java/kcompost/managers/PluginManager.java b/src/main/java/kcompost/managers/PluginManager.java new file mode 100644 index 0000000..5444e95 --- /dev/null +++ b/src/main/java/kcompost/managers/PluginManager.java @@ -0,0 +1,16 @@ +package kcompost.managers; + +public class PluginManager { + private static PluginManager instance; + + public static PluginManager getInstance() { + if (instance == null) { + instance = new PluginManager(); + } + return instance; + } + + public void initialize() { + // Initialize your managers here + } +} \ No newline at end of file diff --git a/src/main/java/kcompost/utils/Utils.java b/src/main/java/kcompost/utils/Utils.java new file mode 100644 index 0000000..dcbebfd --- /dev/null +++ b/src/main/java/kcompost/utils/Utils.java @@ -0,0 +1,21 @@ +package kcompost.utils; + +import net.kyori.adventure.text.Component; +import net.kyori.adventure.text.minimessage.MiniMessage; +import net.kyori.adventure.text.serializer.legacy.LegacyComponentSerializer; + +public class Utils { + + public static Component colorize(String msg) { + if (msg.contains("<") && msg.contains(">")) { + return MiniMessage.miniMessage().deserialize(msg); + } + return LegacyComponentSerializer.legacyAmpersand().deserialize(msg); + } + + public static String legacyColorize(String msg) { + return LegacyComponentSerializer.legacyAmpersand().serialize( + LegacyComponentSerializer.legacyAmpersand().deserialize(msg) + ); + } +} \ No newline at end of file diff --git a/src/main/resources/config.yml b/src/main/resources/config.yml new file mode 100644 index 0000000..c2ddda4 --- /dev/null +++ b/src/main/resources/config.yml @@ -0,0 +1,63 @@ +# QuickComposter Configuration + +# If true, the composter will instantly drop bonemeal when it reaches the max level. +# If false, it will stay at the full level (7) and require one more interaction or wait for the vanilla process. +instant-bonemeal: false + +# If true, any item can be used to compost. +# If false, only items in the 'supported-items' list will work. +use-any-item: false + +# list of items that can be used for composting if 'use-any-item' is false. +# it uses the standard material names +supported-items: + - WHEAT_SEEDS + - PUMPKIN_SEEDS + - MELON_SEEDS + - BEETROOT_SEEDS + - DRIED_KELP + - GLOW_BERRIES + - SHORT_GRASS + - FERN + - HANGING_ROOTS + - MANGROVE_ROOTS + - MOSS_CARPET + - SMALL_DRIPLEAF + - SUNFLOWER + - LILAC + - ROSE_BUSH + - PEONY + - PITCHER_PLANT + - BIG_DRIPLEAF + - WHEAT + - POTATO + - CARROT + - BEETROOT + - SUGAR_CANE + - KELP + - CACTUS + - BAMBOO + - MELON_SLICE + - PUMPKIN + - MELON + - APPLE + - BREAD + - COOKIE + - CAKE + - PIE + - MUSHROOM_STEW + - NETHER_WART + - SEA_PICKLE + - SHROOMLIGHT + - CRIMSON_FUNGUS + - WARPED_FUNGUS + - CRIMSON_ROOTS + - WARPED_ROOTS + - NETHER_SPROUTS + - WEEPING_VINES + - TWISTING_VINES + - AZALEA + - FLOWERING_AZALEA + - MOSS_BLOCK + - PINK_PETALS + - DRAGON_EGG diff --git a/src/main/resources/plugin.yml b/src/main/resources/plugin.yml new file mode 100644 index 0000000..5bf9ba3 --- /dev/null +++ b/src/main/resources/plugin.yml @@ -0,0 +1,6 @@ +main: kcompost.QuickComposter +version: 1.0 +name: QuickComposter +author: bunchy7s +api-version: 1.21 +folia-supported: true \ No newline at end of file diff --git a/target/QuickComposter-1.0.jar b/target/QuickComposter-1.0.jar new file mode 100644 index 0000000000000000000000000000000000000000..868b55bf5854df95f951cc67cdd175d9104a6514 GIT binary patch literal 8720 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 + + + + + diff --git a/target/classes/config.yml b/target/classes/config.yml new file mode 100644 index 0000000..c2ddda4 --- /dev/null +++ b/target/classes/config.yml @@ -0,0 +1,63 @@ +# QuickComposter Configuration + +# If true, the composter will instantly drop bonemeal when it reaches the max level. +# If false, it will stay at the full level (7) and require one more interaction or wait for the vanilla process. +instant-bonemeal: false + +# If true, any item can be used to compost. +# If false, only items in the 'supported-items' list will work. +use-any-item: false + +# list of items that can be used for composting if 'use-any-item' is false. +# it uses the standard material names +supported-items: + - WHEAT_SEEDS + - PUMPKIN_SEEDS + - MELON_SEEDS + - BEETROOT_SEEDS + - DRIED_KELP + - GLOW_BERRIES + - SHORT_GRASS + - FERN + - HANGING_ROOTS + - MANGROVE_ROOTS + - MOSS_CARPET + - SMALL_DRIPLEAF + - SUNFLOWER + - LILAC + - ROSE_BUSH + - PEONY + - PITCHER_PLANT + - BIG_DRIPLEAF + - WHEAT + - POTATO + - CARROT + - BEETROOT + - SUGAR_CANE + - KELP + - CACTUS + - BAMBOO + - MELON_SLICE + - PUMPKIN + - MELON + - APPLE + - BREAD + - COOKIE + - CAKE + - PIE + - MUSHROOM_STEW + - NETHER_WART + - SEA_PICKLE + - SHROOMLIGHT + - CRIMSON_FUNGUS + - WARPED_FUNGUS + - CRIMSON_ROOTS + - WARPED_ROOTS + - NETHER_SPROUTS + - WEEPING_VINES + - TWISTING_VINES + - AZALEA + - FLOWERING_AZALEA + - MOSS_BLOCK + - PINK_PETALS + - DRAGON_EGG diff --git a/target/classes/kcompost/QuickComposter.class b/target/classes/kcompost/QuickComposter.class new file mode 100644 index 0000000000000000000000000000000000000000..c2882107f9eac49eecf31dac0e9ece818a291134 GIT binary patch literal 1202 zcmah}YflqF6g|@xwrp1(h4N68R($lKtZ&gpkN_r{YBU%UKTgYZ8M~b&`)H#7$}cFI z_yhb=#yedst%mSrX79Z-=bU?HW`F(u{u96^Hch0EHjuF}f>DN&AGmfSZntG*A9}GX zmHm--x&4ZUx4oEQbWJK5tuv&{l|2(#j2SR3{PSmO6;y=coEaFf5lV^>em3 znqu0*jFx6<)slPiv(TbvEzDt_VT?d`MbOn63j{e}K$3QHxQI&z7A;)H6>8+a6%3OE z@{d?8Z(!w#nL~>l14XjD--IW_NT{T7{z(M&li0)(uId9?W>_qrHa%>yQ`yVmI&K)a zX`ze?IeHF1!+0QEO%m*Mg^EIk)$*Wdp|kd18O~s7s2`%%mewrX!tKP;y6@5vYQ2?u z?*_$@^lXo^Qn_|gb+WJ-io&HP;ypS4udRW+sZW1LjHAU|fNQ3DIO5-X; zHqDIYk?L2lFZ7YZ6B>0HFz}Q{D_H;sYZNg&>u(mw^lG*05sYuJj*zFX!Z8*YeqiYX zVV0`LxRwT`tNE29+&QI~B^4Sxg9(_(lfoHPQ5c}C^(oi;l&d6AOEY_jkA@KS4+vPm R7`?Jn;btFYgQ_V!{{u!vEL;Ep literal 0 HcmV?d00001 diff --git a/target/classes/kcompost/listeners/PlayerListener.class b/target/classes/kcompost/listeners/PlayerListener.class new file mode 100644 index 0000000000000000000000000000000000000000..5747a345124ae3759fc1419678398918dbc853c8 GIT binary patch literal 7365 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 literal 0 HcmV?d00001 diff --git a/target/classes/kcompost/managers/PluginManager.class b/target/classes/kcompost/managers/PluginManager.class new file mode 100644 index 0000000000000000000000000000000000000000..be893910d135fff7440f2c4284b1ffbf91333575 GIT binary patch literal 547 zcmah_%SyvQ6g`u)O`4`{to5;z;-*zFAK(K-5QJ8RO2Oqc4sqIaQj*k#U*%&_P;e{w zQR1Dp6vah1cka1!=A1M4>-+5kz$vyJ7%(m5T;x$;@CN*W`w>^6f7Ks|AY&*TNhPxr z2D91f6=9=j!EsT7%dj&H;?X!xGk?St4@Hvt*U==DsxyZSwp3}xRUjA|?G@}phty4m z+*y1_{Ayb&aXA_FMRLRY5lw3CIN(u_CsO0ZFqhrSl%W)g>|*J)+ib0LV<>ks9t=Bt zypVGAPbH7!Bbhnfc#;I-T+W>TeCt4O2@OhX&=!fRw?UmrJ*|;yg^*7tqcguZ1$(B( zK$WV#)>MzGJ11am_PmH1)@h<2AJ3$L`U|X2l;2_BPEme^Mfi#C=UNrg0W8wANzXx@ e5QXqaWMi3QpN87n9g+QbbJWbSjhL6t&8SBo+v7GXo7*6fCN^iXy|BBLcm5kSd-mRA_#$_>TlEiftH*k~SI>Hy8#ck`eVAz<>AgW7kMu3LfAGi+D zCdg&nQgBy(YhkdI8Z`UBzl-03j9nU(J)utUQ4 zWDV{!)TgtK`Z_D?UFy%6ZV2>HMG21>Qey^TDK9L-#Je)}Vn&e_R2UX}rmU?W=)=IW zef_qTq zRcVG5lxeW#7YCE0O|nWmomNKcT=fUoH&SAFOj2G03Z9TuBLh6eD(zC_vPLJ;nUl4& zD^)e+J5paztZMmC$sVInJ;AjYz8+(Vv=!3GG9IGmXa)T-G{||#PDLr<8J^SKi_n%W rQ@C}!9EIBsxdR$Oj!{qWAcBsFN6-bb)QEUt3R)XMGrS`37+(Jcgwsux literal 0 HcmV?d00001 diff --git a/target/classes/plugin.yml b/target/classes/plugin.yml new file mode 100644 index 0000000..5bf9ba3 --- /dev/null +++ b/target/classes/plugin.yml @@ -0,0 +1,6 @@ +main: kcompost.QuickComposter +version: 1.0 +name: QuickComposter +author: bunchy7s +api-version: 1.21 +folia-supported: true \ No newline at end of file diff --git a/target/maven-archiver/pom.properties b/target/maven-archiver/pom.properties new file mode 100644 index 0000000..070cee3 --- /dev/null +++ b/target/maven-archiver/pom.properties @@ -0,0 +1,5 @@ +#Generated by Maven +#Tue May 19 14:00:54 CDT 2026 +artifactId=QuickComposter +groupId=kcompost +version=1.0 diff --git a/target/maven-status/maven-compiler-plugin/compile/default-compile/createdFiles.lst b/target/maven-status/maven-compiler-plugin/compile/default-compile/createdFiles.lst new file mode 100644 index 0000000..79f65b1 --- /dev/null +++ b/target/maven-status/maven-compiler-plugin/compile/default-compile/createdFiles.lst @@ -0,0 +1,4 @@ +kcompost/utils/Utils.class +kcompost/managers/PluginManager.class +kcompost/listeners/PlayerListener.class +kcompost/QuickComposter.class diff --git a/target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst b/target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst new file mode 100644 index 0000000..5c90e91 --- /dev/null +++ b/target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst @@ -0,0 +1,4 @@ +/home/bunchy7s/programs/mcplugins/QuickCompost/QuickComposter/src/main/java/kcompost/QuickComposter.java +/home/bunchy7s/programs/mcplugins/QuickCompost/QuickComposter/src/main/java/kcompost/listeners/PlayerListener.java +/home/bunchy7s/programs/mcplugins/QuickCompost/QuickComposter/src/main/java/kcompost/managers/PluginManager.java +/home/bunchy7s/programs/mcplugins/QuickCompost/QuickComposter/src/main/java/kcompost/utils/Utils.java