diff --git a/core/src/main/java/mc/core/EntityLocation.java b/core/src/main/java/mc/core/EntityLocation.java new file mode 100644 index 0000000..edb92a3 --- /dev/null +++ b/core/src/main/java/mc/core/EntityLocation.java @@ -0,0 +1,34 @@ +/* + * DmitriyMX + * 2018-08-08 + */ +package mc.core; + +import lombok.Getter; +import lombok.Setter; +import mc.core.world.World; + +public class EntityLocation extends Location implements Cloneable { + @Getter + @Setter + private float yaw, pitch; + + public EntityLocation(double x, double y, double z, float yaw, float pitch, World world) { + super(x, y, z, world); + setYawPitch(yaw, pitch); + } + + public void setYawPitch(float yaw, float pitch) { + this.yaw = yaw; + this.pitch = pitch; + } + + public void setYawPitch(EntityLocation entityLocation) { + setYawPitch(entityLocation.yaw, entityLocation.pitch); + } + + @Override + public EntityLocation clone() { + return (EntityLocation) super.clone(); //TODO need test + } +} diff --git a/core/src/main/java/mc/core/Location.java b/core/src/main/java/mc/core/Location.java index adc1dc3..09e6c19 100644 --- a/core/src/main/java/mc/core/Location.java +++ b/core/src/main/java/mc/core/Location.java @@ -1,56 +1,43 @@ /* * DmitriyMX - * 2018-04-15 + * 2018-08-08 */ package mc.core; -import lombok.AllArgsConstructor; -import lombok.Data; +import lombok.Getter; +import lombok.Setter; +import mc.core.world.World; import java.io.Serializable; +import java.lang.ref.WeakReference; -@AllArgsConstructor -@Data -public class Location implements Serializable, Cloneable{ +public class Location implements Serializable, Cloneable { + @Getter + @Setter private double x, y, z; + private WeakReference refWorld; - private static int floor_double(double value) { - int i = (int)value; - return value < (double)i ? i - 1 : i; + public Location(double x, double y, double z, World world) { + setXYZ(x, y, z); + setWorld(world); } - public static Location startPointLocation () { - return new Location(0,10,0); - } - - public Location(long compactValue) { - set(compactValue); - } - - public void set(double x, double y, double z) { + public void setXYZ(double x, double y, double z) { this.x = x; this.y = y; this.z = z; } - public void set(Location location) { - this.x = location.x; - this.y = location.y; - this.z = location.z; + public void setXYZ(Location location) { + setXYZ(location.x, location.y, location.z); } - public void set(long compactValue) { - this.x = compactValue >> 38; - this.y = (compactValue >> 26) & 0xFFF; - this.z = compactValue << 38 >> 38; // is normal? + public World getWorld() { + return refWorld.get(); } - public Location diff(Location location) { - return new Location( - this.x - location.x, - this.y - location.y, - this.z - location.z - ); + public void setWorld(World world) { + this.refWorld = new WeakReference<>(world); } public int getBlockX() { @@ -65,18 +52,11 @@ public class Location implements Serializable, Cloneable{ return (int) z; } - - public long toLong() { - return ((floor_double(x) & 0x3FFFFFF) << 38) - | ((floor_double(y) & 0xFFF) << 26) - | (floor_double(z) & 0x3FFFFFF); - } - @Override public Location clone() { try { return (Location) super.clone(); - } catch (CloneNotSupportedException e) { + } catch (CloneNotSupportedException e) { // такое в нашем случае вообще возможно? return null; } } diff --git a/core/src/main/java/mc/core/player/Look.java b/core/src/main/java/mc/core/player/Look.java deleted file mode 100644 index 1c0f7f4..0000000 --- a/core/src/main/java/mc/core/player/Look.java +++ /dev/null @@ -1,21 +0,0 @@ -/* - * DmitriyMX - * 2018-04-22 - */ -package mc.core.player; - -import lombok.AllArgsConstructor; -import lombok.Data; - -import java.io.Serializable; - -@Data -@AllArgsConstructor -public class Look implements Serializable{ - private float yaw, pitch; - - public void set(Look look) { - this.yaw = look.yaw; - this.pitch = look.pitch; - } -}