Skip to content

Commit 05e1724

Browse files
committed
upd
1 parent bdb41ea commit 05e1724

40 files changed

+577
-426
lines changed

.gitignore

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -78,8 +78,7 @@ fabric.properties
7878
.LSOverride
7979

8080
# Icon must end with two \r
81-
Icon
82-
81+
Icon
8382

8483
# Thumbnails
8584
._*

api/build.gradle

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -62,6 +62,6 @@ publishing() {
6262

6363
publications.create("publication", MavenPublication) {
6464
// TODO pom
65-
artifact(jar)
65+
from(components.java)
6666
}
6767
}

api/src/main/java/net/elytrium/limboapi/api/LimboFactory.java

Lines changed: 6 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@
1313
import java.io.InputStream;
1414
import java.nio.file.Path;
1515
import java.util.Map;
16+
import net.elytrium.limboapi.api.world.WorldVersion;
1617
import net.elytrium.limboapi.api.world.chunk.biome.BuiltInBiome;
1718
import net.elytrium.limboapi.api.world.chunk.Dimension;
1819
import net.elytrium.limboapi.api.world.chunk.biome.VirtualBiome;
@@ -222,32 +223,15 @@ default VirtualBlock createSimpleBlock(boolean solid, boolean air, boolean motio
222223
*/
223224
void passLoginLimbo(Player player);
224225

225-
/**
226-
* Creates new virtual item from Item enum
227-
*
228-
* @param item Item from item enum
229-
*
230-
* @return new virtual item
231-
*/
232226
VirtualItem getItem(Item item);
233227

234-
/**
235-
* Creates new virtual item from Item enum
236-
*
237-
* @param modernId Modern item identifier
238-
*
239-
* @return new virtual item
240-
*/
241228
VirtualItem getItem(String modernId);
242229

243-
/**
244-
* Creates new virtual item from Item enum
245-
*
246-
* @param legacyId Legacy item ID
247-
*
248-
* @return new virtual item
249-
*/
250-
VirtualItem getLegacyItem(int legacyId);
230+
VirtualItem getItem(ProtocolVersion version, short id);
231+
232+
VirtualItem getItem(WorldVersion version, short id);
233+
234+
VirtualItem getLegacyItem(short legacyId);
251235

252236
/**
253237
* @return new data component map

api/src/main/java/net/elytrium/limboapi/api/protocol/PacketFactory.java

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -99,6 +99,10 @@ default Object createLightUpdatePacket(ChunkSnapshot chunkSnapshot, Dimension di
9999

100100
Object createChunkUnloadPacket(int posX, int posZ);
101101

102+
/**
103+
* @deprecated Use {@link PacketFactory#createDefaultSpawnPositionPacket(String, int, int, int, float, float)}
104+
*/
105+
@Deprecated
102106
Object createDefaultSpawnPositionPacket(int posX, int posY, int posZ, float angle);
103107

104108
Object createDefaultSpawnPositionPacket(String dimension, int posX, int posY, int posZ, float yaw, float pitch);

api/src/main/java/net/elytrium/limboapi/api/protocol/data/EntityData.java

Lines changed: 39 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,8 +9,9 @@
99

1010
import com.velocitypowered.api.network.ProtocolVersion;
1111
import it.unimi.dsi.fastutil.objects.ObjectArrayList;
12-
import it.unimi.dsi.fastutil.shorts.Short2ObjectLinkedOpenHashMap;
12+
import it.unimi.dsi.fastutil.shorts.Short2ObjectMap;
1313
import it.unimi.dsi.fastutil.shorts.Short2ObjectOpenHashMap;
14+
import java.util.Map;
1415
import java.util.NoSuchElementException;
1516
import java.util.OptionalInt;
1617
import java.util.UUID;
@@ -49,7 +50,43 @@
4950
* @see LimboPlayer#setEntityData(int, EntityData)
5051
*/
5152
@NullMarked
52-
public class EntityData extends Short2ObjectLinkedOpenHashMap<Object> {
53+
public class EntityData extends Short2ObjectOpenHashMap<Object> {
54+
55+
public EntityData(int expected, float f) {
56+
super(expected, f);
57+
}
58+
59+
public EntityData(int expected) {
60+
super(expected);
61+
}
62+
63+
public EntityData() {
64+
65+
}
66+
67+
public EntityData(Map<? extends Short, ?> m, float f) {
68+
super(m, f);
69+
}
70+
71+
public EntityData(Map<? extends Short, ?> m) {
72+
super(m);
73+
}
74+
75+
public EntityData(Short2ObjectMap<Object> m, float f) {
76+
super(m, f);
77+
}
78+
79+
public EntityData(Short2ObjectMap<Object> m) {
80+
super(m);
81+
}
82+
83+
public EntityData(short[] k, Object[] v, float f) {
84+
super(k, v, f);
85+
}
86+
87+
public EntityData(short[] k, Object[] v) {
88+
super(k, v);
89+
}
5390

5491
public record OptionalComponentHolder(@Nullable ComponentHolder component) {
5592

api/src/main/java/net/elytrium/limboapi/api/protocol/data/ItemStack.java

Lines changed: 16 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -7,36 +7,43 @@
77

88
package net.elytrium.limboapi.api.protocol.data;
99

10+
import com.velocitypowered.api.network.ProtocolVersion;
11+
import net.elytrium.limboapi.api.world.WorldVersion;
12+
import net.elytrium.limboapi.api.world.item.VirtualItem;
1013
import net.elytrium.limboapi.api.world.item.datacomponent.DataComponentMap;
1114
import net.elytrium.limboapi.api.world.item.datacomponent.DataComponentTypes;
1215
import net.kyori.adventure.nbt.CompoundBinaryTag;
1316
import org.checkerframework.checker.nullness.qual.Nullable;
1417

15-
public record ItemStack(int material/*TODO VirtualItem*/, int amount, int data, @Nullable CompoundBinaryTag nbt, @Nullable DataComponentMap map) implements EntityData.Particle.ParticleOptions {
18+
public record ItemStack(VirtualItem material, int amount, int data, @Nullable CompoundBinaryTag nbt, @Nullable DataComponentMap map) implements EntityData.Particle.ParticleOptions {
1619

17-
public static final ItemStack EMPTY = new ItemStack(-1, 0, 0, null, null);
20+
public static final ItemStack EMPTY = new ItemStack(null, 0, 0, null, null);
1821

19-
public ItemStack(int material, int amount, @Nullable CompoundBinaryTag nbt) {
22+
public ItemStack(VirtualItem material, int amount, @Nullable CompoundBinaryTag nbt) {
2023
this(material, amount, nbt == null ? 0 : nbt.getInt("Damage", 0), nbt, null);
2124
}
2225

23-
public ItemStack(int material, int amount, @Nullable DataComponentMap map) {
26+
public ItemStack(VirtualItem material, int amount, @Nullable DataComponentMap map) {
2427
this(material, amount, map == null ? 0 : map.getDataOrDefault(DataComponentTypes.DAMAGE, 0), map);
2528
}
2629

27-
public ItemStack(int material, int amount, int data) {
30+
public ItemStack(VirtualItem material, int amount, int data) {
2831
this(material, amount, data, null, null);
2932
}
3033

31-
public ItemStack(int material, int amount, int data, @Nullable CompoundBinaryTag nbt) {
34+
public ItemStack(VirtualItem material, int amount, int data, @Nullable CompoundBinaryTag nbt) {
3235
this(material, amount, data, nbt, null);
3336
}
3437

35-
public ItemStack(int material, int amount, int data, @Nullable DataComponentMap map) {
38+
public ItemStack(VirtualItem material, int amount, int data, @Nullable DataComponentMap map) {
3639
this(material, amount, data, null, map);
3740
}
3841

39-
public boolean isEmpty(boolean checkDamage) {
40-
return this == ItemStack.EMPTY || this.material <= 0 || this.amount <= 0 || (checkDamage && (this.data < -32768 || this.data > 65535));
42+
public boolean isEmpty(ProtocolVersion version, boolean checkDamage) {
43+
return this.isEmpty(WorldVersion.from(version), checkDamage);
44+
}
45+
46+
public boolean isEmpty(WorldVersion version, boolean checkDamage) {
47+
return this == ItemStack.EMPTY || this.material.itemId(version) <= 0 || this.amount <= 0 || (checkDamage && (this.data < -32768 || this.data > 65535));
4148
}
4249
}

api/src/main/java/net/elytrium/limboapi/api/protocol/data/MapPalette.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -236,13 +236,13 @@ public EnumSet<ProtocolVersion> getVersions() {
236236
}
237237

238238
static {
239-
for (MapVersion value : MapVersion.values()) {
240-
value.versions.forEach(version -> VERSIONS_MAP.put(version, value));
239+
for (MapVersion version : MapVersion.values()) {
240+
version.getVersions().forEach(protocolVersion -> VERSIONS_MAP.put(protocolVersion, version));
241241
}
242242
}
243243

244244
public static MapVersion fromProtocolVersion(ProtocolVersion version) {
245-
return VERSIONS_MAP.get(version);
245+
return Objects.requireNonNull(VERSIONS_MAP.get(version));
246246
}
247247
}
248248
}

api/src/main/java/net/elytrium/limboapi/api/world/WorldVersion.java

Lines changed: 8 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -10,11 +10,11 @@
1010
import com.velocitypowered.api.network.ProtocolVersion;
1111
import java.util.EnumMap;
1212
import java.util.EnumSet;
13-
import java.util.Set;
13+
import java.util.Objects;
1414

1515
public enum WorldVersion {
1616

17-
LEGACY(EnumSet.range(ProtocolVersion.MINECRAFT_1_7_2, ProtocolVersion.MINECRAFT_1_12_2)),
17+
LEGACY(EnumSet.range(ProtocolVersion.MINECRAFT_1_7_2, ProtocolVersion.MINECRAFT_1_12_2)), // TODO better legacy support
1818
MINECRAFT_1_13(EnumSet.of(ProtocolVersion.MINECRAFT_1_13)),
1919
MINECRAFT_1_13_2(EnumSet.of(ProtocolVersion.MINECRAFT_1_13_1, ProtocolVersion.MINECRAFT_1_13_2)),
2020
MINECRAFT_1_14(EnumSet.range(ProtocolVersion.MINECRAFT_1_14, ProtocolVersion.MINECRAFT_1_14_4)),
@@ -36,27 +36,25 @@ public enum WorldVersion {
3636
MINECRAFT_1_21_7(EnumSet.of(ProtocolVersion.MINECRAFT_1_21_7)),
3737
MINECRAFT_1_21_9(EnumSet.of(ProtocolVersion.MINECRAFT_1_21_9));
3838

39-
private static final EnumMap<ProtocolVersion, WorldVersion> MC_VERSION_TO_ITEM_VERSIONS = new EnumMap<>(ProtocolVersion.class);
39+
private static final EnumMap<ProtocolVersion, WorldVersion> VERSIONS_MAP = new EnumMap<>(ProtocolVersion.class);
4040

41-
private final Set<ProtocolVersion> versions;
41+
private final EnumSet<ProtocolVersion> versions;
4242

43-
WorldVersion(Set<ProtocolVersion> versions) {
43+
WorldVersion(EnumSet<ProtocolVersion> versions) {
4444
this.versions = versions;
4545
}
4646

47-
public Set<ProtocolVersion> getVersions() {
47+
public EnumSet<ProtocolVersion> getVersions() {
4848
return this.versions;
4949
}
5050

5151
static {
5252
for (WorldVersion version : WorldVersion.values()) {
53-
for (ProtocolVersion protocolVersion : version.getVersions()) {
54-
WorldVersion.MC_VERSION_TO_ITEM_VERSIONS.put(protocolVersion, version);
55-
}
53+
version.getVersions().forEach(protocolVersion -> WorldVersion.VERSIONS_MAP.put(protocolVersion, version));
5654
}
5755
}
5856

5957
public static WorldVersion from(ProtocolVersion protocolVersion) {
60-
return WorldVersion.MC_VERSION_TO_ITEM_VERSIONS.get(protocolVersion);
58+
return Objects.requireNonNull(WorldVersion.VERSIONS_MAP.get(protocolVersion));
6159
}
6260
}

api/src/main/java/net/elytrium/limboapi/api/world/chunk/blockentity/BlockEntityVersion.java

Lines changed: 8 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@
1010
import com.velocitypowered.api.network.ProtocolVersion;
1111
import java.util.EnumMap;
1212
import java.util.EnumSet;
13-
import java.util.Set;
13+
import java.util.Objects;
1414

1515
public enum BlockEntityVersion {
1616

@@ -24,35 +24,33 @@ public enum BlockEntityVersion {
2424
MINECRAFT_1_17(EnumSet.range(ProtocolVersion.MINECRAFT_1_17, ProtocolVersion.MINECRAFT_1_18_2)),
2525
MINECRAFT_1_19(EnumSet.range(ProtocolVersion.MINECRAFT_1_19, ProtocolVersion.MINECRAFT_1_19_1)),
2626
MINECRAFT_1_19_3(EnumSet.of(ProtocolVersion.MINECRAFT_1_19_3)),
27-
MINECRAFT_1_19_4(EnumSet.range(ProtocolVersion.MINECRAFT_1_19_4, ProtocolVersion.MINECRAFT_1_20)),
27+
MINECRAFT_1_19_4(EnumSet.of(ProtocolVersion.MINECRAFT_1_19_4)),
2828
MINECRAFT_1_20(EnumSet.range(ProtocolVersion.MINECRAFT_1_20, ProtocolVersion.MINECRAFT_1_20_2)),
2929
MINECRAFT_1_20_3(EnumSet.of(ProtocolVersion.MINECRAFT_1_20_3)),
3030
MINECRAFT_1_20_5(EnumSet.range(ProtocolVersion.MINECRAFT_1_20_5, ProtocolVersion.MINECRAFT_1_21)),
3131
MINECRAFT_1_21_2(EnumSet.range(ProtocolVersion.MINECRAFT_1_21_2, ProtocolVersion.MINECRAFT_1_21_4)),
3232
MINECRAFT_1_21_5(EnumSet.range(ProtocolVersion.MINECRAFT_1_21_5, ProtocolVersion.MINECRAFT_1_21_7)),
3333
MINECRAFT_1_21_9(EnumSet.range(ProtocolVersion.MINECRAFT_1_21_9, ProtocolVersion.MAXIMUM_VERSION));
3434

35-
private static final EnumMap<ProtocolVersion, BlockEntityVersion> MC_VERSION_TO_ITEM_VERSIONS = new EnumMap<>(ProtocolVersion.class);
35+
private static final EnumMap<ProtocolVersion, BlockEntityVersion> VERSIONS_MAP = new EnumMap<>(ProtocolVersion.class);
3636

37-
private final Set<ProtocolVersion> versions;
37+
private final EnumSet<ProtocolVersion> versions;
3838

39-
BlockEntityVersion(Set<ProtocolVersion> versions) {
39+
BlockEntityVersion(EnumSet<ProtocolVersion> versions) {
4040
this.versions = versions;
4141
}
4242

43-
public Set<ProtocolVersion> getVersions() {
43+
public EnumSet<ProtocolVersion> getVersions() {
4444
return this.versions;
4545
}
4646

4747
static {
4848
for (BlockEntityVersion version : BlockEntityVersion.values()) {
49-
for (ProtocolVersion protocolVersion : version.getVersions()) {
50-
BlockEntityVersion.MC_VERSION_TO_ITEM_VERSIONS.put(protocolVersion, version);
51-
}
49+
version.getVersions().forEach(protocolVersion -> BlockEntityVersion.VERSIONS_MAP.put(protocolVersion, version));
5250
}
5351
}
5452

5553
public static BlockEntityVersion from(ProtocolVersion protocolVersion) {
56-
return BlockEntityVersion.MC_VERSION_TO_ITEM_VERSIONS.get(protocolVersion);
54+
return Objects.requireNonNull(BlockEntityVersion.VERSIONS_MAP.get(protocolVersion));
5755
}
5856
}

api/src/main/java/net/elytrium/limboapi/api/world/item/Item.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -346,10 +346,10 @@ public enum Item {
346346
RECORD_11(2266),
347347
RECORD_WAIT(2267);
348348

349-
private final int id;
349+
private final short id;
350350

351351
Item(int id) {
352-
this.id = id;
352+
this.id = (short) id;
353353
}
354354

355355
@Deprecated(forRemoval = true)
@@ -362,7 +362,7 @@ public int getLegacyID() {
362362
return this.id;
363363
}
364364

365-
public int getLegacyId() {
365+
public short getLegacyId() {
366366
return this.id;
367367
}
368368
}

0 commit comments

Comments
 (0)