Add a middle chunk position to the chunk pos interface

This commit is contained in:
Aria 2023-02-14 10:47:03 -07:00
parent cf2f0a165b
commit 4eee51709c
5 changed files with 36 additions and 16 deletions

View file

@ -5,5 +5,5 @@ org.gradle.daemon=false
mc_version=1.19.2 mc_version=1.19.2
forge_version=43.2.3 forge_version=43.2.3
myversion=1.0.4.2 myversion=1.0.4.3
parchment_version=2022.11.27 parchment_version=2022.11.27

View file

@ -1,23 +1,42 @@
package dev.zontreck.libzontreck.vectors; package dev.zontreck.libzontreck.vectors;
import net.minecraft.nbt.CompoundTag;
public class ChunkPos { public class ChunkPos {
public boolean isSubArea; public boolean isSubArea;
public Points subclaim; public Points points;
public Vector2 centerPoints;
public ChunkPos(Vector3 point1, Vector3 point2) public ChunkPos(Vector3 point1, Vector3 point2)
{ {
isSubArea=true; isSubArea=true;
subclaim = new Points(point1, point2); points = new Points(point1, point2);
}
public ChunkPos(CompoundTag tag)
{
isSubArea = tag.getBoolean("subarea");
points = new Points(tag.getCompound("points"));
centerPoints = new Vector2(tag.getCompound("center"));
} }
public boolean isWithin(Vector3 point) public boolean isWithin(Vector3 point)
{ {
return point.inside(subclaim.Point1, subclaim.Point2); return point.inside(points.Min, points.Max);
} }
public static ChunkPos getChunkPos(WorldPosition pos) public static ChunkPos getChunkPos(WorldPosition pos)
{ {
return pos.getChunkPos(); return pos.getChunkPos();
} }
public CompoundTag serialize()
{
CompoundTag tag = new CompoundTag();
tag.putBoolean("subarea", isSubArea);
tag.put("points", points.serialize());
tag.put("center", centerPoints.serialize());
return tag;
}
} }

View file

@ -3,19 +3,19 @@ package dev.zontreck.libzontreck.vectors;
import net.minecraft.nbt.CompoundTag; import net.minecraft.nbt.CompoundTag;
public class Points { public class Points {
public Vector3 Point1 = Vector3.ZERO; public Vector3 Min = Vector3.ZERO;
public Vector3 Point2 = Vector3.ZERO; public Vector3 Max = Vector3.ZERO;
public Points(Vector3 min, Vector3 max) public Points(Vector3 min, Vector3 max)
{ {
if(min.less(max)) if(min.less(max))
{ {
Point1=min; Min=min;
Point2=max; Max=max;
}else{ }else{
Point1=max; Min=max;
Point2=min; Max=min;
} }
} }
@ -25,14 +25,14 @@ public class Points {
public CompoundTag serialize(){ public CompoundTag serialize(){
CompoundTag tag = new CompoundTag(); CompoundTag tag = new CompoundTag();
tag.put("min", Point1.serialize()); tag.put("min", Min.serialize());
tag.put("max", Point2.serialize()); tag.put("max", Max.serialize());
return tag; return tag;
} }
public void deserialize(CompoundTag tag) public void deserialize(CompoundTag tag)
{ {
Point1 = new Vector3(tag.getCompound("min")); Min = new Vector3(tag.getCompound("min"));
Point2 = new Vector3(tag.getCompound("max")); Max = new Vector3(tag.getCompound("max"));
} }
} }

View file

@ -119,6 +119,7 @@ public class WorldPosition
net.minecraft.world.level.ChunkPos mcChunk = getActualDimension().getChunkAt(Position.asBlockPos()).getPos(); net.minecraft.world.level.ChunkPos mcChunk = getActualDimension().getChunkAt(Position.asBlockPos()).getPos();
ChunkPos pos = new ChunkPos(new Vector3(mcChunk.getMinBlockX(),-70,mcChunk.getMinBlockZ()), new Vector3(mcChunk.getMaxBlockX(), 400, mcChunk.getMaxBlockZ())); ChunkPos pos = new ChunkPos(new Vector3(mcChunk.getMinBlockX(),-70,mcChunk.getMinBlockZ()), new Vector3(mcChunk.getMaxBlockX(), 400, mcChunk.getMaxBlockZ()));
pos.isSubArea=false; pos.isSubArea=false;
pos.centerPoints = new Vector2(mcChunk.getMiddleBlockX(), mcChunk.getMiddleBlockZ());
return pos; return pos;
} }

View file

@ -19,7 +19,7 @@ modId="libzontreck" #mandatory
# The version number of the mod - there's a few well known ${} variables useable here or just hardcode it # The version number of the mod - there's a few well known ${} variables useable here or just hardcode it
# ${file.jarVersion} will substitute the value of the Implementation-Version as read from the mod's JAR file metadata # ${file.jarVersion} will substitute the value of the Implementation-Version as read from the mod's JAR file metadata
# see the associated build.gradle script for how to populate this completely automatically during a build # see the associated build.gradle script for how to populate this completely automatically during a build
version="1.0.4.2" #mandatory version="1.0.4.3" #mandatory
# A display name for the mod # A display name for the mod
displayName="LibZontreck" #mandatory displayName="LibZontreck" #mandatory
# A URL to query for updates for this mod. See the JSON update specification https://mcforge.readthedocs.io/en/latest/gettingstarted/autoupdate/ # A URL to query for updates for this mod. See the JSON update specification https://mcforge.readthedocs.io/en/latest/gettingstarted/autoupdate/