Update to Minecraft 1.19

By: md_5 <git@md-5.net>
This commit is contained in:
CraftBukkit/Spigot
2022-06-08 02:00:00 +10:00
parent 91d9aa9a89
commit 25f3b50f6b
332 changed files with 3628 additions and 2559 deletions

View File

@@ -1,7 +1,7 @@
--- a/net/minecraft/world/level/storage/Convertable.java
+++ b/net/minecraft/world/level/storage/Convertable.java
@@ -58,6 +58,10 @@
import net.minecraft.world.level.levelgen.GeneratorSettings;
@@ -61,6 +61,10 @@
import net.minecraft.world.level.levelgen.presets.WorldPresets;
import org.slf4j.Logger;
+// CraftBukkit start
@@ -11,7 +11,7 @@
public class Convertable {
static final Logger LOGGER = LogUtils.getLogger();
@@ -112,7 +116,7 @@
@@ -114,7 +118,7 @@
}
private static DataPackConfiguration readDataPackConfig(Dynamic<?> dynamic) {
@@ -20,7 +20,7 @@
Logger logger = Convertable.LOGGER;
Objects.requireNonNull(logger);
@@ -232,7 +236,11 @@
@@ -241,7 +245,11 @@
WorldSettings worldsettings = WorldSettings.parse(dynamic, datapackconfiguration);
Lifecycle lifecycle1 = ((Lifecycle) pair.getSecond()).add(lifecycle);
@@ -31,9 +31,9 @@
+ return worldDataServer;
+ // CraftBukkit end
} catch (Exception exception) {
Convertable.LOGGER.error("Exception reading {}", file, exception);
Convertable.LOGGER.error("Exception reading {}", path, exception);
return null;
@@ -305,9 +313,23 @@
@@ -314,9 +322,23 @@
return this.backupDir;
}
@@ -57,10 +57,10 @@
}
+ // CraftBukkit end
public class ConversionSession implements AutoCloseable {
public static record a(List<Convertable.b> levels) implements Iterable<Convertable.b> {
@@ -315,8 +337,12 @@
public final Path levelPath;
@@ -369,8 +391,12 @@
public final Convertable.b levelDirectory;
private final String levelId;
private final Map<SavedFile, Path> resources = Maps.newHashMap();
+ // CraftBukkit start
@@ -71,14 +71,23 @@
+ this.dimensionType = dimensionType;
+ // CraftBukkit end
this.levelId = s;
this.levelPath = Convertable.this.baseDir.resolve(s);
this.lock = SessionLock.create(this.levelPath);
@@ -333,7 +359,7 @@
this.levelDirectory = new Convertable.b(Convertable.this.baseDir.resolve(s));
this.lock = SessionLock.create(this.levelDirectory.path());
@@ -381,7 +407,7 @@
}
public Path getLevelPath(SavedFile savedfile) {
- Map map = this.resources;
+ Map<SavedFile, Path> map = this.resources; // CraftBukkit - decompile error
Convertable.b convertable_b = this.levelDirectory;
Objects.requireNonNull(this.levelDirectory);
@@ -389,7 +415,7 @@
}
public Path getDimensionPath(ResourceKey<World> resourcekey) {
- return DimensionManager.getStorageFolder(resourcekey, this.levelPath);
+ return getStorageFolder(this.levelPath, this.dimensionType); // CraftBukkit
- return DimensionManager.getStorageFolder(resourcekey, this.levelDirectory.path());
+ return getStorageFolder(this.levelDirectory.path(), this.dimensionType); // CraftBukkit
}
private void checkLock() {

View File

@@ -1,6 +1,6 @@
--- a/net/minecraft/world/level/storage/WorldDataServer.java
+++ b/net/minecraft/world/level/storage/WorldDataServer.java
@@ -41,6 +41,15 @@
@@ -42,6 +42,15 @@
import net.minecraft.world.level.timers.CustomFunctionCallbackTimers;
import org.slf4j.Logger;
@@ -16,7 +16,7 @@
public class WorldDataServer implements IWorldDataServer, SaveData {
private static final Logger LOGGER = LogUtils.getLogger();
@@ -80,6 +89,19 @@
@@ -81,6 +90,19 @@
private final Set<String> knownServerBrands;
private boolean wasModded;
private final CustomFunctionCallbackTimerQueue<MinecraftServer> scheduledEvents;
@@ -35,18 +35,18 @@
+ // CraftBukkit end
private WorldDataServer(@Nullable DataFixer datafixer, int i, @Nullable NBTTagCompound nbttagcompound, boolean flag, int j, int k, int l, float f, long i1, long j1, int k1, int l1, int i2, boolean flag1, int j2, boolean flag2, boolean flag3, boolean flag4, WorldBorder.c worldborder_c, int k2, int l2, @Nullable UUID uuid, Set<String> set, CustomFunctionCallbackTimerQueue<MinecraftServer> customfunctioncallbacktimerqueue, @Nullable NBTTagCompound nbttagcompound1, NBTTagCompound nbttagcompound2, WorldSettings worldsettings, GeneratorSettings generatorsettings, Lifecycle lifecycle) {
this.fixerUpper = datafixer;
@@ -123,7 +145,8 @@
if (!generatorsettings.dimensions().containsKey(WorldDimension.OVERWORLD)) {
@@ -128,7 +150,8 @@
return (NBTBase) dynamic.get("DimensionData").get("1").get("DragonFight").orElseEmptyMap().getValue();
});
- return new WorldDataServer(datafixer, i, nbttagcompound, dynamic.get("WasModded").asBoolean(false), dynamic.get("SpawnX").asInt(0), dynamic.get("SpawnY").asInt(0), dynamic.get("SpawnZ").asInt(0), dynamic.get("SpawnAngle").asFloat(0.0F), j, dynamic.get("DayTime").asLong(j), levelversion.levelDataVersion(), dynamic.get("clearWeatherTime").asInt(0), dynamic.get("rainTime").asInt(0), dynamic.get("raining").asBoolean(false), dynamic.get("thunderTime").asInt(0), dynamic.get("thundering").asBoolean(false), dynamic.get("initialized").asBoolean(true), dynamic.get("DifficultyLocked").asBoolean(false), WorldBorder.c.read(dynamic, WorldBorder.DEFAULT_SETTINGS), dynamic.get("WanderingTraderSpawnDelay").asInt(0), dynamic.get("WanderingTraderSpawnChance").asInt(0), (UUID) dynamic.get("WanderingTraderId").read(MinecraftSerializableUUID.CODEC).result().orElse((Object) null), (Set) dynamic.get("ServerBrands").asStream().flatMap((dynamic1) -> {
- return new WorldDataServer(datafixer, i, nbttagcompound, dynamic.get("WasModded").asBoolean(false), dynamic.get("SpawnX").asInt(0), dynamic.get("SpawnY").asInt(0), dynamic.get("SpawnZ").asInt(0), dynamic.get("SpawnAngle").asFloat(0.0F), j, dynamic.get("DayTime").asLong(j), levelversion.levelDataVersion(), dynamic.get("clearWeatherTime").asInt(0), dynamic.get("rainTime").asInt(0), dynamic.get("raining").asBoolean(false), dynamic.get("thunderTime").asInt(0), dynamic.get("thundering").asBoolean(false), dynamic.get("initialized").asBoolean(true), dynamic.get("DifficultyLocked").asBoolean(false), WorldBorder.c.read(dynamic, WorldBorder.DEFAULT_SETTINGS), dynamic.get("WanderingTraderSpawnDelay").asInt(0), dynamic.get("WanderingTraderSpawnChance").asInt(0), (UUID) dynamic.get("WanderingTraderId").read(UUIDUtil.CODEC).result().orElse((Object) null), (Set) dynamic.get("ServerBrands").asStream().flatMap((dynamic1) -> {
+ // CraftBukkit - decompile error
+ return new WorldDataServer(datafixer, i, nbttagcompound, dynamic.get("WasModded").asBoolean(false), dynamic.get("SpawnX").asInt(0), dynamic.get("SpawnY").asInt(0), dynamic.get("SpawnZ").asInt(0), dynamic.get("SpawnAngle").asFloat(0.0F), j, dynamic.get("DayTime").asLong(j), levelversion.levelDataVersion(), dynamic.get("clearWeatherTime").asInt(0), dynamic.get("rainTime").asInt(0), dynamic.get("raining").asBoolean(false), dynamic.get("thunderTime").asInt(0), dynamic.get("thundering").asBoolean(false), dynamic.get("initialized").asBoolean(true), dynamic.get("DifficultyLocked").asBoolean(false), WorldBorder.c.read(dynamic, WorldBorder.DEFAULT_SETTINGS), dynamic.get("WanderingTraderSpawnDelay").asInt(0), dynamic.get("WanderingTraderSpawnChance").asInt(0), (UUID) dynamic.get("WanderingTraderId").read(MinecraftSerializableUUID.CODEC).result().orElse(null), (Set) dynamic.get("ServerBrands").asStream().flatMap((dynamic1) -> {
+ return new WorldDataServer(datafixer, i, nbttagcompound, dynamic.get("WasModded").asBoolean(false), dynamic.get("SpawnX").asInt(0), dynamic.get("SpawnY").asInt(0), dynamic.get("SpawnZ").asInt(0), dynamic.get("SpawnAngle").asFloat(0.0F), j, dynamic.get("DayTime").asLong(j), levelversion.levelDataVersion(), dynamic.get("clearWeatherTime").asInt(0), dynamic.get("rainTime").asInt(0), dynamic.get("raining").asBoolean(false), dynamic.get("thunderTime").asInt(0), dynamic.get("thundering").asBoolean(false), dynamic.get("initialized").asBoolean(true), dynamic.get("DifficultyLocked").asBoolean(false), WorldBorder.c.read(dynamic, WorldBorder.DEFAULT_SETTINGS), dynamic.get("WanderingTraderSpawnDelay").asInt(0), dynamic.get("WanderingTraderSpawnChance").asInt(0), (UUID) dynamic.get("WanderingTraderId").read(UUIDUtil.CODEC).result().orElse(null), (Set) dynamic.get("ServerBrands").asStream().flatMap((dynamic1) -> {
return dynamic1.asString().result().stream();
}).collect(Collectors.toCollection(Sets::newLinkedHashSet)), new CustomFunctionCallbackTimerQueue<>(CustomFunctionCallbackTimers.SERVER_CALLBACKS, dynamic.get("ScheduledEvents").asStream()), (NBTTagCompound) dynamic.get("CustomBossEvents").orElseEmptyMap().getValue(), nbttagcompound1, worldsettings, generatorsettings, lifecycle);
}
@@ -143,7 +166,7 @@
@@ -148,7 +171,7 @@
private void setTagData(IRegistryCustom iregistrycustom, NBTTagCompound nbttagcompound, @Nullable NBTTagCompound nbttagcompound1) {
NBTTagList nbttaglist = new NBTTagList();
@@ -55,7 +55,7 @@
Objects.requireNonNull(nbttaglist);
stream.forEach(nbttaglist::add);
@@ -158,7 +181,7 @@
@@ -163,7 +186,7 @@
nbttagcompound.put("Version", nbttagcompound2);
nbttagcompound.putInt("DataVersion", SharedConstants.getCurrentVersion().getWorldVersion());
DynamicOps<NBTBase> dynamicops = RegistryOps.create(DynamicOpsNBT.INSTANCE, iregistrycustom);
@@ -64,7 +64,7 @@
Logger logger = WorldDataServer.LOGGER;
Objects.requireNonNull(logger);
@@ -206,6 +229,8 @@
@@ -211,6 +234,8 @@
nbttagcompound.putUUID("WanderingTraderId", this.wanderingTraderId);
}
@@ -73,7 +73,7 @@
}
@Override
@@ -323,6 +348,20 @@
@@ -328,6 +353,20 @@
@Override
public void setThundering(boolean flag) {
@@ -94,7 +94,7 @@
this.thundering = flag;
}
@@ -343,6 +382,20 @@
@@ -348,6 +387,20 @@
@Override
public void setRaining(boolean flag) {
@@ -115,7 +115,7 @@
this.raining = flag;
}
@@ -409,6 +462,12 @@
@@ -414,6 +467,12 @@
@Override
public void setDifficulty(EnumDifficulty enumdifficulty) {
this.settings = this.settings.withDifficulty(enumdifficulty);
@@ -128,7 +128,7 @@
}
@Override
@@ -529,4 +588,12 @@
@@ -534,4 +593,12 @@
public WorldSettings getLevelSettings() {
return this.settings.copy();
}

View File

@@ -1,6 +1,6 @@
--- a/net/minecraft/world/level/storage/loot/LootTable.java
+++ b/net/minecraft/world/level/storage/loot/LootTable.java
@@ -30,6 +30,13 @@
@@ -32,6 +32,13 @@
import org.apache.commons.lang3.ArrayUtils;
import org.slf4j.Logger;
@@ -14,7 +14,7 @@
public class LootTable {
static final Logger LOGGER = LogUtils.getLogger();
@@ -115,8 +122,21 @@
@@ -117,8 +124,21 @@
}
public void fill(IInventory iinventory, LootTableInfo loottableinfo) {
@@ -24,15 +24,15 @@
+
+ public void fillInventory(IInventory iinventory, LootTableInfo loottableinfo, boolean plugin) {
+ // CraftBukkit end
List<ItemStack> list = this.getRandomItems(loottableinfo);
Random random = loottableinfo.getRandom();
ObjectArrayList<ItemStack> objectarraylist = this.getRandomItems(loottableinfo);
RandomSource randomsource = loottableinfo.getRandom();
+ // CraftBukkit start
+ LootGenerateEvent event = CraftEventFactory.callLootGenerateEvent(iinventory, this, loottableinfo, list, plugin);
+ LootGenerateEvent event = CraftEventFactory.callLootGenerateEvent(iinventory, this, loottableinfo, objectarraylist, plugin);
+ if (event.isCancelled()) {
+ return;
+ }
+ list = event.getLoot().stream().map(CraftItemStack::asNMSCopy).collect(Collectors.toList());
+ objectarraylist = event.getLoot().stream().map(CraftItemStack::asNMSCopy).collect(ObjectArrayList.toList());
+ // CraftBukkit end
List<Integer> list1 = this.getAvailableSlots(iinventory, random);
List<Integer> list = this.getAvailableSlots(iinventory, randomsource);
this.shuffleAndSplitItems(list, list1.size(), random);
this.shuffleAndSplitItems(objectarraylist, list.size(), randomsource);

View File

@@ -1,12 +1,12 @@
--- a/net/minecraft/world/level/storage/loot/predicates/LootItemConditionSurvivesExplosion.java
+++ b/net/minecraft/world/level/storage/loot/predicates/LootItemConditionSurvivesExplosion.java
@@ -34,7 +34,8 @@
Random random = loottableinfo.getRandom();
RandomSource randomsource = loottableinfo.getRandom();
float f = 1.0F / ofloat;
- return random.nextFloat() <= f;
- return randomsource.nextFloat() <= f;
+ // CraftBukkit - <= to < to allow for plugins to completely disable block drops from explosions
+ return random.nextFloat() < f;
+ return randomsource.nextFloat() < f;
} else {
return true;
}