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.entity.RTextDisplay;
|
||||||
import de.steamwar.linkage.Linked;
|
import de.steamwar.linkage.Linked;
|
||||||
import de.steamwar.linkage.MinVersion;
|
import de.steamwar.linkage.MinVersion;
|
||||||
import lombok.RequiredArgsConstructor;
|
|
||||||
import org.bukkit.Bukkit;
|
import org.bukkit.Bukkit;
|
||||||
import org.bukkit.Location;
|
import org.bukkit.Location;
|
||||||
import org.bukkit.Material;
|
import org.bukkit.Material;
|
||||||
@@ -92,6 +91,12 @@ public class PistonCalculator implements Listener {
|
|||||||
Bukkit.getScheduler().runTaskLater(BauSystem.getInstance(), () -> {
|
Bukkit.getScheduler().runTaskLater(BauSystem.getInstance(), () -> {
|
||||||
pistOrders.values().forEach(PistOrder::calculate);
|
pistOrders.values().forEach(PistOrder::calculate);
|
||||||
}, 3);
|
}, 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
|
@EventHandler
|
||||||
@@ -99,6 +104,12 @@ public class PistonCalculator implements Listener {
|
|||||||
Bukkit.getScheduler().runTaskLater(BauSystem.getInstance(), () -> {
|
Bukkit.getScheduler().runTaskLater(BauSystem.getInstance(), () -> {
|
||||||
pistOrders.values().forEach(PistOrder::calculate);
|
pistOrders.values().forEach(PistOrder::calculate);
|
||||||
}, 3);
|
}, 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
|
@EventHandler
|
||||||
@@ -138,9 +149,8 @@ public class PistonCalculator implements Listener {
|
|||||||
|
|
||||||
private final Map<Location, PistOrder> pistOrders = new HashMap<>();
|
private final Map<Location, PistOrder> pistOrders = new HashMap<>();
|
||||||
|
|
||||||
@RequiredArgsConstructor
|
|
||||||
private final class PistOrder {
|
private final class PistOrder {
|
||||||
private final Block piston;
|
private Block piston;
|
||||||
private REntityServer server = new REntityServer();
|
private REntityServer server = new REntityServer();
|
||||||
|
|
||||||
private boolean pulling = false;
|
private boolean pulling = false;
|
||||||
@@ -148,6 +158,10 @@ public class PistonCalculator implements Listener {
|
|||||||
private List<Location> brokenBlocks = new ArrayList<>();
|
private List<Location> brokenBlocks = new ArrayList<>();
|
||||||
private Set<Location> immovableBlocks = new HashSet<>();
|
private Set<Location> immovableBlocks = new HashSet<>();
|
||||||
|
|
||||||
|
public PistOrder(Block piston) {
|
||||||
|
this.piston = piston;
|
||||||
|
}
|
||||||
|
|
||||||
public void calculate() {
|
public void calculate() {
|
||||||
movedBlocks.clear();
|
movedBlocks.clear();
|
||||||
brokenBlocks.clear();
|
brokenBlocks.clear();
|
||||||
|
|||||||
Reference in New Issue
Block a user