mirror of
https://github.com/PaperMC/Paper.git
synced 2025-08-09 08:32:07 -07:00
Update fluid chunk loading patch
This commit is contained in:
@@ -0,0 +1,22 @@
|
|||||||
|
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
||||||
|
From: 0x22 <0x22@futureclient.net>
|
||||||
|
Date: Thu, 26 Apr 2018 04:41:11 -0400
|
||||||
|
Subject: [PATCH] Fix exploit that allowed colored signs to be created
|
||||||
|
|
||||||
|
|
||||||
|
diff --git a/src/main/java/net/minecraft/world/level/block/entity/SignBlockEntity.java b/src/main/java/net/minecraft/world/level/block/entity/SignBlockEntity.java
|
||||||
|
index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 100644
|
||||||
|
--- a/src/main/java/net/minecraft/world/level/block/entity/SignBlockEntity.java
|
||||||
|
+++ b/src/main/java/net/minecraft/world/level/block/entity/SignBlockEntity.java
|
||||||
|
@@ -0,0 +0,0 @@ public class SignBlockEntity extends BlockEntity implements CommandSource { // C
|
||||||
|
Style chatmodifier = text.getMessage(i, player.isTextFilteringEnabled()).getStyle();
|
||||||
|
|
||||||
|
if (player.isTextFilteringEnabled()) {
|
||||||
|
- text = text.setMessage(i, Component.literal(filteredtext.filteredOrEmpty()).setStyle(chatmodifier));
|
||||||
|
+ text = text.setMessage(i, Component.literal(net.minecraft.SharedConstants.filterText(filteredtext.filteredOrEmpty())).setStyle(chatmodifier)); // Paper - filter sign text to chat only
|
||||||
|
} else {
|
||||||
|
- text = text.setMessage(i, Component.literal(filteredtext.raw()).setStyle(chatmodifier), Component.literal(filteredtext.filteredOrEmpty()).setStyle(chatmodifier));
|
||||||
|
+ text = text.setMessage(i, Component.literal(net.minecraft.SharedConstants.filterText(filteredtext.raw())).setStyle(chatmodifier), Component.literal(net.minecraft.SharedConstants.filterText(filteredtext.filteredOrEmpty())).setStyle(chatmodifier)); // Paper - filter sign text to chat only
|
||||||
|
}
|
||||||
|
|
||||||
|
// CraftBukkit start
|
@@ -79,8 +79,8 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000
|
|||||||
- }
|
- }
|
||||||
+ // Paper - move into try block to only write if successfully serialized
|
+ // Paper - move into try block to only write if successfully serialized
|
||||||
}
|
}
|
||||||
|
// Paper start
|
||||||
} finally { // Paper start
|
return;
|
||||||
@@ -0,0 +0,0 @@ public class RegionFileStorage implements AutoCloseable {
|
@@ -0,0 +0,0 @@ public class RegionFileStorage implements AutoCloseable {
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -30,13 +30,13 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000
|
|||||||
|
|
||||||
if (fluid.getType().isSame(this) && this.canPassThroughWall(enumdirection, world, pos, state, blockposition1, iblockdata1)) {
|
if (fluid.getType().isSame(this) && this.canPassThroughWall(enumdirection, world, pos, state, blockposition1, iblockdata1)) {
|
||||||
@@ -0,0 +0,0 @@ public abstract class FlowingFluid extends Fluid {
|
@@ -0,0 +0,0 @@ public abstract class FlowingFluid extends Fluid {
|
||||||
if (enumdirection1 != enumdirection) {
|
if (enumdirection1 != direction) {
|
||||||
BlockPos blockposition2 = blockposition.relative(enumdirection1);
|
BlockPos blockposition2 = pos.relative(enumdirection1);
|
||||||
short short0 = FlowingFluid.getCacheKey(blockposition1, blockposition2);
|
short short0 = FlowingFluid.getCacheKey(fromPos, blockposition2);
|
||||||
- Pair<BlockState, FluidState> pair = (Pair) short2objectmap.computeIfAbsent(short0, (short1) -> {
|
- Pair<BlockState, FluidState> pair = (Pair) stateCache.computeIfAbsent(short0, (short1) -> {
|
||||||
- BlockState iblockdata1 = world.getBlockState(blockposition2);
|
- BlockState iblockdata1 = world.getBlockState(blockposition2);
|
||||||
+ // Paper start - avoid loading chunks
|
+ // Paper start - avoid loading chunks
|
||||||
+ Pair<BlockState, FluidState> pair = short2objectmap.get(short0);
|
+ Pair<BlockState, FluidState> pair = stateCache.get(short0);
|
||||||
+ if (pair == null) {
|
+ if (pair == null) {
|
||||||
+ BlockState iblockdatax = world.getBlockStateIfLoaded(blockposition2);
|
+ BlockState iblockdatax = world.getBlockStateIfLoaded(blockposition2);
|
||||||
+ if (iblockdatax == null) {
|
+ if (iblockdatax == null) {
|
||||||
@@ -46,7 +46,7 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000
|
|||||||
- return Pair.of(iblockdata1, iblockdata1.getFluidState());
|
- return Pair.of(iblockdata1, iblockdata1.getFluidState());
|
||||||
- });
|
- });
|
||||||
+ pair = Pair.of(iblockdatax, iblockdatax.getFluidState());
|
+ pair = Pair.of(iblockdatax, iblockdatax.getFluidState());
|
||||||
+ short2objectmap.put(short0, pair);
|
+ stateCache.put(short0, pair);
|
||||||
+ }
|
+ }
|
||||||
+ // Paper end
|
+ // Paper end
|
||||||
BlockState iblockdata1 = (BlockState) pair.getFirst();
|
BlockState iblockdata1 = (BlockState) pair.getFirst();
|
@@ -1,22 +0,0 @@
|
|||||||
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
|
||||||
From: 0x22 <0x22@futureclient.net>
|
|
||||||
Date: Thu, 26 Apr 2018 04:41:11 -0400
|
|
||||||
Subject: [PATCH] Fix exploit that allowed colored signs to be created
|
|
||||||
|
|
||||||
|
|
||||||
diff --git a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java
|
|
||||||
index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 100644
|
|
||||||
--- a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java
|
|
||||||
+++ b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java
|
|
||||||
@@ -0,0 +0,0 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Tic
|
|
||||||
FilteredText filteredtext = (FilteredText) signText.get(i);
|
|
||||||
|
|
||||||
if (this.player.isTextFilteringEnabled()) {
|
|
||||||
- lines.add(net.kyori.adventure.text.Component.text(filteredtext.filteredOrEmpty())); // Paper - adventure
|
|
||||||
+ lines.add(net.kyori.adventure.text.Component.text(SharedConstants.filterText(filteredtext.filteredOrEmpty()))); // Paper - adventure
|
|
||||||
} else {
|
|
||||||
- lines.add(net.kyori.adventure.text.Component.text(filteredtext.raw())); // Paper - adventure
|
|
||||||
+ lines.add(net.kyori.adventure.text.Component.text(SharedConstants.filterText(filteredtext.raw()))); // Paper - adventure
|
|
||||||
}
|
|
||||||
}
|
|
||||||
SignChangeEvent event = new SignChangeEvent((org.bukkit.craftbukkit.block.CraftBlock) player.getWorld().getBlockAt(x, y, z), this.player.getBukkitEntity(), lines);
|
|
Reference in New Issue
Block a user