forked from SteamWar/SteamWar
Fix jumpy cursor
This commit is contained in:
@@ -7,8 +7,10 @@ import de.steamwar.entity.RFallingBlockEntity;
|
|||||||
import lombok.AllArgsConstructor;
|
import lombok.AllArgsConstructor;
|
||||||
import lombok.Getter;
|
import lombok.Getter;
|
||||||
import lombok.Setter;
|
import lombok.Setter;
|
||||||
|
import org.bukkit.Bukkit;
|
||||||
import org.bukkit.Location;
|
import org.bukkit.Location;
|
||||||
import org.bukkit.Material;
|
import org.bukkit.Material;
|
||||||
|
import org.bukkit.World;
|
||||||
import org.bukkit.block.BlockFace;
|
import org.bukkit.block.BlockFace;
|
||||||
import org.bukkit.entity.Player;
|
import org.bukkit.entity.Player;
|
||||||
import org.bukkit.util.Vector;
|
import org.bukkit.util.Vector;
|
||||||
@@ -17,7 +19,11 @@ import java.util.function.BiFunction;
|
|||||||
|
|
||||||
@Getter
|
@Getter
|
||||||
public class RCursor {
|
public class RCursor {
|
||||||
|
private final World WORLD = Bukkit.getWorlds().get(0);
|
||||||
|
|
||||||
private final REntityServer targetServer;
|
private final REntityServer targetServer;
|
||||||
|
private final REntityServer cursorServer;
|
||||||
|
|
||||||
private final Player owner;
|
private final Player owner;
|
||||||
private final Material highlightMaterial;
|
private final Material highlightMaterial;
|
||||||
|
|
||||||
@@ -36,6 +42,9 @@ public class RCursor {
|
|||||||
this.cursorMaterial = cursorMaterial;
|
this.cursorMaterial = cursorMaterial;
|
||||||
this.cursorMode = cursorMode;
|
this.cursorMode = cursorMode;
|
||||||
|
|
||||||
|
cursorServer = new REntityServer();
|
||||||
|
cursorServer.addPlayer(owner);
|
||||||
|
|
||||||
RCursorManager.getInstance().registerCursor(this);
|
RCursorManager.getInstance().registerCursor(this);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -53,17 +62,17 @@ public class RCursor {
|
|||||||
|
|
||||||
|
|
||||||
Material activeCursorMaterial = hitEntity == null ? cursorMaterial : highlightMaterial;
|
Material activeCursorMaterial = hitEntity == null ? cursorMaterial : highlightMaterial;
|
||||||
Location activeCursorLocation = hitEntity == null ? cursorMode.positionTransform.apply(owner, rayTraceResult).toLocation(owner.getWorld())
|
Location activeCursorLocation = hitEntity == null ? cursorMode.positionTransform.apply(owner, rayTraceResult).toLocation(WORLD)
|
||||||
: new Vector(hitEntity.getX(), hitEntity.getY(), hitEntity.getZ()).toLocation(owner.getWorld());
|
: new Vector(hitEntity.getX(), hitEntity.getY(), hitEntity.getZ()).toLocation(WORLD);
|
||||||
|
|
||||||
if (cursorEntity == null) {
|
if (cursorEntity == null) {
|
||||||
cursorEntity = new RFallingBlockEntity(targetServer, activeCursorLocation, activeCursorMaterial);
|
cursorEntity = new RFallingBlockEntity(cursorServer, activeCursorLocation, activeCursorMaterial);
|
||||||
cursorEntity.setNoGravity(true);
|
cursorEntity.setNoGravity(true);
|
||||||
} if (cursorEntity.getMaterial() == activeCursorMaterial) {
|
} if (cursorEntity.getMaterial() == activeCursorMaterial) {
|
||||||
cursorEntity.move(activeCursorLocation);
|
cursorEntity.move(activeCursorLocation);
|
||||||
} else {
|
} else {
|
||||||
cursorEntity.die();
|
cursorEntity.die();
|
||||||
cursorEntity = new RFallingBlockEntity(targetServer, activeCursorLocation, activeCursorMaterial);
|
cursorEntity = new RFallingBlockEntity(cursorServer, activeCursorLocation, activeCursorMaterial);
|
||||||
cursorEntity.setNoGravity(true);
|
cursorEntity.setNoGravity(true);
|
||||||
if(activeCursorMaterial == highlightMaterial) {
|
if(activeCursorMaterial == highlightMaterial) {
|
||||||
cursorEntity.setGlowing(true);
|
cursorEntity.setGlowing(true);
|
||||||
|
|||||||
Reference in New Issue
Block a user