Skip to content

Commit daee378

Browse files
1.17 support (#78)
1 parent 95b8c37 commit daee378

6 files changed

Lines changed: 649 additions & 535 deletions

File tree

pom.xml

Lines changed: 20 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,11 @@
99
<version>1.8.5-SNAPSHOT</version>
1010
<name>MapManager</name>
1111

12+
<properties>
13+
<maven.compiler.source>16</maven.compiler.source>
14+
<maven.compiler.target>16</maven.compiler.target>
15+
</properties>
16+
1217
<build>
1318
<finalName>MapManager_v${project.version}</finalName>
1419
<sourceDirectory>src</sourceDirectory>
@@ -31,17 +36,18 @@
3136
</resources>
3237
<plugins>
3338
<plugin>
39+
<groupId>org.apache.maven.plugins</groupId>
3440
<artifactId>maven-compiler-plugin</artifactId>
3541
<version>3.8.1</version>
3642
<configuration>
37-
<source>11</source>
38-
<target>11</target>
43+
<source>16</source>
44+
<target>16</target>
3945
</configuration>
4046
</plugin>
4147
<plugin>
4248
<groupId>org.apache.maven.plugins</groupId>
4349
<artifactId>maven-shade-plugin</artifactId>
44-
<version>3.2.4</version>
50+
<version>3.3.0-SNAPSHOT</version>
4551
<executions>
4652
<execution>
4753
<phase>package</phase>
@@ -74,15 +80,15 @@
7480
</distributionManagement>
7581
<dependencies>
7682
<dependency>
77-
<groupId>org.spigotmc</groupId>
78-
<artifactId>spigot-api</artifactId>
79-
<version>1.14-R0.1-SNAPSHOT</version>
83+
<groupId>io.papermc.paper</groupId>
84+
<artifactId>paper-api</artifactId>
85+
<version>1.17.1-R0.1-SNAPSHOT</version>
8086
<scope>provided</scope>
8187
</dependency>
8288
<dependency>
8389
<groupId>org.inventivetalent.packetlistenerapi</groupId>
8490
<artifactId>api</artifactId>
85-
<version>3.9.3-SNAPSHOT</version>
91+
<version>3.9.8-SNAPSHOT</version>
8692
</dependency>
8793
<dependency>
8894
<groupId>org.inventivetalent</groupId>
@@ -118,4 +124,11 @@
118124
<url>https://hub.spigotmc.org/nexus/content/groups/public/</url>
119125
</repository>
120126
</repositories>
127+
<pluginRepositories>
128+
<pluginRepository>
129+
<id>maven-snapshots</id>
130+
<url>https://repository.apache.org/content/repositories/snapshots/</url>
131+
</pluginRepository>
132+
</pluginRepositories>
133+
121134
</project>

resources/plugin.yml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,10 +2,10 @@ name: MapManager
22
main: org.inventivetalent.mapmanager.MapManagerPlugin
33
author: inventivetalent
44
version: ${project.version}
5-
api-version: '1.13'
5+
api-version: '1.17'
66

77
softdepend: [PacketListenerApi]
88

99
commands:
1010
mapmanager:
11-
aliases: [mmanager]
11+
aliases: [mmanager]

src/org/inventivetalent/mapmanager/DefaultMapWrapper.java

Lines changed: 34 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,7 @@ class DefaultMapWrapper implements MapWrapper {
3232
protected final Map<UUID, Integer> viewers = new HashMap<>();
3333

3434
private static Class<?> Entity;
35-
private static Class<?> DataWatcher ;
35+
private static Class<?> DataWatcher;
3636
private static Class<?> PacketPlayOutEntityMetadata;
3737

3838
private static FieldResolver PacketEntityMetadataFieldResolver;
@@ -83,7 +83,7 @@ public void clearViewers() {
8383

8484
@Override
8585
public boolean isViewing(OfflinePlayer player) {
86-
if (player == null) { return false; }
86+
if (player == null) {return false;}
8787
return viewers.containsKey(player.getUniqueId());
8888
}
8989

@@ -130,7 +130,7 @@ public void sendContent(Player player) {
130130

131131
@Override
132132
public void sendContent(Player player, boolean withoutQueue) {
133-
if (!isViewing(player)) { return; }
133+
if (!isViewing(player)) {return;}
134134
int id = getMapId(player);
135135
if (withoutQueue && MapManager.Options.Sender.ALLOW_QUEUE_BYPASS) {
136136
MapSender.sendMap(id, DefaultMapWrapper.this.content, player);
@@ -153,7 +153,7 @@ public void showInInventory(Player player, int slot, boolean force) {
153153
}
154154

155155
//Adjust the slot ID
156-
if (slot < 9) { slot += 36; } else if (slot > 35 && slot != 45) { slot = 8 - (slot - 36); }
156+
if (slot < 9) {slot += 36;} else if (slot > 35 && slot != 45) {slot = 8 - (slot - 36);}
157157

158158
try {
159159
if (PacketPlayOutSlotConstructorResolver == null) {
@@ -185,7 +185,7 @@ public void showInInventory(Player player, int slot, boolean force) {
185185
Object setSlot = PacketPlayOutSlotConstructorResolver.resolve(new Class[]{
186186
int.class,
187187
int.class,
188-
MapManagerPlugin.nmsClassResolver.resolve("ItemStack")
188+
MapManagerPlugin.nmsClassResolver.resolve("world.item.ItemStack")
189189
}).newInstance(windowId, slot, craftItemStack);
190190

191191
//Send the packet
@@ -239,14 +239,16 @@ public void showInFrame(Player player, int entityId, String debugInfo) {
239239
itemStack.setItemMeta(itemMeta);
240240
}
241241

242-
ItemFrame itemFrame = MapManagerPlugin.getItemFrameById(player.getWorld(), entityId);
243-
if (itemFrame != null) {
244-
//Add a reference to this MapWrapper (can be used in MapWrapper#getWrapperForId)
245-
itemFrame.removeMetadata("MAP_WRAPPER_REF", MapManagerPlugin.instance);
246-
itemFrame.setMetadata("MAP_WRAPPER_REF", new FixedMetadataValue(MapManagerPlugin.instance, DefaultMapWrapper.this));
247-
}
242+
Bukkit.getScheduler().runTask(MapManagerPlugin.instance, () -> {
243+
ItemFrame itemFrame = MapManagerPlugin.getItemFrameById(player.getWorld(), entityId);
244+
if (itemFrame != null) {
245+
//Add a reference to this MapWrapper (can be used in MapWrapper#getWrapperForId)
246+
itemFrame.removeMetadata("MAP_WRAPPER_REF", MapManagerPlugin.instance);
247+
itemFrame.setMetadata("MAP_WRAPPER_REF", new FixedMetadataValue(MapManagerPlugin.instance, DefaultMapWrapper.this));
248+
}
248249

249-
sendItemFramePacket(player, entityId, itemStack, getMapId(player));
250+
sendItemFramePacket(player, entityId, itemStack, getMapId(player));
251+
});
250252
}
251253

252254
@Override
@@ -262,11 +264,13 @@ public void showInFrame(Player player, ItemFrame frame) {
262264
@Override
263265
public void clearFrame(Player player, int entityId) {
264266
sendItemFramePacket(player, entityId, null, -1);
265-
ItemFrame itemFrame = MapManagerPlugin.getItemFrameById(player.getWorld(), entityId);
266-
if (itemFrame != null) {
267-
//Remove the reference
268-
itemFrame.removeMetadata("MAP_WRAPPER_REF", MapManagerPlugin.instance);
269-
}
267+
Bukkit.getScheduler().runTask(MapManagerPlugin.instance, () -> {
268+
ItemFrame itemFrame = MapManagerPlugin.getItemFrameById(player.getWorld(), entityId);
269+
if (itemFrame != null) {
270+
//Remove the reference
271+
itemFrame.removeMetadata("MAP_WRAPPER_REF", MapManagerPlugin.instance);
272+
}
273+
});
270274
}
271275

272276
@Override
@@ -318,10 +322,10 @@ Object createCraftItemStack(ItemStack itemStack, int mapId) throws ReflectiveOpe
318322
public void sendItemFramePacket(Player player, int entityId, ItemStack itemStack, int mapId) {
319323
try {
320324
if (Entity == null) {
321-
Entity = MapManagerPlugin.nmsClassResolver.resolve("Entity", "world.entity.Entity");
325+
Entity = MapManagerPlugin.nmsClassResolver.resolve("world.entity.Entity", "Entity");
322326
}
323327
if (DataWatcher == null) {
324-
DataWatcher = MapManagerPlugin.nmsClassResolver.resolve("DataWatcher", "network.syncer.DataWatcher");
328+
DataWatcher = MapManagerPlugin.nmsClassResolver.resolve("network.syncher.DataWatcher", "network.syncer.DataWatcher", "DataWatcher");
325329
}
326330
if (PacketPlayOutEntityMetadata == null) {
327331
PacketPlayOutEntityMetadata = MapManagerPlugin.nmsClassResolver
@@ -331,7 +335,7 @@ public void sendItemFramePacket(Player player, int entityId, ItemStack itemStack
331335
PacketEntityMetadataFieldResolver = new FieldResolver(PacketPlayOutEntityMetadata);
332336
}
333337
if (WatchableObjectConstructorResolver == null) {
334-
WatchableObjectConstructorResolver = new ConstructorResolver(MapManagerPlugin.nmsClassResolver.resolve("WatchableObject", "DataWatcher$WatchableObject", "DataWatcher$Item"/*1.9*/, "network.syncer.DataWatcher$Item"));
338+
WatchableObjectConstructorResolver = new ConstructorResolver(MapManagerPlugin.nmsClassResolver.resolve("network.syncher.DataWatcher$Item", "network.syncer.DataWatcher$Item", "WatchableObject", "DataWatcher$WatchableObject", "DataWatcher$Item"/*1.9*/));
335339
}
336340
if (CraftItemStackMethodResolver == null) {
337341
CraftItemStackMethodResolver = new MethodResolver(MapManagerPlugin.obcClassResolver.resolve("inventory.CraftItemStack"));
@@ -340,13 +344,13 @@ public void sendItemFramePacket(Player player, int entityId, ItemStack itemStack
340344
//1.9
341345
if (MinecraftVersion.VERSION.newerThan(Minecraft.Version.v1_9_R1)) {
342346
if (DataWatcherRegistryFieldResolver == null) {
343-
DataWatcherRegistryFieldResolver = new FieldResolver(MapManagerPlugin.nmsClassResolver.resolve("DataWatcherRegistry", "network.syncer.DataWatcherRegistry"));
347+
DataWatcherRegistryFieldResolver = new FieldResolver(MapManagerPlugin.nmsClassResolver.resolve("network.syncher.DataWatcherRegistry", "network.syncer.DataWatcherRegistry", "DataWatcherRegistry"));
344348
}
345349
if (DataWatcherItemConstructorResolver == null) {
346-
DataWatcherItemConstructorResolver = new ConstructorResolver(MapManagerPlugin.nmsClassResolver.resolve("DataWatcher$Item", "network.syncer.DataWatcher$Item"));
350+
DataWatcherItemConstructorResolver = new ConstructorResolver(MapManagerPlugin.nmsClassResolver.resolve("network.syncher.DataWatcher$Item", "network.syncer.DataWatcher$Item", "DataWatcher$Item"));
347351
}
348352
if (DataWatcherObjectConstructorResolver == null) {
349-
DataWatcherObjectConstructorResolver = new ConstructorResolver(MapManagerPlugin.nmsClassResolver.resolve("DataWatcherObject", "network.syncer.DataWatcherObject"));
353+
DataWatcherObjectConstructorResolver = new ConstructorResolver(MapManagerPlugin.nmsClassResolver.resolve("network.syncher.DataWatcherObject", "network.syncer.DataWatcherObject", "DataWatcherObject"));
350354
}
351355
if (EntityItemFrameFieldResolver == null) {
352356
EntityItemFrameFieldResolver = new FieldResolver(MapManagerPlugin.nmsClassResolver.resolve("EntityItemFrame", "world.entity.decoration.EntityItemFrame"));
@@ -369,7 +373,7 @@ public void sendItemFramePacket(Player player, int entityId, ItemStack itemStack
369373
meta = noArgConstructor.newInstance();
370374
} catch (ReflectiveOperationException e) {
371375
Object dummyDataWatcher = DataWatcher.getConstructor(Entity).newInstance((Object) null);
372-
meta = DataWatcher.getConstructor(int.class, DataWatcher, boolean.class)
376+
meta = PacketPlayOutEntityMetadata.getConstructor(int.class, DataWatcher, boolean.class)
373377
.newInstance(entityId, dummyDataWatcher, true);
374378
}
375379

@@ -406,7 +410,9 @@ public void sendItemFramePacket(Player player, int entityId, ItemStack itemStack
406410
}
407411
} else {
408412
Object dataWatcherObject;
409-
if (MinecraftVersion.VERSION.newerThan(Minecraft.Version.v1_13_R1)) {
413+
if (MinecraftVersion.VERSION.newerThan(Minecraft.Version.v1_17_R1)) {
414+
dataWatcherObject = EntityItemFrameFieldResolver.resolveAccessor("ITEM", "ao").get(null);
415+
} else if (MinecraftVersion.VERSION.newerThan(Minecraft.Version.v1_13_R1)) {
410416
dataWatcherObject = EntityItemFrameFieldResolver.resolveAccessor("ITEM", "e").get(null);
411417
} else {
412418
dataWatcherObject = EntityItemFrameFieldResolver.resolveAccessor("c").get(null);
@@ -436,8 +442,8 @@ public void sendItemFramePacket(Player player, int entityId, ItemStack itemStack
436442

437443
@Override
438444
public boolean equals(Object o) {
439-
if (this == o) { return true; }
440-
if (o == null || getClass() != o.getClass()) { return false; }
445+
if (this == o) {return true;}
446+
if (o == null || getClass() != o.getClass()) {return false;}
441447

442448
DefaultMapWrapper that = (DefaultMapWrapper) o;
443449

@@ -449,4 +455,5 @@ public boolean equals(Object o) {
449455
public int hashCode() {
450456
return id;
451457
}
458+
452459
}

0 commit comments

Comments
 (0)