@@ -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() {
|
||||
|
||||
@@ -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();
|
||||
}
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user