Refactor simulation cursor to use new generic cursor

This commit is contained in:
D4rkr34lm
2026-06-01 21:51:54 +02:00
parent 3810ccd63d
commit def0c19e43
3 changed files with 124 additions and 242 deletions
@@ -21,6 +21,7 @@ import java.util.Comparator;
import java.util.List;
import java.util.Optional;
import java.util.concurrent.atomic.AtomicBoolean;
import java.util.function.BiConsumer;
import java.util.function.BiFunction;
import java.util.function.Predicate;
@@ -44,14 +45,22 @@ public class Cursor implements SWPlayer.Component {
private List<CursorMode> allowedCursorModes;
private final Material highlightMaterial;
private final TriConsumer<Location, Optional<REntity>, Action> onClick;
private final BiConsumer<Location, Optional<REntity>> onRender;
public Cursor(REntityServer targetServer, Player owner, Material highlightMaterial, Material cursorMaterial, List<CursorMode> allowedModes, TriConsumer<Location, Optional<REntity>, Action> onClick) {
this(targetServer, owner, highlightMaterial, cursorMaterial, allowedModes, onClick, (location, hitEntity) -> {
});
}
public Cursor(REntityServer targetServer, Player owner, Material highlightMaterial, Material cursorMaterial, List<CursorMode> allowedModes, TriConsumer<Location, Optional<REntity>, Action> onClick, BiConsumer<Location, Optional<REntity>> onRender) {
this.targetServer = targetServer;
this.owner = owner;
this.highlightMaterial = highlightMaterial;
this.cursorMaterial = cursorMaterial;
this.allowedCursorModes = allowedModes;
this.onClick = onClick;
this.onRender = onRender;
cursorServer = new REntityServer();
cursorServer.addPlayer(owner);
@@ -72,6 +81,9 @@ public class Cursor implements SWPlayer.Component {
if (cursorEntity != null)
cursorEntity.die();
cursorEntity = null;
cursorLocation = null;
hitEntity = null;
onRender.accept(null, Optional.empty());
return;
}
@@ -101,14 +113,12 @@ public class Cursor implements SWPlayer.Component {
cursorEntity.setGlowing(true);
}
}
onRender.accept(cursorLocation, Optional.ofNullable(hitEntity));
}
protected void handlePlayerClick(Action clickAction) {
renderDeduplicated();
if(cursorLocation != null) {
onClick.accept(this.cursorLocation, Optional.ofNullable(this.hitEntity), clickAction);
}
onClick.accept(this.cursorLocation, Optional.ofNullable(this.hitEntity), clickAction);
}
@Override