mirror of
https://github.com/PaperMC/Paper.git
synced 2024-12-29 12:27:59 +01:00
Patches
This commit is contained in:
parent
64f780c26d
commit
2b25404eca
@ -36,6 +36,10 @@ public net.minecraft.network.protocol.game.ServerboundInteractPacket$ActionType
|
|||||||
# Configurable RCON IP address
|
# Configurable RCON IP address
|
||||||
public net.minecraft.server.dedicated.Settings getStringRaw(Ljava/lang/String;)Ljava/lang/String;
|
public net.minecraft.server.dedicated.Settings getStringRaw(Ljava/lang/String;)Ljava/lang/String;
|
||||||
|
|
||||||
|
# Mob Spawner API Enhancements
|
||||||
|
public net.minecraft.world.level.BaseSpawner isNearPlayer(Lnet/minecraft/world/level/Level;Lnet/minecraft/core/BlockPos;)Z
|
||||||
|
public net.minecraft.world.level.BaseSpawner delay(Lnet/minecraft/world/level/Level;Lnet/minecraft/core/BlockPos;)V
|
||||||
|
|
||||||
# LootTable API
|
# LootTable API
|
||||||
public org.bukkit.craftbukkit.block.CraftBlockEntityState getTileEntity()Lnet/minecraft/world/level/block/entity/BlockEntity;
|
public org.bukkit.craftbukkit.block.CraftBlockEntityState getTileEntity()Lnet/minecraft/world/level/block/entity/BlockEntity;
|
||||||
public org.bukkit.craftbukkit.block.CraftLootable setLootTable(Lorg/bukkit/loot/LootTable;J)V
|
public org.bukkit.craftbukkit.block.CraftLootable setLootTable(Lorg/bukkit/loot/LootTable;J)V
|
||||||
|
@ -68,9 +68,9 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000
|
|||||||
--- a/src/main/java/org/bukkit/block/Block.java
|
--- a/src/main/java/org/bukkit/block/Block.java
|
||||||
+++ b/src/main/java/org/bukkit/block/Block.java
|
+++ b/src/main/java/org/bukkit/block/Block.java
|
||||||
@@ -0,0 +0,0 @@ public interface Block extends Metadatable {
|
@@ -0,0 +0,0 @@ public interface Block extends Metadatable {
|
||||||
|
* @return <code>true</code> if the block data can be placed here
|
||||||
*/
|
*/
|
||||||
@NotNull
|
boolean canPlace(@NotNull BlockData data);
|
||||||
VoxelShape getCollisionShape();
|
|
||||||
+
|
+
|
||||||
+ // Paper start
|
+ // Paper start
|
||||||
+ /**
|
+ /**
|
@ -53,9 +53,10 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000
|
|||||||
--- a/src/main/java/org/bukkit/craftbukkit/block/CraftBlock.java
|
--- a/src/main/java/org/bukkit/craftbukkit/block/CraftBlock.java
|
||||||
+++ b/src/main/java/org/bukkit/craftbukkit/block/CraftBlock.java
|
+++ b/src/main/java/org/bukkit/craftbukkit/block/CraftBlock.java
|
||||||
@@ -0,0 +0,0 @@ public class CraftBlock implements Block {
|
@@ -0,0 +0,0 @@ public class CraftBlock implements Block {
|
||||||
VoxelShape shape = this.getNMS().getCollisionShape(world, position);
|
|
||||||
return new CraftVoxelShape(shape);
|
return iblockdata.canSurvive(world, this.position);
|
||||||
}
|
}
|
||||||
|
+
|
||||||
+ // Paper start
|
+ // Paper start
|
||||||
+ @Override
|
+ @Override
|
||||||
+ public com.destroystokyo.paper.block.BlockSoundGroup getSoundGroup() {
|
+ public com.destroystokyo.paper.block.BlockSoundGroup getSoundGroup() {
|
@ -8,33 +8,6 @@ diff --git a/src/main/java/net/minecraft/world/level/BaseSpawner.java b/src/main
|
|||||||
index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 100644
|
index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 100644
|
||||||
--- a/src/main/java/net/minecraft/world/level/BaseSpawner.java
|
--- a/src/main/java/net/minecraft/world/level/BaseSpawner.java
|
||||||
+++ b/src/main/java/net/minecraft/world/level/BaseSpawner.java
|
+++ b/src/main/java/net/minecraft/world/level/BaseSpawner.java
|
||||||
@@ -0,0 +0,0 @@ public abstract class BaseSpawner {
|
|
||||||
|
|
||||||
private static final Logger LOGGER = LogManager.getLogger();
|
|
||||||
private static final int EVENT_SPAWN = 1;
|
|
||||||
- private static WeightedRandomList<SpawnData> EMPTY_POTENTIALS = WeightedRandomList.create();
|
|
||||||
+ public static WeightedRandomList<SpawnData> EMPTY_POTENTIALS = WeightedRandomList.create(); // Paper - private->public
|
|
||||||
public int spawnDelay = 20;
|
|
||||||
public WeightedRandomList<SpawnData> spawnPotentials;
|
|
||||||
public SpawnData nextSpawnData;
|
|
||||||
@@ -0,0 +0,0 @@ public abstract class BaseSpawner {
|
|
||||||
this.spawnPotentials = BaseSpawner.EMPTY_POTENTIALS; // CraftBukkit - SPIGOT-3496, MC-92282
|
|
||||||
}
|
|
||||||
|
|
||||||
- private boolean isNearPlayer(Level world, BlockPos pos) {
|
|
||||||
+ public boolean isNearPlayer(Level world, BlockPos pos) { // Paper private->public
|
|
||||||
return world.isAffectsSpawningPlayerNearby((double) pos.getX() + 0.5D, (double) pos.getY() + 0.5D, (double) pos.getZ() + 0.5D, (double) this.requiredPlayerRange); // Paper
|
|
||||||
}
|
|
||||||
|
|
||||||
@@ -0,0 +0,0 @@ public abstract class BaseSpawner {
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
- private void delay(Level world, BlockPos pos) {
|
|
||||||
+ public void delay(Level world, BlockPos pos) { // Paper private->public
|
|
||||||
if (this.maxSpawnDelay <= this.minSpawnDelay) {
|
|
||||||
this.spawnDelay = this.minSpawnDelay;
|
|
||||||
} else {
|
|
||||||
@@ -0,0 +0,0 @@ public abstract class BaseSpawner {
|
@@ -0,0 +0,0 @@ public abstract class BaseSpawner {
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -46,14 +19,13 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000
|
|||||||
this.spawnDelay = nbt.getShort("Delay");
|
this.spawnDelay = nbt.getShort("Delay");
|
||||||
+ }
|
+ }
|
||||||
+ // Paper end
|
+ // Paper end
|
||||||
List<SpawnData> list = Lists.newArrayList();
|
boolean flag = nbt.contains("SpawnPotentials", 9);
|
||||||
|
boolean flag1 = nbt.contains("SpawnData", 10);
|
||||||
|
|
||||||
if (nbt.contains("SpawnPotentials", 9)) {
|
|
||||||
@@ -0,0 +0,0 @@ public abstract class BaseSpawner {
|
@@ -0,0 +0,0 @@ public abstract class BaseSpawner {
|
||||||
this.setNextSpawnData(world, pos, mobspawnerdata);
|
|
||||||
});
|
|
||||||
}
|
}
|
||||||
-
|
}
|
||||||
|
|
||||||
+ // Paper start - use ints if set
|
+ // Paper start - use ints if set
|
||||||
+ if (nbt.contains("Paper.MinSpawnDelay", 99)) {
|
+ if (nbt.contains("Paper.MinSpawnDelay", 99)) {
|
||||||
+ this.minSpawnDelay = nbt.getInt("Paper.MinSpawnDelay");
|
+ this.minSpawnDelay = nbt.getInt("Paper.MinSpawnDelay");
|
||||||
@ -63,35 +35,35 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000
|
|||||||
if (nbt.contains("MinSpawnDelay", 99)) {
|
if (nbt.contains("MinSpawnDelay", 99)) {
|
||||||
- this.minSpawnDelay = nbt.getShort("MinSpawnDelay");
|
- this.minSpawnDelay = nbt.getShort("MinSpawnDelay");
|
||||||
- this.maxSpawnDelay = nbt.getShort("MaxSpawnDelay");
|
- this.maxSpawnDelay = nbt.getShort("MaxSpawnDelay");
|
||||||
+ this.minSpawnDelay = nbt.getInt("MinSpawnDelay"); // Paper - short->int
|
+ this.minSpawnDelay = nbt.getInt("MinSpawnDelay"); // Paper - short -> int
|
||||||
+ this.maxSpawnDelay = nbt.getInt("MaxSpawnDelay"); // Paper - short->int
|
+ this.maxSpawnDelay = nbt.getInt("MaxSpawnDelay"); // Paper - short -> int
|
||||||
this.spawnCount = nbt.getShort("SpawnCount");
|
this.spawnCount = nbt.getShort("SpawnCount");
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -0,0 +0,0 @@ public abstract class BaseSpawner {
|
@@ -0,0 +0,0 @@ public abstract class BaseSpawner {
|
||||||
if (minecraftkey == null) {
|
}
|
||||||
return nbt;
|
|
||||||
} else {
|
public CompoundTag save(CompoundTag nbttagcompound) {
|
||||||
- nbt.putShort("Delay", (short) this.spawnDelay);
|
- nbttagcompound.putShort("Delay", (short) this.spawnDelay);
|
||||||
- nbt.putShort("MinSpawnDelay", (short) this.minSpawnDelay);
|
- nbttagcompound.putShort("MinSpawnDelay", (short) this.minSpawnDelay);
|
||||||
- nbt.putShort("MaxSpawnDelay", (short) this.maxSpawnDelay);
|
- nbttagcompound.putShort("MaxSpawnDelay", (short) this.maxSpawnDelay);
|
||||||
+ // Paper start
|
+ // Paper start
|
||||||
+ if (spawnDelay > Short.MAX_VALUE) {
|
+ if (spawnDelay > Short.MAX_VALUE) {
|
||||||
+ nbt.putInt("Paper.Delay", this.spawnDelay);
|
+ nbttagcompound.putInt("Paper.Delay", this.spawnDelay);
|
||||||
+ }
|
+ }
|
||||||
+ nbt.putShort("Delay", (short) Math.min(Short.MAX_VALUE, this.spawnDelay));
|
+ nbttagcompound.putShort("Delay", (short) Math.min(Short.MAX_VALUE, this.spawnDelay));
|
||||||
+
|
+
|
||||||
+ if (minSpawnDelay > Short.MAX_VALUE || maxSpawnDelay > Short.MAX_VALUE) {
|
+ if (minSpawnDelay > Short.MAX_VALUE || maxSpawnDelay > Short.MAX_VALUE) {
|
||||||
+ nbt.putInt("Paper.MinSpawnDelay", this.minSpawnDelay);
|
+ nbttagcompound.putInt("Paper.MinSpawnDelay", this.minSpawnDelay);
|
||||||
+ nbt.putInt("Paper.MaxSpawnDelay", this.maxSpawnDelay);
|
+ nbttagcompound.putInt("Paper.MaxSpawnDelay", this.maxSpawnDelay);
|
||||||
+ }
|
+ }
|
||||||
+
|
+
|
||||||
+ nbt.putShort("MinSpawnDelay", (short) Math.min(Short.MAX_VALUE, this.minSpawnDelay));
|
+ nbttagcompound.putShort("MinSpawnDelay", (short) Math.min(Short.MAX_VALUE, this.minSpawnDelay));
|
||||||
+ nbt.putShort("MaxSpawnDelay", (short) Math.min(Short.MAX_VALUE, this.maxSpawnDelay));
|
+ nbttagcompound.putShort("MaxSpawnDelay", (short) Math.min(Short.MAX_VALUE, this.maxSpawnDelay));
|
||||||
+ // Paper end
|
+ // Paper end
|
||||||
nbt.putShort("SpawnCount", (short) this.spawnCount);
|
nbttagcompound.putShort("SpawnCount", (short) this.spawnCount);
|
||||||
nbt.putShort("MaxNearbyEntities", (short) this.maxNearbyEntities);
|
nbttagcompound.putShort("MaxNearbyEntities", (short) this.maxNearbyEntities);
|
||||||
nbt.putShort("RequiredPlayerRange", (short) this.requiredPlayerRange);
|
nbttagcompound.putShort("RequiredPlayerRange", (short) this.requiredPlayerRange);
|
||||||
diff --git a/src/main/java/org/bukkit/craftbukkit/block/CraftCreatureSpawner.java b/src/main/java/org/bukkit/craftbukkit/block/CraftCreatureSpawner.java
|
diff --git a/src/main/java/org/bukkit/craftbukkit/block/CraftCreatureSpawner.java b/src/main/java/org/bukkit/craftbukkit/block/CraftCreatureSpawner.java
|
||||||
index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 100644
|
index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 100644
|
||||||
--- a/src/main/java/org/bukkit/craftbukkit/block/CraftCreatureSpawner.java
|
--- a/src/main/java/org/bukkit/craftbukkit/block/CraftCreatureSpawner.java
|
||||||
@ -122,8 +94,8 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000
|
|||||||
+ entity.put("Item", item.save(new net.minecraft.nbt.CompoundTag()));
|
+ entity.put("Item", item.save(new net.minecraft.nbt.CompoundTag()));
|
||||||
+ compound.put("Entity", entity);
|
+ compound.put("Entity", entity);
|
||||||
+ compound.putInt("Weight", this.getSnapshotNBT().contains("Weight", org.bukkit.craftbukkit.util.CraftMagicNumbers.NBT.TAG_ANY_NUMBER) ? this.getSnapshotNBT().getInt("Weight") : 1);
|
+ compound.putInt("Weight", this.getSnapshotNBT().contains("Weight", org.bukkit.craftbukkit.util.CraftMagicNumbers.NBT.TAG_ANY_NUMBER) ? this.getSnapshotNBT().getInt("Weight") : 1);
|
||||||
+ this.getSnapshot().getSpawner().setNextSpawnData(world.getHandle(), getPosition(), new net.minecraft.world.level.SpawnData(compound));
|
+ this.getSnapshot().getSpawner().setNextSpawnData(world.getHandle(), getPosition(), new net.minecraft.world.level.SpawnData(compound, java.util.Optional.empty())); // 1.18 todo - is empty optional correct
|
||||||
+ this.getSnapshot().getSpawner().spawnPotentials= net.minecraft.world.level.BaseSpawner.EMPTY_POTENTIALS;
|
+ this.getSnapshot().getSpawner().spawnPotentials = net.minecraft.util.random.SimpleWeightedRandomList.empty(); // 1.18 todo - previously used removed field, check
|
||||||
+ }
|
+ }
|
||||||
+ // Paper end
|
+ // Paper end
|
||||||
}
|
}
|
@ -16,7 +16,7 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000
|
|||||||
@@ -0,0 +0,0 @@ public abstract class Level implements LevelAccessor, AutoCloseable {
|
@@ -0,0 +0,0 @@ public abstract class Level implements LevelAccessor, AutoCloseable {
|
||||||
|
|
||||||
@Nullable
|
@Nullable
|
||||||
public BlockEntity getTileEntity(BlockPos blockposition, boolean validate) {
|
public BlockEntity getBlockEntity(BlockPos blockposition, boolean validate) {
|
||||||
- if (this.capturedTileEntities.containsKey(blockposition)) {
|
- if (this.capturedTileEntities.containsKey(blockposition)) {
|
||||||
- return this.capturedTileEntities.get(blockposition);
|
- return this.capturedTileEntities.get(blockposition);
|
||||||
+ // Paper start - Optimize capturedTileEntities lookup
|
+ // Paper start - Optimize capturedTileEntities lookup
|
@ -67,7 +67,7 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000
|
|||||||
@@ -0,0 +0,0 @@ public abstract class BaseSpawner {
|
@@ -0,0 +0,0 @@ public abstract class BaseSpawner {
|
||||||
}
|
}
|
||||||
|
|
||||||
private boolean isNearPlayer(Level world, BlockPos pos) {
|
public boolean isNearPlayer(Level world, BlockPos pos) {
|
||||||
- return world.hasNearbyAlivePlayer((double) pos.getX() + 0.5D, (double) pos.getY() + 0.5D, (double) pos.getZ() + 0.5D, (double) this.requiredPlayerRange);
|
- return world.hasNearbyAlivePlayer((double) pos.getX() + 0.5D, (double) pos.getY() + 0.5D, (double) pos.getZ() + 0.5D, (double) this.requiredPlayerRange);
|
||||||
+ return world.isAffectsSpawningPlayerNearby((double) pos.getX() + 0.5D, (double) pos.getY() + 0.5D, (double) pos.getZ() + 0.5D, (double) this.requiredPlayerRange); // Paper
|
+ return world.isAffectsSpawningPlayerNearby((double) pos.getX() + 0.5D, (double) pos.getY() + 0.5D, (double) pos.getZ() + 0.5D, (double) this.requiredPlayerRange); // Paper
|
||||||
}
|
}
|
||||||
|
@ -18,15 +18,14 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000
|
|||||||
++this.tickCount;
|
++this.tickCount;
|
||||||
this.tickChildren(shouldKeepTicking);
|
this.tickChildren(shouldKeepTicking);
|
||||||
@@ -0,0 +0,0 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
|
@@ -0,0 +0,0 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
|
||||||
|
this.runAllTasks();
|
||||||
}
|
}
|
||||||
// Paper end
|
// Paper end
|
||||||
|
|
||||||
+ // Paper start
|
+ // Paper start
|
||||||
+ long endTime = System.nanoTime();
|
+ long endTime = System.nanoTime();
|
||||||
+ long remaining = (TICK_TIME - (endTime - lastTick)) - catchupTime;
|
+ long remaining = (TICK_TIME - (endTime - lastTick)) - catchupTime;
|
||||||
+ new com.destroystokyo.paper.event.server.ServerTickEndEvent(this.tickCount, ((double)(endTime - lastTick) / 1000000D), remaining).callEvent();
|
+ new com.destroystokyo.paper.event.server.ServerTickEndEvent(this.tickCount, ((double)(endTime - lastTick) / 1000000D), remaining).callEvent();
|
||||||
+ // Paper end
|
+ // Paper end
|
||||||
+
|
|
||||||
this.profiler.push("tallying");
|
this.profiler.push("tallying");
|
||||||
long l = this.tickTimes[this.tickCount % 100] = Util.getNanos() - i;
|
long l = this.tickTimes[this.tickCount % 100] = Util.getNanos() - i;
|
||||||
|
|
Loading…
Reference in New Issue
Block a user