aboutsummaryrefslogtreecommitdiffhomepage
path: root/Spigot-Server-Patches/0752-Fix-invulnerable-end-crystals.patch
diff options
context:
space:
mode:
authorNassim <[email protected]>2021-06-01 12:19:10 +0200
committerGitHub <[email protected]>2021-06-01 12:19:10 +0200
commitb94a99b0337823efb2863243deeb8701c3ff781e (patch)
tree64dcb6c1b11957272e5b54c220766bd623e16761 /Spigot-Server-Patches/0752-Fix-invulnerable-end-crystals.patch
parentf5cb169e01181f7df516031934e9fa3d248f04b6 (diff)
downloadPaper-b94a99b0337823efb2863243deeb8701c3ff781e.tar.gz
Paper-b94a99b0337823efb2863243deeb8701c3ff781e.zip
Updated Upstream (CraftBukkit) (#5762)
Upstream has released updates that appear to apply and compile correctly. This update has not been tested by PaperMC and as with ANY update, please do your own testing CraftBukkit Changes: 90a4d64a Remove usage of Java 11 method not caught by animal sniffer c51c0f7f SPIGOT-6483: Fix cancelling EntityPickupEvent for villagers
Diffstat (limited to 'Spigot-Server-Patches/0752-Fix-invulnerable-end-crystals.patch')
-rw-r--r--Spigot-Server-Patches/0752-Fix-invulnerable-end-crystals.patch76
1 files changed, 76 insertions, 0 deletions
diff --git a/Spigot-Server-Patches/0752-Fix-invulnerable-end-crystals.patch b/Spigot-Server-Patches/0752-Fix-invulnerable-end-crystals.patch
new file mode 100644
index 0000000000..7d36d72742
--- /dev/null
+++ b/Spigot-Server-Patches/0752-Fix-invulnerable-end-crystals.patch
@@ -0,0 +1,76 @@
+From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
+From: Jake Potrebic <[email protected]>
+Date: Thu, 27 May 2021 14:52:30 -0700
+Subject: [PATCH] Fix invulnerable end crystals
+
+MC-108513
+
+diff --git a/src/main/java/com/destroystokyo/paper/PaperWorldConfig.java b/src/main/java/com/destroystokyo/paper/PaperWorldConfig.java
+index 795b76379eb698aa0ed83c000ea0679a844792d5..1a368df78feb4afdf522527af5ed1652afffcd15 100644
+--- a/src/main/java/com/destroystokyo/paper/PaperWorldConfig.java
++++ b/src/main/java/com/destroystokyo/paper/PaperWorldConfig.java
+@@ -825,4 +825,9 @@ public class PaperWorldConfig {
+ private void fixItemsMergingThroughWalls() {
+ fixItemsMergingThroughWalls = getBoolean("fix-items-merging-through-walls", fixItemsMergingThroughWalls);
+ }
++
++ public boolean fixInvulnerableEndCrystalExploit = true;
++ private void fixInvulnerableEndCrystalExploit() {
++ fixInvulnerableEndCrystalExploit = getBoolean("unsupported-settings.fix-invulnerable-end-crystal-exploit", fixInvulnerableEndCrystalExploit);
++ }
+ }
+diff --git a/src/main/java/net/minecraft/world/level/dimension/end/EnderDragonBattle.java b/src/main/java/net/minecraft/world/level/dimension/end/EnderDragonBattle.java
+index 0ab6319aa3e4e1f5679f37be36999ca56ca2484c..558216ea96bcdc34ffa595c848151278c33b5ca1 100644
+--- a/src/main/java/net/minecraft/world/level/dimension/end/EnderDragonBattle.java
++++ b/src/main/java/net/minecraft/world/level/dimension/end/EnderDragonBattle.java
+@@ -570,6 +570,7 @@ public class EnderDragonBattle {
+
+ while (iterator.hasNext()) {
+ WorldGenEnder.Spike worldgenender_spike = (WorldGenEnder.Spike) iterator.next();
++ if (!this.world.paperConfig.fixInvulnerableEndCrystalExploit || worldgenender_spike.crystal == null) { // Paper
+ List<EntityEnderCrystal> list = this.world.a(EntityEnderCrystal.class, worldgenender_spike.f());
+ Iterator iterator1 = list.iterator();
+
+@@ -579,6 +580,13 @@ public class EnderDragonBattle {
+ entityendercrystal.setInvulnerable(false);
+ entityendercrystal.setBeamTarget((BlockPosition) null);
+ }
++ // Paper start
++ } else {
++ worldgenender_spike.crystal.setInvulnerable(false);
++ worldgenender_spike.crystal.setBeamTarget(null);
++ worldgenender_spike.crystal = null;
++ }
++ // Paper end
+ }
+
+ }
+diff --git a/src/main/java/net/minecraft/world/level/levelgen/feature/WorldGenEnder.java b/src/main/java/net/minecraft/world/level/levelgen/feature/WorldGenEnder.java
+index dd623702131eaa1a65937a19a0e986e865322258..1960fc029262d54c6a5ee05c99d86428386cba4a 100644
+--- a/src/main/java/net/minecraft/world/level/levelgen/feature/WorldGenEnder.java
++++ b/src/main/java/net/minecraft/world/level/levelgen/feature/WorldGenEnder.java
+@@ -42,7 +42,7 @@ public class WorldGenEnder extends WorldGenerator<WorldGenFeatureEndSpikeConfigu
+ return (List) WorldGenEnder.a.getUnchecked(i);
+ }
+
+- public boolean a(GeneratorAccessSeed generatoraccessseed, ChunkGenerator chunkgenerator, Random random, BlockPosition blockposition, WorldGenFeatureEndSpikeConfiguration worldgenfeatureendspikeconfiguration) {
++ public boolean generate(GeneratorAccessSeed generatoraccessseed, ChunkGenerator chunkgenerator, Random random, BlockPosition blockposition, WorldGenFeatureEndSpikeConfiguration worldgenfeatureendspikeconfiguration) { // Paper - decompile fix
+ List<WorldGenEnder.Spike> list = worldgenfeatureendspikeconfiguration.c();
+
+ if (list.isEmpty()) {
+@@ -107,6 +107,7 @@ public class WorldGenEnder extends WorldGenerator<WorldGenFeatureEndSpikeConfigu
+ entityendercrystal.setInvulnerable(worldgenfeatureendspikeconfiguration.b());
+ entityendercrystal.setPositionRotation((double) worldgenender_spike.a() + 0.5D, (double) (worldgenender_spike.d() + 1), (double) worldgenender_spike.b() + 0.5D, random.nextFloat() * 360.0F, 0.0F);
+ worldaccess.addEntity(entityendercrystal);
++ worldgenender_spike.crystal = entityendercrystal; // Paper
+ this.a(worldaccess, new BlockPosition(worldgenender_spike.a(), worldgenender_spike.d(), worldgenender_spike.b()), Blocks.BEDROCK.getBlockData());
+ }
+
+@@ -156,6 +157,7 @@ public class WorldGenEnder extends WorldGenerator<WorldGenFeatureEndSpikeConfigu
+ private final int e;
+ private final boolean f;
+ private final AxisAlignedBB g;
++ public EntityEnderCrystal crystal; // Paper
+
+ public Spike(int i, int j, int k, int l, boolean flag) {
+ this.b = i;