Skip to content

Commit 1a59d1e

Browse files
authored
Update to 1.21.3. (#2153)
* Initial update to 1.21.3. Compiles, launches, nothing tested yet. * Boat tag includes chest boat tag. * Avoid Material.values call. * Split ride checks to separate event handler. Bypass the interact entirely and let EntityMount handle it, since we can't discriminate usage in interact.
1 parent 764d258 commit 1a59d1e

5 files changed

Lines changed: 48 additions & 13 deletions

File tree

gradle/libs.versions.toml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -27,8 +27,8 @@ junit-jupiter-api.module = "org.junit.jupiter:junit-jupiter-api"
2727
junit-jupiter-params.module = "org.junit.jupiter:junit-jupiter-params"
2828
junit-jupiter-engine.module = "org.junit.jupiter:junit-jupiter-engine"
2929

30-
spigot = "org.spigotmc:spigot-api:1.21-R0.1-SNAPSHOT"
31-
paperApi = "io.papermc.paper:paper-api:1.21-R0.1-SNAPSHOT"
30+
spigot = "org.spigotmc:spigot-api:1.21.3-R0.1-SNAPSHOT"
31+
paperApi = "io.papermc.paper:paper-api:1.21.3-R0.1-SNAPSHOT"
3232
paperLib = "io.papermc:paperlib:1.0.8"
3333

3434
dummypermscompat = "com.sk89q:dummypermscompat:1.10"

worldguard-bukkit/src/main/java/com/sk89q/worldguard/bukkit/listener/EventAbstractionListener.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1196,7 +1196,7 @@ private static <T extends Event & Cancellable> void handleBlockRightClick(T even
11961196

11971197
// Handle created boats
11981198
if (item != null && Materials.isBoat(item.getType())) {
1199-
Events.fireToCancel(event, new SpawnEntityEvent(event, cause, placed.getLocation().add(0.5, 0, 0.5), EntityType.BOAT));
1199+
Events.fireToCancel(event, new SpawnEntityEvent(event, cause, placed.getLocation().add(0.5, 0, 0.5), Materials.getRelatedEntity(item.getType())));
12001200
return;
12011201
}
12021202

worldguard-bukkit/src/main/java/com/sk89q/worldguard/bukkit/listener/RegionProtectionListener.java

Lines changed: 27 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -61,6 +61,7 @@
6161
import org.bukkit.event.Event;
6262
import org.bukkit.event.Event.Result;
6363
import org.bukkit.event.EventHandler;
64+
import org.bukkit.event.entity.EntityMountEvent;
6465
import org.bukkit.event.inventory.InventoryOpenEvent;
6566
import org.bukkit.event.player.PlayerTakeLecternBookEvent;
6667
import org.bukkit.event.vehicle.VehicleExitEvent;
@@ -413,13 +414,13 @@ public void onUseEntity(UseEntityEvent event) {
413414
/* Paintings, item frames, etc. */
414415
} else if (Entities.isConsideredBuildingIfUsed(entity)
415416
// weird case since sneak+interact is chest access and not ride
416-
|| type == EntityType.CHEST_BOAT && event.getOriginalEvent() instanceof InventoryOpenEvent) {
417+
|| event.getOriginalEvent() instanceof InventoryOpenEvent) {
417418
if ((type == EntityType.ITEM_FRAME || type == EntityType.GLOW_ITEM_FRAME)
418419
&& event.getCause().getFirstPlayer() != null
419420
&& ((ItemFrame) entity).getItem().getType() != Material.AIR) {
420421
canUse = query.testBuild(BukkitAdapter.adapt(target), associable, combine(event, Flags.ITEM_FRAME_ROTATE));
421422
what = "change that";
422-
} else if (Entities.isMinecart(type) || type == EntityType.CHEST_BOAT) {
423+
} else if (event.getOriginalEvent() instanceof InventoryOpenEvent) {
423424
canUse = query.testBuild(BukkitAdapter.adapt(target), associable, combine(event, Flags.CHEST_ACCESS));
424425
what = "open that";
425426
} else {
@@ -428,9 +429,10 @@ public void onUseEntity(UseEntityEvent event) {
428429
}
429430
/* Ridden on use */
430431
} else if (Entities.isRiddenOnUse(entity)) {
431-
canUse = query.testBuild(BukkitAdapter.adapt(target), associable, combine(event, Flags.RIDE, Flags.INTERACT));
432+
// this is bypassed here as it's handled by the entity mount listener below
433+
// bukkit actually gives three events in this case - in order: PlayerInteractAtEntity, VehicleEnter, EntityMount
434+
canUse = true;
432435
what = "ride that";
433-
434436
/* Everything else */
435437
} else {
436438
canUse = query.testBuild(BukkitAdapter.adapt(target), associable, combine(event, Flags.INTERACT));
@@ -519,6 +521,27 @@ public void onDamageEntity(DamageEntityEvent event) {
519521
}
520522
}
521523

524+
@EventHandler
525+
public void onEntityMount(EntityMountEvent event) {
526+
Entity vehicle = event.getMount();
527+
if (!isRegionSupportEnabled(vehicle.getWorld())) return; // Region support disabled
528+
if (!(event.getEntity() instanceof Player player)) {
529+
return;
530+
}
531+
Cause cause = Cause.create(player);
532+
if (isWhitelisted(cause, vehicle.getWorld(), false)) {
533+
return;
534+
}
535+
RegionQuery query = WorldGuard.getInstance().getPlatform().getRegionContainer().createQuery();
536+
Location location = vehicle.getLocation();
537+
LocalPlayer localPlayer = WorldGuardPlugin.inst().wrapPlayer(player);
538+
if (!query.testBuild(BukkitAdapter.adapt(location), localPlayer, Flags.RIDE, Flags.INTERACT)) {
539+
event.setCancelled(true);
540+
DelegateEvent dummy = new UseEntityEvent(event, cause, vehicle);
541+
tellErrorMessage(dummy, cause, vehicle.getLocation(), "ride that");
542+
}
543+
}
544+
522545
@EventHandler(ignoreCancelled = true)
523546
public void onVehicleExit(VehicleExitEvent event) {
524547
Entity vehicle = event.getVehicle();

worldguard-bukkit/src/main/java/com/sk89q/worldguard/bukkit/util/Entities.java

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -122,8 +122,11 @@ public static boolean isVehicle(EntityType type) {
122122
* @return true if the type is a Boat type
123123
*/
124124
public static boolean isBoat(EntityType type) {
125-
return switch(type) {
126-
case BOAT, CHEST_BOAT -> true;
125+
return switch (type) {
126+
case OAK_BOAT, DARK_OAK_BOAT, SPRUCE_BOAT, ACACIA_BOAT, CHERRY_BOAT, JUNGLE_BOAT, MANGROVE_BOAT,
127+
BIRCH_BOAT, PALE_OAK_BOAT, BAMBOO_RAFT, OAK_CHEST_BOAT, DARK_OAK_CHEST_BOAT, SPRUCE_CHEST_BOAT,
128+
ACACIA_CHEST_BOAT, CHERRY_CHEST_BOAT, JUNGLE_CHEST_BOAT, MANGROVE_CHEST_BOAT, BIRCH_CHEST_BOAT,
129+
PALE_OAK_CHEST_BOAT, BAMBOO_CHEST_RAFT -> true;
127130
default -> false;
128131
};
129132
}

worldguard-bukkit/src/main/java/com/sk89q/worldguard/bukkit/util/Materials.java

Lines changed: 13 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@
2323
import com.google.common.collect.HashBiMap;
2424
import com.sk89q.worldguard.protection.flags.Flags;
2525
import org.bukkit.Material;
26+
import org.bukkit.Registry;
2627
import org.bukkit.Tag;
2728
import org.bukkit.entity.EntityType;
2829
import org.bukkit.potion.PotionEffect;
@@ -69,7 +70,6 @@ private static void putMaterialTag(Tag<Material> tag, Integer value) {
6970
ENTITY_ITEMS.put(EntityType.TNT, Material.TNT);
7071
ENTITY_ITEMS.put(EntityType.FIREWORK_ROCKET, Material.FIREWORK_ROCKET);
7172
ENTITY_ITEMS.put(EntityType.COMMAND_BLOCK_MINECART, Material.COMMAND_BLOCK_MINECART);
72-
ENTITY_ITEMS.put(EntityType.BOAT, Material.OAK_BOAT);
7373
ENTITY_ITEMS.put(EntityType.MINECART, Material.MINECART);
7474
ENTITY_ITEMS.put(EntityType.CHEST_MINECART, Material.CHEST_MINECART);
7575
ENTITY_ITEMS.put(EntityType.FURNACE_MINECART, Material.FURNACE_MINECART);
@@ -80,6 +80,15 @@ private static void putMaterialTag(Tag<Material> tag, Integer value) {
8080
ENTITY_ITEMS.put(EntityType.ARMOR_STAND, Material.ARMOR_STAND);
8181
ENTITY_ITEMS.put(EntityType.END_CRYSTAL, Material.END_CRYSTAL);
8282

83+
for (String wood : new String[]{"OAK", "SPRUCE", "BIRCH", "JUNGLE", "ACACIA", "DARK_OAK", "MANGROVE", "CHERRY", "PALE_OAK"}) {
84+
String regular = wood + "_BOAT";
85+
String chest = wood + "_CHEST_BOAT";
86+
ENTITY_ITEMS.put(EntityType.valueOf(regular), Material.getMaterial(regular));
87+
ENTITY_ITEMS.put(EntityType.valueOf(chest), Material.getMaterial(chest));
88+
}
89+
ENTITY_ITEMS.put(EntityType.BAMBOO_RAFT, Material.BAMBOO_RAFT);
90+
ENTITY_ITEMS.put(EntityType.BAMBOO_CHEST_RAFT, Material.BAMBOO_CHEST_RAFT);
91+
8392
// preset some tags to a default value, override some of them:
8493
putMaterialTag(Tag.DOORS, MODIFIED_ON_RIGHT);
8594
putMaterialTag(Tag.TRAPDOORS, MODIFIED_ON_RIGHT);
@@ -877,6 +886,7 @@ private static void putMaterialTag(Tag<Material> tag, Integer value) {
877886

878887
putMaterialTag(Tag.SHULKER_BOXES, MODIFIED_ON_RIGHT);
879888
putMaterialTag(Tag.ITEMS_BOATS, 0);
889+
putMaterialTag(Tag.ITEMS_CHEST_BOATS, 0);
880890
putMaterialTag(Tag.BANNERS, 0);
881891
putMaterialTag(Tag.SLABS, 0);
882892
putMaterialTag(Tag.PLANKS, 0);
@@ -925,8 +935,7 @@ private static void putMaterialTag(Tag<Material> tag, Integer value) {
925935
});
926936

927937
// Check for missing items/blocks
928-
for (Material material : Material.values()) {
929-
if (material.isLegacy()) continue;
938+
Registry.MATERIAL.stream().forEach(material -> {
930939
// Add spawn eggs
931940
if (isSpawnEgg(material)) {
932941
MATERIAL_FLAGS.put(material, 0);
@@ -937,7 +946,7 @@ private static void putMaterialTag(Tag<Material> tag, Integer value) {
937946
if (!MATERIAL_FLAGS.containsKey(material)) {
938947
logger.fine("Missing material definition for " + (material.isBlock() ? "block " : "item ") + material.name());
939948
}
940-
}
949+
});
941950

942951
// DAMAGE_EFFECTS.add(PotionEffectType.SPEED);
943952
DAMAGE_EFFECTS.add(PotionEffectType.SLOWNESS);

0 commit comments

Comments
 (0)