mirror of
https://github.com/PaperMC/Paper.git
synced 2024-12-27 15:00:13 +01:00
fix allowPermanentBlockBreakExploits config
This commit is contained in:
parent
c71ada60db
commit
5922e6334b
18 changed files with 31 additions and 50 deletions
|
@ -786,7 +786,7 @@ index 7c0862c50b44555fb27ce7dc46f4ec95a3eb0022..774ca9e0b56fd175ae246051de762d0c
|
|||
public void tick() {
|
||||
super.tick();
|
||||
diff --git a/net/minecraft/world/entity/vehicle/MinecartHopper.java b/net/minecraft/world/entity/vehicle/MinecartHopper.java
|
||||
index c553cf0592dfa606dbbb1e6854d3377b9feb5efb..dec705ec57e4f63ef2ccaa87c5400c116aee9b35 100644
|
||||
index c553cf0592dfa606dbbb1e6854d3377b9feb5efb..8341e7f01606fca90e69384c16fc19bb9e20d1b7 100644
|
||||
--- a/net/minecraft/world/entity/vehicle/MinecartHopper.java
|
||||
+++ b/net/minecraft/world/entity/vehicle/MinecartHopper.java
|
||||
@@ -47,6 +47,7 @@ public class MinecartHopper extends AbstractMinecartContainer implements Hopper
|
||||
|
|
|
@ -7,7 +7,7 @@ Inline bit operations and reduce instruction count to make these hot
|
|||
operations faster
|
||||
|
||||
diff --git a/net/minecraft/core/BlockPos.java b/net/minecraft/core/BlockPos.java
|
||||
index 98f0b1cf19d7a035849a9a2fa25e2be3a4c5a980..0822a0faf7af9e746e7936ac17597b1f51e40a92 100644
|
||||
index 98f0b1cf19d7a035849a9a2fa25e2be3a4c5a980..a81694a22e94cca6f7110f7d5b205d1303f4e071 100644
|
||||
--- a/net/minecraft/core/BlockPos.java
|
||||
+++ b/net/minecraft/core/BlockPos.java
|
||||
@@ -51,15 +51,17 @@ public class BlockPos extends Vec3i {
|
||||
|
|
|
@ -25,7 +25,7 @@
|
|||
Direction direction = state.getValue(FACING);
|
||||
+ // Paper start - Protect Bedrock and End Portal/Frames from being destroyed; prevent retracting when we're facing the wrong way (we were replaced before retraction could occur)
|
||||
+ Direction directionQueuedAs = Direction.from3DDataValue(param & 7); // Paper - copied from below
|
||||
+ if (!io.papermc.paper.configuration.GlobalConfiguration.get().unsupportedSettings.allowPermanentBlockBreakExploits && directionQueuedAs != directionQueuedAs) {
|
||||
+ if (!io.papermc.paper.configuration.GlobalConfiguration.get().unsupportedSettings.allowPermanentBlockBreakExploits && direction != directionQueuedAs) {
|
||||
+ return false;
|
||||
+ }
|
||||
+ // Paper end - Protect Bedrock and End Portal/Frames from being destroyed
|
||||
|
|
|
@ -53,7 +53,7 @@
|
|||
|
||||
protected boolean canBeReplaced(BlockState state, BlockPlaceContext useContext) {
|
||||
- return state.canBeReplaced() && (useContext.getItemInHand().isEmpty() || !useContext.getItemInHand().is(this.asItem()));
|
||||
+ return state.canBeReplaced() && (useContext.getItemInHand().isEmpty() || !useContext.getItemInHand().is(this.asItem()))&& (state.isDestroyable() || (useContext.getPlayer() != null && useContext.getPlayer().getAbilities().instabuild)); // Paper - Protect Bedrock and End Portal/Frames from being destroyed
|
||||
+ return state.canBeReplaced() && (useContext.getItemInHand().isEmpty() || !useContext.getItemInHand().is(this.asItem())) && (state.isDestroyable() || (useContext.getPlayer() != null && useContext.getPlayer().getAbilities().instabuild)); // Paper - Protect Bedrock and End Portal/Frames from being destroyed
|
||||
}
|
||||
|
||||
protected boolean canBeReplaced(BlockState state, Fluid fluid) {
|
||||
|
|
|
@ -82,7 +82,7 @@
|
|||
+ long featurePopulationSeed = l;
|
||||
+ final long configFeatureSeed = level.getMinecraftWorld().paperConfig().featureSeeds.features.getLong(placedFeature.feature());
|
||||
+ if (configFeatureSeed != -1) {
|
||||
+ featurePopulationSeed = worldgenRandom.setDecorationSeed(configFeatureSeed, blockPos.getX(), blockPos.getZ()); // See seededrandom.setDecorationSeed from above
|
||||
+ featurePopulationSeed = worldgenRandom.setDecorationSeed(configFeatureSeed, blockPos.getX(), blockPos.getZ()); // See WorldgenRandom.setDecorationSeed from above
|
||||
+ }
|
||||
+ worldgenRandom.setFeatureSeed(featurePopulationSeed, i3, i);
|
||||
+ // Paper end - Configurable feature seeds
|
||||
|
|
|
@ -265,7 +265,7 @@
|
|||
public boolean isEmpty() {
|
||||
return false;
|
||||
}
|
||||
@@ -711,23 +_,25 @@
|
||||
@@ -711,23 +_,24 @@
|
||||
if (this.blockEntity.getType().isValid(blockState)) {
|
||||
this.ticker.tick(LevelChunk.this.level, this.blockEntity.getBlockPos(), blockState, this.blockEntity);
|
||||
this.loggedInvalidBlockState = false;
|
||||
|
@ -278,17 +278,15 @@
|
|||
- LogUtils.defer(this::getPos),
|
||||
- blockState
|
||||
- );
|
||||
- }
|
||||
+ // Paper start - Remove the Block Entity if it's invalid
|
||||
+ } else {
|
||||
+ LevelChunk.this.removeBlockEntity(this.getPos());
|
||||
+ if (!this.loggedInvalidBlockState) {
|
||||
+ this.loggedInvalidBlockState = true;
|
||||
+ LevelChunk.LOGGER.warn("Block entity {} @ {} state {} invalid for ticking:", new Object[]{LogUtils.defer(this::getType), LogUtils.defer(this::getPos), blockState});
|
||||
+ LevelChunk.LOGGER.warn("Block entity {} @ {} state {} invalid for ticking:", LogUtils.defer(this::getType), LogUtils.defer(this::getPos), blockState);
|
||||
+ }
|
||||
+ // Paper end - Remove the Block Entity if it's invalid
|
||||
+ }
|
||||
+
|
||||
}
|
||||
|
||||
profilerFiller.pop();
|
||||
} catch (Throwable var5) {
|
||||
|
|
|
@ -1,13 +1,5 @@
|
|||
--- a/net/minecraft/world/level/levelgen/structure/structures/MineshaftPieces.java
|
||||
+++ b/net/minecraft/world/level/levelgen/structure/structures/MineshaftPieces.java
|
||||
@@ -8,6 +_,7 @@
|
||||
import net.minecraft.core.Direction;
|
||||
import net.minecraft.nbt.CompoundTag;
|
||||
import net.minecraft.nbt.NbtOps;
|
||||
+import net.minecraft.nbt.Tag;
|
||||
import net.minecraft.resources.ResourceKey;
|
||||
import net.minecraft.tags.BiomeTags;
|
||||
import net.minecraft.util.RandomSource;
|
||||
@@ -401,10 +_,13 @@
|
||||
BlockPos worldPos = this.getWorldPos(1, 0, i8);
|
||||
if (box.isInside(worldPos) && this.isInterior(level, 1, 0, i8, box)) {
|
||||
|
|
|
@ -1,13 +1,5 @@
|
|||
--- a/net/minecraft/world/level/levelgen/structure/templatesystem/StructureTemplate.java
|
||||
+++ b/net/minecraft/world/level/levelgen/structure/templatesystem/StructureTemplate.java
|
||||
@@ -25,6 +_,7 @@
|
||||
import net.minecraft.nbt.IntTag;
|
||||
import net.minecraft.nbt.ListTag;
|
||||
import net.minecraft.nbt.NbtUtils;
|
||||
+import net.minecraft.nbt.Tag;
|
||||
import net.minecraft.resources.ResourceLocation;
|
||||
import net.minecraft.util.RandomSource;
|
||||
import net.minecraft.world.Clearable;
|
||||
@@ -54,6 +_,10 @@
|
||||
import net.minecraft.world.phys.Vec3;
|
||||
import net.minecraft.world.phys.shapes.BitSetDiscreteVoxelShape;
|
||||
|
@ -143,15 +135,14 @@
|
|||
return NbtUtils.addCurrentDataVersion(tag);
|
||||
}
|
||||
|
||||
@@ -720,6 +_,13 @@
|
||||
@@ -720,6 +_,12 @@
|
||||
this.entityInfoList.add(new StructureTemplate.StructureEntityInfo(vec3, blockPos, compound1));
|
||||
}
|
||||
}
|
||||
+
|
||||
+ // CraftBukkit start - PDC
|
||||
+ Tag base = tag.get("BukkitValues");
|
||||
+ if (base instanceof CompoundTag) {
|
||||
+ this.persistentDataContainer.putAll((CompoundTag) base);
|
||||
+ if (tag.get("BukkitValues") instanceof CompoundTag compoundTag) {
|
||||
+ this.persistentDataContainer.putAll(compoundTag);
|
||||
+ }
|
||||
+ // CraftBukkit end
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue