Skip to content

Commit 1537c7e

Browse files
authored
Update to 1.20 (#2420)
1 parent 88d8c2e commit 1537c7e

14 files changed

+115
-88
lines changed

build.gradle

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -34,8 +34,8 @@ repositories {
3434

3535
dependencies {
3636
implementation 'net.bytebuddy:byte-buddy:1.14.3'
37-
compileOnly 'org.spigotmc:spigot-api:1.19.4-R0.1-SNAPSHOT'
38-
compileOnly 'org.spigotmc:spigot:1.19.4-R0.1-SNAPSHOT'
37+
compileOnly 'org.spigotmc:spigot-api:1.20-R0.1-SNAPSHOT'
38+
compileOnly 'org.spigotmc:spigot:1.20-R0.1-SNAPSHOT'
3939
compileOnly 'io.netty:netty-all:4.0.23.Final'
4040
compileOnly 'net.kyori:adventure-text-serializer-gson:4.13.0'
4141
compileOnly 'com.googlecode.json-simple:json-simple:1.1.1'
@@ -46,7 +46,7 @@ dependencies {
4646
testImplementation 'org.mockito:mockito-inline:4.11.0'
4747
testImplementation 'io.netty:netty-common:4.1.77.Final'
4848
testImplementation 'io.netty:netty-transport:4.1.77.Final'
49-
testImplementation 'org.spigotmc:spigot:1.19.4-R0.1-SNAPSHOT'
49+
testImplementation 'org.spigotmc:spigot:1.20-R0.1-SNAPSHOT'
5050
testImplementation 'net.kyori:adventure-text-serializer-gson:4.13.0'
5151
testImplementation 'net.kyori:adventure-text-serializer-plain:4.13.1'
5252
}

src/main/java/com/comphenix/protocol/utility/MinecraftVersion.java

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,11 @@
3737
*/
3838
public final class MinecraftVersion implements Comparable<MinecraftVersion>, Serializable {
3939

40+
/**
41+
* Version 1.20 - the trails and tails update
42+
*/
43+
public static final MinecraftVersion TRAILS_AND_TAILS = new MinecraftVersion("1.20");
44+
4045
/**
4146
* Version 1.19.4 - the rest of the feature preview
4247
*/
@@ -126,7 +131,7 @@ public final class MinecraftVersion implements Comparable<MinecraftVersion>, Ser
126131
/**
127132
* The latest release version of minecraft.
128133
*/
129-
public static final MinecraftVersion LATEST = FEATURE_PREVIEW_2;
134+
public static final MinecraftVersion LATEST = TRAILS_AND_TAILS;
130135

131136
// used when serializing
132137
private static final long serialVersionUID = -8695133558996459770L;

src/main/java/com/comphenix/protocol/wrappers/WrappedLevelChunkData.java

Lines changed: 52 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77
import com.comphenix.protocol.reflect.accessors.FieldAccessor;
88
import com.comphenix.protocol.reflect.fuzzy.FuzzyFieldContract;
99
import com.comphenix.protocol.utility.MinecraftReflection;
10+
import com.comphenix.protocol.utility.MinecraftVersion;
1011
import com.comphenix.protocol.utility.ZeroBuffer;
1112
import com.comphenix.protocol.wrappers.nbt.NbtCompound;
1213
import com.comphenix.protocol.wrappers.nbt.NbtFactory;
@@ -163,11 +164,18 @@ public static class LightData extends AbstractWrapper {
163164
MinecraftReflection.getPacketDataSerializerClass(), int.class, int.class);
164165
BIT_SET_ACCESSORS = Accessors.getFieldAccessorArray(HANDLE_TYPE, BitSet.class, true);
165166
BYTE_ARRAY_LIST_ACCESSORS = Accessors.getFieldAccessorArray(HANDLE_TYPE, List.class, true);
166-
TRUST_EDGES_ACCESSOR = Accessors.getFieldAccessor(reflection.getField(FuzzyFieldContract.newBuilder()
167-
.typeExact(boolean.class)
168-
.build()));
167+
168+
if(MinecraftVersion.TRAILS_AND_TAILS.atOrAbove()) {
169+
TRUST_EDGES_ACCESSOR = null;
170+
} else {
171+
TRUST_EDGES_ACCESSOR = Accessors.getFieldAccessor(reflection.getField(FuzzyFieldContract.newBuilder()
172+
.typeExact(boolean.class)
173+
.build()));
174+
}
169175
}
170176

177+
private boolean dummyTrustEdges = false;
178+
171179
public LightData(Object handle) {
172180
super(HANDLE_TYPE);
173181

@@ -268,27 +276,65 @@ public List<byte[]> getBlockUpdates() {
268276

269277
/**
270278
* Whether edges can be trusted for light updates or not.
271-
*
279+
* @deprecated Removed in 1.20
272280
* @return {@code true} if edges can be trusted, {@code false} otherwise.
273281
*/
282+
@Deprecated
274283
public boolean isTrustEdges() {
284+
if(MinecraftVersion.TRAILS_AND_TAILS.atOrAbove()) {
285+
return dummyTrustEdges; // ensure backwards compatability and prevent inconsistent states
286+
}
275287
return (boolean) TRUST_EDGES_ACCESSOR.get(handle);
276288
}
277289

278290
/**
279291
* Sets whether edges can be trusted for light updates or not.
280-
*
292+
* @deprecated Removed in 1.20
281293
* @param trustEdges the new value
282294
*/
295+
@Deprecated
283296
public void setTrustEdges(boolean trustEdges) {
297+
if(MinecraftVersion.TRAILS_AND_TAILS.atOrAbove()) {
298+
dummyTrustEdges = trustEdges; // ensure backwards compatability and prevent inconsistent states
299+
return;
300+
}
284301
TRUST_EDGES_ACCESSOR.set(handle, trustEdges);
285302
}
286303

304+
/**
305+
* Constructs new LightData from values
306+
* @param trustEdges Ignored
307+
* @param skyYMask skyYMask
308+
* @param blockYMask blockYMask
309+
* @param emptySkyYMask emptySkyYMask
310+
* @param emptyBlockYMask emptyBlockYMask
311+
* @param skyUpdates skyUpdates
312+
* @param blockUpdates blockUpdates
313+
* @deprecated Parameter trustEdges was removed in 1.20
314+
* @return new light data
315+
*/
316+
@Deprecated
287317
public static LightData fromValues(BitSet skyYMask, BitSet blockYMask, BitSet emptySkyYMask, BitSet emptyBlockYMask,
288318
List<byte[]> skyUpdates, List<byte[]> blockUpdates, boolean trustEdges) {
319+
LightData lightData = fromValues(skyYMask, blockYMask, emptySkyYMask, emptyBlockYMask, skyUpdates, blockUpdates);
320+
lightData.setTrustEdges(trustEdges);
321+
return lightData;
322+
}
323+
324+
/**
325+
* Constructs new LightData from values
326+
* @param skyYMask skyYMask
327+
* @param blockYMask blockYMask
328+
* @param emptySkyYMask emptySkyYMask
329+
* @param emptyBlockYMask emptyBlockYMask
330+
* @param skyUpdates skyUpdates
331+
* @param blockUpdates blockUpdates
332+
* @return new light data
333+
*/
334+
public static LightData fromValues(BitSet skyYMask, BitSet blockYMask, BitSet emptySkyYMask, BitSet emptyBlockYMask,
335+
List<byte[]> skyUpdates, List<byte[]> blockUpdates) {
289336
LightData data = new LightData(LIGHT_UPDATE_PACKET_DATA_CONSTRUCTOR.invoke(MinecraftReflection.getPacketDataSerializer(new ZeroBuffer()), 0, 0));
290337

291-
data.setTrustEdges(trustEdges);
292338
data.setSkyYMask(skyYMask);
293339
data.setBlockYMask(blockYMask);
294340
data.setEmptySkyYMask(emptySkyYMask);

src/test/java/com/comphenix/protocol/BukkitInitialization.java

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -14,10 +14,10 @@
1414
import org.bukkit.Bukkit;
1515
import org.bukkit.Server;
1616
import org.bukkit.World;
17-
import org.bukkit.craftbukkit.v1_19_R3.CraftServer;
18-
import org.bukkit.craftbukkit.v1_19_R3.CraftWorld;
19-
import org.bukkit.craftbukkit.v1_19_R3.inventory.CraftItemFactory;
20-
import org.bukkit.craftbukkit.v1_19_R3.util.Versioning;
17+
import org.bukkit.craftbukkit.v1_20_R1.CraftServer;
18+
import org.bukkit.craftbukkit.v1_20_R1.CraftWorld;
19+
import org.bukkit.craftbukkit.v1_20_R1.inventory.CraftItemFactory;
20+
import org.bukkit.craftbukkit.v1_20_R1.util.Versioning;
2121
import org.spigotmc.SpigotWorldConfig;
2222

2323
import static org.mockito.Mockito.mock;

src/test/java/com/comphenix/protocol/MinecraftVersionTest.java

Lines changed: 13 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -18,16 +18,19 @@
1818
package com.comphenix.protocol;
1919

2020
import com.comphenix.protocol.utility.MinecraftVersion;
21+
import org.junit.jupiter.api.BeforeAll;
2122
import org.junit.jupiter.api.Test;
2223

23-
import static org.junit.jupiter.api.Assertions.assertEquals;
24-
import static org.junit.jupiter.api.Assertions.assertFalse;
25-
import static org.junit.jupiter.api.Assertions.assertTrue;
24+
import static org.junit.jupiter.api.Assertions.*;
2625

2726
class MinecraftVersionTest {
27+
@BeforeAll
28+
public static void beforeAll() {
29+
BukkitInitialization.initializeAll();
30+
}
2831

2932
@Test
30-
void testComparision() {
33+
void testComparison() {
3134
MinecraftVersion within = new MinecraftVersion(1, 2, 5);
3235
MinecraftVersion outside = new MinecraftVersion(1, 7, 0);
3336

@@ -41,12 +44,12 @@ void testComparision() {
4144
assertFalse(outside.compareTo(within) < 0 && outside.compareTo(highest) < 0);
4245
assertTrue(atLeast.isAtLeast(MinecraftVersion.BOUNTIFUL_UPDATE));
4346
}
44-
45-
/* @Test
46-
public void testSnapshotVersion() {
47-
MinecraftVersion version = MinecraftVersion.fromServerVersion("git-Spigot-1119 (MC: 13w39b)");
48-
assertEquals(version.getSnapshot(), new SnapshotVersion("13w39b"));
49-
} */
47+
48+
49+
@Test
50+
void testCurrent() {
51+
assertEquals(MinecraftVersion.TRAILS_AND_TAILS, MinecraftVersion.getCurrentVersion());
52+
}
5053

5154
@Test
5255
void testParsing() {

src/test/java/com/comphenix/protocol/PacketTypeTest.java

Lines changed: 6 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -14,26 +14,12 @@
1414
*/
1515
package com.comphenix.protocol;
1616

17-
import static org.junit.jupiter.api.Assertions.assertEquals;
18-
import static org.junit.jupiter.api.Assertions.assertFalse;
19-
import static org.junit.jupiter.api.Assertions.assertTrue;
20-
2117
import com.comphenix.protocol.PacketType.Protocol;
2218
import com.comphenix.protocol.PacketType.Sender;
2319
import com.comphenix.protocol.events.PacketContainer;
2420
import com.comphenix.protocol.injector.packet.PacketRegistry;
2521
import com.comphenix.protocol.utility.MinecraftReflection;
2622
import com.comphenix.protocol.utility.MinecraftReflectionTestUtil;
27-
import java.lang.reflect.Field;
28-
import java.util.ArrayList;
29-
import java.util.HashSet;
30-
import java.util.List;
31-
import java.util.Map;
32-
import java.util.Map.Entry;
33-
import java.util.Set;
34-
import java.util.TreeMap;
35-
36-
import com.comphenix.protocol.wrappers.BukkitConverters;
3723
import com.comphenix.protocol.wrappers.WrappedChatComponent;
3824
import net.minecraft.network.EnumProtocol;
3925
import net.minecraft.network.protocol.EnumProtocolDirection;
@@ -43,6 +29,12 @@
4329
import org.junit.jupiter.api.BeforeAll;
4430
import org.junit.jupiter.api.Test;
4531

32+
import java.lang.reflect.Field;
33+
import java.util.*;
34+
import java.util.Map.Entry;
35+
36+
import static org.junit.jupiter.api.Assertions.*;
37+
4638
/**
4739
* @author dmulloy2
4840
*/

src/test/java/com/comphenix/protocol/events/PacketContainerTest.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -443,7 +443,7 @@ public void testAttributeList() {
443443
// are inner classes (which is ultimately pointless because AttributeSnapshots don't access any
444444
// members of the packet itself)
445445
PacketPlayOutUpdateAttributes packet = (PacketPlayOutUpdateAttributes) attribute.getHandle();
446-
AttributeBase base = BuiltInRegistries.u.a(MinecraftKey.a("generic.max_health"));
446+
AttributeBase base = BuiltInRegistries.v.a(MinecraftKey.a("generic.max_health"));
447447
AttributeSnapshot snapshot = new AttributeSnapshot(base, 20.0D, modifiers);
448448
attribute.getSpecificModifier(List.class).write(0, Lists.newArrayList(snapshot));
449449

@@ -838,7 +838,7 @@ public void testCloning() {
838838
0,
839839
Registry.getItemStackSerializer(false),
840840
BukkitConverters.getItemStackConverter().getGeneric(new ItemStack(Material.WOODEN_AXE))),
841-
new WrappedDataValue(0, Registry.get(CatVariant.class), BuiltInRegistries.ai.e(CatVariant.e)),
841+
new WrappedDataValue(0, Registry.get(CatVariant.class), BuiltInRegistries.aj.e(CatVariant.e)),
842842
new WrappedDataValue(0, Registry.get(FrogVariant.class), FrogVariant.a)
843843
));
844844
} else if (type == PacketType.Play.Server.CHAT) {

src/test/java/com/comphenix/protocol/injector/EntityUtilitiesTest.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -12,8 +12,8 @@
1212
import net.minecraft.server.level.PlayerChunkMap.EntityTracker;
1313
import net.minecraft.server.level.WorldServer;
1414
import net.minecraft.world.entity.Entity;
15-
import org.bukkit.craftbukkit.v1_19_R3.CraftWorld;
16-
import org.bukkit.craftbukkit.v1_19_R3.entity.CraftEntity;
15+
import org.bukkit.craftbukkit.v1_20_R1.CraftWorld;
16+
import org.bukkit.craftbukkit.v1_20_R1.entity.CraftEntity;
1717
import org.junit.jupiter.api.BeforeAll;
1818
import org.junit.jupiter.api.Test;
1919

src/test/java/com/comphenix/protocol/utility/MinecraftReflectionTest.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@
1313
import net.minecraft.world.level.block.state.IBlockData;
1414
import org.bukkit.Material;
1515
import org.bukkit.block.Block;
16-
import org.bukkit.craftbukkit.v1_19_R3.inventory.CraftItemStack;
16+
import org.bukkit.craftbukkit.v1_20_R1.inventory.CraftItemStack;
1717
import org.bukkit.entity.Entity;
1818
import org.bukkit.inventory.ItemStack;
1919
import org.junit.jupiter.api.AfterAll;

src/test/java/com/comphenix/protocol/utility/MinecraftReflectionTestUtil.java

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

33
public class MinecraftReflectionTestUtil {
44

5-
public static final String RELEASE_TARGET = "1.19.3";
6-
public static final String PACKAGE_VERSION = "v1_19_R3";
5+
public static final String RELEASE_TARGET = "1.20";
6+
public static final String PACKAGE_VERSION = "v1_20_R1";
77
public static final String NMS = "net.minecraft";
88
public static final String OBC = "org.bukkit.craftbukkit." + PACKAGE_VERSION;
99

0 commit comments

Comments
 (0)