@@ -1,6 +1,6 @@
|
||||
--- a/net/minecraft/world/level/storage/Convertable.java
|
||||
+++ b/net/minecraft/world/level/storage/Convertable.java
|
||||
@@ -47,6 +47,10 @@
|
||||
@@ -60,6 +60,10 @@
|
||||
import org.apache.logging.log4j.LogManager;
|
||||
import org.apache.logging.log4j.Logger;
|
||||
|
||||
@@ -10,34 +10,40 @@
|
||||
+
|
||||
public class Convertable {
|
||||
|
||||
private static final Logger LOGGER = LogManager.getLogger();
|
||||
@@ -96,21 +100,21 @@
|
||||
static final Logger LOGGER = LogManager.getLogger();
|
||||
@@ -105,26 +109,26 @@
|
||||
Logger logger = Convertable.LOGGER;
|
||||
|
||||
Objects.requireNonNull(logger);
|
||||
- return Pair.of((GeneratorSettings) dataresult.resultOrPartial(SystemUtils.a("WorldGenSettings: ", logger::error)).orElseGet(() -> {
|
||||
+ return Pair.of(dataresult.resultOrPartial(SystemUtils.a("WorldGenSettings: ", (java.util.function.Consumer<String>) logger::error)).orElseGet(() -> { // CraftBukkit - decompile error
|
||||
DataResult dataresult1 = RegistryLookupCodec.a(IRegistry.DIMENSION_TYPE_REGISTRY).codec().parse(dynamic2);
|
||||
Logger logger1 = Convertable.LOGGER;
|
||||
|
||||
logger1.getClass();
|
||||
Objects.requireNonNull(logger1);
|
||||
- IRegistry<DimensionManager> iregistry = (IRegistry) dataresult1.resultOrPartial(SystemUtils.a("Dimension type registry: ", logger1::error)).orElseThrow(() -> {
|
||||
+ IRegistry<DimensionManager> iregistry = (IRegistry) ((DataResult<IRegistry<DimensionManager>>) dataresult1).resultOrPartial(SystemUtils.a("Dimension type registry: ", logger1::error)).orElseThrow(() -> { // CraftBukkit - decompile error
|
||||
+ IRegistry<DimensionManager> iregistry = (IRegistry) ((DataResult<IRegistry<DimensionManager>>) dataresult1).resultOrPartial(SystemUtils.a("Dimension type registry: ", (java.util.function.Consumer<String>) logger1::error)).orElseThrow(() -> { // CraftBukkit - decompile error
|
||||
return new IllegalStateException("Failed to get dimension registry");
|
||||
});
|
||||
|
||||
dataresult1 = RegistryLookupCodec.a(IRegistry.ay).codec().parse(dynamic2);
|
||||
dataresult1 = RegistryLookupCodec.a(IRegistry.BIOME_REGISTRY).codec().parse(dynamic2);
|
||||
logger1 = Convertable.LOGGER;
|
||||
logger1.getClass();
|
||||
Objects.requireNonNull(logger1);
|
||||
- IRegistry<BiomeBase> iregistry1 = (IRegistry) dataresult1.resultOrPartial(SystemUtils.a("Biome registry: ", logger1::error)).orElseThrow(() -> {
|
||||
+ IRegistry<BiomeBase> iregistry1 = (IRegistry) ((DataResult<IRegistry<BiomeBase>>) dataresult1).resultOrPartial(SystemUtils.a("Biome registry: ", logger1::error)).orElseThrow(() -> { // CraftBukkit - decompile error
|
||||
+ IRegistry<BiomeBase> iregistry1 = (IRegistry) ((DataResult<IRegistry<BiomeBase>>) dataresult1).resultOrPartial(SystemUtils.a("Biome registry: ", (java.util.function.Consumer<String>) logger1::error)).orElseThrow(() -> { // CraftBukkit - decompile error
|
||||
return new IllegalStateException("Failed to get biome registry");
|
||||
});
|
||||
|
||||
dataresult1 = RegistryLookupCodec.a(IRegistry.ar).codec().parse(dynamic2);
|
||||
dataresult1 = RegistryLookupCodec.a(IRegistry.NOISE_GENERATOR_SETTINGS_REGISTRY).codec().parse(dynamic2);
|
||||
logger1 = Convertable.LOGGER;
|
||||
logger1.getClass();
|
||||
Objects.requireNonNull(logger1);
|
||||
- IRegistry<GeneratorSettingBase> iregistry2 = (IRegistry) dataresult1.resultOrPartial(SystemUtils.a("Noise settings registry: ", logger1::error)).orElseThrow(() -> {
|
||||
+ IRegistry<GeneratorSettingBase> iregistry2 = (IRegistry) ((DataResult<IRegistry<GeneratorSettingBase>>) dataresult1).resultOrPartial(SystemUtils.a("Noise settings registry: ", logger1::error)).orElseThrow(() -> { // CraftBukkit - decompile error
|
||||
+ IRegistry<GeneratorSettingBase> iregistry2 = (IRegistry) ((DataResult<IRegistry<GeneratorSettingBase>>) dataresult1).resultOrPartial(SystemUtils.a("Noise settings registry: ", (java.util.function.Consumer<String>) logger1::error)).orElseThrow(() -> { // CraftBukkit - decompile error
|
||||
return new IllegalStateException("Failed to get noise settings registry");
|
||||
});
|
||||
|
||||
@@ -218,9 +222,23 @@
|
||||
};
|
||||
@@ -294,9 +298,23 @@
|
||||
return this.backupDir;
|
||||
}
|
||||
|
||||
- public Convertable.ConversionSession c(String s) throws IOException {
|
||||
@@ -50,9 +56,9 @@
|
||||
+ public static File getFolder(File file, ResourceKey<WorldDimension> dimensionType) {
|
||||
+ if (dimensionType == WorldDimension.OVERWORLD) {
|
||||
+ return file;
|
||||
+ } else if (dimensionType == WorldDimension.THE_NETHER) {
|
||||
+ } else if (dimensionType == WorldDimension.NETHER) {
|
||||
+ return new File(file, "DIM-1");
|
||||
+ } else if (dimensionType == WorldDimension.THE_END) {
|
||||
+ } else if (dimensionType == WorldDimension.END) {
|
||||
+ return new File(file, "DIM1");
|
||||
+ } else {
|
||||
+ return new File(file, "dimensions/" + dimensionType.a().getNamespace() + "/" + dimensionType.a().getKey());
|
||||
@@ -62,10 +68,10 @@
|
||||
|
||||
public class ConversionSession implements AutoCloseable {
|
||||
|
||||
@@ -228,8 +246,12 @@
|
||||
public final Path folder;
|
||||
private final String levelName;
|
||||
private final Map<SavedFile, Path> e = Maps.newHashMap();
|
||||
@@ -304,8 +322,12 @@
|
||||
public final Path levelPath;
|
||||
private final String levelId;
|
||||
private final Map<SavedFile, Path> resources = Maps.newHashMap();
|
||||
+ // CraftBukkit start
|
||||
+ private final ResourceKey<WorldDimension> dimensionType;
|
||||
|
||||
@@ -73,15 +79,15 @@
|
||||
+ public ConversionSession(String s, ResourceKey<WorldDimension> dimensionType) throws IOException {
|
||||
+ this.dimensionType = dimensionType;
|
||||
+ // CraftBukkit end
|
||||
this.levelName = s;
|
||||
this.folder = Convertable.this.universe.resolve(s);
|
||||
this.lock = SessionLock.a(this.folder);
|
||||
@@ -246,7 +268,7 @@
|
||||
this.levelId = s;
|
||||
this.levelPath = Convertable.this.baseDir.resolve(s);
|
||||
this.lock = SessionLock.a(this.levelPath);
|
||||
@@ -322,7 +344,7 @@
|
||||
}
|
||||
|
||||
public File a(ResourceKey<World> resourcekey) {
|
||||
- return DimensionManager.a(resourcekey, this.folder.toFile());
|
||||
+ return getFolder(this.folder.toFile(), this.dimensionType); // CraftBukkit
|
||||
- return DimensionManager.a(resourcekey, this.levelPath.toFile());
|
||||
+ return getFolder(this.levelPath.toFile(), this.dimensionType); // CraftBukkit
|
||||
}
|
||||
|
||||
private void checkSession() {
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
--- a/net/minecraft/world/level/storage/WorldDataServer.java
|
||||
+++ b/net/minecraft/world/level/storage/WorldDataServer.java
|
||||
@@ -38,10 +38,19 @@
|
||||
@@ -40,6 +40,15 @@
|
||||
import org.apache.logging.log4j.LogManager;
|
||||
import org.apache.logging.log4j.Logger;
|
||||
|
||||
@@ -16,47 +16,56 @@
|
||||
public class WorldDataServer implements IWorldDataServer, SaveData {
|
||||
|
||||
private static final Logger LOGGER = LogManager.getLogger();
|
||||
- private WorldSettings b;
|
||||
+ public WorldSettings b;
|
||||
private final GeneratorSettings c;
|
||||
private final Lifecycle d;
|
||||
private int e;
|
||||
@@ -75,6 +84,7 @@
|
||||
private final Set<String> C;
|
||||
private boolean D;
|
||||
private final CustomFunctionCallbackTimerQueue<MinecraftServer> E;
|
||||
@@ -78,6 +87,7 @@
|
||||
private final Set<String> knownServerBrands;
|
||||
private boolean wasModded;
|
||||
private final CustomFunctionCallbackTimerQueue<MinecraftServer> scheduledEvents;
|
||||
+ public WorldServer world; // CraftBukkit
|
||||
|
||||
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, LinkedHashSet<String> linkedhashset, CustomFunctionCallbackTimerQueue<MinecraftServer> customfunctioncallbacktimerqueue, @Nullable NBTTagCompound nbttagcompound1, NBTTagCompound nbttagcompound2, WorldSettings worldsettings, GeneratorSettings generatorsettings, Lifecycle lifecycle) {
|
||||
this.k = datafixer;
|
||||
@@ -118,7 +128,8 @@
|
||||
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;
|
||||
@@ -121,7 +131,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.a(), 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.a(dynamic, WorldBorder.c), dynamic.get("WanderingTraderSpawnDelay").asInt(0), dynamic.get("WanderingTraderSpawnChance").asInt(0), (UUID) dynamic.get("WanderingTraderId").read(MinecraftSerializableUUID.a).result().orElse((Object) null), (LinkedHashSet) 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.a(), 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.a(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) -> {
|
||||
+ // 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.a(), 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.a(dynamic, WorldBorder.c), dynamic.get("WanderingTraderSpawnDelay").asInt(0), dynamic.get("WanderingTraderSpawnChance").asInt(0), (UUID) dynamic.get("WanderingTraderId").read(MinecraftSerializableUUID.a).result().orElse(null), (LinkedHashSet) 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.a(), 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.a(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 SystemUtils.a(dynamic1.asString().result());
|
||||
}).collect(Collectors.toCollection(Sets::newLinkedHashSet)), new CustomFunctionCallbackTimerQueue<>(CustomFunctionCallbackTimers.a, dynamic.get("ScheduledEvents").asStream()), (NBTTagCompound) dynamic.get("CustomBossEvents").orElseEmptyMap().getValue(), nbttagcompound1, worldsettings, generatorsettings, lifecycle);
|
||||
}).collect(Collectors.toCollection(Sets::newLinkedHashSet)), new CustomFunctionCallbackTimerQueue<>(CustomFunctionCallbackTimers.SERVER_CALLBACKS, dynamic.get("ScheduledEvents").asStream()), (NBTTagCompound) dynamic.get("CustomBossEvents").orElseEmptyMap().getValue(), nbttagcompound1, worldsettings, generatorsettings, lifecycle);
|
||||
}
|
||||
@@ -150,7 +161,7 @@
|
||||
@@ -141,7 +152,7 @@
|
||||
|
||||
private void a(IRegistryCustom iregistrycustom, NBTTagCompound nbttagcompound, @Nullable NBTTagCompound nbttagcompound1) {
|
||||
NBTTagList nbttaglist = new NBTTagList();
|
||||
- Stream stream = this.knownServerBrands.stream().map(NBTTagString::a);
|
||||
+ Stream<NBTTagString> stream = this.knownServerBrands.stream().map(NBTTagString::a); // CraftBukkit - decompile error
|
||||
|
||||
Objects.requireNonNull(nbttaglist);
|
||||
stream.forEach(nbttaglist::add);
|
||||
@@ -155,11 +166,11 @@
|
||||
nbttagcompound.set("Version", nbttagcompound2);
|
||||
nbttagcompound.setInt("DataVersion", SharedConstants.getGameVersion().getWorldVersion());
|
||||
RegistryWriteOps<NBTBase> registrywriteops = RegistryWriteOps.a(DynamicOpsNBT.a, iregistrycustom);
|
||||
- DataResult dataresult = GeneratorSettings.a.encodeStart(registrywriteops, this.c);
|
||||
+ DataResult<NBTBase> dataresult = GeneratorSettings.a.encodeStart(registrywriteops, this.c); // CraftBukkit - decompile error
|
||||
RegistryWriteOps<NBTBase> registrywriteops = RegistryWriteOps.a(DynamicOpsNBT.INSTANCE, iregistrycustom);
|
||||
- DataResult dataresult = GeneratorSettings.CODEC.encodeStart(registrywriteops, this.worldGenSettings);
|
||||
+ DataResult<NBTBase> dataresult = GeneratorSettings.CODEC.encodeStart(registrywriteops, this.worldGenSettings); // CraftBukkit - decompile error
|
||||
Logger logger = WorldDataServer.LOGGER;
|
||||
|
||||
logger.getClass();
|
||||
@@ -198,6 +209,7 @@
|
||||
nbttagcompound.a("WanderingTraderId", this.B);
|
||||
Objects.requireNonNull(logger);
|
||||
- dataresult.resultOrPartial(SystemUtils.a("WorldGenSettings: ", logger::error)).ifPresent((nbtbase) -> {
|
||||
+ dataresult.resultOrPartial(SystemUtils.a("WorldGenSettings: ", (java.util.function.Consumer<String>) logger::error)).ifPresent((nbtbase) -> { // CraftBukkit - decompile error
|
||||
nbttagcompound.set("WorldGenSettings", nbtbase);
|
||||
});
|
||||
nbttagcompound.setInt("GameType", this.settings.getGameType().getId());
|
||||
@@ -203,6 +214,7 @@
|
||||
nbttagcompound.a("WanderingTraderId", this.wanderingTraderId);
|
||||
}
|
||||
|
||||
+ nbttagcompound.setString("Bukkit.Version", Bukkit.getName() + "/" + Bukkit.getVersion() + "/" + Bukkit.getBukkitVersion()); // CraftBukkit
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -315,6 +327,20 @@
|
||||
@@ -320,6 +332,20 @@
|
||||
|
||||
@Override
|
||||
public void setThundering(boolean flag) {
|
||||
@@ -77,7 +86,7 @@
|
||||
this.thundering = flag;
|
||||
}
|
||||
|
||||
@@ -335,6 +361,20 @@
|
||||
@@ -340,6 +366,20 @@
|
||||
|
||||
@Override
|
||||
public void setStorm(boolean flag) {
|
||||
@@ -98,28 +107,28 @@
|
||||
this.raining = flag;
|
||||
}
|
||||
|
||||
@@ -401,6 +441,12 @@
|
||||
@@ -406,6 +446,12 @@
|
||||
@Override
|
||||
public void setDifficulty(EnumDifficulty enumdifficulty) {
|
||||
this.b = this.b.a(enumdifficulty);
|
||||
this.settings = this.settings.a(enumdifficulty);
|
||||
+ // CraftBukkit start
|
||||
+ PacketPlayOutServerDifficulty packet = new PacketPlayOutServerDifficulty(this.getDifficulty(), this.isDifficultyLocked());
|
||||
+ for (EntityPlayer player : (java.util.List<EntityPlayer>) (java.util.List) world.getPlayers()) {
|
||||
+ player.playerConnection.sendPacket(packet);
|
||||
+ player.connection.sendPacket(packet);
|
||||
+ }
|
||||
+ // CraftBukkit end
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -505,4 +551,12 @@
|
||||
public IWorldDataServer H() {
|
||||
return this;
|
||||
@@ -526,4 +572,12 @@
|
||||
public WorldSettings I() {
|
||||
return this.settings.h();
|
||||
}
|
||||
+
|
||||
+ // CraftBukkit start - Check if the name stored in NBT is the correct one
|
||||
+ public void checkName(String name) {
|
||||
+ if (!this.b.levelName.equals(name)) {
|
||||
+ this.b.levelName = name;
|
||||
+ if (!this.settings.levelName.equals(name)) {
|
||||
+ this.settings.levelName = name;
|
||||
+ }
|
||||
+ }
|
||||
+ // CraftBukkit end
|
||||
|
||||
@@ -30,7 +30,7 @@
|
||||
+ // CraftBukkit end
|
||||
int i = nbttagcompound.hasKeyOfType("DataVersion", 3) ? nbttagcompound.getInt("DataVersion") : -1;
|
||||
|
||||
entityhuman.load(GameProfileSerializer.a(this.a, DataFixTypes.PLAYER, nbttagcompound, i));
|
||||
entityhuman.load(GameProfileSerializer.a(this.fixerUpper, DataFixTypes.PLAYER, nbttagcompound, i));
|
||||
@@ -63,6 +80,22 @@
|
||||
return nbttagcompound;
|
||||
}
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
--- a/net/minecraft/world/level/storage/loot/LootTable.java
|
||||
+++ b/net/minecraft/world/level/storage/loot/LootTable.java
|
||||
@@ -29,6 +29,13 @@
|
||||
@@ -30,6 +30,13 @@
|
||||
import org.apache.logging.log4j.LogManager;
|
||||
import org.apache.logging.log4j.Logger;
|
||||
|
||||
@@ -13,8 +13,8 @@
|
||||
+
|
||||
public class LootTable {
|
||||
|
||||
private static final Logger LOGGER = LogManager.getLogger();
|
||||
@@ -113,8 +120,21 @@
|
||||
static final Logger LOGGER = LogManager.getLogger();
|
||||
@@ -115,8 +122,21 @@
|
||||
}
|
||||
|
||||
public void fillInventory(IInventory iinventory, LootTableInfo loottableinfo) {
|
||||
|
||||
@@ -1,29 +1,29 @@
|
||||
--- a/net/minecraft/world/level/storage/loot/LootTableRegistry.java
|
||||
+++ b/net/minecraft/world/level/storage/loot/LootTableRegistry.java
|
||||
@@ -21,6 +21,7 @@
|
||||
@@ -22,6 +22,7 @@
|
||||
private static final Logger LOGGER = LogManager.getLogger();
|
||||
private static final Gson b = LootSerialization.c().create();
|
||||
private Map<MinecraftKey, LootTable> keyToLootTable = ImmutableMap.of();
|
||||
private static final Gson GSON = LootSerialization.c().create();
|
||||
private Map<MinecraftKey, LootTable> tables = ImmutableMap.of();
|
||||
+ public Map<LootTable, MinecraftKey> lootTableToKey = ImmutableMap.of(); // CraftBukkit
|
||||
private final LootPredicateManager d;
|
||||
private final LootPredicateManager predicateManager;
|
||||
|
||||
public LootTableRegistry(LootPredicateManager lootpredicatemanager) {
|
||||
@@ -56,7 +57,7 @@
|
||||
LootPredicateManager lootpredicatemanager = this.d;
|
||||
@@ -57,7 +58,7 @@
|
||||
LootPredicateManager lootpredicatemanager = this.predicateManager;
|
||||
|
||||
this.d.getClass();
|
||||
Objects.requireNonNull(this.predicateManager);
|
||||
- Function function = lootpredicatemanager::a;
|
||||
+ Function<MinecraftKey, net.minecraft.world.level.storage.loot.predicates.LootItemCondition> function = lootpredicatemanager::a; // CraftBukkit - decompile error
|
||||
|
||||
immutablemap.getClass();
|
||||
Objects.requireNonNull(immutablemap);
|
||||
LootCollector lootcollector = new LootCollector(lootcontextparameterset, function, immutablemap::get);
|
||||
@@ -68,6 +69,11 @@
|
||||
LootTableRegistry.LOGGER.warn("Found validation problem in " + s + ": " + s1);
|
||||
@@ -69,6 +70,11 @@
|
||||
LootTableRegistry.LOGGER.warn("Found validation problem in {}: {}", s, s1);
|
||||
});
|
||||
this.keyToLootTable = immutablemap;
|
||||
this.tables = immutablemap;
|
||||
+ // CraftBukkit start - build a reversed registry map
|
||||
+ ImmutableMap.Builder<LootTable, MinecraftKey> lootTableToKeyBuilder = ImmutableMap.builder();
|
||||
+ this.keyToLootTable.forEach((lootTable, key) -> lootTableToKeyBuilder.put(key, lootTable));
|
||||
+ this.tables.forEach((lootTable, key) -> lootTableToKeyBuilder.put(key, lootTable));
|
||||
+ this.lootTableToKey = lootTableToKeyBuilder.build();
|
||||
+ // CraftBukkit end
|
||||
}
|
||||
|
||||
@@ -1,20 +0,0 @@
|
||||
--- a/net/minecraft/world/level/storage/loot/entries/LootEntryAbstract.java
|
||||
+++ b/net/minecraft/world/level/storage/loot/entries/LootEntryAbstract.java
|
||||
@@ -41,7 +41,16 @@
|
||||
|
||||
public Serializer() {}
|
||||
|
||||
- public final void serializeType(JsonObject jsonobject, T t0, JsonSerializationContext jsonserializationcontext) {}
|
||||
+ // CraftBukkit start
|
||||
+ @Override
|
||||
+ public final void a(JsonObject jsonobject, T t0, JsonSerializationContext jsonserializationcontext) {
|
||||
+ if (!org.apache.commons.lang3.ArrayUtils.isEmpty(t0.d)) {
|
||||
+ jsonobject.add("conditions", jsonserializationcontext.serialize(t0.d));
|
||||
+ }
|
||||
+
|
||||
+ this.serializeType(jsonobject, t0, jsonserializationcontext);
|
||||
+ }
|
||||
+ // CraftBukkit end
|
||||
|
||||
@Override
|
||||
public final T a(JsonObject jsonobject, JsonDeserializationContext jsondeserializationcontext) {
|
||||
@@ -1,6 +1,6 @@
|
||||
--- a/net/minecraft/world/level/storage/loot/functions/LootEnchantFunction.java
|
||||
+++ b/net/minecraft/world/level/storage/loot/functions/LootEnchantFunction.java
|
||||
@@ -47,8 +47,13 @@
|
||||
@@ -49,8 +49,13 @@
|
||||
|
||||
if (entity instanceof EntityLiving) {
|
||||
int i = EnchantmentManager.g((EntityLiving) entity);
|
||||
@@ -15,12 +15,12 @@
|
||||
return itemstack;
|
||||
}
|
||||
|
||||
@@ -72,7 +77,7 @@
|
||||
@@ -99,7 +104,7 @@
|
||||
public b() {}
|
||||
|
||||
public void a(JsonObject jsonobject, LootEnchantFunction lootenchantfunction, JsonSerializationContext jsonserializationcontext) {
|
||||
- super.a(jsonobject, (LootItemFunctionConditional) lootenchantfunction, jsonserializationcontext);
|
||||
+ super.a(jsonobject, lootenchantfunction, jsonserializationcontext); // CraftBukkit - decompile error
|
||||
jsonobject.add("count", jsonserializationcontext.serialize(lootenchantfunction.a));
|
||||
jsonobject.add("count", jsonserializationcontext.serialize(lootenchantfunction.value));
|
||||
if (lootenchantfunction.c()) {
|
||||
jsonobject.add("limit", jsonserializationcontext.serialize(lootenchantfunction.b));
|
||||
jsonobject.add("limit", jsonserializationcontext.serialize(lootenchantfunction.limit));
|
||||
|
||||
@@ -6,5 +6,5 @@
|
||||
public static final LootContextParameter<Float> EXPLOSION_RADIUS = a("explosion_radius");
|
||||
+ public static final LootContextParameter<Integer> LOOTING_MOD = new LootContextParameter<>(new MinecraftKey("bukkit:looting_mod")); // CraftBukkit
|
||||
|
||||
private static <T> LootContextParameter<T> a(String s) {
|
||||
return new LootContextParameter<>(new MinecraftKey(s));
|
||||
public LootContextParameters() {}
|
||||
|
||||
|
||||
@@ -10,5 +10,5 @@
|
||||
+ }
|
||||
+ // CraftBukkit end
|
||||
|
||||
return loottableinfo.a().nextFloat() < this.a + (float) i * this.b;
|
||||
return loottableinfo.a().nextFloat() < this.percent + (float) i * this.lootingMultiplier;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user