forked from stefatorus/LagAssist
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.
93 lines
2.1 KiB
93 lines
2.1 KiB
4 years ago
|
package cx.sfy.LagAssist.microfeatures;
|
||
|
|
||
|
import java.util.ArrayList;
|
||
|
import java.util.Arrays;
|
||
|
import java.util.List;
|
||
|
|
||
|
import org.bukkit.Bukkit;
|
||
|
import org.bukkit.Material;
|
||
|
import org.bukkit.block.Block;
|
||
|
import org.bukkit.block.BlockFace;
|
||
|
import org.bukkit.block.BlockState;
|
||
|
import org.bukkit.event.EventHandler;
|
||
|
import org.bukkit.event.EventPriority;
|
||
|
import org.bukkit.event.Listener;
|
||
|
import org.bukkit.event.block.BlockGrowEvent;
|
||
|
import org.bukkit.material.MaterialData;
|
||
|
import org.bukkit.material.PistonBaseMaterial;
|
||
|
|
||
|
import cx.sfy.LagAssist.Main;
|
||
|
|
||
|
@SuppressWarnings("deprecation")
|
||
|
public class MicroManager implements Listener {
|
||
|
|
||
|
public static void Enabler(boolean reload) {
|
||
|
Bukkit.getLogger().info(" §e[§a✔§e] §fMicroFeatures.");
|
||
|
|
||
|
if (!reload) {
|
||
|
runTask();
|
||
|
}
|
||
|
|
||
|
Main.p.getServer().getPluginManager().registerEvents(new MicroManager(), Main.p);
|
||
|
}
|
||
|
|
||
|
private static void runTask() {
|
||
|
Bukkit.getScheduler().runTaskTimer(Main.p, () -> {
|
||
|
for (BlockState b : breakables) {
|
||
|
b.getBlock().breakNaturally();
|
||
|
}
|
||
|
|
||
|
breakables.clear();
|
||
|
|
||
|
}, 5, 5);
|
||
|
}
|
||
|
|
||
|
private static List<BlockState> breakables = new ArrayList<>();
|
||
|
private static final List<BlockFace> growablefaces = Arrays.asList(BlockFace.EAST, BlockFace.WEST, BlockFace.NORTH,
|
||
|
BlockFace.SOUTH);
|
||
|
|
||
|
@EventHandler(priority = EventPriority.HIGHEST)
|
||
|
public void onGrowableGrow(BlockGrowEvent e) {
|
||
|
if (!Main.config.getBoolean("microfeatures.optimize-growable-farms.enable")) {
|
||
|
return;
|
||
|
}
|
||
|
|
||
|
if (e.isCancelled()) {
|
||
|
return;
|
||
|
}
|
||
|
|
||
|
BlockState b = e.getNewState();
|
||
|
|
||
|
Material mat = b.getType();
|
||
|
|
||
|
if (!Main.config.getStringList("microfeatures.optimize-growable-farms.blocks").contains(mat.toString())) {
|
||
|
return;
|
||
|
}
|
||
|
|
||
|
for (BlockFace face : growablefaces) {
|
||
|
Block piston = b.getBlock().getRelative(face);
|
||
|
if (piston == null) {
|
||
|
continue;
|
||
|
}
|
||
|
|
||
|
MaterialData mdata = piston.getState().getData();
|
||
|
|
||
|
if (!(mdata instanceof PistonBaseMaterial)) {
|
||
|
continue;
|
||
|
}
|
||
|
|
||
|
PistonBaseMaterial pdata = (PistonBaseMaterial) mdata;
|
||
|
|
||
|
if (pdata.getFacing().getOppositeFace() != face) {
|
||
|
continue;
|
||
|
}
|
||
|
|
||
|
breakables.add(b);
|
||
|
|
||
|
return;
|
||
|
}
|
||
|
|
||
|
}
|
||
|
|
||
|
}
|