mirror of
https://github.com/PaperMC/Paper.git
synced 2025-01-31 03:50:36 +01:00
more more more more more more more more more work
This commit is contained in:
parent
26dc16de31
commit
2b7e17a127
48 changed files with 33 additions and 34 deletions
patches/server
Add-Alternate-Current-redstone-implementation.patchAdd-EntityDyeEvent-and-CollarColorable-interface.patchAdd-PlayerStopUsingItemEvent.patchAdd-TameableDeathMessageEvent.patchAdd-WardenAngerChangeEvent.patchAdd-missing-important-BlockStateListPopulator-method.patchAdd-option-for-strict-advancement-dimension-checks.patchAdd-pre-unbreaking-amount-to-PlayerItemDamageEvent.patchAdd-support-for-Proxy-Protocol.patchAllow-to-change-the-podium-for-the-EnderDragon.patchBuffer-OOB-setBlock-calls.patchDisable-component-selector-resolving-in-books-by-def.patchDo-not-accept-invalid-client-settings.patchDon-t-allow-vehicle-movement-from-players-while-tele.patchDon-t-tick-markers.patchDont-resent-entity-on-art-update.patchEnsure-entity-passenger-world-matches-ridden-entity.patchExpose-furnace-minecart-push-values.patchFallingBlock-auto-expire-setting.patchFire-CauldronLevelChange-on-initial-fill.patchFix-CME-in-CraftPersistentDataTypeRegistry.patchFix-FurnaceInventory-for-smokers-and-blast-furnaces.patchFix-NBT-pieces-overriding-a-block-entity-during-worl.patchFix-OfflinePlayer-getBedSpawnLocation.patchFix-StructureGrowEvent-species-for-RED_MUSHROOM.patchFix-cancelling-ProjectileHitEvent-for-piercing-arrow.patchFix-falling-block-spawn-methods.patchFix-new-block-data-for-EntityChangeBlockEvent.patchFix-saving-in-unloadWorld.patchFix-slime-spawners-not-spawning-outside-slime-chunks.patchFix-swamp-hut-cat-generation-deadlock.patchGuard-against-invalid-entity-positions.patchImplement-enchantWithLevels-API.patchImplement-getComputedBiome-API.patchMake-some-itemstacks-nonnull.patchMore-Projectile-API.patchNameable-Banner-API.patchPass-ServerLevel-for-gamerule-callbacks.patchPrevent-entity-loading-causing-async-lookups.patchPrevent-tile-entity-copies-loading-chunks.patchSanitize-Sent-BlockEntity-NBT.patchThrow-exception-on-world-create-while-being-ticked.patchTrigger-bee_nest_destroyed-trigger-in-the-correct-pl.patchUse-username-instead-of-display-name-in-PlayerList-g.patchWorldCreator-keepSpawnLoaded.patchcache-resource-keys.patchfix-player-loottables-running-when-mob-loot-gamerule.patchfix-powder-snow-cauldrons-not-turning-to-water.patch
|
@ -2038,9 +2038,9 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000
|
|||
--- a/src/main/java/net/minecraft/world/level/Level.java
|
||||
+++ b/src/main/java/net/minecraft/world/level/Level.java
|
||||
@@ -0,0 +0,0 @@ public abstract class Level implements LevelAccessor, AutoCloseable {
|
||||
return ret;
|
||||
|
||||
private ExplosionInteraction() {}
|
||||
}
|
||||
// Paper end
|
||||
+
|
||||
+ // Paper start - optimize redstone (Alternate Current)
|
||||
+ public alternate.current.wire.WireHandler getWireHandler() {
|
|
@ -57,10 +57,11 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000
|
|||
--- a/src/main/java/org/bukkit/craftbukkit/util/DummyGeneratorAccess.java
|
||||
+++ b/src/main/java/org/bukkit/craftbukkit/util/DummyGeneratorAccess.java
|
||||
@@ -0,0 +0,0 @@ public class DummyGeneratorAccess implements WorldGenLevel {
|
||||
|
||||
@Override
|
||||
public <T> void getEntitiesByClass(Class<? extends T> clazz, Entity except, AABB box, List<? super T> into, Predicate<? super T> predicate) {}
|
||||
public boolean destroyBlock(BlockPos pos, boolean drop, Entity breakingEntity, int maxUpdateDepth) {
|
||||
return false; // SPIGOT-6515
|
||||
}
|
||||
+
|
||||
+ // Paper start
|
||||
+ @Override
|
||||
+ public void scheduleTick(BlockPos pos, Fluid fluid, int delay) {
|
||||
+ }
|
||||
|
@ -72,5 +73,5 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000
|
|||
+ @Override
|
||||
+ public void scheduleTick(BlockPos pos, Fluid fluid, int delay, net.minecraft.world.ticks.TickPriority priority) {
|
||||
+ }
|
||||
// Paper end
|
||||
+ // Paper end
|
||||
}
|
|
@ -14,12 +14,12 @@ diff --git a/src/main/java/net/minecraft/advancements/critereon/LocationPredicat
|
|||
index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 100644
|
||||
--- a/src/main/java/net/minecraft/advancements/critereon/LocationPredicate.java
|
||||
+++ b/src/main/java/net/minecraft/advancements/critereon/LocationPredicate.java
|
||||
@@ -0,0 +0,0 @@ public class LocationPredicate {
|
||||
@@ -0,0 +0,0 @@ public record LocationPredicate(Optional<LocationPredicate.PositionPredicate> po
|
||||
public boolean matches(ServerLevel world, double x, double y, double z) {
|
||||
if (this.position.isPresent() && !this.position.get().matches(x, y, z)) {
|
||||
return false;
|
||||
} else if (!this.z.matches(z)) {
|
||||
return false;
|
||||
- } else if (this.dimension != null && this.dimension != world.dimension()) {
|
||||
+ } else if (this.dimension != null && this.dimension != (io.papermc.paper.configuration.GlobalConfiguration.get().misc.strictAdvancementDimensionCheck ? world.dimension() : org.bukkit.craftbukkit.util.CraftDimensionUtil.getMainDimensionKey(world))) { // Paper
|
||||
- } else if (this.dimension.isPresent() && this.dimension.get() != world.dimension()) {
|
||||
+ } else if (this.dimension.isPresent() && this.dimension.get() != (io.papermc.paper.configuration.GlobalConfiguration.get().misc.strictAdvancementDimensionCheck ? world.dimension() : org.bukkit.craftbukkit.util.CraftDimensionUtil.getMainDimensionKey(world))) { // Paper
|
||||
return false;
|
||||
} else {
|
||||
BlockPos blockPos = BlockPos.containing(x, y, z);
|
|
@ -32,11 +32,11 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000
|
|||
+
|
||||
this.channels.add(((ServerBootstrap) ((ServerBootstrap) (new ServerBootstrap()).channel(oclass)).childHandler(new ChannelInitializer<Channel>() {
|
||||
protected void initChannel(Channel channel) {
|
||||
try {
|
||||
Connection.setInitialProtocolAttributes(channel);
|
||||
@@ -0,0 +0,0 @@ public class ServerConnectionListener {
|
||||
int j = ServerConnectionListener.this.server.getRateLimitPacketsPerSecond();
|
||||
Connection object = j > 0 ? new RateKickingConnection(j) : new Connection(PacketFlow.SERVERBOUND); // CraftBukkit - decompile error
|
||||
|
||||
//ServerConnectionListener.this.connections.add(object); // Paper
|
||||
+ // Paper start - Add support for Proxy Protocol
|
||||
+ if (io.papermc.paper.configuration.GlobalConfiguration.get().proxies.proxyProtocol) {
|
||||
+ channel.pipeline().addAfter("timeout", "haproxy-decoder", new io.netty.handler.codec.haproxy.HAProxyMessageDecoder());
|
||||
|
@ -60,7 +60,6 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000
|
|||
+ });
|
||||
+ }
|
||||
+ // Paper end
|
||||
+
|
||||
//ServerConnectionListener.this.connections.add(object);
|
||||
pending.add(object); // Paper
|
||||
channelpipeline.addLast("packet_handler", (ChannelHandler) object);
|
||||
((Connection) object).configurePacketHandler(channelpipeline);
|
||||
((Connection) object).setListenerForServerboundHandshake(new ServerHandshakePacketListenerImpl(ServerConnectionListener.this.server, (Connection) object));
|
|
@ -8,17 +8,17 @@ diff --git a/src/main/java/net/minecraft/server/network/ServerGamePacketListener
|
|||
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
|
||||
@@ -0,0 +0,0 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl
|
||||
@Override
|
||||
public void handleClientInformation(ServerboundClientInformationPacket packet) {
|
||||
PacketUtils.ensureRunningOnSameThread(packet, this, this.player.serverLevel());
|
||||
+ // Paper start - do not accept invalid information
|
||||
+ if (packet.viewDistance() < 0) {
|
||||
+ LOGGER.warn("Disconnecting " + this.player.getScoreboardName() + " for invalid view distance: " + packet.viewDistance());
|
||||
+ if (packet.information().viewDistance() < 0) {
|
||||
+ LOGGER.warn("Disconnecting " + this.player.getScoreboardName() + " for invalid view distance: " + packet.information().viewDistance());
|
||||
+ this.disconnect("Invalid client settings", PlayerKickEvent.Cause.ILLEGAL_ACTION);
|
||||
+ return;
|
||||
+ }
|
||||
+ // Paper end - do not accept invalid information
|
||||
this.player.updateOptions(packet);
|
||||
this.player.updateOptions(packet.information());
|
||||
}
|
||||
|
|
@ -10,7 +10,7 @@ diff --git a/src/main/java/net/minecraft/server/network/ServerGamePacketListener
|
|||
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
|
||||
@@ -0,0 +0,0 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl
|
||||
this.disconnect(Component.translatable("multiplayer.disconnect.invalid_vehicle_movement"), org.bukkit.event.player.PlayerKickEvent.Cause.INVALID_VEHICLE_MOVEMENT); // Paper - kick event cause
|
||||
} else {
|
||||
Entity entity = this.player.getRootVehicle();
|
|
@ -39,12 +39,11 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000
|
|||
--- a/src/main/java/org/spigotmc/ActivationRange.java
|
||||
+++ b/src/main/java/org/spigotmc/ActivationRange.java
|
||||
@@ -0,0 +0,0 @@ public class ActivationRange
|
||||
ActivationType.VILLAGER.boundingBox = player.getBoundingBox().inflate( villagerActivationRange, worldHeight, villagerActivationRange );
|
||||
// Paper end
|
||||
|
||||
// Paper start
|
||||
- java.util.List<Entity> entities = world.getEntities((Entity)null, maxBB, null);
|
||||
+ java.util.function.Predicate<Entity> entityPredicate = world.paperConfig().entities.markers.tick ? null : (e) -> !(e instanceof net.minecraft.world.entity.Marker); // Configurable marker ticking
|
||||
+ java.util.List<Entity> entities = world.getEntities((Entity)null, maxBB, entityPredicate);
|
||||
for (int i = 0; i < entities.size(); i++) {
|
||||
Entity entity = entities.get(i);
|
||||
ActivationRange.activateEntity(entity);
|
||||
- world.getEntities().get(maxBB, ActivationRange::activateEntity);
|
||||
+ world.getEntities().get(world.paperConfig().entities.markers.tick ? null : (e) -> !(e instanceof net.minecraft.world.entity.Marker), maxBB, ActivationRange::activateEntity); // Paper - configurable marker ticking
|
||||
}
|
||||
MinecraftTimings.entityActivationCheckTimer.stopTiming();
|
||||
}
|
|
@ -140,7 +140,7 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000
|
|||
// CraftBukkit start
|
||||
- if (CraftEventFactory.callEntityChangeBlockEvent(this, pos, Blocks.AIR.defaultBlockState())) {
|
||||
+ if (CraftEventFactory.callEntityChangeBlockEvent(this, pos, iblockdata.getFluidState().createLegacyBlock())) { // Paper - fix wrong block state
|
||||
this.level().removeBlock(pos, false);
|
||||
this.level().destroyBlock(pos, false, this);
|
||||
}
|
||||
// CraftBukkit end
|
||||
diff --git a/src/main/java/net/minecraft/world/level/block/ChorusFlowerBlock.java b/src/main/java/net/minecraft/world/level/block/ChorusFlowerBlock.java
|
|
@ -41,5 +41,5 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000
|
|||
+ }
|
||||
+ // Paper end - block invalid positions
|
||||
// Paper end
|
||||
// Paper start - rewrite chunk system
|
||||
if (this.updatingSectionStatus) {
|
||||
// Paper start - fix MC-4
|
||||
if (this instanceof ItemEntity) {
|
|
@ -21,7 +21,7 @@ diff --git a/src/main/java/net/minecraft/server/network/ServerGamePacketListener
|
|||
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
|
||||
@@ -0,0 +0,0 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl
|
||||
this.player = this.server.getPlayerList().respawn(this.player, false, RespawnReason.DEATH);
|
||||
if (this.server.isHardcore()) {
|
||||
this.player.setGameMode(GameType.SPECTATOR, org.bukkit.event.player.PlayerGameModeChangeEvent.Cause.HARDCORE_DEATH, null); // Paper
|
|
@ -8,7 +8,7 @@ diff --git a/src/main/java/net/minecraft/server/network/ServerGamePacketListener
|
|||
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
|
||||
@@ -0,0 +0,0 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl
|
||||
BlockPos blockposition = BlockEntity.getPosFromTag(nbttagcompound);
|
||||
|
||||
if (this.player.level().isLoaded(blockposition)) {
|
|
@ -14,5 +14,5 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000
|
|||
|
||||
+ internal.keepSpawnInMemory = creator.keepSpawnLoaded().toBooleanOrElse(internal.getWorld().getKeepSpawnInMemory()); // Paper
|
||||
this.getServer().prepareLevels(internal.getChunkSource().chunkMap.progressListener, internal);
|
||||
//internal.entityManager.tick(); // SPIGOT-6526: Load pending entities so they are available to the API // Paper - rewrite chunk system
|
||||
internal.entityManager.tick(); // SPIGOT-6526: Load pending entities so they are available to the API
|
||||
|
Loading…
Add table
Reference in a new issue