diff --git a/gradle.properties b/gradle.properties index a9aaa455e..97eeb91da 100644 --- a/gradle.properties +++ b/gradle.properties @@ -1,9 +1,9 @@ group = org.purpurmc.purpur -mcVersion = 26.2-pre-4 +mcVersion = 26.2-pre-5 apiVersion = 26.2 channel=EXPERIMENTAL -paperCommit = 273c92d85559ea176dab86c16f76989c1a061012 +paperCommit = 620da256d6de496a26b788fc394c241fb9cd61c1 org.gradle.configuration-cache = true org.gradle.caching = true diff --git a/purpur-server/minecraft-patches/features/0001-Ridables.patch b/purpur-server/minecraft-patches/features/0001-Ridables.patch index 221978793..02ff4f0cb 100644 --- a/purpur-server/minecraft-patches/features/0001-Ridables.patch +++ b/purpur-server/minecraft-patches/features/0001-Ridables.patch @@ -2730,10 +2730,10 @@ index 5d1e0d44163b9f29dc824b46b7b983456a273419..f54a14a1e434cbfedf709d3b1495f2ae this.targetSelector.addGoal(2, new OwnerHurtTargetGoal(this)); this.targetSelector.addGoal(3, new HurtByTargetGoal(this).setAlertOthers()); diff --git a/net/minecraft/world/entity/boss/enderdragon/EnderDragon.java b/net/minecraft/world/entity/boss/enderdragon/EnderDragon.java -index cabadc98e43f7d45a15512010670ad57d276584b..55a24b960f1372c0fa7edf7c5d439d452f5f3839 100644 +index f960bb265bc5a4b350d24c9d1caafb3a06068df0..c0ffda7c18461494aee68aac2d99a660e3b21dcf 100644 --- a/net/minecraft/world/entity/boss/enderdragon/EnderDragon.java +++ b/net/minecraft/world/entity/boss/enderdragon/EnderDragon.java -@@ -91,6 +91,7 @@ public class EnderDragon extends Mob implements Enemy { +@@ -92,6 +92,7 @@ public class EnderDragon extends Mob implements Enemy { private final net.minecraft.world.level.Explosion explosionSource; // Paper - reusable source for CraftTNTPrimed.getSource() private @Nullable BlockPos podium; // Paper end @@ -2741,7 +2741,7 @@ index cabadc98e43f7d45a15512010670ad57d276584b..55a24b960f1372c0fa7edf7c5d439d45 public EnderDragon(final EntityType type, final Level level) { super(EntityTypes.ENDER_DRAGON, level); -@@ -107,6 +108,37 @@ public class EnderDragon extends Mob implements Enemy { +@@ -108,6 +109,37 @@ public class EnderDragon extends Mob implements Enemy { this.noPhysics = true; this.phaseManager = new EnderDragonPhaseManager(this); this.explosionSource = new net.minecraft.world.level.ServerExplosion(level.getMinecraftWorld(), this, null, null, new Vec3(Double.NaN, Double.NaN, Double.NaN), Float.NaN, true, net.minecraft.world.level.Explosion.BlockInteraction.DESTROY); // Paper @@ -2779,7 +2779,7 @@ index cabadc98e43f7d45a15512010670ad57d276584b..55a24b960f1372c0fa7edf7c5d439d45 } public void setDragonFight(final EnderDragonFight fight) { -@@ -121,6 +153,17 @@ public class EnderDragon extends Mob implements Enemy { +@@ -122,6 +154,17 @@ public class EnderDragon extends Mob implements Enemy { return this.fightOrigin; } @@ -2797,7 +2797,7 @@ index cabadc98e43f7d45a15512010670ad57d276584b..55a24b960f1372c0fa7edf7c5d439d45 public static AttributeSupplier.Builder createAttributes() { return Mob.createMobAttributes().add(Attributes.MAX_HEALTH, 200.0).add(Attributes.CAMERA_DISTANCE, 16.0); } -@@ -170,6 +213,37 @@ public class EnderDragon extends Mob implements Enemy { +@@ -171,6 +214,37 @@ public class EnderDragon extends Mob implements Enemy { @Override public void aiStep() { @@ -2835,7 +2835,7 @@ index cabadc98e43f7d45a15512010670ad57d276584b..55a24b960f1372c0fa7edf7c5d439d45 this.processFlappingMovement(); if (this.level().isClientSide()) { this.setHealth(this.getHealth()); -@@ -198,6 +272,7 @@ public class EnderDragon extends Mob implements Enemy { +@@ -199,6 +273,7 @@ public class EnderDragon extends Mob implements Enemy { this.oFlapTime = this.flapTime; if (this.isDeadOrDying()) { @@ -2843,7 +2843,7 @@ index cabadc98e43f7d45a15512010670ad57d276584b..55a24b960f1372c0fa7edf7c5d439d45 float xo = (this.random.nextFloat() - 0.5F) * 8.0F; float yo = (this.random.nextFloat() - 0.5F) * 4.0F; float zo = (this.random.nextFloat() - 0.5F) * 8.0F; -@@ -207,9 +282,9 @@ public class EnderDragon extends Mob implements Enemy { +@@ -208,9 +283,9 @@ public class EnderDragon extends Mob implements Enemy { Vec3 movement = this.getDeltaMovement(); float flapSpeed = 0.2F / ((float)movement.horizontalDistance() * 10.0F + 1.0F); flapSpeed *= (float)Math.pow(2.0, movement.y); @@ -2855,7 +2855,7 @@ index cabadc98e43f7d45a15512010670ad57d276584b..55a24b960f1372c0fa7edf7c5d439d45 this.flapTime += flapSpeed * 0.5F; } else { this.flapTime += flapSpeed; -@@ -220,7 +295,7 @@ public class EnderDragon extends Mob implements Enemy { +@@ -221,7 +296,7 @@ public class EnderDragon extends Mob implements Enemy { this.flapTime = 0.5F; } else { this.flightHistory.record(this.getY(), this.getYRot()); @@ -2864,7 +2864,7 @@ index cabadc98e43f7d45a15512010670ad57d276584b..55a24b960f1372c0fa7edf7c5d439d45 DragonPhaseInstance currentPhase = this.phaseManager.getCurrentPhase(); currentPhase.doServerTick(level); if (this.phaseManager.getCurrentPhase() != currentPhase) { -@@ -291,7 +366,7 @@ public class EnderDragon extends Mob implements Enemy { +@@ -292,7 +367,7 @@ public class EnderDragon extends Mob implements Enemy { this.tickPart(this.body, ss1 * 0.5F, 0.0, -cc1 * 0.5F); this.tickPart(this.wing1, cc1 * 4.5F, 2.0, ss1 * 4.5F); this.tickPart(this.wing2, cc1 * -4.5F, 2.0, ss1 * -4.5F); @@ -2873,7 +2873,7 @@ index cabadc98e43f7d45a15512010670ad57d276584b..55a24b960f1372c0fa7edf7c5d439d45 this.knockBack( serverLevel, serverLevel.getEntities( -@@ -339,9 +414,9 @@ public class EnderDragon extends Mob implements Enemy { +@@ -340,9 +415,9 @@ public class EnderDragon extends Mob implements Enemy { } if (this.level() instanceof ServerLevel level) { @@ -4356,7 +4356,7 @@ index 96776d23370736da3408e6a86ed89b7f3d686732..0ac7a442a0ea79f190aceb60b771d616 public SoundEvent getHurtSound(final DamageSource source) { return this.isTiny() ? SoundEvents.SLIME_HURT_SMALL : SoundEvents.SLIME_HURT; diff --git a/net/minecraft/world/entity/monster/cubemob/SulfurCube.java b/net/minecraft/world/entity/monster/cubemob/SulfurCube.java -index 6b89d25aa130c9b7fe7f6d27f1d5f393c2954778..601a54820df95a566cec6079715af166f912df70 100644 +index 7f79c8e4e5874d2ce3a1a58b96df698c3f774011..7b3ab0515bae1963cdd2319f097bfffb4d12f4e5 100644 --- a/net/minecraft/world/entity/monster/cubemob/SulfurCube.java +++ b/net/minecraft/world/entity/monster/cubemob/SulfurCube.java @@ -129,6 +129,28 @@ public class SulfurCube extends AbstractCubeMob implements Bucketable, Shearable diff --git a/purpur-server/minecraft-patches/features/0002-Configurable-entity-base-attributes.patch b/purpur-server/minecraft-patches/features/0002-Configurable-entity-base-attributes.patch index eefaeb461..904a5e9b6 100644 --- a/purpur-server/minecraft-patches/features/0002-Configurable-entity-base-attributes.patch +++ b/purpur-server/minecraft-patches/features/0002-Configurable-entity-base-attributes.patch @@ -974,10 +974,10 @@ index f54a14a1e434cbfedf709d3b1495f2ae9ae4f11f..acf623ba0ab1f1d6c98af1a83cddd634 protected void registerGoals() { this.goalSelector.addGoal(1, new FloatGoal(this)); diff --git a/net/minecraft/world/entity/boss/enderdragon/EnderDragon.java b/net/minecraft/world/entity/boss/enderdragon/EnderDragon.java -index 55a24b960f1372c0fa7edf7c5d439d452f5f3839..6883bd42f9d124c6421d1eb332f04514aa7bc3f8 100644 +index c0ffda7c18461494aee68aac2d99a660e3b21dcf..ffd612896a30ebff55906baba94150eb25fd8e98 100644 --- a/net/minecraft/world/entity/boss/enderdragon/EnderDragon.java +++ b/net/minecraft/world/entity/boss/enderdragon/EnderDragon.java -@@ -164,6 +164,13 @@ public class EnderDragon extends Mob implements Enemy { +@@ -165,6 +165,13 @@ public class EnderDragon extends Mob implements Enemy { } // Purpur end - Ridables @@ -991,7 +991,7 @@ index 55a24b960f1372c0fa7edf7c5d439d452f5f3839..6883bd42f9d124c6421d1eb332f04514 public static AttributeSupplier.Builder createAttributes() { return Mob.createMobAttributes().add(Attributes.MAX_HEALTH, 200.0).add(Attributes.CAMERA_DISTANCE, 16.0); } -@@ -1065,7 +1072,7 @@ public class EnderDragon extends Mob implements Enemy { +@@ -1068,7 +1075,7 @@ public class EnderDragon extends Mob implements Enemy { @Override protected float sanitizeScale(final float scale) { @@ -1501,7 +1501,7 @@ index 0ac7a442a0ea79f190aceb60b771d616b377e613..22c20e4360473cdbe9cda8bb7b3b30be + } } diff --git a/net/minecraft/world/entity/monster/cubemob/SulfurCube.java b/net/minecraft/world/entity/monster/cubemob/SulfurCube.java -index 601a54820df95a566cec6079715af166f912df70..8a12c35177a745e94c2a4ced86994114fac933f5 100644 +index 7b3ab0515bae1963cdd2319f097bfffb4d12f4e5..a966d253af27d5a8cc89a2454cf60377bdf7ce62 100644 --- a/net/minecraft/world/entity/monster/cubemob/SulfurCube.java +++ b/net/minecraft/world/entity/monster/cubemob/SulfurCube.java @@ -151,6 +151,20 @@ public class SulfurCube extends AbstractCubeMob implements Bucketable, Shearable diff --git a/purpur-server/minecraft-patches/features/0015-Add-mobGriefing-override-to-everything-affected.patch b/purpur-server/minecraft-patches/features/0015-Add-mobGriefing-override-to-everything-affected.patch index dc42ccded..e89ccfe36 100644 --- a/purpur-server/minecraft-patches/features/0015-Add-mobGriefing-override-to-everything-affected.patch +++ b/purpur-server/minecraft-patches/features/0015-Add-mobGriefing-override-to-everything-affected.patch @@ -131,10 +131,10 @@ index f0c4ad3715322bf1a5a60edd870b34a15949a77f..80a65dba81ab82cdb9bd43d1878e7455 } diff --git a/net/minecraft/world/entity/boss/enderdragon/EnderDragon.java b/net/minecraft/world/entity/boss/enderdragon/EnderDragon.java -index 6883bd42f9d124c6421d1eb332f04514aa7bc3f8..1294dc666be270b4c7b335b7f2786b9b68bededc 100644 +index ffd612896a30ebff55906baba94150eb25fd8e98..2597ee3ca93653af04b5e620f3909c3791369bf0 100644 --- a/net/minecraft/world/entity/boss/enderdragon/EnderDragon.java +++ b/net/minecraft/world/entity/boss/enderdragon/EnderDragon.java -@@ -536,7 +536,7 @@ public class EnderDragon extends Mob implements Enemy { +@@ -537,7 +537,7 @@ public class EnderDragon extends Mob implements Enemy { BlockPos blockPos = new BlockPos(x, y, z); BlockState state = level.getBlockState(blockPos); if (!state.isAir() && !state.is(BlockTags.DRAGON_TRANSPARENT)) { diff --git a/purpur-server/minecraft-patches/features/0016-Toggle-for-water-sensitive-mob-damage.patch b/purpur-server/minecraft-patches/features/0016-Toggle-for-water-sensitive-mob-damage.patch index ff5c3c4ce..66e486b93 100644 --- a/purpur-server/minecraft-patches/features/0016-Toggle-for-water-sensitive-mob-damage.patch +++ b/purpur-server/minecraft-patches/features/0016-Toggle-for-water-sensitive-mob-damage.patch @@ -657,10 +657,10 @@ index 66e58482f8422e5478b29f82271489d0449ceddb..cdc12cabee85c7090ff317068a98b0ac protected void registerGoals() { this.goalSelector.addGoal(1, new FloatGoal(this)); diff --git a/net/minecraft/world/entity/boss/enderdragon/EnderDragon.java b/net/minecraft/world/entity/boss/enderdragon/EnderDragon.java -index 1294dc666be270b4c7b335b7f2786b9b68bededc..5ad833b7673e73a1a5120b335f8980f639a9b2eb 100644 +index 2597ee3ca93653af04b5e620f3909c3791369bf0..f445c81d1054b897f8489cdb9cc9bb04096e3835 100644 --- a/net/minecraft/world/entity/boss/enderdragon/EnderDragon.java +++ b/net/minecraft/world/entity/boss/enderdragon/EnderDragon.java -@@ -171,6 +171,13 @@ public class EnderDragon extends Mob implements Enemy { +@@ -172,6 +172,13 @@ public class EnderDragon extends Mob implements Enemy { } // Purpur end - Configurable entity base attributes @@ -1029,7 +1029,7 @@ index 22c20e4360473cdbe9cda8bb7b3b30be85f16fe6..3c09f472ba54f8929782ac6a080ceabf public SoundEvent getHurtSound(final DamageSource source) { return this.isTiny() ? SoundEvents.SLIME_HURT_SMALL : SoundEvents.SLIME_HURT; diff --git a/net/minecraft/world/entity/monster/cubemob/SulfurCube.java b/net/minecraft/world/entity/monster/cubemob/SulfurCube.java -index 8a12c35177a745e94c2a4ced86994114fac933f5..f777ed1de1ec159fed3019bd5bfb711b9aad6146 100644 +index a966d253af27d5a8cc89a2454cf60377bdf7ce62..f43d33605e8d0d4ade0a5c6269bccb4d10668543 100644 --- a/net/minecraft/world/entity/monster/cubemob/SulfurCube.java +++ b/net/minecraft/world/entity/monster/cubemob/SulfurCube.java @@ -165,6 +165,13 @@ public class SulfurCube extends AbstractCubeMob implements Bucketable, Shearable diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/server/commands/GameModeCommand.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/server/commands/GameModeCommand.java.patch index 3a0a7cc8d..509d30219 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/server/commands/GameModeCommand.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/server/commands/GameModeCommand.java.patch @@ -1,6 +1,6 @@ --- a/net/minecraft/server/commands/GameModeCommand.java +++ b/net/minecraft/server/commands/GameModeCommand.java -@@ -47,6 +_,18 @@ +@@ -48,6 +_,18 @@ } private static int setMode(final CommandContext context, final Collection players, final GameType type) { @@ -17,5 +17,5 @@ + } + // Purpur end - Gamemode extra permissions int count = 0; + MinecraftServer server = context.getSource().getServer(); - for (ServerPlayer player : players) { diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/damagesource/DamageSource.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/damagesource/DamageSource.java.patch index 490260603..3c21e3fcd 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/world/damagesource/DamageSource.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/damagesource/DamageSource.java.patch @@ -40,7 +40,7 @@ @Nullable public Entity eventEntityDamager() { return this.eventEntityDamager; -@@ -94,6 +_,8 @@ +@@ -98,6 +_,8 @@ damageSource.eventBlockDamager = this.eventBlockDamager; damageSource.fromBlockSnapshot = this.fromBlockSnapshot; damageSource.critical = this.critical; @@ -49,7 +49,7 @@ return damageSource; } // CraftBukkit end -@@ -159,11 +_,20 @@ +@@ -163,11 +_,20 @@ } else { Component name = this.causingEntity == null ? this.directEntity.getDisplayName() : this.causingEntity.getDisplayName(); ItemStack held = this.causingEntity instanceof LivingEntity livingEntity ? livingEntity.getMainHandItem() : ItemStack.EMPTY; diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/boss/enderdragon/EnderDragon.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/boss/enderdragon/EnderDragon.java.patch index f55ea27b2..6df01e8f8 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/boss/enderdragon/EnderDragon.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/boss/enderdragon/EnderDragon.java.patch @@ -1,6 +1,6 @@ --- a/net/minecraft/world/entity/boss/enderdragon/EnderDragon.java +++ b/net/minecraft/world/entity/boss/enderdragon/EnderDragon.java -@@ -964,6 +_,7 @@ +@@ -967,6 +_,7 @@ @Override protected boolean canRide(final Entity vehicle) { @@ -8,7 +8,7 @@ return false; } -@@ -999,7 +_,7 @@ +@@ -1002,7 +_,7 @@ boolean shouldDrop = level.getGameRules().get(GameRules.MOB_DROPS); int xpCount = 500; diff --git a/purpur-server/paper-patches/features/0002-Ridables.patch b/purpur-server/paper-patches/features/0002-Ridables.patch index 82ff7bee1..db5f92966 100644 --- a/purpur-server/paper-patches/features/0002-Ridables.patch +++ b/purpur-server/paper-patches/features/0002-Ridables.patch @@ -36,10 +36,10 @@ index de6fe0b783a145f6571bf73665e7107430f22592..612e3457d537d6129437443753cad3e4 + // Purpur end - Ridables } diff --git a/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java b/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java -index 6dd60f8a3c322671a3c91e7239d6218e4724bc71..6c78b4b24d43712ae98bbc1e2c3f2e896da57fb4 100644 +index a3f9ebbd03c355168c8ea72e8d9f0e222712c61d..fbd78d4f06deaddb0954863cdf4eac47ce80e0b7 100644 --- a/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java +++ b/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java -@@ -653,6 +653,15 @@ public class CraftEventFactory { +@@ -654,6 +654,15 @@ public class CraftEventFactory { } craftServer.getPluginManager().callEvent(event); @@ -55,7 +55,7 @@ index 6dd60f8a3c322671a3c91e7239d6218e4724bc71..6c78b4b24d43712ae98bbc1e2c3f2e89 return event; } -@@ -1158,6 +1167,7 @@ public class CraftEventFactory { +@@ -1159,6 +1168,7 @@ public class CraftEventFactory { EntityDamageEvent event; if (damager != null) { event = new EntityDamageByEntityEvent(damager.getBukkitEntity(), damagee.getBukkitEntity(), cause, bukkitDamageSource, modifiers, modifierFunctions, critical); diff --git a/purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/CraftServer.java.patch b/purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/CraftServer.java.patch index eff1ffe63..a68261192 100644 --- a/purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/CraftServer.java.patch +++ b/purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/CraftServer.java.patch @@ -1,6 +1,6 @@ --- a/src/main/java/org/bukkit/craftbukkit/CraftServer.java +++ b/src/main/java/org/bukkit/craftbukkit/CraftServer.java -@@ -415,6 +_,20 @@ +@@ -411,6 +_,20 @@ this.paperPluginManager = new io.papermc.paper.plugin.manager.PaperPluginManagerImpl(this, this.commandMap, pluginManager); this.pluginManager.paperPluginManager = this.paperPluginManager; // Paper end @@ -21,7 +21,7 @@ CraftRegistry.setMinecraftRegistry(console.registryAccess()); -@@ -989,6 +_,7 @@ +@@ -985,6 +_,7 @@ org.spigotmc.SpigotConfig.init((File) this.console.options.valueOf("spigot-settings")); // Spigot this.console.paperConfigurations.reloadConfigs(this.console); @@ -29,7 +29,7 @@ for (ServerLevel world : this.console.getAllLevels()) { // world.serverLevelData.setDifficulty(config.difficulty); // Paper - per level difficulty world.setSpawnSettings(world.isSpawningMonsters()); // Paper - per level difficulty (from MinecraftServer#setDifficulty(ServerLevel, Difficulty, boolean)) -@@ -1004,6 +_,7 @@ +@@ -1000,6 +_,7 @@ } } world.spigotConfig.init(); // Spigot @@ -37,7 +37,7 @@ } Plugin[] pluginClone = pluginManager.getPlugins().clone(); // Paper -@@ -1021,6 +_,7 @@ +@@ -1017,6 +_,7 @@ org.spigotmc.SpigotConfig.registerCommands(); // Spigot io.papermc.paper.command.PaperCommands.registerCommands(this.console); // Paper this.spark.registerCommandBeforePlugins(this); // Paper - spark @@ -45,7 +45,7 @@ this.overrideAllCommandBlockCommands = this.commandsConfiguration.getStringList("command-block-overrides").contains("*"); this.ignoreVanillaPermissions = this.commandsConfiguration.getBoolean("ignore-vanilla-permissions"); -@@ -1478,6 +_,60 @@ +@@ -1482,6 +_,60 @@ return true; } @@ -106,7 +106,7 @@ @Override public List getRecipesFor(ItemStack result) { Preconditions.checkArgument(result != null, "ItemStack cannot be null"); -@@ -2723,6 +_,18 @@ +@@ -2727,6 +_,18 @@ return CraftServer.this.console.paperConfigurations.createLegacyObject(CraftServer.this.console); } @@ -125,7 +125,7 @@ @Override public void restart() { CraftServer.this.restart(); -@@ -2958,4 +_,18 @@ +@@ -2962,4 +_,18 @@ public void allowPausing(final Plugin plugin, final boolean value) { this.console.addPluginAllowingSleep(plugin.getName(), value); }