@@ -1,27 +1,27 @@
|
||||
--- a/net/minecraft/util/SpawnUtil.java
|
||||
+++ b/net/minecraft/util/SpawnUtil.java
|
||||
@@ -20,6 +20,12 @@
|
||||
@@ -21,6 +21,12 @@
|
||||
public SpawnUtil() {}
|
||||
|
||||
public static <T extends EntityInsentient> Optional<T> trySpawnMob(EntityTypes<T> entitytypes, EnumMobSpawn enummobspawn, WorldServer worldserver, BlockPosition blockposition, int i, int j, int k, SpawnUtil.a spawnutil_a) {
|
||||
public static <T extends EntityInsentient> Optional<T> trySpawnMob(EntityTypes<T> entitytypes, EntitySpawnReason entityspawnreason, WorldServer worldserver, BlockPosition blockposition, int i, int j, int k, SpawnUtil.a spawnutil_a) {
|
||||
+ // CraftBukkit start
|
||||
+ return trySpawnMob(entitytypes, enummobspawn, worldserver, blockposition, i, j, k, spawnutil_a, org.bukkit.event.entity.CreatureSpawnEvent.SpawnReason.DEFAULT);
|
||||
+ return trySpawnMob(entitytypes, entityspawnreason, worldserver, blockposition, i, j, k, spawnutil_a, org.bukkit.event.entity.CreatureSpawnEvent.SpawnReason.DEFAULT);
|
||||
+ }
|
||||
+
|
||||
+ public static <T extends EntityInsentient> Optional<T> trySpawnMob(EntityTypes<T> entitytypes, EnumMobSpawn enummobspawn, WorldServer worldserver, BlockPosition blockposition, int i, int j, int k, SpawnUtil.a spawnutil_a, org.bukkit.event.entity.CreatureSpawnEvent.SpawnReason reason) {
|
||||
+ public static <T extends EntityInsentient> Optional<T> trySpawnMob(EntityTypes<T> entitytypes, EntitySpawnReason entityspawnreason, WorldServer worldserver, BlockPosition blockposition, int i, int j, int k, SpawnUtil.a spawnutil_a, org.bukkit.event.entity.CreatureSpawnEvent.SpawnReason reason) {
|
||||
+ // CraftBukkit end
|
||||
BlockPosition.MutableBlockPosition blockposition_mutableblockposition = blockposition.mutable();
|
||||
|
||||
for (int l = 0; l < i; ++l) {
|
||||
@@ -28,15 +34,15 @@
|
||||
@@ -29,15 +35,15 @@
|
||||
|
||||
blockposition_mutableblockposition.setWithOffset(blockposition, i1, k, j1);
|
||||
if (worldserver.getWorldBorder().isWithinBounds((BlockPosition) blockposition_mutableblockposition) && moveToPossibleSpawnPosition(worldserver, k, blockposition_mutableblockposition, spawnutil_a)) {
|
||||
- T t0 = (EntityInsentient) entitytypes.create(worldserver, (Consumer) null, blockposition_mutableblockposition, enummobspawn, false, false);
|
||||
+ T t0 = entitytypes.create(worldserver, (Consumer<T>) null, blockposition_mutableblockposition, enummobspawn, false, false); // CraftBukkit - decompile error
|
||||
- T t0 = (EntityInsentient) entitytypes.create(worldserver, (Consumer) null, blockposition_mutableblockposition, entityspawnreason, false, false);
|
||||
+ T t0 = entitytypes.create(worldserver, (Consumer<T>) null, blockposition_mutableblockposition, entityspawnreason, false, false); // CraftBukkit - decompile error
|
||||
|
||||
if (t0 != null) {
|
||||
if (t0.checkSpawnRules(worldserver, enummobspawn) && t0.checkSpawnObstruction(worldserver)) {
|
||||
if (t0.checkSpawnRules(worldserver, entityspawnreason) && t0.checkSpawnObstruction(worldserver)) {
|
||||
- worldserver.addFreshEntityWithPassengers(t0);
|
||||
+ worldserver.addFreshEntityWithPassengers(t0, reason); // CraftBukkit
|
||||
return Optional.of(t0);
|
||||
|
||||
@@ -0,0 +1,53 @@
|
||||
--- a/net/minecraft/util/TickThrottler.java
|
||||
+++ b/net/minecraft/util/TickThrottler.java
|
||||
@@ -1,10 +1,14 @@
|
||||
package net.minecraft.util;
|
||||
|
||||
+// CraftBukkit start
|
||||
+import java.util.concurrent.atomic.AtomicInteger;
|
||||
+// CraftBukkit end
|
||||
+
|
||||
public class TickThrottler {
|
||||
|
||||
private final int incrementStep;
|
||||
private final int threshold;
|
||||
- private int count;
|
||||
+ private final AtomicInteger count = new AtomicInteger(); // CraftBukkit - multithreaded field
|
||||
|
||||
public TickThrottler(int i, int j) {
|
||||
this.incrementStep = i;
|
||||
@@ -12,17 +16,32 @@
|
||||
}
|
||||
|
||||
public void increment() {
|
||||
- this.count += this.incrementStep;
|
||||
+ this.count.addAndGet(this.incrementStep); // CraftBukkit - use thread-safe field access instead
|
||||
}
|
||||
|
||||
public void tick() {
|
||||
+ // CraftBukkit start
|
||||
+ for (int val; (val = this.count.get()) > 0 && !count.compareAndSet(val, val - 1); ) ;
|
||||
+ /* Use thread-safe field access instead
|
||||
if (this.count > 0) {
|
||||
--this.count;
|
||||
}
|
||||
+ */
|
||||
+ // CraftBukkit end
|
||||
|
||||
}
|
||||
|
||||
public boolean isUnderThreshold() {
|
||||
- return this.count < this.threshold;
|
||||
+ // CraftBukkit start - use thread-safe field access instead
|
||||
+ return this.count.get() < this.threshold;
|
||||
+ }
|
||||
+
|
||||
+ public boolean isIncrementAndUnderThreshold() {
|
||||
+ return isIncrementAndUnderThreshold(this.incrementStep, this.threshold);
|
||||
+ }
|
||||
+
|
||||
+ public boolean isIncrementAndUnderThreshold(int incrementStep, int threshold) {
|
||||
+ return this.count.addAndGet(incrementStep) < threshold;
|
||||
+ // CraftBukkit end
|
||||
}
|
||||
}
|
||||
@@ -1,6 +1,6 @@
|
||||
--- a/net/minecraft/util/datafix/DataConverterRegistry.java
|
||||
+++ b/net/minecraft/util/datafix/DataConverterRegistry.java
|
||||
@@ -495,6 +495,18 @@
|
||||
@@ -510,6 +510,18 @@
|
||||
datafixerbuilder.addFixer(new DataConverterItemFrame(schema44, false));
|
||||
Schema schema45 = datafixerbuilder.addSchema(1458, DataConverterRegistry.SAME_NAMESPACED);
|
||||
|
||||
@@ -19,7 +19,7 @@
|
||||
datafixerbuilder.addFixer(new DataConverterCustomNameEntity(schema45, false));
|
||||
datafixerbuilder.addFixer(new DataConverterCustomNameItem(schema45, false));
|
||||
datafixerbuilder.addFixer(new DataConverterCustomNameTile(schema45, false));
|
||||
@@ -753,7 +765,8 @@
|
||||
@@ -768,7 +780,8 @@
|
||||
datafixerbuilder.addFixer(new DataConverterAddChoices(schema110, "Added Zoglin", DataConverterTypes.ENTITY));
|
||||
Schema schema111 = datafixerbuilder.addSchema(2523, DataConverterRegistry.SAME_NAMESPACED);
|
||||
|
||||
@@ -29,7 +29,7 @@
|
||||
Schema schema112 = datafixerbuilder.addSchema(2527, DataConverterRegistry.SAME_NAMESPACED);
|
||||
|
||||
datafixerbuilder.addFixer(new DataConverterBitStorageAlign(schema112));
|
||||
@@ -816,12 +829,14 @@
|
||||
@@ -831,12 +844,14 @@
|
||||
datafixerbuilder.addFixer(new DataConverterAddChoices(schema130, "Added Glow Squid", DataConverterTypes.ENTITY));
|
||||
datafixerbuilder.addFixer(new DataConverterAddChoices(schema130, "Added Glow Item Frame", DataConverterTypes.ENTITY));
|
||||
Schema schema131 = datafixerbuilder.addSchema(2690, DataConverterRegistry.SAME_NAMESPACED);
|
||||
@@ -46,7 +46,7 @@
|
||||
|
||||
datafixerbuilder.addFixer(DataConverterItemName.create(schema132, "Rename copper item suffixes", createRenamer(immutablemap1)));
|
||||
datafixerbuilder.addFixer(DataConverterBlockRename.create(schema132, "Rename copper blocks suffixes", createRenamer(immutablemap1)));
|
||||
@@ -829,7 +844,8 @@
|
||||
@@ -844,7 +859,8 @@
|
||||
|
||||
datafixerbuilder.addFixer(new AddFlagIfNotPresentFix(schema133, DataConverterTypes.WORLD_GEN_SETTINGS, "has_increased_height_already", false));
|
||||
Schema schema134 = datafixerbuilder.addSchema(2696, DataConverterRegistry.SAME_NAMESPACED);
|
||||
@@ -56,7 +56,7 @@
|
||||
|
||||
datafixerbuilder.addFixer(DataConverterItemName.create(schema134, "Renamed grimstone block items to deepslate", createRenamer(immutablemap2)));
|
||||
datafixerbuilder.addFixer(DataConverterBlockRename.create(schema134, "Renamed grimstone blocks to deepslate", createRenamer(immutablemap2)));
|
||||
@@ -916,10 +932,11 @@
|
||||
@@ -931,10 +947,11 @@
|
||||
datafixerbuilder.addFixer(new DataConverterAddChoices(schema159, "Added Allay", DataConverterTypes.ENTITY));
|
||||
Schema schema160 = datafixerbuilder.addSchema(3084, DataConverterRegistry.SAME_NAMESPACED);
|
||||
|
||||
@@ -70,7 +70,7 @@
|
||||
int2objectopenhashmap1.defaultReturnValue("minecraft:tabby");
|
||||
int2objectopenhashmap1.put(0, "minecraft:tabby");
|
||||
int2objectopenhashmap1.put(1, "minecraft:black");
|
||||
@@ -936,7 +953,8 @@
|
||||
@@ -951,7 +968,8 @@
|
||||
|
||||
Objects.requireNonNull(int2objectopenhashmap);
|
||||
datafixerbuilder.addFixer(new EntityVariantFix(schema161, "Change cat variant type", typereference, "minecraft:cat", "CatType", int2objectopenhashmap::get));
|
||||
|
||||
@@ -1,18 +1,18 @@
|
||||
--- a/net/minecraft/util/worldupdate/WorldUpgrader.java
|
||||
+++ b/net/minecraft/util/worldupdate/WorldUpgrader.java
|
||||
@@ -81,7 +81,7 @@
|
||||
@@ -80,7 +80,7 @@
|
||||
|
||||
public WorldUpgrader(Convertable.ConversionSession convertable_conversionsession, DataFixer datafixer, IRegistryCustom iregistrycustom, boolean flag, boolean flag1) {
|
||||
this.dimensions = iregistrycustom.registryOrThrow(Registries.LEVEL_STEM);
|
||||
this.dimensions = iregistrycustom.lookupOrThrow(Registries.LEVEL_STEM);
|
||||
- this.levels = (Set) this.dimensions.registryKeySet().stream().map(Registries::levelStemToLevel).collect(Collectors.toUnmodifiableSet());
|
||||
+ this.levels = (Set) java.util.stream.Stream.of(convertable_conversionsession.dimensionType).map(Registries::levelStemToLevel).collect(Collectors.toUnmodifiableSet()); // CraftBukkit
|
||||
this.eraseCache = flag;
|
||||
this.dataFixer = datafixer;
|
||||
this.levelStorage = convertable_conversionsession;
|
||||
@@ -194,9 +194,9 @@
|
||||
@@ -197,9 +197,9 @@
|
||||
if (nbttagcompound != null) {
|
||||
int i = IChunkLoader.getVersion(nbttagcompound);
|
||||
ChunkGenerator chunkgenerator = ((WorldDimension) WorldUpgrader.this.dimensions.getOrThrow(Registries.levelToLevelStem(resourcekey))).generator();
|
||||
ChunkGenerator chunkgenerator = ((WorldDimension) WorldUpgrader.this.dimensions.getValueOrThrow(Registries.levelToLevelStem(resourcekey))).generator();
|
||||
- NBTTagCompound nbttagcompound1 = ichunkloader.upgradeChunkTag(resourcekey, () -> {
|
||||
+ NBTTagCompound nbttagcompound1 = ichunkloader.upgradeChunkTag(Registries.levelToLevelStem(resourcekey), () -> { // CraftBukkit
|
||||
return WorldUpgrader.this.overworldDataStorage;
|
||||
@@ -21,7 +21,7 @@
|
||||
ChunkCoordIntPair chunkcoordintpair1 = new ChunkCoordIntPair(nbttagcompound1.getInt("xPos"), nbttagcompound1.getInt("zPos"));
|
||||
|
||||
if (!chunkcoordintpair1.equals(chunkcoordintpair)) {
|
||||
@@ -316,7 +316,7 @@
|
||||
@@ -321,7 +321,7 @@
|
||||
WorldUpgrader.c<T> worldupgrader_c = (WorldUpgrader.c) iterator.next();
|
||||
ResourceKey<World> resourcekey = worldupgrader_c.dimensionKey;
|
||||
ListIterator<WorldUpgrader.e> listiterator = worldupgrader_c.files;
|
||||
|
||||
Reference in New Issue
Block a user