3
0
Mirror von https://github.com/ViaVersion/ViaVersion.git synchronisiert 2024-11-08 17:20:24 +01:00

Merge pull request #1652 from KennyTV/abstraction

Remove a bit of magic, use finals
Dieser Commit ist enthalten in:
Myles 2020-02-09 12:08:39 +00:00 committet von GitHub
Commit 7cbd20a038
10 geänderte Dateien mit 306 neuen und 74 gelöschten Zeilen

Datei anzeigen

@ -1,12 +1,29 @@
package us.myles.ViaVersion.api.minecraft; package us.myles.ViaVersion.api.minecraft;
import lombok.AllArgsConstructor;
import lombok.Data;
@Data
@AllArgsConstructor
public class BlockChangeRecord { public class BlockChangeRecord {
private short horizontal; private final short horizontal;
private short y; private final short y;
private int blockId; private int blockId;
public BlockChangeRecord(short horizontal, short y, int blockId) {
this.horizontal = horizontal;
this.y = y;
this.blockId = blockId;
}
public short getHorizontal() {
return horizontal;
}
public short getY() {
return y;
}
public int getBlockId() {
return blockId;
}
public void setBlockId(int blockId) {
this.blockId = blockId;
}
} }

Datei anzeigen

@ -1,13 +1,8 @@
package us.myles.ViaVersion.api.minecraft; package us.myles.ViaVersion.api.minecraft;
import lombok.AllArgsConstructor;
import lombok.Getter;
import java.util.HashMap; import java.util.HashMap;
import java.util.Map; import java.util.Map;
@Getter
@AllArgsConstructor
public enum BlockFace { public enum BlockFace {
NORTH((byte) 0, (byte) 0, (byte) -1, EnumAxis.Z), NORTH((byte) 0, (byte) 0, (byte) -1, EnumAxis.Z),
SOUTH((byte) 0, (byte) 0, (byte) 1, EnumAxis.Z), SOUTH((byte) 0, (byte) 0, (byte) 1, EnumAxis.Z),
@ -16,7 +11,7 @@ public enum BlockFace {
TOP((byte) 0, (byte) 1, (byte) 0, EnumAxis.Y), TOP((byte) 0, (byte) 1, (byte) 0, EnumAxis.Y),
BOTTOM((byte) 0, (byte) -1, (byte) 0, EnumAxis.Y); BOTTOM((byte) 0, (byte) -1, (byte) 0, EnumAxis.Y);
private static Map<BlockFace, BlockFace> opposites = new HashMap<>(); private static final Map<BlockFace, BlockFace> opposites = new HashMap<>();
static { static {
opposites.put(BlockFace.NORTH, BlockFace.SOUTH); opposites.put(BlockFace.NORTH, BlockFace.SOUTH);
@ -27,13 +22,38 @@ public enum BlockFace {
opposites.put(BlockFace.BOTTOM, BlockFace.TOP); opposites.put(BlockFace.BOTTOM, BlockFace.TOP);
} }
private byte modX, modY, modZ; private final byte modX;
private EnumAxis axis; private final byte modY;
private final byte modZ;
private final EnumAxis axis;
BlockFace(byte modX, byte modY, byte modZ, EnumAxis axis) {
this.modX = modX;
this.modY = modY;
this.modZ = modZ;
this.axis = axis;
}
public BlockFace opposite() { public BlockFace opposite() {
return opposites.get(this); return opposites.get(this);
} }
public byte getModX() {
return modX;
}
public byte getModY() {
return modY;
}
public byte getModZ() {
return modZ;
}
public EnumAxis getAxis() {
return axis;
}
public enum EnumAxis { public enum EnumAxis {
X, Y, Z X, Y, Z
} }

Datei anzeigen

@ -1,12 +1,25 @@
package us.myles.ViaVersion.api.minecraft; package us.myles.ViaVersion.api.minecraft;
import lombok.AllArgsConstructor;
import lombok.Data;
@Data
@AllArgsConstructor
public class EulerAngle { public class EulerAngle {
private float x; private final float x;
private float y; private final float y;
private float z; private final float z;
public EulerAngle(final float x, final float y, final float z) {
this.x = x;
this.y = y;
this.z = z;
}
public float getX() {
return x;
}
public float getY() {
return y;
}
public float getZ() {
return z;
}
} }

Datei anzeigen

@ -1,18 +1,15 @@
package us.myles.ViaVersion.api.minecraft; package us.myles.ViaVersion.api.minecraft;
import lombok.AllArgsConstructor;
import lombok.EqualsAndHashCode;
import lombok.Getter;
import lombok.ToString;
@AllArgsConstructor
@Getter
@ToString
@EqualsAndHashCode
public class Position { public class Position {
private int x; private final int x;
private short y; private final short y;
private int z; private final int z;
public Position(int x, short y, int z) {
this.x = x;
this.y = y;
this.z = z;
}
public Position(Position toCopy) { public Position(Position toCopy) {
this(toCopy.getX(), toCopy.getY(), toCopy.getZ()); this(toCopy.getX(), toCopy.getY(), toCopy.getZ());
@ -22,10 +19,42 @@ public class Position {
return new Position(x + face.getModX(), (short) (y + face.getModY()), z + face.getModZ()); return new Position(x + face.getModX(), (short) (y + face.getModY()), z + face.getModZ());
} }
public Position shift(BlockFace face) { public int getX() {
this.x += face.getModX(); return x;
this.y += face.getModY(); }
this.z += face.getModZ();
return this; public short getY() {
return y;
}
public int getZ() {
return z;
}
@Override
public boolean equals(final Object o) {
if (this == o) return true;
if (o == null || getClass() != o.getClass()) return false;
Position position = (Position) o;
if (x != position.x) return false;
if (y != position.y) return false;
return z == position.z;
}
@Override
public int hashCode() {
int result = x;
result = 31 * result + (int) y;
result = 31 * result + z;
return result;
}
@Override
public String toString() {
return "Position{" +
"x=" + x +
", y=" + y +
", z=" + z +
'}';
} }
} }

Datei anzeigen

@ -1,12 +1,37 @@
package us.myles.ViaVersion.api.minecraft; package us.myles.ViaVersion.api.minecraft;
import lombok.AllArgsConstructor;
import lombok.Data;
@Data
@AllArgsConstructor
public class Vector { public class Vector {
private int blockX; private int blockX;
private int blockY; private int blockY;
private int blockZ; private int blockZ;
public Vector(int blockX, int blockY, int blockZ) {
this.blockX = blockX;
this.blockY = blockY;
this.blockZ = blockZ;
}
public int getBlockX() {
return blockX;
}
public void setBlockX(int blockX) {
this.blockX = blockX;
}
public int getBlockY() {
return blockY;
}
public void setBlockY(int blockY) {
this.blockY = blockY;
}
public int getBlockZ() {
return blockZ;
}
public void setBlockZ(int blockZ) {
this.blockZ = blockZ;
}
} }

Datei anzeigen

@ -1,12 +1,25 @@
package us.myles.ViaVersion.api.minecraft; package us.myles.ViaVersion.api.minecraft;
import lombok.AllArgsConstructor;
import lombok.Data;
@AllArgsConstructor
@Data
public class VillagerData { public class VillagerData {
private int type; private final int type;
private int profession; private final int profession;
private int level; private final int level;
public VillagerData(final int type, final int profession, final int level) {
this.type = type;
this.profession = profession;
this.level = level;
}
public int getType() {
return type;
}
public int getProfession() {
return profession;
}
public int getLevel() {
return level;
}
} }

Datei anzeigen

@ -2,21 +2,19 @@ package us.myles.ViaVersion.api.minecraft.chunks;
import com.github.steveice10.opennbt.tag.builtin.CompoundTag; import com.github.steveice10.opennbt.tag.builtin.CompoundTag;
import lombok.AllArgsConstructor; import lombok.AllArgsConstructor;
import lombok.Data;
import java.util.List; import java.util.List;
@AllArgsConstructor @AllArgsConstructor
@Data
public class BaseChunk implements Chunk { public class BaseChunk implements Chunk {
protected int x; protected final int x;
protected int z; protected final int z;
protected boolean groundUp; protected final boolean groundUp;
protected int bitmask; protected final int bitmask;
protected ChunkSection[] sections; protected final ChunkSection[] sections;
protected int[] biomeData; protected int[] biomeData;
protected CompoundTag heightMap; protected CompoundTag heightMap;
protected List<CompoundTag> blockEntities; protected final List<CompoundTag> blockEntities;
public BaseChunk(int x, int z, boolean groundUp, int bitmask, ChunkSection[] sections, int[] biomeData, List<CompoundTag> blockEntities) { public BaseChunk(int x, int z, boolean groundUp, int bitmask, ChunkSection[] sections, int[] biomeData, List<CompoundTag> blockEntities) {
this.x = x; this.x = x;
@ -32,4 +30,54 @@ public class BaseChunk implements Chunk {
public boolean isBiomeData() { public boolean isBiomeData() {
return biomeData != null; return biomeData != null;
} }
@Override
public int getX() {
return x;
}
@Override
public int getZ() {
return z;
}
@Override
public boolean isGroundUp() {
return groundUp;
}
@Override
public int getBitmask() {
return bitmask;
}
@Override
public ChunkSection[] getSections() {
return sections;
}
@Override
public int[] getBiomeData() {
return biomeData;
}
@Override
public void setBiomeData(final int[] biomeData) {
this.biomeData = biomeData;
}
@Override
public CompoundTag getHeightMap() {
return heightMap;
}
@Override
public void setHeightMap(final CompoundTag heightMap) {
this.heightMap = heightMap;
}
@Override
public List<CompoundTag> getBlockEntities() {
return blockEntities;
}
} }

Datei anzeigen

@ -1,14 +1,12 @@
package us.myles.ViaVersion.api.minecraft.chunks; package us.myles.ViaVersion.api.minecraft.chunks;
import com.github.steveice10.opennbt.tag.builtin.CompoundTag; import com.github.steveice10.opennbt.tag.builtin.CompoundTag;
import lombok.Getter;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.List; import java.util.List;
public class Chunk1_8 extends BaseChunk { public class Chunk1_8 extends BaseChunk {
@Getter private boolean unloadPacket;
private boolean unloadPacket = false;
public Chunk1_8(int x, int z, boolean groundUp, int bitmask, ChunkSection[] sections, int[] biomeData, List<CompoundTag> blockEntities) { public Chunk1_8(int x, int z, boolean groundUp, int bitmask, ChunkSection[] sections, int[] biomeData, List<CompoundTag> blockEntities) {
super(x, z, groundUp, bitmask, sections, biomeData, blockEntities); super(x, z, groundUp, bitmask, sections, biomeData, blockEntities);
@ -21,7 +19,7 @@ public class Chunk1_8 extends BaseChunk {
* @param z coord * @param z coord
*/ */
public Chunk1_8(int x, int z) { public Chunk1_8(int x, int z) {
this(x, z, true, 0, new ChunkSection[16], null, new ArrayList<CompoundTag>()); this(x, z, true, 0, new ChunkSection[16], null, new ArrayList<>());
this.unloadPacket = true; this.unloadPacket = true;
} }
@ -38,4 +36,8 @@ public class Chunk1_8 extends BaseChunk {
public boolean isBiomeData() { public boolean isBiomeData() {
return biomeData != null; return biomeData != null;
} }
public boolean isUnloadPacket() {
return unloadPacket;
}
} }

Datei anzeigen

@ -18,13 +18,11 @@ public class ChunkSection {
* Length of the sky and block light nibble arrays. * Length of the sky and block light nibble arrays.
*/ */
public static final int LIGHT_LENGTH = 16 * 16 * 16 / 2; // size * size * size / 2 (nibble bit count) public static final int LIGHT_LENGTH = 16 * 16 * 16 / 2; // size * size * size / 2 (nibble bit count)
private List<Integer> palette = new ArrayList<>(); private final List<Integer> palette = new ArrayList<>();
private Map<Integer, Integer> inversePalette = new HashMap<>(); private final Map<Integer, Integer> inversePalette = new HashMap<>();
private final int[] blocks; private final int[] blocks;
private NibbleArray blockLight; private NibbleArray blockLight;
private NibbleArray skyLight; private NibbleArray skyLight;
@Getter
@Setter
private int nonAirBlocksCount; private int nonAirBlocksCount;
public ChunkSection() { public ChunkSection() {
@ -235,4 +233,12 @@ public class ChunkSection {
public boolean hasBlockLight() { public boolean hasBlockLight() {
return blockLight != null; return blockLight != null;
} }
public int getNonAirBlocksCount() {
return nonAirBlocksCount;
}
public void setNonAirBlocksCount(int nonAirBlocksCount) {
this.nonAirBlocksCount = nonAirBlocksCount;
}
} }

Datei anzeigen

@ -2,14 +2,11 @@ package us.myles.ViaVersion.api.minecraft.item;
import com.github.steveice10.opennbt.tag.builtin.CompoundTag; import com.github.steveice10.opennbt.tag.builtin.CompoundTag;
import com.google.gson.annotations.SerializedName; import com.google.gson.annotations.SerializedName;
import lombok.*; import lombok.AllArgsConstructor;
import lombok.NoArgsConstructor;
@Getter
@Setter
@NoArgsConstructor @NoArgsConstructor
@AllArgsConstructor @AllArgsConstructor
@ToString
@EqualsAndHashCode
public class Item { public class Item {
@SerializedName(value = "identifier", alternate = "id") @SerializedName(value = "identifier", alternate = "id")
private int identifier; private int identifier;
@ -20,4 +17,66 @@ public class Item {
public Item(Item toCopy) { public Item(Item toCopy) {
this(toCopy.getIdentifier(), toCopy.getAmount(), toCopy.getData(), toCopy.getTag()); this(toCopy.getIdentifier(), toCopy.getAmount(), toCopy.getData(), toCopy.getTag());
} }
public int getIdentifier() {
return identifier;
}
public void setIdentifier(int identifier) {
this.identifier = identifier;
}
public byte getAmount() {
return amount;
}
public void setAmount(byte amount) {
this.amount = amount;
}
public short getData() {
return data;
}
public void setData(short data) {
this.data = data;
}
public CompoundTag getTag() {
return tag;
}
public void setTag(CompoundTag tag) {
this.tag = tag;
}
@Override
public boolean equals(final Object o) {
if (this == o) return true;
if (o == null || getClass() != o.getClass()) return false;
Item item = (Item) o;
if (identifier != item.identifier) return false;
if (amount != item.amount) return false;
if (data != item.data) return false;
return tag != null ? tag.equals(item.tag) : item.tag == null;
}
@Override
public int hashCode() {
int result = identifier;
result = 31 * result + (int) amount;
result = 31 * result + (int) data;
result = 31 * result + (tag != null ? tag.hashCode() : 0);
return result;
}
@Override
public String toString() {
return "Item{" +
"identifier=" + identifier +
", amount=" + amount +
", data=" + data +
", tag=" + tag +
'}';
}
} }