Mirror von
https://github.com/PaperMC/Paper.git
synchronisiert 2024-12-22 06:20:06 +01:00
359 Zeilen
49 KiB
Diff
359 Zeilen
49 KiB
Diff
|
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
||
|
From: Aikar <aikar@aikar.co>
|
||
|
Date: Wed, 30 Mar 2016 19:36:20 -0400
|
||
|
Subject: [PATCH] MC Dev fixes
|
||
|
|
||
|
|
||
|
diff --git a/src/main/java/net/minecraft/Util.java b/src/main/java/net/minecraft/Util.java
|
||
|
index 255b39848a4071775a7f2f0dd2e54eb4be18e109..8ba68f03c1dd87826185808e9e7080647a55c2dd 100644
|
||
|
--- a/src/main/java/net/minecraft/Util.java
|
||
|
+++ b/src/main/java/net/minecraft/Util.java
|
||
|
@@ -306,7 +306,7 @@ public class Util {
|
||
|
}
|
||
|
|
||
|
public static <K> Strategy<K> identityStrategy() {
|
||
|
- return Util.IdentityStrategy.INSTANCE;
|
||
|
+ return (Strategy<K>) Util.IdentityStrategy.INSTANCE; // Paper - decompile fix
|
||
|
}
|
||
|
|
||
|
public static <V> CompletableFuture<List<V>> sequence(List<? extends CompletableFuture<? extends V>> futures) {
|
||
|
diff --git a/src/main/java/net/minecraft/core/BlockPos.java b/src/main/java/net/minecraft/core/BlockPos.java
|
||
|
index 1bd6ef643b17b059eb525035496b816a098279c4..3cf71f85da94bcda5d4527b5f3e18d959c6c4634 100644
|
||
|
--- a/src/main/java/net/minecraft/core/BlockPos.java
|
||
|
+++ b/src/main/java/net/minecraft/core/BlockPos.java
|
||
|
@@ -367,12 +367,12 @@ public class BlockPos extends Vec3i {
|
||
|
if (this.index == l) {
|
||
|
return this.endOfData();
|
||
|
} else {
|
||
|
- int i = this.index % i;
|
||
|
- int j = this.index / i;
|
||
|
- int k = j % j;
|
||
|
- int l = j / j;
|
||
|
+ int offsetX = this.index % i; // Paper - decomp fix
|
||
|
+ int u = this.index / i; // Paper - decomp fix
|
||
|
+ int offsetY = u % j; // Paper - decomp fix
|
||
|
+ int offsetZ = u / j; // Paper - decomp fix
|
||
|
++this.index;
|
||
|
- return this.cursor.set(startX + i, startY + k, startZ + l);
|
||
|
+ return this.cursor.set(startX + offsetX, startY + offsetY, startZ + offsetZ); // Paper - decomp fix
|
||
|
}
|
||
|
}
|
||
|
};
|
||
|
diff --git a/src/main/java/net/minecraft/nbt/ListTag.java b/src/main/java/net/minecraft/nbt/ListTag.java
|
||
|
index 2f8443ba50d34ff961ae5345c470e809c720fd29..88bac72edf19c578902f49d20353989ed4d96f8f 100644
|
||
|
--- a/src/main/java/net/minecraft/nbt/ListTag.java
|
||
|
+++ b/src/main/java/net/minecraft/nbt/ListTag.java
|
||
|
@@ -2,9 +2,13 @@ package net.minecraft.nbt;
|
||
|
|
||
|
import com.google.common.collect.Iterables;
|
||
|
import com.google.common.collect.Lists;
|
||
|
+import it.unimi.dsi.fastutil.bytes.ByteOpenHashSet;
|
||
|
+import it.unimi.dsi.fastutil.bytes.ByteSet;
|
||
|
+
|
||
|
import java.io.DataInput;
|
||
|
import java.io.DataOutput;
|
||
|
import java.io.IOException;
|
||
|
+import java.util.Arrays;
|
||
|
import java.util.List;
|
||
|
import java.util.Objects;
|
||
|
|
||
|
@@ -45,6 +49,7 @@ public class ListTag extends CollectionTag<Tag> {
|
||
|
return "TAG_List";
|
||
|
}
|
||
|
};
|
||
|
+ private static final ByteSet INLINE_ELEMENT_TYPES = new ByteOpenHashSet(Arrays.asList((byte) 1, (byte) 2, (byte) 3, (byte) 4, (byte) 5, (byte) 6)); // Paper - decompiler fix
|
||
|
private final List<Tag> list;
|
||
|
private byte type;
|
||
|
|
||
|
diff --git a/src/main/java/net/minecraft/nbt/NbtIo.java b/src/main/java/net/minecraft/nbt/NbtIo.java
|
||
|
index 58443139562d1f90465be43e9be42f5cca7fc80d..0f4d9e94438d62cb5eeb9ca0e430d8dd7ba54ef7 100644
|
||
|
--- a/src/main/java/net/minecraft/nbt/NbtIo.java
|
||
|
+++ b/src/main/java/net/minecraft/nbt/NbtIo.java
|
||
|
@@ -19,6 +19,7 @@ import javax.annotation.Nullable;
|
||
|
import net.minecraft.CrashReport;
|
||
|
import net.minecraft.CrashReportCategory;
|
||
|
import net.minecraft.ReportedException;
|
||
|
+import io.netty.buffer.ByteBufInputStream; // Paper
|
||
|
|
||
|
public class NbtIo {
|
||
|
|
||
|
@@ -180,7 +181,7 @@ public class NbtIo {
|
||
|
|
||
|
public static CompoundTag read(DataInput input, NbtAccounter tracker) throws IOException {
|
||
|
// Spigot start
|
||
|
- if ( input instanceof io.netty.buffer.ByteBufInputStream )
|
||
|
+ if ( input instanceof ByteBufInputStream) // Paper
|
||
|
{
|
||
|
input = new DataInputStream(new org.spigotmc.LimitStream((InputStream) input, tracker));
|
||
|
}
|
||
|
diff --git a/src/main/java/net/minecraft/nbt/Tag.java b/src/main/java/net/minecraft/nbt/Tag.java
|
||
|
index 440aa82b4488ed20f9fcf60f1e87cc84ea74e370..08a0327feacd81c6e4c66182cee926c6068b8aa8 100644
|
||
|
--- a/src/main/java/net/minecraft/nbt/Tag.java
|
||
|
+++ b/src/main/java/net/minecraft/nbt/Tag.java
|
||
|
@@ -33,7 +33,7 @@ public interface Tag {
|
||
|
|
||
|
TagType<?> getType();
|
||
|
|
||
|
- Tag copy();
|
||
|
+ public Tag copy(); // Paper - decompile fix
|
||
|
|
||
|
default String getAsString() {
|
||
|
return (new StringTagVisitor()).visit(this);
|
||
|
diff --git a/src/main/java/net/minecraft/network/ConnectionProtocol.java b/src/main/java/net/minecraft/network/ConnectionProtocol.java
|
||
|
index 6b66e1ad66dccacb5c959da924d7857358488678..e722cf3a8e816b0c7405e6282591d9fa8d5bfa61 100644
|
||
|
--- a/src/main/java/net/minecraft/network/ConnectionProtocol.java
|
||
|
+++ b/src/main/java/net/minecraft/network/ConnectionProtocol.java
|
||
|
@@ -12,6 +12,7 @@ import javax.annotation.Nullable;
|
||
|
import net.minecraft.Util;
|
||
|
import net.minecraft.network.protocol.Packet;
|
||
|
import net.minecraft.network.protocol.PacketFlow;
|
||
|
+import net.minecraft.network.protocol.game.ClientGamePacketListener;
|
||
|
import net.minecraft.network.protocol.game.ClientboundAddEntityPacket;
|
||
|
import net.minecraft.network.protocol.game.ClientboundAddExperienceOrbPacket;
|
||
|
import net.minecraft.network.protocol.game.ClientboundAddMobPacket;
|
||
|
@@ -113,6 +114,7 @@ import net.minecraft.network.protocol.game.ClientboundUpdateAttributesPacket;
|
||
|
import net.minecraft.network.protocol.game.ClientboundUpdateMobEffectPacket;
|
||
|
import net.minecraft.network.protocol.game.ClientboundUpdateRecipesPacket;
|
||
|
import net.minecraft.network.protocol.game.ClientboundUpdateTagsPacket;
|
||
|
+import net.minecraft.network.protocol.game.ServerGamePacketListener;
|
||
|
import net.minecraft.network.protocol.game.ServerboundAcceptTeleportationPacket;
|
||
|
import net.minecraft.network.protocol.game.ServerboundBlockEntityTagQuery;
|
||
|
import net.minecraft.network.protocol.game.ServerboundChangeDifficultyPacket;
|
||
|
@@ -159,25 +161,32 @@ import net.minecraft.network.protocol.game.ServerboundTeleportToEntityPacket;
|
||
|
import net.minecraft.network.protocol.game.ServerboundUseItemOnPacket;
|
||
|
import net.minecraft.network.protocol.game.ServerboundUseItemPacket;
|
||
|
import net.minecraft.network.protocol.handshake.ClientIntentionPacket;
|
||
|
+import net.minecraft.network.protocol.handshake.ServerHandshakePacketListener;
|
||
|
+import net.minecraft.network.protocol.login.ClientLoginPacketListener;
|
||
|
import net.minecraft.network.protocol.login.ClientboundCustomQueryPacket;
|
||
|
import net.minecraft.network.protocol.login.ClientboundGameProfilePacket;
|
||
|
import net.minecraft.network.protocol.login.ClientboundHelloPacket;
|
||
|
import net.minecraft.network.protocol.login.ClientboundLoginCompressionPacket;
|
||
|
import net.minecraft.network.protocol.login.ClientboundLoginDisconnectPacket;
|
||
|
+import net.minecraft.network.protocol.login.ServerLoginPacketListener;
|
||
|
import net.minecraft.network.protocol.login.ServerboundCustomQueryPacket;
|
||
|
import net.minecraft.network.protocol.login.ServerboundHelloPacket;
|
||
|
import net.minecraft.network.protocol.login.ServerboundKeyPacket;
|
||
|
+import net.minecraft.network.protocol.status.ClientStatusPacketListener;
|
||
|
import net.minecraft.network.protocol.status.ClientboundPongResponsePacket;
|
||
|
import net.minecraft.network.protocol.status.ClientboundStatusResponsePacket;
|
||
|
+import net.minecraft.network.protocol.status.ServerStatusPacketListener;
|
||
|
import net.minecraft.network.protocol.status.ServerboundPingRequestPacket;
|
||
|
import net.minecraft.network.protocol.status.ServerboundStatusRequestPacket;
|
||
|
import org.apache.logging.log4j.LogManager;
|
||
|
|
||
|
public enum ConnectionProtocol {
|
||
|
- HANDSHAKING(-1, protocol().addFlow(PacketFlow.SERVERBOUND, (new ConnectionProtocol.PacketSet()).addPacket(ClientIntentionPacket.class, ClientIntentionPacket::new))),
|
||
|
- PLAY(0, protocol().addFlow(PacketFlow.CLIENTBOUND, (new ConnectionProtocol.PacketSet()).addPacket(ClientboundAddEntityPacket.class, ClientboundAddEntityPacket::new).addPacket(ClientboundAddExperienceOrbPacket.class, ClientboundAddExperienceOrbPacket::new).addPacket(ClientboundAddMobPacket.class, ClientboundAddMobPacket::new).addPacket(ClientboundAddPaintingPacket.class, ClientboundAddPaintingPacket::new).addPacket(ClientboundAddPlayerPacket.class, ClientboundAddPlayerPacket::new).addPacket(ClientboundAddVibrationSignalPacket.class, ClientboundAddVibrationSignalPacket::new).addPacket(ClientboundAnimatePacket.class, ClientboundAnimatePacket::new).addPacket(ClientboundAwardStatsPacket.class, ClientboundAwardStatsPacket::new).addPacket(ClientboundBlockBreakAckPacket.class, ClientboundBlockBreakAckPacket::new).addPacket(ClientboundBlockDestructionPacket.class, ClientboundBlockDestructionPacket::new).addPacket(ClientboundBlockEntityDataPacket.class, ClientboundBlockEntityDataPacket::new).addPacket(ClientboundBlockEventPacket.class, ClientboundBlockEventPacket::new).addPacket(ClientboundBlockUpdatePacket.class, ClientboundBlockUpdatePacket::new).addPacket(ClientboundBossEventPacket.class, ClientboundBossEventPacket::new).addPacket(ClientboundChangeDifficultyPacket.class, ClientboundChangeDifficultyPacket::new).addPacket(ClientboundChatPacket.class, ClientboundChatPacket::new).addPacket(ClientboundClearTitlesPacket.class, ClientboundClearTitlesPacket::new).addPacket(ClientboundCommandSuggestionsPacket.class, ClientboundCommandSuggestionsPacket::new).addPacket(ClientboundCommandsPacket.class, ClientboundCommandsPacket::new).addPacket(ClientboundContainerClosePacket.class, ClientboundContainerClosePacket::new).addPacket(ClientboundContainerSetContentPacket.class, ClientboundContainerSetContentPacket::new).addPacket(ClientboundContainerSetDataPacket.class, ClientboundContainerSetDataPacket::new).addPacket(ClientboundContainerSetSlotPacket.class, ClientboundContainerSetSlotPacket::new).addPacket(ClientboundCooldownPacket.class, ClientboundCooldownPacket::new).addPacket(ClientboundCustomPayloadPacket.class, ClientboundCustomPayloadPacket::new).addPacket(ClientboundCustomSoundPacket.class, ClientboundCustomSoundPacket::new).addPacket(ClientboundDisconnectPacket.class, ClientboundDisconnectPacket::new).addPacket(ClientboundEntityEventPacket.class, ClientboundEntityEventPacket::new).addPacket(ClientboundExplodePacket.class, ClientboundExplodePacket::new).addPacket(ClientboundForgetLevelChunkPacket.class, ClientboundForgetLevelChunkPacket::new).addPacket(ClientboundGameEventPacket.class, ClientboundGameEventPacket::new).addPacket(ClientboundHorseScreenOpenPacket.class, ClientboundHorseScreenOpenPacket::new).addPacket(ClientboundInitializeBorderPacket.class, ClientboundInitializeBorderPacket::new).addPacket(ClientboundKeepAlivePacket.class, ClientboundKeepAlivePacket::new).addPacket(ClientboundLevelChunkPacket.class, ClientboundLevelChunkPacket::new).addPacket(ClientboundLevelEventPacket.class, ClientboundLevelEventPacket::new).addPacket(ClientboundLevelParticlesPacket.class, ClientboundLevelParticlesPacket::new).addPacket(ClientboundLightUpdatePacket.class, ClientboundLightUpdatePacket::new).addPacket(ClientboundLoginPacket.class, ClientboundLoginPacket::new).addPacket(ClientboundMapItemDataPacket.class, ClientboundMapItemDataPacket::new).addPacket(ClientboundMerchantOffersPacket.class, ClientboundMerchantOffersPacket::new).addPacket(ClientboundMoveEntityPacket.Pos.class, ClientboundMoveEntityPacket.Pos::read).addPacket(ClientboundMoveEntityPacket.PosRot.class, ClientboundMoveEntityPacket.PosRot::read).addPacket(ClientboundMoveEntityPacket.Rot.class, ClientboundMoveEntityPacket.Rot::read).addPacket(ClientboundMoveVehiclePacket.class, ClientboundMoveVehiclePacket::new).addPacket(ClientboundOpenBookPacket.class, ClientboundOpenBookPacket::new).addPacket(ClientboundOpenScreenPacket.class, ClientboundOpenScreenPacket::new).addPacket(ClientboundOpenSignEditorPacket.class, ClientboundOpenSignEditorPacket::new).addPacket(ClientboundPingPa
|
||
|
- STATUS(1, protocol().addFlow(PacketFlow.SERVERBOUND, (new ConnectionProtocol.PacketSet()).addPacket(ServerboundStatusRequestPacket.class, ServerboundStatusRequestPacket::new).addPacket(ServerboundPingRequestPacket.class, ServerboundPingRequestPacket::new)).addFlow(PacketFlow.CLIENTBOUND, (new ConnectionProtocol.PacketSet()).addPacket(ClientboundStatusResponsePacket.class, ClientboundStatusResponsePacket::new).addPacket(ClientboundPongResponsePacket.class, ClientboundPongResponsePacket::new))),
|
||
|
- LOGIN(2, protocol().addFlow(PacketFlow.CLIENTBOUND, (new ConnectionProtocol.PacketSet()).addPacket(ClientboundLoginDisconnectPacket.class, ClientboundLoginDisconnectPacket::new).addPacket(ClientboundHelloPacket.class, ClientboundHelloPacket::new).addPacket(ClientboundGameProfilePacket.class, ClientboundGameProfilePacket::new).addPacket(ClientboundLoginCompressionPacket.class, ClientboundLoginCompressionPacket::new).addPacket(ClientboundCustomQueryPacket.class, ClientboundCustomQueryPacket::new)).addFlow(PacketFlow.SERVERBOUND, (new ConnectionProtocol.PacketSet()).addPacket(ServerboundHelloPacket.class, ServerboundHelloPacket::new).addPacket(ServerboundKeyPacket.class, ServerboundKeyPacket::new).addPacket(ServerboundCustomQueryPacket.class, ServerboundCustomQueryPacket::new)));
|
||
|
+ // Paper start - fix decompile error - add correct generic packet listeners (e.g. ServerHandshakePacketListener) to PacketSet's generic type, matching the packet flow direction
|
||
|
+ HANDSHAKING(-1, protocol().addFlow(PacketFlow.SERVERBOUND, (new ConnectionProtocol.PacketSet<ServerHandshakePacketListener>()).addPacket(ClientIntentionPacket.class, ClientIntentionPacket::new))),
|
||
|
+ PLAY(0, protocol().addFlow(PacketFlow.CLIENTBOUND, (new ConnectionProtocol.PacketSet<ClientGamePacketListener>()).addPacket(ClientboundAddEntityPacket.class, ClientboundAddEntityPacket::new).addPacket(ClientboundAddExperienceOrbPacket.class, ClientboundAddExperienceOrbPacket::new).addPacket(ClientboundAddMobPacket.class, ClientboundAddMobPacket::new).addPacket(ClientboundAddPaintingPacket.class, ClientboundAddPaintingPacket::new).addPacket(ClientboundAddPlayerPacket.class, ClientboundAddPlayerPacket::new).addPacket(ClientboundAddVibrationSignalPacket.class, ClientboundAddVibrationSignalPacket::new).addPacket(ClientboundAnimatePacket.class, ClientboundAnimatePacket::new).addPacket(ClientboundAwardStatsPacket.class, ClientboundAwardStatsPacket::new).addPacket(ClientboundBlockBreakAckPacket.class, ClientboundBlockBreakAckPacket::new).addPacket(ClientboundBlockDestructionPacket.class, ClientboundBlockDestructionPacket::new).addPacket(ClientboundBlockEntityDataPacket.class, ClientboundBlockEntityDataPacket::new).addPacket(ClientboundBlockEventPacket.class, ClientboundBlockEventPacket::new).addPacket(ClientboundBlockUpdatePacket.class, ClientboundBlockUpdatePacket::new).addPacket(ClientboundBossEventPacket.class, ClientboundBossEventPacket::new).addPacket(ClientboundChangeDifficultyPacket.class, ClientboundChangeDifficultyPacket::new).addPacket(ClientboundChatPacket.class, ClientboundChatPacket::new).addPacket(ClientboundClearTitlesPacket.class, ClientboundClearTitlesPacket::new).addPacket(ClientboundCommandSuggestionsPacket.class, ClientboundCommandSuggestionsPacket::new).addPacket(ClientboundCommandsPacket.class, ClientboundCommandsPacket::new).addPacket(ClientboundContainerClosePacket.class, ClientboundContainerClosePacket::new).addPacket(ClientboundContainerSetContentPacket.class, ClientboundContainerSetContentPacket::new).addPacket(ClientboundContainerSetDataPacket.class, ClientboundContainerSetDataPacket::new).addPacket(ClientboundContainerSetSlotPacket.class, ClientboundContainerSetSlotPacket::new).addPacket(ClientboundCooldownPacket.class, ClientboundCooldownPacket::new).addPacket(ClientboundCustomPayloadPacket.class, ClientboundCustomPayloadPacket::new).addPacket(ClientboundCustomSoundPacket.class, ClientboundCustomSoundPacket::new).addPacket(ClientboundDisconnectPacket.class, ClientboundDisconnectPacket::new).addPacket(ClientboundEntityEventPacket.class, ClientboundEntityEventPacket::new).addPacket(ClientboundExplodePacket.class, ClientboundExplodePacket::new).addPacket(ClientboundForgetLevelChunkPacket.class, ClientboundForgetLevelChunkPacket::new).addPacket(ClientboundGameEventPacket.class, ClientboundGameEventPacket::new).addPacket(ClientboundHorseScreenOpenPacket.class, ClientboundHorseScreenOpenPacket::new).addPacket(ClientboundInitializeBorderPacket.class, ClientboundInitializeBorderPacket::new).addPacket(ClientboundKeepAlivePacket.class, ClientboundKeepAlivePacket::new).addPacket(ClientboundLevelChunkPacket.class, ClientboundLevelChunkPacket::new).addPacket(ClientboundLevelEventPacket.class, ClientboundLevelEventPacket::new).addPacket(ClientboundLevelParticlesPacket.class, ClientboundLevelParticlesPacket::new).addPacket(ClientboundLightUpdatePacket.class, ClientboundLightUpdatePacket::new).addPacket(ClientboundLoginPacket.class, ClientboundLoginPacket::new).addPacket(ClientboundMapItemDataPacket.class, ClientboundMapItemDataPacket::new).addPacket(ClientboundMerchantOffersPacket.class, ClientboundMerchantOffersPacket::new).addPacket(ClientboundMoveEntityPacket.Pos.class, ClientboundMoveEntityPacket.Pos::read).addPacket(ClientboundMoveEntityPacket.PosRot.class, ClientboundMoveEntityPacket.PosRot::read).addPacket(ClientboundMoveEntityPacket.Rot.class, ClientboundMoveEntityPacket.Rot::read).addPacket(ClientboundMoveVehiclePacket.class, ClientboundMoveVehiclePacket::new).addPacket(ClientboundOpenBookPacket.class, ClientboundOpenBookPacket::new).addPacket(ClientboundOpenScreenPacket.class, ClientboundOpenScreenPacket::new).addPacket(ClientboundOpenSignEditorPacket.class, ClientboundOpenSignEditorPacket::new).a
|
||
|
+ STATUS(1, protocol().addFlow(PacketFlow.SERVERBOUND, (new ConnectionProtocol.PacketSet<ServerStatusPacketListener>()).addPacket(ServerboundStatusRequestPacket.class, ServerboundStatusRequestPacket::new).addPacket(ServerboundPingRequestPacket.class, ServerboundPingRequestPacket::new)).addFlow(PacketFlow.CLIENTBOUND, (new ConnectionProtocol.PacketSet<ClientStatusPacketListener>()).addPacket(ClientboundStatusResponsePacket.class, ClientboundStatusResponsePacket::new).addPacket(ClientboundPongResponsePacket.class, ClientboundPongResponsePacket::new))),
|
||
|
+ LOGIN(2, protocol().addFlow(PacketFlow.CLIENTBOUND, (new ConnectionProtocol.PacketSet<ClientLoginPacketListener>()).addPacket(ClientboundLoginDisconnectPacket.class, ClientboundLoginDisconnectPacket::new).addPacket(ClientboundHelloPacket.class, ClientboundHelloPacket::new).addPacket(ClientboundGameProfilePacket.class, ClientboundGameProfilePacket::new).addPacket(ClientboundLoginCompressionPacket.class, ClientboundLoginCompressionPacket::new).addPacket(ClientboundCustomQueryPacket.class, ClientboundCustomQueryPacket::new)).addFlow(PacketFlow.SERVERBOUND, (new ConnectionProtocol.PacketSet<ServerLoginPacketListener>()).addPacket(ServerboundHelloPacket.class, ServerboundHelloPacket::new).addPacket(ServerboundKeyPacket.class, ServerboundKeyPacket::new).addPacket(ServerboundCustomQueryPacket.class, ServerboundCustomQueryPacket::new)));
|
||
|
+ // Paper end
|
||
|
|
||
|
private static final int MIN_PROTOCOL_ID = -1;
|
||
|
private static final int MAX_PROTOCOL_ID = 2;
|
||
|
diff --git a/src/main/java/net/minecraft/server/MinecraftServer.java b/src/main/java/net/minecraft/server/MinecraftServer.java
|
||
|
index 8ae7218512a7aa7c26c49da83cbb923ba0ecdf09..ecb775edb17d629855f1be37943f9bc933d93d63 100644
|
||
|
--- a/src/main/java/net/minecraft/server/MinecraftServer.java
|
||
|
+++ b/src/main/java/net/minecraft/server/MinecraftServer.java
|
||
|
@@ -1765,7 +1765,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
|
||
|
PackRepository resourcepackrepository = this.packRepository;
|
||
|
|
||
|
Objects.requireNonNull(this.packRepository);
|
||
|
- return stream.map(resourcepackrepository::getPack).filter(Objects::nonNull).map(Pack::open).collect(ImmutableList.toImmutableList()); // CraftBukkit - decompile error
|
||
|
+ return stream.<Pack>map(resourcepackrepository::getPack).filter(Objects::nonNull).map(Pack::open).collect(ImmutableList.toImmutableList()); // CraftBukkit - decompile error // Paper - decompile error
|
||
|
}, this).thenCompose((immutablelist) -> {
|
||
|
return ServerResources.loadResources(immutablelist, this.registryHolder, this.isDedicatedServer() ? Commands.CommandSelection.DEDICATED : Commands.CommandSelection.INTEGRATED, this.getFunctionCompilationLevel(), this.executor, this);
|
||
|
}).thenAcceptAsync((datapackresources) -> {
|
||
|
diff --git a/src/main/java/net/minecraft/server/level/Ticket.java b/src/main/java/net/minecraft/server/level/Ticket.java
|
||
|
index 2f66abf62d303342f5fe614fb3e35e7844497ffc..b346fa94b23d81da7da073f71dd12e672e0f079c 100644
|
||
|
--- a/src/main/java/net/minecraft/server/level/Ticket.java
|
||
|
+++ b/src/main/java/net/minecraft/server/level/Ticket.java
|
||
|
@@ -21,7 +21,7 @@ public final class Ticket<T> implements Comparable<Ticket<?>> {
|
||
|
return i;
|
||
|
} else {
|
||
|
int j = Integer.compare(System.identityHashCode(this.type), System.identityHashCode(ticket.type));
|
||
|
- return j != 0 ? j : this.type.getComparator().compare(this.key, ticket.key);
|
||
|
+ return j != 0 ? j : this.type.getComparator().compare(this.key, (T)ticket.key); // Paper - decompile fix
|
||
|
}
|
||
|
}
|
||
|
|
||
|
diff --git a/src/main/java/net/minecraft/stats/ServerStatsCounter.java b/src/main/java/net/minecraft/stats/ServerStatsCounter.java
|
||
|
index ee5bb1a8edb812d48d5af45ea8485f574dcb2ad5..9f3355dbbbab1ab88cf2b7034130c2888e38d7a7 100644
|
||
|
--- a/src/main/java/net/minecraft/stats/ServerStatsCounter.java
|
||
|
+++ b/src/main/java/net/minecraft/stats/ServerStatsCounter.java
|
||
|
@@ -206,7 +206,7 @@ public class ServerStatsCounter extends StatsCounter {
|
||
|
ObjectIterator objectiterator = this.stats.object2IntEntrySet().iterator();
|
||
|
|
||
|
while (objectiterator.hasNext()) {
|
||
|
- it.unimi.dsi.fastutil.objects.Object2IntMap.Entry<Stat<?>> it_unimi_dsi_fastutil_objects_object2intmap_entry = (it.unimi.dsi.fastutil.objects.Object2IntMap.Entry) objectiterator.next();
|
||
|
+ Object2IntMap.Entry<Stat<?>> it_unimi_dsi_fastutil_objects_object2intmap_entry = (Object2IntMap.Entry) objectiterator.next(); // Paper - decompile fix
|
||
|
Stat<?> statistic = (Stat) it_unimi_dsi_fastutil_objects_object2intmap_entry.getKey();
|
||
|
|
||
|
((JsonObject) map.computeIfAbsent(statistic.getType(), (statisticwrapper) -> {
|
||
|
diff --git a/src/main/java/net/minecraft/util/SortedArraySet.java b/src/main/java/net/minecraft/util/SortedArraySet.java
|
||
|
index d0f6eb3981a171c0f34870cb0472599d6cca9642..d1b2ba24ef54e01c6249c3b2ca16e80f03c001a6 100644
|
||
|
--- a/src/main/java/net/minecraft/util/SortedArraySet.java
|
||
|
+++ b/src/main/java/net/minecraft/util/SortedArraySet.java
|
||
|
@@ -28,7 +28,7 @@ public class SortedArraySet<T> extends AbstractSet<T> {
|
||
|
}
|
||
|
|
||
|
public static <T extends Comparable<T>> SortedArraySet<T> create(int initialCapacity) {
|
||
|
- return new SortedArraySet<>(initialCapacity, Comparator.naturalOrder());
|
||
|
+ return new SortedArraySet<>(initialCapacity, Comparator.<T>naturalOrder()); // Paper - decompile fix
|
||
|
}
|
||
|
|
||
|
public static <T> SortedArraySet<T> create(Comparator<T> comparator) {
|
||
|
diff --git a/src/main/java/net/minecraft/util/thread/ProcessorMailbox.java b/src/main/java/net/minecraft/util/thread/ProcessorMailbox.java
|
||
|
index d4488ebc4d4f50e1c3ccfeeb8bb82d06a7a90c30..37110c535b9fe25b53b5ebe9aa448ade6dcda2f9 100644
|
||
|
--- a/src/main/java/net/minecraft/util/thread/ProcessorMailbox.java
|
||
|
+++ b/src/main/java/net/minecraft/util/thread/ProcessorMailbox.java
|
||
|
@@ -93,7 +93,7 @@ public class ProcessorMailbox<T> implements ProfilerMeasured, ProcessorHandle<T>
|
||
|
@Override
|
||
|
public void run() {
|
||
|
try {
|
||
|
- this.pollUntil((i) -> {
|
||
|
+ this.pollUntil((int i) -> { // Paper - decompile fix
|
||
|
return i == 0;
|
||
|
});
|
||
|
} finally {
|
||
|
diff --git a/src/main/java/net/minecraft/world/item/crafting/RecipeManager.java b/src/main/java/net/minecraft/world/item/crafting/RecipeManager.java
|
||
|
index 2d79d4014770081fcd58a929e5fe0a26ac1b8023..f39a82bb231f5623fc69b044e6c17e742f56171a 100644
|
||
|
--- a/src/main/java/net/minecraft/world/item/crafting/RecipeManager.java
|
||
|
+++ b/src/main/java/net/minecraft/world/item/crafting/RecipeManager.java
|
||
|
@@ -75,7 +75,7 @@ public class RecipeManager extends SimpleJsonResourceReloadListener {
|
||
|
}
|
||
|
|
||
|
this.recipes = (Map) map1.entrySet().stream().collect(ImmutableMap.toImmutableMap(Entry::getKey, (entry1) -> {
|
||
|
- return (entry1.getValue()); // CraftBukkit
|
||
|
+ return entry1.getValue(); // CraftBukkit // Paper - decompile fix - *shrugs internally*
|
||
|
}));
|
||
|
RecipeManager.LOGGER.info("Loaded {} recipes", map1.size());
|
||
|
}
|
||
|
diff --git a/src/main/java/net/minecraft/world/level/TickNextTickData.java b/src/main/java/net/minecraft/world/level/TickNextTickData.java
|
||
|
index eb07e63f3c40fd8914cde50dfa789b1ed20b755a..3af31dc2c82c11ee78d497c5777615c17cb13c7a 100644
|
||
|
--- a/src/main/java/net/minecraft/world/level/TickNextTickData.java
|
||
|
+++ b/src/main/java/net/minecraft/world/level/TickNextTickData.java
|
||
|
@@ -39,7 +39,7 @@ public class TickNextTickData<T> {
|
||
|
}
|
||
|
|
||
|
public static <T> Comparator<TickNextTickData<T>> createTimeComparator() {
|
||
|
- return Comparator.comparingLong((tickNextTickData) -> {
|
||
|
+ return Comparator.<TickNextTickData<T>>comparingLong((tickNextTickData) -> { // Paper - decompile fix
|
||
|
return tickNextTickData.triggerTick;
|
||
|
}).thenComparing((tickNextTickData) -> {
|
||
|
return tickNextTickData.priority;
|
||
|
diff --git a/src/main/java/net/minecraft/world/level/biome/Biome.java b/src/main/java/net/minecraft/world/level/biome/Biome.java
|
||
|
index eb870fba1d54201664f4a384fa45db99b65a252f..3f3b4e4ea8231fdcc799bd9de3e20747a5634603 100644
|
||
|
--- a/src/main/java/net/minecraft/world/level/biome/Biome.java
|
||
|
+++ b/src/main/java/net/minecraft/world/level/biome/Biome.java
|
||
|
@@ -53,8 +53,40 @@ import org.apache.logging.log4j.Logger;
|
||
|
|
||
|
public final class Biome {
|
||
|
public static final Logger LOGGER = LogManager.getLogger();
|
||
|
- public static final Codec<Biome> DIRECT_CODEC;
|
||
|
- public static final Codec<Biome> NETWORK_CODEC;
|
||
|
+ // Paper start - decompile fix: move up verbatim from static block
|
||
|
+ public static final Codec<Biome> DIRECT_CODEC = RecordCodecBuilder.create((instance) -> {
|
||
|
+ return instance.group(Biome.ClimateSettings.CODEC.forGetter((biome) -> {
|
||
|
+ return biome.climateSettings;
|
||
|
+ }), Biome.BiomeCategory.CODEC.fieldOf("category").forGetter((biome) -> {
|
||
|
+ return biome.biomeCategory;
|
||
|
+ }), Codec.FLOAT.fieldOf("depth").forGetter((biome) -> {
|
||
|
+ return biome.depth;
|
||
|
+ }), Codec.FLOAT.fieldOf("scale").forGetter((biome) -> {
|
||
|
+ return biome.scale;
|
||
|
+ }), BiomeSpecialEffects.CODEC.fieldOf("effects").forGetter((biome) -> {
|
||
|
+ return biome.specialEffects;
|
||
|
+ }), BiomeGenerationSettings.CODEC.forGetter((biome) -> {
|
||
|
+ return biome.generationSettings;
|
||
|
+ }), MobSpawnSettings.CODEC.forGetter((biome) -> {
|
||
|
+ return biome.mobSettings;
|
||
|
+ })).apply(instance, Biome::new);
|
||
|
+ });
|
||
|
+ public static final Codec<Biome> NETWORK_CODEC = RecordCodecBuilder.create((instance) -> {
|
||
|
+ return instance.group(Biome.ClimateSettings.CODEC.forGetter((biome) -> {
|
||
|
+ return biome.climateSettings;
|
||
|
+ }), Biome.BiomeCategory.CODEC.fieldOf("category").forGetter((biome) -> {
|
||
|
+ return biome.biomeCategory;
|
||
|
+ }), Codec.FLOAT.fieldOf("depth").forGetter((biome) -> {
|
||
|
+ return biome.depth;
|
||
|
+ }), Codec.FLOAT.fieldOf("scale").forGetter((biome) -> {
|
||
|
+ return biome.scale;
|
||
|
+ }), BiomeSpecialEffects.CODEC.fieldOf("effects").forGetter((biome) -> {
|
||
|
+ return biome.specialEffects;
|
||
|
+ })).apply(instance, (climateSettings, biomeCategory, float_, float2, biomeSpecialEffects) -> {
|
||
|
+ return new Biome(climateSettings, biomeCategory, float_, float2, biomeSpecialEffects, BiomeGenerationSettings.EMPTY, MobSpawnSettings.EMPTY);
|
||
|
+ });
|
||
|
+ });
|
||
|
+ // Paper end
|
||
|
public static final Codec<Supplier<Biome>> CODEC = RegistryFileCodec.create(Registry.BIOME_REGISTRY, DIRECT_CODEC);
|
||
|
public static final Codec<List<Supplier<Biome>>> LIST_CODEC = RegistryFileCodec.homogeneousList(Registry.BIOME_REGISTRY, DIRECT_CODEC);
|
||
|
private final Map<Integer, List<StructureFeature<?>>> structuresByStep = Registry.STRUCTURE_FEATURE.stream().collect(Collectors.groupingBy((structureFeature) -> {
|
||
|
@@ -336,41 +368,6 @@ public final class Biome {
|
||
|
return resourceLocation == null ? super.toString() : resourceLocation.toString();
|
||
|
}
|
||
|
|
||
|
- static {
|
||
|
- DIRECT_CODEC = RecordCodecBuilder.create((instance) -> {
|
||
|
- return instance.group(Biome.ClimateSettings.CODEC.forGetter((biome) -> {
|
||
|
- return biome.climateSettings;
|
||
|
- }), Biome.BiomeCategory.CODEC.fieldOf("category").forGetter((biome) -> {
|
||
|
- return biome.biomeCategory;
|
||
|
- }), Codec.FLOAT.fieldOf("depth").forGetter((biome) -> {
|
||
|
- return biome.depth;
|
||
|
- }), Codec.FLOAT.fieldOf("scale").forGetter((biome) -> {
|
||
|
- return biome.scale;
|
||
|
- }), BiomeSpecialEffects.CODEC.fieldOf("effects").forGetter((biome) -> {
|
||
|
- return biome.specialEffects;
|
||
|
- }), BiomeGenerationSettings.CODEC.forGetter((biome) -> {
|
||
|
- return biome.generationSettings;
|
||
|
- }), MobSpawnSettings.CODEC.forGetter((biome) -> {
|
||
|
- return biome.mobSettings;
|
||
|
- })).apply(instance, Biome::new);
|
||
|
- });
|
||
|
- NETWORK_CODEC = RecordCodecBuilder.create((instance) -> {
|
||
|
- return instance.group(Biome.ClimateSettings.CODEC.forGetter((biome) -> {
|
||
|
- return biome.climateSettings;
|
||
|
- }), Biome.BiomeCategory.CODEC.fieldOf("category").forGetter((biome) -> {
|
||
|
- return biome.biomeCategory;
|
||
|
- }), Codec.FLOAT.fieldOf("depth").forGetter((biome) -> {
|
||
|
- return biome.depth;
|
||
|
- }), Codec.FLOAT.fieldOf("scale").forGetter((biome) -> {
|
||
|
- return biome.scale;
|
||
|
- }), BiomeSpecialEffects.CODEC.fieldOf("effects").forGetter((biome) -> {
|
||
|
- return biome.specialEffects;
|
||
|
- })).apply(instance, (climateSettings, biomeCategory, float_, float2, biomeSpecialEffects) -> {
|
||
|
- return new Biome(climateSettings, biomeCategory, float_, float2, biomeSpecialEffects, BiomeGenerationSettings.EMPTY, MobSpawnSettings.EMPTY);
|
||
|
- });
|
||
|
- });
|
||
|
- }
|
||
|
-
|
||
|
public static class BiomeBuilder {
|
||
|
@Nullable
|
||
|
private Biome.Precipitation precipitation;
|
||
|
diff --git a/src/main/java/net/minecraft/world/level/block/state/properties/EnumProperty.java b/src/main/java/net/minecraft/world/level/block/state/properties/EnumProperty.java
|
||
|
index f1ba8da158963f01c63412370a31aec617e0c7da..e76591dec764d92e1a760c5208714f3c80ea8fc7 100644
|
||
|
--- a/src/main/java/net/minecraft/world/level/block/state/properties/EnumProperty.java
|
||
|
+++ b/src/main/java/net/minecraft/world/level/block/state/properties/EnumProperty.java
|
||
|
@@ -6,6 +6,7 @@ import com.google.common.collect.Lists;
|
||
|
import com.google.common.collect.Maps;
|
||
|
import java.util.Arrays;
|
||
|
import java.util.Collection;
|
||
|
+import java.util.Iterator;
|
||
|
import java.util.Map;
|
||
|
import java.util.Optional;
|
||
|
import java.util.function.Predicate;
|
||
|
@@ -19,6 +20,7 @@ public class EnumProperty<T extends Enum<T> & StringRepresentable> extends Prope
|
||
|
protected EnumProperty(String name, Class<T> type, Collection<T> values) {
|
||
|
super(name, type);
|
||
|
this.values = ImmutableSet.copyOf(values);
|
||
|
+ Iterator<T> iterator = values.iterator(); // Paper - decompile fix
|
||
|
|
||
|
for(T enum_ : values) {
|
||
|
String string = enum_.getSerializedName();
|