12
1

Fix Piston retract with Block on Region Floor and Piston above #271

Manuell gemergt
Zeanon hat 3 Commits von PistonFixArenaFloor nach master 2021-05-08 01:33:33 +02:00 zusammengeführt
2 geänderte Dateien mit 5 neuen und 7 gelöschten Zeilen
Nur Änderungen aus Commit f62ac6a1ce werden angezeigt - Alle Commits anzeigen

Datei anzeigen

@ -37,7 +37,7 @@ public class Region {
public Region(int minX, int minY, int minZ, int sizeX, int sizeY, int sizeZ, int extendX, int extendZ) {
this(minX - extendX, minY, minZ - extendZ,
sizeX + extendX * 2, sizeY, sizeZ + extendZ * 2);
sizeX + extendX * 2, sizeY, sizeZ + extendZ * 2);
}
public Region(int minX, int minY, int minZ, int sizeX, int sizeY, int sizeZ) {
@ -96,7 +96,7 @@ public class Region {
public boolean chunkOutside(int cX, int cZ) {
return getMinChunkX() > cX || cX > getMaxChunkX() ||
getMinChunkZ() > cZ || cZ > getMaxChunkZ();
getMinChunkZ() > cZ || cZ > getMaxChunkZ();
}
public void forEachChunk(ObjIntConsumer<Integer> executor) {
@ -144,7 +144,7 @@ public class Region {
}
public boolean inRegion(Block block){
return in2dRegion(block) && block.getY() >= minY - 1 && block.getY() < maxY;
return in2dRegion(block) && minY <= block.getY() && block.getY() < maxY;
Veraltet
Review

Das ist schlicht inkorrekt. Am Region-System hängen nicht nur Pistons dran, das verursacht hier nur unvorhergesehene Probleme. Was ist überhaupt das Problem?

Das ist schlicht inkorrekt. Am Region-System hängen nicht nur Pistons dran, das verursacht hier nur unvorhergesehene Probleme. Was ist überhaupt das Problem?
Veraltet
Review

Also erstmal wird diese Methode nur an genau 2 Stellen gecalled, welche im PistonRetrace und Expand sind und niergends sonst, laut Intelij. Somit ist dies absolut richtig. Und inRegion sollte nicht gucken, ob es unter minY liegt und unter maxY das ist schlicht einfach für inRegion falsch!

Also erstmal wird diese Methode nur an genau 2 Stellen gecalled, welche im PistonRetrace und Expand sind und niergends sonst, laut Intelij. Somit ist dies absolut richtig. Und inRegion sollte nicht gucken, ob es unter minY liegt und unter maxY das ist schlicht einfach für inRegion falsch!
Veraltet
Review

Derzeit wird die Methode nur beim Piston gecallt, ist jedoch nicht einfach nur dafür gedacht. Bitte lese dir nochmal exakt den code durch, diese Methode prüft nicht ob es unter minY ist. Das ist schlicht die falsche Stelle für den Fix. Diese Methode ist so richtig, der Fix macht im Gegensatz die Methode kaputt. Die kaputte Methode ist hierbei der Listener und nicht inRegion.

Derzeit wird die Methode nur beim Piston gecallt, ist jedoch nicht einfach nur dafür gedacht. Bitte lese dir nochmal exakt den code durch, diese Methode prüft nicht ob es unter minY ist. Das ist schlicht die falsche Stelle für den Fix. Diese Methode ist so richtig, der Fix macht im Gegensatz die Methode kaputt. Die kaputte Methode ist hierbei der Listener und nicht inRegion.
Veraltet
Review

Aber ist es so falsch dann minY <= block.getY() logisch umzudrehen und zu gucken ob block.getY() >= minY - 1 ist. Das dürfte bis auf der -1 sich genau gleich verhalten. Du hast einfach den code was das angeht etwas komisch geschrieben. und mein fix war auch eigentlich minY < block.getY() jedoch hat der laut Zeanon nicht getan.

Aber ist es so falsch dann `minY <= block.getY()` logisch umzudrehen und zu gucken ob `block.getY() >= minY - 1` ist. Das dürfte bis auf der `-1` sich genau gleich verhalten. Du hast einfach den code was das angeht etwas komisch geschrieben. und mein fix war auch eigentlich `minY < block.getY()` jedoch hat der laut Zeanon nicht getan.
Veraltet
Review

Und wie soll man laut dir dann bitte das ganze im Listener beheben, wenn dieser diese Methode verwendet?

Und wie soll man laut dir dann bitte das ganze im Listener beheben, wenn dieser diese Methode verwendet?
Veraltet
Review

Das -1 ist ein one-off FEHLER. Hast du dir mal angeschaut, was für Blockpositionen da überhaupt vom Pistonlistener überprüft werden?

Das -1 ist ein one-off FEHLER. Hast du dir mal angeschaut, was für Blockpositionen da überhaupt vom Pistonlistener überprüft werden?
Veraltet
Review

Irgendwelche relative Block positions. Jedoch weiterhin ist das umdrehen der If abfrage, keine logische Änderung, sondern eine, womit besser zu lesen ist, was dort passiert. Dies sollte trotzdem irgendwie behoben werden, weil man so Blöcke aus der Ebene über dem Boden nicht wegziehen kann nach oben.

Irgendwelche relative Block positions. Jedoch weiterhin ist das umdrehen der If abfrage, keine logische Änderung, sondern eine, womit besser zu lesen ist, was dort passiert. Dies sollte trotzdem irgendwie behoben werden, weil man so Blöcke aus der Ebene über dem Boden nicht wegziehen kann nach oben.
Veraltet
Review

Ja, der Fehler sollte behoben werden, inRegion ist jedoch die falsche Stelle, weil da nix kaputt ist. Die irgendwelchen relativen Blockpositions sind schätzungsweise mehrere (Slime oder etc. sei Dank). Und ich finde min <= x < max besser zu lesen als x >= min und x < max, aber das ist wohl Geschmacksfrage und keine technische.

Ja, der Fehler sollte behoben werden, inRegion ist jedoch die falsche Stelle, weil da nix kaputt ist. Die irgendwelchen relativen Blockpositions sind schätzungsweise mehrere (Slime oder etc. sei Dank). Und ich finde min <= x < max besser zu lesen als x >= min und x < max, aber das ist wohl Geschmacksfrage und keine technische.
Veraltet
Review

Gut und wie willst du diese Sache dann beheben?

Gut und wie willst du diese Sache dann beheben?
Veraltet
Review

Erstmal anschauen, welche "irgendwelchen" relativen Blockpositions da rauskommen, und anschauen, ob das ein generelles Problem ist, oder nur nach unten positionierten Pistons mit Eigenschaft xy passiert.

Erstmal anschauen, welche "irgendwelchen" relativen Blockpositions da rauskommen, und anschauen, ob das ein generelles Problem ist, oder nur nach unten positionierten Pistons mit Eigenschaft xy passiert.
Veraltet
Review

ok. ich weiß nur nicht, da ich nicht so ganz im FightSystem drin bin ob ich das so gut schaffe.

ok. ich weiß nur nicht, da ich nicht so ganz im FightSystem drin bin ob ich das so gut schaffe.
Veraltet
Review

Wenn du Region gefunden hast, wirst du auch den PistonListener finden, und der ist ein für sich abgeschlossenes Modul.

Wenn du Region gefunden hast, wirst du auch den PistonListener finden, und der ist ein für sich abgeschlossenes Modul.
Veraltet
Review

HABS GEFUNDEN

HABS GEFUNDEN
}
public interface TriConsumer<T, V, U>{

Datei anzeigen

@ -39,9 +39,8 @@ public class PistonListener implements Listener {
@EventHandler
public void handlePistonExtend(BlockPistonExtendEvent e){
BlockFace b = e.getDirection().getOppositeFace();
for(Block block : e.getBlocks()){
if(!Config.BlueExtendRegion.inRegion(block.getRelative(b)) && !Config.RedExtendRegion.inRegion(block.getRelative(b))){
if(!Config.BlueExtendRegion.inRegion(block) && !Config.RedExtendRegion.inRegion(block)){
e.setCancelled(true);
return;
}
@ -50,9 +49,8 @@ public class PistonListener implements Listener {
@EventHandler
public void handlePistonRetract(BlockPistonRetractEvent e){
BlockFace b = e.getDirection().getOppositeFace();
for(Block block : e.getBlocks()){
if(!Config.BlueExtendRegion.inRegion(block.getRelative(b)) && !Config.RedExtendRegion.inRegion(block.getRelative(b))) {
if(!Config.BlueExtendRegion.inRegion(block) && !Config.RedExtendRegion.inRegion(block)) {
e.setCancelled(true);
return;
}