mirror of
				https://github.com/IntellectualSites/PlotSquared.git
				synced 2025-11-03 18:53:43 +01:00 
			
		
		
		
	feat: Add support for Minecraft 1.21.8 (#4701)
* Update libs.versions.toml * Update build.gradle.kts * Update PlayerEventListener.java * Update BukkitPlatform.java * Update ReplicatingEntityWrapper.java * Update ReplicatingEntityWrapper.java * Update libs.versions.toml * Update PlayerEventListener.java * Update PlayerEventListener.java * Update BukkitPlatform.java * Update ReplicatingEntityWrapper.java * Update BukkitPlatform.java * Update ReplicatingEntityWrapper.java * Update ReplicatingEntityWrapper.java * Update PlayerEventListener.java
This commit is contained in:
		@@ -837,7 +837,8 @@ public final class BukkitPlatform extends JavaPlugin implements Listener, PlotPl
 | 
				
			|||||||
                        case "HOPPER_MINECART":
 | 
					                        case "HOPPER_MINECART":
 | 
				
			||||||
                        case "MINECART_MOB_SPAWNER":
 | 
					                        case "MINECART_MOB_SPAWNER":
 | 
				
			||||||
                        case "SPAWNER_MINECART":
 | 
					                        case "SPAWNER_MINECART":
 | 
				
			||||||
                        case "ENDER_CRYSTAL":
 | 
					                        case "END_CRYSTAL":
 | 
				
			||||||
 | 
					                        case "ENDER_CRYSTAL": // Backwards compatibility for 1.20.4
 | 
				
			||||||
                        case "MINECART_TNT":
 | 
					                        case "MINECART_TNT":
 | 
				
			||||||
                        case "TNT_MINECART":
 | 
					                        case "TNT_MINECART":
 | 
				
			||||||
                        case "CHEST_BOAT":
 | 
					                        case "CHEST_BOAT":
 | 
				
			||||||
@@ -955,6 +956,8 @@ public final class BukkitPlatform extends JavaPlugin implements Listener, PlotPl
 | 
				
			|||||||
                        case "ENDERMITE":
 | 
					                        case "ENDERMITE":
 | 
				
			||||||
                        case "ENDER_DRAGON":
 | 
					                        case "ENDER_DRAGON":
 | 
				
			||||||
                        case "GHAST":
 | 
					                        case "GHAST":
 | 
				
			||||||
 | 
					                        case "HAPPY_GHAST": // 1.21.6+
 | 
				
			||||||
 | 
					                        case "GHASTLING": // 1.21.6+
 | 
				
			||||||
                        case "GIANT":
 | 
					                        case "GIANT":
 | 
				
			||||||
                        case "GUARDIAN":
 | 
					                        case "GUARDIAN":
 | 
				
			||||||
                        case "HORSE":
 | 
					                        case "HORSE":
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -115,7 +115,7 @@ public final class ReplicatingEntityWrapper extends EntityWrapper {
 | 
				
			|||||||
                this.dataByte = getOrdinal(Boat.Type.values(), boat.getBoatType());
 | 
					                this.dataByte = getOrdinal(Boat.Type.values(), boat.getBoatType());
 | 
				
			||||||
                storeInventory(boat);
 | 
					                storeInventory(boat);
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
            case "ARROW", "EGG", "ENDER_CRYSTAL", "ENDER_PEARL", "ENDER_SIGNAL", "EXPERIENCE_ORB", "FALLING_BLOCK", "FIREBALL",
 | 
					            case "ARROW", "EGG", "END_CRYSTAL", "ENDER_CRYSTAL", "ENDER_PEARL", "ENDER_SIGNAL", "EXPERIENCE_ORB", "FALLING_BLOCK", "FIREBALL",
 | 
				
			||||||
                    "FIREWORK", "FISHING_HOOK", "LEASH_HITCH", "LIGHTNING", "MINECART", "MINECART_COMMAND", "MINECART_MOB_SPAWNER",
 | 
					                    "FIREWORK", "FISHING_HOOK", "LEASH_HITCH", "LIGHTNING", "MINECART", "MINECART_COMMAND", "MINECART_MOB_SPAWNER",
 | 
				
			||||||
                    "MINECART_TNT", "PLAYER", "PRIMED_TNT", "SLIME", "SMALL_FIREBALL", "SNOWBALL", "MINECART_FURNACE", "SPLASH_POTION",
 | 
					                    "MINECART_TNT", "PLAYER", "PRIMED_TNT", "SLIME", "SMALL_FIREBALL", "SNOWBALL", "MINECART_FURNACE", "SPLASH_POTION",
 | 
				
			||||||
                    "THROWN_EXP_BOTTLE", "WITHER_SKULL", "UNKNOWN", "SPECTRAL_ARROW", "SHULKER_BULLET", "DRAGON_FIREBALL", "AREA_EFFECT_CLOUD",
 | 
					                    "THROWN_EXP_BOTTLE", "WITHER_SKULL", "UNKNOWN", "SPECTRAL_ARROW", "SHULKER_BULLET", "DRAGON_FIREBALL", "AREA_EFFECT_CLOUD",
 | 
				
			||||||
@@ -272,7 +272,7 @@ public final class ReplicatingEntityWrapper extends EntityWrapper {
 | 
				
			|||||||
                this.dataByte = (byte) entity1.getPhase().ordinal();
 | 
					                this.dataByte = (byte) entity1.getPhase().ordinal();
 | 
				
			||||||
                return;
 | 
					                return;
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
            case "SKELETON", "WITHER_SKELETON", "GUARDIAN", "ELDER_GUARDIAN", "GHAST", "MAGMA_CUBE", "SQUID", "PIG_ZOMBIE", "HOGLIN",
 | 
					            case "SKELETON", "WITHER_SKELETON", "GUARDIAN", "ELDER_GUARDIAN", "GHAST", "HAPPY_GHAST", "GHASTLING", "MAGMA_CUBE", "SQUID", "PIG_ZOMBIE", "HOGLIN",
 | 
				
			||||||
                    "ZOMBIFIED_PIGLIN", "PIGLIN", "PIGLIN_BRUTE", "ZOMBIE", "WITHER", "WITCH", "SPIDER", "CAVE_SPIDER", "SILVERFISH",
 | 
					                    "ZOMBIFIED_PIGLIN", "PIGLIN", "PIGLIN_BRUTE", "ZOMBIE", "WITHER", "WITCH", "SPIDER", "CAVE_SPIDER", "SILVERFISH",
 | 
				
			||||||
                    "GIANT", "ENDERMAN", "CREEPER", "BLAZE", "SHULKER", "SNOWMAN", "SNOW_GOLEM" -> {
 | 
					                    "GIANT", "ENDERMAN", "CREEPER", "BLAZE", "SHULKER", "SNOWMAN", "SNOW_GOLEM" -> {
 | 
				
			||||||
                storeLiving((LivingEntity) entity);
 | 
					                storeLiving((LivingEntity) entity);
 | 
				
			||||||
@@ -511,7 +511,7 @@ public final class ReplicatingEntityWrapper extends EntityWrapper {
 | 
				
			|||||||
                ((Slime) entity).setSize(this.dataByte);
 | 
					                ((Slime) entity).setSize(this.dataByte);
 | 
				
			||||||
                return entity;
 | 
					                return entity;
 | 
				
			||||||
            } */
 | 
					            } */
 | 
				
			||||||
            case "ARROW", "EGG", "ENDER_CRYSTAL", "ENDER_PEARL", "ENDER_SIGNAL", "DROPPED_ITEM", "EXPERIENCE_ORB", "FALLING_BLOCK",
 | 
					            case "ARROW", "EGG", "END_CRYSTAL", "ENDER_CRYSTAL", "ENDER_PEARL", "ENDER_SIGNAL", "DROPPED_ITEM", "EXPERIENCE_ORB", "FALLING_BLOCK",
 | 
				
			||||||
                    "FIREBALL", "FIREWORK", "FISHING_HOOK", "LEASH_HITCH", "LIGHTNING", "MINECART", "MINECART_COMMAND",
 | 
					                    "FIREBALL", "FIREWORK", "FISHING_HOOK", "LEASH_HITCH", "LIGHTNING", "MINECART", "MINECART_COMMAND",
 | 
				
			||||||
                    "MINECART_MOB_SPAWNER", "MINECART_TNT", "PLAYER", "PRIMED_TNT", "SMALL_FIREBALL", "SNOWBALL",
 | 
					                    "MINECART_MOB_SPAWNER", "MINECART_TNT", "PLAYER", "PRIMED_TNT", "SMALL_FIREBALL", "SNOWBALL",
 | 
				
			||||||
                    "SPLASH_POTION", "THROWN_EXP_BOTTLE", "SPECTRAL_ARROW", "SHULKER_BULLET", "AREA_EFFECT_CLOUD",
 | 
					                    "SPLASH_POTION", "THROWN_EXP_BOTTLE", "SPECTRAL_ARROW", "SHULKER_BULLET", "AREA_EFFECT_CLOUD",
 | 
				
			||||||
@@ -676,7 +676,7 @@ public final class ReplicatingEntityWrapper extends EntityWrapper {
 | 
				
			|||||||
                restoreLiving((LivingEntity) entity);
 | 
					                restoreLiving((LivingEntity) entity);
 | 
				
			||||||
                return entity;
 | 
					                return entity;
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
            case "ENDERMITE", "GHAST", "MAGMA_CUBE", "SQUID", "PIG_ZOMBIE", "HOGLIN", "PIGLIN", "ZOMBIFIED_PIGLIN", "PIGLIN_BRUTE", "ZOMBIE", "WITHER", "WITCH", "SPIDER", "CAVE_SPIDER", "SILVERFISH", "GIANT", "ENDERMAN", "CREEPER", "BLAZE", "SNOWMAN", "SHULKER", "GUARDIAN", "ELDER_GUARDIAN", "SKELETON", "WITHER_SKELETON" -> {
 | 
					            case "ENDERMITE", "GHAST", "HAPPY_GHAST", "GHASTLING", "MAGMA_CUBE", "SQUID", "PIG_ZOMBIE", "HOGLIN", "PIGLIN", "ZOMBIFIED_PIGLIN", "PIGLIN_BRUTE", "ZOMBIE", "WITHER", "WITCH", "SPIDER", "CAVE_SPIDER", "SILVERFISH", "GIANT", "ENDERMAN", "CREEPER", "BLAZE", "SNOWMAN", "SHULKER", "GUARDIAN", "ELDER_GUARDIAN", "SKELETON", "WITHER_SKELETON" -> {
 | 
				
			||||||
                restoreLiving((LivingEntity) entity);
 | 
					                restoreLiving((LivingEntity) entity);
 | 
				
			||||||
                return entity;
 | 
					                return entity;
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -79,6 +79,7 @@ import com.plotsquared.core.util.task.TaskManager;
 | 
				
			|||||||
import com.plotsquared.core.util.task.TaskTime;
 | 
					import com.plotsquared.core.util.task.TaskTime;
 | 
				
			||||||
import com.sk89q.worldedit.WorldEdit;
 | 
					import com.sk89q.worldedit.WorldEdit;
 | 
				
			||||||
import com.sk89q.worldedit.bukkit.BukkitAdapter;
 | 
					import com.sk89q.worldedit.bukkit.BukkitAdapter;
 | 
				
			||||||
 | 
					import com.sk89q.worldedit.util.Enums;
 | 
				
			||||||
import com.sk89q.worldedit.world.block.BlockType;
 | 
					import com.sk89q.worldedit.world.block.BlockType;
 | 
				
			||||||
import com.sk89q.worldedit.world.block.BlockTypes;
 | 
					import com.sk89q.worldedit.world.block.BlockTypes;
 | 
				
			||||||
import io.papermc.lib.PaperLib;
 | 
					import io.papermc.lib.PaperLib;
 | 
				
			||||||
@@ -159,6 +160,7 @@ import java.util.Collections;
 | 
				
			|||||||
import java.util.HashSet;
 | 
					import java.util.HashSet;
 | 
				
			||||||
import java.util.List;
 | 
					import java.util.List;
 | 
				
			||||||
import java.util.Locale;
 | 
					import java.util.Locale;
 | 
				
			||||||
 | 
					import java.util.Objects;
 | 
				
			||||||
import java.util.Optional;
 | 
					import java.util.Optional;
 | 
				
			||||||
import java.util.Set;
 | 
					import java.util.Set;
 | 
				
			||||||
import java.util.UUID;
 | 
					import java.util.UUID;
 | 
				
			||||||
@@ -183,6 +185,15 @@ public class PlayerEventListener implements Listener {
 | 
				
			|||||||
            Material.WRITABLE_BOOK,
 | 
					            Material.WRITABLE_BOOK,
 | 
				
			||||||
            Material.WRITTEN_BOOK
 | 
					            Material.WRITTEN_BOOK
 | 
				
			||||||
    );
 | 
					    );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    /**
 | 
				
			||||||
 | 
					     * The correct EntityType for End Crystal, determined once at class loading time.
 | 
				
			||||||
 | 
					     * Tries END_CRYSTAL first (1.21+), falls back to ENDER_CRYSTAL (1.20.4 and older).
 | 
				
			||||||
 | 
					     */
 | 
				
			||||||
 | 
					    private static final EntityType END_CRYSTAL_ENTITY_TYPE = Objects.requireNonNull(
 | 
				
			||||||
 | 
					            Enums.findByValue(EntityType.class, "END_CRYSTAL", "ENDER_CRYSTAL")
 | 
				
			||||||
 | 
					    );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    private static final Set<String> DYES;
 | 
					    private static final Set<String> DYES;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    static {
 | 
					    static {
 | 
				
			||||||
@@ -1317,8 +1328,8 @@ public class PlayerEventListener implements Listener {
 | 
				
			|||||||
                // reset the player's hand item if spawning needs to be cancelled.
 | 
					                // reset the player's hand item if spawning needs to be cancelled.
 | 
				
			||||||
                if (type == Material.ARMOR_STAND || type == Material.END_CRYSTAL) {
 | 
					                if (type == Material.ARMOR_STAND || type == Material.END_CRYSTAL) {
 | 
				
			||||||
                    Plot plot = location.getOwnedPlotAbs();
 | 
					                    Plot plot = location.getOwnedPlotAbs();
 | 
				
			||||||
                    if (BukkitEntityUtil.checkEntity(type == Material.ARMOR_STAND ? EntityType.ARMOR_STAND : EntityType.ENDER_CRYSTAL,
 | 
					                    EntityType entityType = type == Material.ARMOR_STAND ? EntityType.ARMOR_STAND : END_CRYSTAL_ENTITY_TYPE;
 | 
				
			||||||
                            plot)) {
 | 
					                    if (BukkitEntityUtil.checkEntity(entityType, plot)) {
 | 
				
			||||||
                        event.setCancelled(true);
 | 
					                        event.setCancelled(true);
 | 
				
			||||||
                        break;
 | 
					                        break;
 | 
				
			||||||
                    }
 | 
					                    }
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -204,7 +204,7 @@ tasks.getByName<Jar>("jar") {
 | 
				
			|||||||
    enabled = false
 | 
					    enabled = false
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
val supportedVersions = listOf("1.19.4", "1.20.6", "1.21.1", "1.21.3", "1.21.4", "1.21.5")
 | 
					val supportedVersions = listOf("1.19.4", "1.20.6", "1.21.1", "1.21.3", "1.21.4", "1.21.5", "1.21.6", "1.21.7", "1.21.8")
 | 
				
			||||||
tasks {
 | 
					tasks {
 | 
				
			||||||
    register("cacheLatestFaweArtifact") {
 | 
					    register("cacheLatestFaweArtifact") {
 | 
				
			||||||
        val lastSuccessfulBuildUrl = uri("https://ci.athion.net/job/FastAsyncWorldEdit/lastSuccessfulBuild/api/json").toURL()
 | 
					        val lastSuccessfulBuildUrl = uri("https://ci.athion.net/job/FastAsyncWorldEdit/lastSuccessfulBuild/api/json").toURL()
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user