Started refactoring simulator cursor for reuse

This commit is contained in:
D4rkr34lm
2025-04-29 23:25:22 +02:00
parent 32c85b9bd5
commit 54adc12045
@@ -0,0 +1,51 @@
package de.steamwar.bausystem.utils;
import de.steamwar.entity.REntity;
import de.steamwar.entity.REntityServer;
import de.steamwar.entity.RFallingBlockEntity;
import org.bukkit.Location;
import org.bukkit.Material;
import org.bukkit.entity.Player;
import org.bukkit.util.Vector;
public class RCursor {
private Player owner;
private REntityServer targetServer;
private RFallingBlockEntity cursorEntity;
private Material highlightMaterial;
private Material cursorMaterial;
public RCursor(REntityServer targetServer, Material highlightMaterial, Material cursorMaterial) {
this.targetServer = targetServer;
this.highlightMaterial = highlightMaterial;
this.cursorMaterial = cursorMaterial;
}
public void render() {
RayTraceUtils.RRayTraceResult rayTraceResult = RayTraceUtils.traceREntity(owner, owner.getLocation(), targetServer.getEntities());
if(rayTraceResult == null) {
cursorEntity.die();
return;
}
REntity hitEntity = rayTraceResult.getHitEntity();
Material activeCursorMaterial = hitEntity == null ? cursorMaterial : highlightMaterial;
Location activeCursorLocation = hitEntity == null ? rayTraceResult.getHitPosition().toLocation(owner.getWorld())
: new Vector(hitEntity.getX(), hitEntity.getY(), hitEntity.getZ()).toLocation(owner.getWorld());
if(cursorEntity == null) {
cursorEntity = new RFallingBlockEntity(targetServer, activeCursorLocation, activeCursorMaterial);
}
else if(cursorEntity.getMaterial() == activeCursorMaterial) {
cursorEntity.move(activeCursorLocation);
}
else {
cursorEntity.die();
cursorEntity = new RFallingBlockEntity(targetServer, activeCursorLocation, activeCursorMaterial);
}
}
}