diff --git a/BauSystem/BauSystem_Main/src/de/steamwar/bausystem/utils/cursor/RCursor.java b/BauSystem/BauSystem_Main/src/de/steamwar/bausystem/utils/cursor/RCursor.java index c9de7cab..df884cd7 100644 --- a/BauSystem/BauSystem_Main/src/de/steamwar/bausystem/utils/cursor/RCursor.java +++ b/BauSystem/BauSystem_Main/src/de/steamwar/bausystem/utils/cursor/RCursor.java @@ -7,8 +7,10 @@ import de.steamwar.entity.RFallingBlockEntity; import lombok.AllArgsConstructor; import lombok.Getter; import lombok.Setter; +import org.bukkit.Bukkit; import org.bukkit.Location; import org.bukkit.Material; +import org.bukkit.World; import org.bukkit.block.BlockFace; import org.bukkit.entity.Player; import org.bukkit.util.Vector; @@ -17,7 +19,11 @@ import java.util.function.BiFunction; @Getter public class RCursor { + private final World WORLD = Bukkit.getWorlds().get(0); + private final REntityServer targetServer; + private final REntityServer cursorServer; + private final Player owner; private final Material highlightMaterial; @@ -36,6 +42,9 @@ public class RCursor { this.cursorMaterial = cursorMaterial; this.cursorMode = cursorMode; + cursorServer = new REntityServer(); + cursorServer.addPlayer(owner); + RCursorManager.getInstance().registerCursor(this); } @@ -53,17 +62,17 @@ public class RCursor { Material activeCursorMaterial = hitEntity == null ? cursorMaterial : highlightMaterial; - Location activeCursorLocation = hitEntity == null ? cursorMode.positionTransform.apply(owner, rayTraceResult).toLocation(owner.getWorld()) - : new Vector(hitEntity.getX(), hitEntity.getY(), hitEntity.getZ()).toLocation(owner.getWorld()); + Location activeCursorLocation = hitEntity == null ? cursorMode.positionTransform.apply(owner, rayTraceResult).toLocation(WORLD) + : new Vector(hitEntity.getX(), hitEntity.getY(), hitEntity.getZ()).toLocation(WORLD); if (cursorEntity == null) { - cursorEntity = new RFallingBlockEntity(targetServer, activeCursorLocation, activeCursorMaterial); + cursorEntity = new RFallingBlockEntity(cursorServer, activeCursorLocation, activeCursorMaterial); cursorEntity.setNoGravity(true); } if (cursorEntity.getMaterial() == activeCursorMaterial) { cursorEntity.move(activeCursorLocation); } else { cursorEntity.die(); - cursorEntity = new RFallingBlockEntity(targetServer, activeCursorLocation, activeCursorMaterial); + cursorEntity = new RFallingBlockEntity(cursorServer, activeCursorLocation, activeCursorMaterial); cursorEntity.setNoGravity(true); if(activeCursorMaterial == highlightMaterial) { cursorEntity.setGlowing(true);