LagAssist is a plugin that provides tools to prevent, analyse or resolve lag.
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

54 lines
1.4 KiB

package com.entryrise.lagassist.microfeatures;
import java.util.WeakHashMap;
import org.bukkit.Chunk;
import org.bukkit.Material;
import org.bukkit.block.BlockState;
import org.bukkit.event.EventHandler;
import org.bukkit.event.Listener;
import org.bukkit.event.block.BlockGrowEvent;
import org.bukkit.inventory.ItemStack;
import com.entryrise.lagassist.Main;
public class GrowableStack implements Listener {
private static WeakHashMap<Chunk, WeakHashMap<Material, Integer>> counts = new WeakHashMap<>();
@EventHandler
public void onCropGrowdth(BlockGrowEvent e) {
if (!Main.config.getBoolean("microfeatures.stack-growables.enable")) {
return;
}
BlockState b = e.getNewState();
Chunk chk = b.getChunk();
Material mat = b.getType();
if (!Main.config.getStringList("microfeatures.stack-growables.blocks").contains(mat.toString())) {
return;
}
int current = counts.getOrDefault(chk, new WeakHashMap<>()).getOrDefault(mat, 0) + 1;
int stacksize = Main.config.getInt("microfeatures.stack-growables.stacksize");
e.setCancelled(true);
if (current % stacksize == 0) {
b.getLocation().getWorld().dropItemNaturally(b.getLocation(), new ItemStack(mat, stacksize));
// Main.sendDebug("Cactus stack in chunk " + chk.getX() + " " + chk.getZ() + " at " + current + " for " + mat.toString(), 2);
}
counts.compute(chk, (k, v) -> {
if (v == null) {
v = new WeakHashMap<>();
}
v.put(mat, current);
return v;
});
}
}