forked from SteamWar/SteamWar
Improve PistonCalculator
This commit is contained in:
+17
-3
@@ -27,7 +27,6 @@ import de.steamwar.entity.REntityServer;
|
||||
import de.steamwar.entity.RTextDisplay;
|
||||
import de.steamwar.linkage.Linked;
|
||||
import de.steamwar.linkage.MinVersion;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import org.bukkit.Bukkit;
|
||||
import org.bukkit.Location;
|
||||
import org.bukkit.Material;
|
||||
@@ -92,6 +91,12 @@ public class PistonCalculator implements Listener {
|
||||
Bukkit.getScheduler().runTaskLater(BauSystem.getInstance(), () -> {
|
||||
pistOrders.values().forEach(PistOrder::calculate);
|
||||
}, 3);
|
||||
event.getBlocks().forEach(block -> {
|
||||
PistOrder pistOrder = pistOrders.remove(block.getLocation());
|
||||
if (pistOrder == null) return;
|
||||
pistOrder.piston = pistOrder.piston.getRelative(event.getDirection());
|
||||
pistOrders.put(pistOrder.piston.getLocation(), pistOrder);
|
||||
});
|
||||
}
|
||||
|
||||
@EventHandler
|
||||
@@ -99,6 +104,12 @@ public class PistonCalculator implements Listener {
|
||||
Bukkit.getScheduler().runTaskLater(BauSystem.getInstance(), () -> {
|
||||
pistOrders.values().forEach(PistOrder::calculate);
|
||||
}, 3);
|
||||
event.getBlocks().forEach(block -> {
|
||||
PistOrder pistOrder = pistOrders.remove(block.getLocation());
|
||||
if (pistOrder == null) return;
|
||||
pistOrder.piston = pistOrder.piston.getRelative(event.getDirection());
|
||||
pistOrders.put(pistOrder.piston.getLocation(), pistOrder);
|
||||
});
|
||||
}
|
||||
|
||||
@EventHandler
|
||||
@@ -138,9 +149,8 @@ public class PistonCalculator implements Listener {
|
||||
|
||||
private final Map<Location, PistOrder> pistOrders = new HashMap<>();
|
||||
|
||||
@RequiredArgsConstructor
|
||||
private final class PistOrder {
|
||||
private final Block piston;
|
||||
private Block piston;
|
||||
private REntityServer server = new REntityServer();
|
||||
|
||||
private boolean pulling = false;
|
||||
@@ -148,6 +158,10 @@ public class PistonCalculator implements Listener {
|
||||
private List<Location> brokenBlocks = new ArrayList<>();
|
||||
private Set<Location> immovableBlocks = new HashSet<>();
|
||||
|
||||
public PistOrder(Block piston) {
|
||||
this.piston = piston;
|
||||
}
|
||||
|
||||
public void calculate() {
|
||||
movedBlocks.clear();
|
||||
brokenBlocks.clear();
|
||||
|
||||
Reference in New Issue
Block a user