mirror of
https://github.com/VolmitSoftware/Iris.git
synced 2026-07-13 02:15:46 +00:00
Sealed Seam
This commit is contained in:
@@ -19,8 +19,8 @@
|
||||
package art.arcane.iris.engine.framework;
|
||||
|
||||
import art.arcane.iris.core.loader.IrisData;
|
||||
import art.arcane.iris.core.nms.INMS;
|
||||
import art.arcane.iris.engine.object.IrisWorld;
|
||||
import art.arcane.iris.platform.bukkit.BukkitWorld;
|
||||
import art.arcane.iris.spi.IrisPlatforms;
|
||||
import art.arcane.volmlib.util.collection.KList;
|
||||
|
||||
@@ -85,7 +85,7 @@ public final class StructureReachability {
|
||||
return Collections.emptySet();
|
||||
}
|
||||
Set<String> reachable = new LinkedHashSet<>();
|
||||
for (String key : INMS.get().getReachableStructureKeys(world.realWorld())) {
|
||||
for (String key : IrisPlatforms.get().structureHooks().reachableStructureKeys(new BukkitWorld(world.realWorld()))) {
|
||||
if (key != null && !key.isEmpty()) {
|
||||
reachable.add(key.toLowerCase());
|
||||
}
|
||||
@@ -108,7 +108,7 @@ public final class StructureReachability {
|
||||
return missing;
|
||||
}
|
||||
Set<String> possible = new LinkedHashSet<>();
|
||||
for (String key : INMS.get().getPossibleBiomeKeys(world.realWorld())) {
|
||||
for (String key : IrisPlatforms.get().structureHooks().possibleBiomeKeys(new BukkitWorld(world.realWorld()))) {
|
||||
if (key != null) {
|
||||
possible.add(key.toLowerCase());
|
||||
}
|
||||
|
||||
@@ -22,10 +22,10 @@ import art.arcane.iris.Iris;
|
||||
import art.arcane.iris.core.link.Identifier;
|
||||
import art.arcane.iris.core.loader.IrisData;
|
||||
import art.arcane.iris.core.loader.IrisRegistrant;
|
||||
import art.arcane.iris.core.nms.INMS;
|
||||
import art.arcane.iris.engine.data.cache.AtomicCache;
|
||||
import art.arcane.iris.engine.object.annotations.*;
|
||||
import art.arcane.iris.platform.bukkit.BukkitBlockState;
|
||||
import art.arcane.iris.platform.bukkit.BukkitPlatform;
|
||||
import art.arcane.iris.spi.PlatformBlockState;
|
||||
import art.arcane.volmlib.util.collection.KList;
|
||||
import art.arcane.volmlib.util.collection.KMap;
|
||||
@@ -215,7 +215,7 @@ public class IrisBlockData extends IrisRegistrant {
|
||||
entity.putIfAbsent("id", Identifier.fromString(id).toString());
|
||||
}
|
||||
|
||||
if (!INMS.get().hasTile(type) || tileData == null || tileData.isEmpty())
|
||||
if (!BukkitPlatform.hasTile(type) || tileData == null || tileData.isEmpty())
|
||||
return null;
|
||||
return new TileData(type, this.tileData);
|
||||
}
|
||||
|
||||
@@ -23,9 +23,9 @@ import art.arcane.iris.core.IrisSettings;
|
||||
import art.arcane.iris.core.ServerConfigurator.DimensionHeight;
|
||||
import art.arcane.iris.core.loader.IrisData;
|
||||
import art.arcane.iris.platform.bukkit.BukkitBlockState;
|
||||
import art.arcane.iris.platform.bukkit.BukkitPlatform;
|
||||
import art.arcane.iris.spi.PlatformBlockState;
|
||||
import art.arcane.iris.core.loader.IrisRegistrant;
|
||||
import art.arcane.iris.core.nms.INMS;
|
||||
import art.arcane.iris.core.nms.datapack.IDataFixer;
|
||||
import art.arcane.iris.core.nms.datapack.IDataFixer.Dimension;
|
||||
import art.arcane.iris.engine.data.cache.AtomicCache;
|
||||
@@ -601,7 +601,7 @@ public class IrisDimension extends IrisRegistrant {
|
||||
"max_format": {}
|
||||
}
|
||||
}
|
||||
""".replace("{}", INMS.get().getDataVersion().getPackFormat() + "");
|
||||
""".replace("{}", BukkitPlatform.dataPackFormat() + "");
|
||||
|
||||
for (File datapacks : folders) {
|
||||
File mcm = new File(datapacks, "iris/pack.mcmeta");
|
||||
|
||||
@@ -20,10 +20,10 @@ package art.arcane.iris.engine.object;
|
||||
|
||||
import art.arcane.iris.Iris;
|
||||
import art.arcane.iris.core.link.Identifier;
|
||||
import art.arcane.iris.core.nms.INMS;
|
||||
import art.arcane.iris.core.service.ExternalDataSVC;
|
||||
import art.arcane.iris.engine.data.cache.AtomicCache;
|
||||
import art.arcane.iris.engine.object.annotations.*;
|
||||
import art.arcane.iris.platform.bukkit.BukkitPlatform;
|
||||
import art.arcane.volmlib.util.collection.KList;
|
||||
import art.arcane.volmlib.util.collection.KMap;
|
||||
import art.arcane.iris.util.common.data.B;
|
||||
@@ -37,17 +37,17 @@ import lombok.NoArgsConstructor;
|
||||
import lombok.experimental.Accessors;
|
||||
import org.bukkit.DyeColor;
|
||||
import org.bukkit.Material;
|
||||
import org.bukkit.inventory.ItemFlag;
|
||||
import org.bukkit.inventory.ItemStack;
|
||||
import org.bukkit.inventory.meta.Damageable;
|
||||
import org.bukkit.inventory.meta.ItemMeta;
|
||||
import org.bukkit.inventory.meta.LeatherArmorMeta;
|
||||
import org.bukkit.inventory.meta.components.CustomModelDataComponent;
|
||||
import org.bukkit.material.Colorable;
|
||||
|
||||
import java.awt.*;
|
||||
import java.util.List;
|
||||
import java.util.Optional;
|
||||
import org.bukkit.inventory.ItemFlag;
|
||||
import org.bukkit.inventory.ItemStack;
|
||||
import org.bukkit.inventory.meta.Damageable;
|
||||
import org.bukkit.inventory.meta.ItemMeta;
|
||||
import org.bukkit.inventory.meta.LeatherArmorMeta;
|
||||
import org.bukkit.inventory.meta.components.CustomModelDataComponent;
|
||||
import org.bukkit.material.Colorable;
|
||||
|
||||
import java.awt.*;
|
||||
import java.util.List;
|
||||
import java.util.Optional;
|
||||
|
||||
@Snippet("loot")
|
||||
@Accessors(chain = true)
|
||||
@@ -116,7 +116,7 @@ public class IrisLoot {
|
||||
if (is == null)
|
||||
return new ItemStack(Material.AIR);
|
||||
is.setItemMeta(applyProperties(is, rng, debug, null));
|
||||
return INMS.get().applyCustomNbt(is, customNbt);
|
||||
return BukkitPlatform.applyCustomNbt(is, customNbt);
|
||||
} catch (Throwable e) {
|
||||
Iris.reportError(e);
|
||||
return new ItemStack(Material.AIR);
|
||||
@@ -134,7 +134,7 @@ public class IrisLoot {
|
||||
if (is == null)
|
||||
return null;
|
||||
is.setItemMeta(applyProperties(is, rng, debug, table));
|
||||
return INMS.get().applyCustomNbt(is, customNbt);
|
||||
return BukkitPlatform.applyCustomNbt(is, customNbt);
|
||||
} catch (Throwable e) {
|
||||
//Iris.reportError(e);
|
||||
e.printStackTrace();
|
||||
@@ -178,11 +178,11 @@ public class IrisLoot {
|
||||
m.addItemFlags(i);
|
||||
}
|
||||
|
||||
if (getCustomModel() != null) {
|
||||
CustomModelDataComponent customModelData = m.getCustomModelDataComponent();
|
||||
customModelData.setFloats(List.of(getCustomModel().floatValue()));
|
||||
m.setCustomModelDataComponent(customModelData);
|
||||
}
|
||||
if (getCustomModel() != null) {
|
||||
CustomModelDataComponent customModelData = m.getCustomModelDataComponent();
|
||||
customModelData.setFloats(List.of(getCustomModel().floatValue()));
|
||||
m.setCustomModelDataComponent(customModelData);
|
||||
}
|
||||
|
||||
if (is.getType().getMaxDurability() > 0 && m instanceof Damageable d) {
|
||||
int max = is.getType().getMaxDurability();
|
||||
@@ -198,9 +198,9 @@ public class IrisLoot {
|
||||
colorable.setColor(getDyeColor());
|
||||
}
|
||||
|
||||
if (displayName != null) {
|
||||
m.setDisplayName(C.translateAlternateColorCodes('&', displayName));
|
||||
}
|
||||
if (displayName != null) {
|
||||
m.setDisplayName(C.translateAlternateColorCodes('&', displayName));
|
||||
}
|
||||
|
||||
KList<String> lore = new KList<>();
|
||||
|
||||
|
||||
@@ -22,7 +22,7 @@ import com.google.gson.Gson;
|
||||
import com.google.gson.GsonBuilder;
|
||||
import com.google.gson.Strictness;
|
||||
import art.arcane.iris.Iris;
|
||||
import art.arcane.iris.core.nms.INMS;
|
||||
import art.arcane.iris.platform.bukkit.BukkitPlatform;
|
||||
import art.arcane.iris.util.common.reflect.KeyedType;
|
||||
import art.arcane.volmlib.util.collection.KMap;
|
||||
import lombok.*;
|
||||
@@ -56,7 +56,7 @@ public class TileData implements Cloneable {
|
||||
}
|
||||
|
||||
public static TileData getTileState(Block block, boolean useLegacy) {
|
||||
if (!INMS.get().hasTile(block.getType()))
|
||||
if (!BukkitPlatform.hasTile(block.getType()))
|
||||
return null;
|
||||
if (useLegacy) {
|
||||
var legacy = LegacyTileData.fromBukkit(block.getState());
|
||||
@@ -91,14 +91,14 @@ public class TileData implements Cloneable {
|
||||
if (material == null) throw new IllegalStateException("Material not set");
|
||||
if (block.getType() != material)
|
||||
throw new IllegalStateException("Material mismatch: " + block.getType() + " vs " + material);
|
||||
INMS.get().deserializeTile(properties, block.getLocation());
|
||||
BukkitPlatform.deserializeTile(properties, block.getLocation());
|
||||
}
|
||||
|
||||
public TileData fromBukkit(Block block) {
|
||||
if (material != null && block.getType() != material)
|
||||
throw new IllegalStateException("Material mismatch: " + block.getType() + " vs " + material);
|
||||
if (material == null) material = block.getType();
|
||||
properties = INMS.get().serializeTile(block.getLocation());
|
||||
properties = BukkitPlatform.serializeTile(block.getLocation());
|
||||
return this;
|
||||
}
|
||||
|
||||
|
||||
@@ -31,9 +31,11 @@ import art.arcane.iris.spi.PlatformScheduler;
|
||||
import art.arcane.iris.spi.PlatformStructureHooks;
|
||||
import art.arcane.iris.spi.PlatformWorld;
|
||||
import art.arcane.iris.util.common.scheduling.J;
|
||||
import art.arcane.volmlib.util.collection.KMap;
|
||||
import art.arcane.volmlib.util.math.Vector3d;
|
||||
import org.bukkit.Bukkit;
|
||||
import org.bukkit.Location;
|
||||
import org.bukkit.Material;
|
||||
import org.bukkit.World;
|
||||
import org.bukkit.block.Biome;
|
||||
import org.bukkit.block.data.BlockData;
|
||||
@@ -41,6 +43,7 @@ import org.bukkit.entity.Entity;
|
||||
import org.bukkit.entity.EntityType;
|
||||
import org.bukkit.event.Listener;
|
||||
import org.bukkit.event.entity.CreatureSpawnEvent;
|
||||
import org.bukkit.inventory.ItemStack;
|
||||
import org.bukkit.util.Vector;
|
||||
|
||||
import java.io.File;
|
||||
@@ -105,6 +108,26 @@ public final class BukkitPlatform implements IrisPlatform {
|
||||
return INMS.get().getBoundingbox(type);
|
||||
}
|
||||
|
||||
public static boolean hasTile(Material material) {
|
||||
return INMS.get().hasTile(material);
|
||||
}
|
||||
|
||||
public static KMap<String, Object> serializeTile(Location location) {
|
||||
return INMS.get().serializeTile(location);
|
||||
}
|
||||
|
||||
public static void deserializeTile(KMap<String, Object> properties, Location location) {
|
||||
INMS.get().deserializeTile(properties, location);
|
||||
}
|
||||
|
||||
public static ItemStack applyCustomNbt(ItemStack itemStack, KMap<String, Object> customNbt) {
|
||||
return INMS.get().applyCustomNbt(itemStack, customNbt);
|
||||
}
|
||||
|
||||
public static int dataPackFormat() {
|
||||
return INMS.get().getDataVersion().getPackFormat();
|
||||
}
|
||||
|
||||
@Override
|
||||
public String platformName() {
|
||||
return "bukkit";
|
||||
|
||||
@@ -50,6 +50,16 @@ public final class BukkitStructureHooks implements PlatformStructureHooks {
|
||||
return new ArrayList<>(INMS.get().getObjectFeatureKeys());
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<String> reachableStructureKeys(PlatformWorld world) {
|
||||
return new ArrayList<>(INMS.get().getReachableStructureKeys(BukkitPlatform.unwrapWorld(world)));
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<String> possibleBiomeKeys(PlatformWorld world) {
|
||||
return new ArrayList<>(INMS.get().getPossibleBiomeKeys(BukkitPlatform.unwrapWorld(world)));
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean placeFeature(PlatformWorld world, int x, int y, int z, String featureKey, long seed) {
|
||||
return INMS.get().placeFeature(BukkitPlatform.unwrapWorld(world), x, y, z, featureKey, seed);
|
||||
|
||||
@@ -32,6 +32,10 @@ public interface PlatformStructureHooks {
|
||||
|
||||
List<String> objectFeatureKeys();
|
||||
|
||||
List<String> reachableStructureKeys(PlatformWorld world);
|
||||
|
||||
List<String> possibleBiomeKeys(PlatformWorld world);
|
||||
|
||||
boolean placeFeature(PlatformWorld world, int x, int y, int z, String featureKey, long seed);
|
||||
|
||||
int[] placeStructure(PlatformWorld world, int chunkX, int chunkZ, String structureKey, long seed, int maxSpan);
|
||||
|
||||
Reference in New Issue
Block a user