feat: replace heavy core with other item instead of fully disabling vaults

This commit is contained in:
HerozDotExe 2026-02-12 20:59:54 +01:00
parent c930f30c74
commit 7b105820d7
3 changed files with 57 additions and 6 deletions

View file

@ -0,0 +1,51 @@
package dev.hrz0.smp4.Listeners;
import org.bukkit.Bukkit;
import org.bukkit.Material;
import org.bukkit.enchantments.Enchantment;
import org.bukkit.entity.Player;
import org.bukkit.event.EventHandler;
import org.bukkit.event.Listener;
import org.bukkit.event.block.BlockDispenseLootEvent;
import org.bukkit.inventory.ItemStack;
import org.bukkit.inventory.meta.ItemMeta;
import java.util.List;
import java.util.logging.Logger;
public class BlockDispenseLootListener implements Listener {
private final Logger logger;
public BlockDispenseLootListener(Logger logger) {
this.logger = logger;
}
@EventHandler
public void onBlockDropItem(BlockDispenseLootEvent event) {
logger.info(String.format("Vault: %s Heavy Core: %s", event.getBlock().getType().equals(Material.VAULT), event.getDispensedLoot().contains(ItemStack.of(Material.HEAVY_CORE))));
if (event.getBlock().getType().equals(Material.VAULT)) {
List<ItemStack> loot = event.getDispensedLoot();
if (loot.contains(ItemStack.of(Material.HEAVY_CORE))) {
loot.remove(ItemStack.of(Material.HEAVY_CORE));
if (Math.random() > 0.5) {
logger.info("Replaced an heavy core with an enchanted golden apple.");
loot.add(ItemStack.of(Material.ENCHANTED_GOLDEN_APPLE));
} else {
for (Player p : Bukkit.getOnlinePlayers()) {
p.sendMessage("Replaced an heavy core with a wind burst book.");
}
ItemStack book = ItemStack.of(Material.ENCHANTED_BOOK);
ItemMeta meta = book.getItemMeta();
meta.addEnchant(Enchantment.WIND_BURST, (int) ((Math.random() * (3 - 1)) + 1), false); // ALWAYS ONE ?
book.setItemMeta(meta);
loot.add(book);
}
event.setDispensedLoot(loot);
}
}
}
}

View file

@ -2,7 +2,7 @@ package dev.hrz0.smp4;
import dev.hrz0.smp4.Listeners.DeathListener;
import dev.hrz0.smp4.Listeners.JoinListener;
import dev.hrz0.smp4.Listeners.VaultChangeStateListener;
import dev.hrz0.smp4.Listeners.BlockDispenseLootListener;
import dev.hrz0.smp4.Listeners.WorldSaveListener;
import dev.hrz0.smp4.States.States;
import dev.hrz0.smp4.States.StatesParser;
@ -50,9 +50,9 @@ public final class Smp4 extends JavaPlugin {
JoinListener joinListener = new JoinListener(states, logger);
manager.registerEvents(joinListener, this);
if (config.getBoolean("disableVaultLoot")) {
VaultChangeStateListener vaultChangeStateListener = new VaultChangeStateListener();
manager.registerEvents(vaultChangeStateListener, this);
if (config.getBoolean("preventMaceLoot")) {
BlockDispenseLootListener blockDispenseLootListener = new BlockDispenseLootListener(logger);
manager.registerEvents(blockDispenseLootListener, this);
}
registerCommand(
@ -81,7 +81,7 @@ public final class Smp4 extends JavaPlugin {
if (eggOwner != null) {
List<String> commands = config.getStringList("eggOwnerCommands");
Map<String, String> toFill = new HashMap<String, String>();
Map<String, String> toFill = new HashMap<>();
toFill.put("<owner>", eggOwner.getName());
Utilities.runCommands(commands, toFill);

View file

@ -17,4 +17,4 @@ eloGainWhenHoldingEgg: 10
# How much money should be given to players holding the dragon egg every eggOwnerCommandInterval
moneyGainWhenHoldingEgg: 100
disableVaultLoot: true
preventMaceLoot: true