forked from BLOCKFANTASY/LOOHP-Limbo
Fill chunks outside of world (schematic) with empty chunks
This commit is contained in:
@@ -0,0 +1,81 @@
|
||||
package com.loohp.limbo.world;
|
||||
|
||||
import com.loohp.limbo.location.Location;
|
||||
|
||||
import net.querz.mca.Chunk;
|
||||
|
||||
public class ChunkPosition {
|
||||
|
||||
private World world;
|
||||
private int x;
|
||||
private int z;
|
||||
|
||||
public ChunkPosition(World world, int chunkX, int chunkZ) {
|
||||
this.world = world;
|
||||
this.x = chunkX;
|
||||
this.z = chunkZ;
|
||||
}
|
||||
|
||||
public ChunkPosition(Location location) {
|
||||
this(location.getWorld(), (int) location.getX() >> 4, (int) location.getZ() >> 4);
|
||||
}
|
||||
|
||||
public ChunkPosition(World world, Chunk chunk) {
|
||||
this(world, world.getChunkX(chunk), world.getChunkZ(chunk));
|
||||
}
|
||||
|
||||
public World getWorld() {
|
||||
return world;
|
||||
}
|
||||
|
||||
public int getChunkX() {
|
||||
return x;
|
||||
}
|
||||
|
||||
public int getChunkZ() {
|
||||
return z;
|
||||
}
|
||||
|
||||
public Chunk getChunk() {
|
||||
return getWorld().getChunkAt(x, z);
|
||||
}
|
||||
|
||||
@Override
|
||||
public int hashCode() {
|
||||
final int prime = 31;
|
||||
int result = 1;
|
||||
result = prime * result + ((world == null) ? 0 : world.hashCode());
|
||||
result = prime * result + x;
|
||||
result = prime * result + z;
|
||||
return result;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean equals(Object obj) {
|
||||
if (this == obj) {
|
||||
return true;
|
||||
}
|
||||
if (obj == null) {
|
||||
return false;
|
||||
}
|
||||
if (getClass() != obj.getClass()) {
|
||||
return false;
|
||||
}
|
||||
ChunkPosition other = (ChunkPosition) obj;
|
||||
if (world == null) {
|
||||
if (other.world != null) {
|
||||
return false;
|
||||
}
|
||||
} else if (!world.equals(other.world)) {
|
||||
return false;
|
||||
}
|
||||
if (x != other.x) {
|
||||
return false;
|
||||
}
|
||||
if (z != other.z) {
|
||||
return false;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
}
|
||||
@@ -27,7 +27,29 @@ import net.querz.nbt.tag.CompoundTag;
|
||||
import net.querz.nbt.tag.ListTag;
|
||||
|
||||
public class World {
|
||||
|
||||
|
||||
public static final CompoundTag HEIGHT_MAP = new CompoundTag();
|
||||
public static final Chunk EMPTY_CHUNK = Chunk.newChunk();
|
||||
|
||||
static {
|
||||
HEIGHT_MAP.putLongArray("MOTION_BLOCKING",
|
||||
new long[] {1371773531765642314L, 1389823183635651148L, 1371738278539598925L,
|
||||
1389823183635388492L, 1353688558756731469L, 1389823114781694027L, 1317765589597723213L,
|
||||
1371773531899860042L, 1389823183635651149L, 1371773462911685197L, 1389823183635650636L,
|
||||
1353688626805119565L, 1371773531900123211L, 1335639250618849869L, 1371738278674077258L,
|
||||
1389823114781694028L, 1353723811310638154L, 1371738278674077259L, 1335674228429068364L,
|
||||
1335674228429067338L, 1335674228698027594L, 1317624576693539402L, 1335709481520370249L,
|
||||
1299610178184057417L, 1335638906349064264L, 1299574993811968586L, 1299574924958011464L,
|
||||
1299610178184056904L, 1299574924958011464L, 1299610109330100296L, 1299574924958011464L,
|
||||
1299574924823793736L, 1299574924958011465L, 1281525273222484040L, 1299574924958011464L,
|
||||
1281525273222484040L, 9548107335L});
|
||||
|
||||
EMPTY_CHUNK.cleanupPalettesAndBlockStates();
|
||||
EMPTY_CHUNK.setHeightMaps(HEIGHT_MAP.clone());
|
||||
EMPTY_CHUNK.setBiomes(new int[256]);
|
||||
EMPTY_CHUNK.setTileEntities(new ListTag<CompoundTag>(CompoundTag.class));
|
||||
}
|
||||
|
||||
private String name;
|
||||
private Environment environment;
|
||||
private Chunk[][] chunks;
|
||||
@@ -49,19 +71,7 @@ public class World {
|
||||
chunks[x][z] = Chunk.newChunk();
|
||||
Chunk chunk = chunks[x][z];
|
||||
chunk.cleanupPalettesAndBlockStates();
|
||||
CompoundTag heightMap = new CompoundTag();
|
||||
heightMap.putLongArray("MOTION_BLOCKING",
|
||||
new long[] {1371773531765642314L, 1389823183635651148L, 1371738278539598925L,
|
||||
1389823183635388492L, 1353688558756731469L, 1389823114781694027L, 1317765589597723213L,
|
||||
1371773531899860042L, 1389823183635651149L, 1371773462911685197L, 1389823183635650636L,
|
||||
1353688626805119565L, 1371773531900123211L, 1335639250618849869L, 1371738278674077258L,
|
||||
1389823114781694028L, 1353723811310638154L, 1371738278674077259L, 1335674228429068364L,
|
||||
1335674228429067338L, 1335674228698027594L, 1317624576693539402L, 1335709481520370249L,
|
||||
1299610178184057417L, 1335638906349064264L, 1299574993811968586L, 1299574924958011464L,
|
||||
1299610178184056904L, 1299574924958011464L, 1299610109330100296L, 1299574924958011464L,
|
||||
1299574924823793736L, 1299574924958011465L, 1281525273222484040L, 1299574924958011464L,
|
||||
1281525273222484040L, 9548107335L});
|
||||
chunk.setHeightMaps(heightMap);
|
||||
chunk.setHeightMaps(HEIGHT_MAP.clone());
|
||||
chunk.setBiomes(new int[256]);
|
||||
chunk.setTileEntities(new ListTag<CompoundTag>(CompoundTag.class));
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user