mirror of
https://github.com/VolmitSoftware/Iris.git
synced 2026-07-12 18:04:01 +00:00
Resolution Currency
This commit is contained in:
@@ -18,6 +18,8 @@
|
||||
|
||||
package art.arcane.iris.core.commands;
|
||||
|
||||
import art.arcane.iris.platform.bukkit.BukkitBlockResolution;
|
||||
|
||||
import art.arcane.iris.platform.bukkit.BukkitPlatform;
|
||||
import art.arcane.iris.Iris;
|
||||
import art.arcane.iris.core.edit.BlockSignal;
|
||||
@@ -26,7 +28,6 @@ import art.arcane.iris.core.tools.IrisToolbelt;
|
||||
import art.arcane.iris.engine.framework.Engine;
|
||||
import art.arcane.iris.engine.object.IrisBiome;
|
||||
import art.arcane.iris.engine.object.IrisRegion;
|
||||
import art.arcane.iris.util.common.data.B;
|
||||
import art.arcane.iris.util.common.director.DirectorExecutor;
|
||||
import art.arcane.volmlib.util.director.DirectorOrigin;
|
||||
import art.arcane.volmlib.util.director.annotations.Director;
|
||||
@@ -119,31 +120,31 @@ public class CommandWhat implements DirectorExecutor {
|
||||
sender().sendMessage("Material: " + C.GREEN + bd.getMaterial().name());
|
||||
sender().sendMessage("Full: " + C.WHITE + bd.getAsString(true));
|
||||
|
||||
if (B.isStorage(bd)) {
|
||||
if (BukkitBlockResolution.isStorage(bd)) {
|
||||
sender().sendMessage(C.YELLOW + "* Storage Block (Loot Capable)");
|
||||
}
|
||||
|
||||
if (B.isLit(bd)) {
|
||||
if (BukkitBlockResolution.isLit(bd)) {
|
||||
sender().sendMessage(C.YELLOW + "* Lit Block (Light Capable)");
|
||||
}
|
||||
|
||||
if (B.isFoliage(bd)) {
|
||||
if (BukkitBlockResolution.isFoliage(bd)) {
|
||||
sender().sendMessage(C.YELLOW + "* Foliage Block");
|
||||
}
|
||||
|
||||
if (B.isDecorant(bd)) {
|
||||
if (BukkitBlockResolution.isDecorant(bd)) {
|
||||
sender().sendMessage(C.YELLOW + "* Decorant Block");
|
||||
}
|
||||
|
||||
if (B.isFluid(bd)) {
|
||||
if (BukkitBlockResolution.isFluid(bd)) {
|
||||
sender().sendMessage(C.YELLOW + "* Fluid Block");
|
||||
}
|
||||
|
||||
if (B.isFoliagePlantable(bd)) {
|
||||
if (BukkitBlockResolution.isFoliagePlantable(bd)) {
|
||||
sender().sendMessage(C.YELLOW + "* Plantable Foliage Block");
|
||||
}
|
||||
|
||||
if (B.isSolid(bd)) {
|
||||
if (BukkitBlockResolution.isSolid(bd)) {
|
||||
sender().sendMessage(C.YELLOW + "* Solid Block");
|
||||
}
|
||||
}
|
||||
|
||||
+27
-27
@@ -1,3 +1,6 @@
|
||||
art/arcane/iris/core/IrisRuntimeSchedulerMode.java
|
||||
art/arcane/iris/core/IrisWorlds.java
|
||||
art/arcane/iris/core/ServerConfigurator.java
|
||||
art/arcane/iris/core/datapack/DatapackIngestService.java
|
||||
art/arcane/iris/core/edit/BlockSignal.java
|
||||
art/arcane/iris/core/edit/DustRevealer.java
|
||||
@@ -5,8 +8,6 @@ art/arcane/iris/core/events/IrisEngineEvent.java
|
||||
art/arcane/iris/core/events/IrisEngineHotloadEvent.java
|
||||
art/arcane/iris/core/events/IrisLootEvent.java
|
||||
art/arcane/iris/core/gui/PregeneratorJob.java
|
||||
art/arcane/iris/core/IrisRuntimeSchedulerMode.java
|
||||
art/arcane/iris/core/IrisWorlds.java
|
||||
art/arcane/iris/core/lifecycle/BukkitPublicBackend.java
|
||||
art/arcane/iris/core/lifecycle/CapabilitySnapshot.java
|
||||
art/arcane/iris/core/lifecycle/PaperLibBootstrap.java
|
||||
@@ -18,6 +19,10 @@ art/arcane/iris/core/lifecycle/WorldLifecycleStaging.java
|
||||
art/arcane/iris/core/lifecycle/WorldLifecycleSupport.java
|
||||
art/arcane/iris/core/lifecycle/WorldsProviderBackend.java
|
||||
art/arcane/iris/core/link/CustomItemsDataProvider.java
|
||||
art/arcane/iris/core/link/ExternalDataProvider.java
|
||||
art/arcane/iris/core/link/Identifier.java
|
||||
art/arcane/iris/core/link/MultiverseCoreLink.java
|
||||
art/arcane/iris/core/link/WorldEditLink.java
|
||||
art/arcane/iris/core/link/data/CraftEngineDataProvider.java
|
||||
art/arcane/iris/core/link/data/EcoItemsDataProvider.java
|
||||
art/arcane/iris/core/link/data/ExecutableItemsDataProvider.java
|
||||
@@ -28,14 +33,10 @@ art/arcane/iris/core/link/data/MMOItemsDataProvider.java
|
||||
art/arcane/iris/core/link/data/MythicCrucibleDataProvider.java
|
||||
art/arcane/iris/core/link/data/MythicMobsDataProvider.java
|
||||
art/arcane/iris/core/link/data/NexoDataProvider.java
|
||||
art/arcane/iris/core/link/ExternalDataProvider.java
|
||||
art/arcane/iris/core/link/Identifier.java
|
||||
art/arcane/iris/core/link/MultiverseCoreLink.java
|
||||
art/arcane/iris/core/link/WorldEditLink.java
|
||||
art/arcane/iris/core/nms/datapack/v1206/DataFixerV1206.java
|
||||
art/arcane/iris/core/nms/INMS.java
|
||||
art/arcane/iris/core/nms/INMSBinding.java
|
||||
art/arcane/iris/core/nms/MinecraftVersion.java
|
||||
art/arcane/iris/core/nms/datapack/v1206/DataFixerV1206.java
|
||||
art/arcane/iris/core/nms/v1X/NMSBinding1X.java
|
||||
art/arcane/iris/core/pack/IrisPack.java
|
||||
art/arcane/iris/core/pregenerator/DeepSearchPregenerator.java
|
||||
@@ -57,12 +58,11 @@ art/arcane/iris/core/runtime/WorldRuntimeControlBackend.java
|
||||
art/arcane/iris/core/runtime/WorldRuntimeControlService.java
|
||||
art/arcane/iris/core/safeguard/Mode.java
|
||||
art/arcane/iris/core/safeguard/task/Tasks.java
|
||||
art/arcane/iris/core/ServerConfigurator.java
|
||||
art/arcane/iris/core/service/BoardSVC.java
|
||||
art/arcane/iris/core/service/ExternalDataSVC.java
|
||||
art/arcane/iris/core/service/GlobalCacheSVC.java
|
||||
art/arcane/iris/core/service/ObjectStudioSaveService.java
|
||||
art/arcane/iris/core/service/ObjectSVC.java
|
||||
art/arcane/iris/core/service/ObjectStudioSaveService.java
|
||||
art/arcane/iris/core/service/StudioSVC.java
|
||||
art/arcane/iris/core/service/TreeSVC.java
|
||||
art/arcane/iris/core/structure/BulkStructureImporter.java
|
||||
@@ -77,6 +77,8 @@ art/arcane/iris/core/tools/IrisReflectiveAPI.java
|
||||
art/arcane/iris/core/tools/IrisToolbelt.java
|
||||
art/arcane/iris/core/tools/IrisWorldCreator.java
|
||||
art/arcane/iris/core/tools/TreePlausibilizer.java
|
||||
art/arcane/iris/engine/IrisEngineEffects.java
|
||||
art/arcane/iris/engine/IrisWorldManager.java
|
||||
art/arcane/iris/engine/actuator/IrisBiomeActuator.java
|
||||
art/arcane/iris/engine/data/chunk/LinkedTerrainChunk.java
|
||||
art/arcane/iris/engine/data/chunk/TerrainChunk.java
|
||||
@@ -88,24 +90,15 @@ art/arcane/iris/engine/framework/EnginePlayer.java
|
||||
art/arcane/iris/engine/framework/EngineWorldManager.java
|
||||
art/arcane/iris/engine/framework/LootProvider.java
|
||||
art/arcane/iris/engine/framework/placer/WorldObjectPlacer.java
|
||||
art/arcane/iris/engine/IrisEngineEffects.java
|
||||
art/arcane/iris/engine/IrisWorldManager.java
|
||||
art/arcane/iris/engine/mantle/components/MantleFloatingObjectComponent.java
|
||||
art/arcane/iris/engine/mantle/components/MantleObjectComponent.java
|
||||
art/arcane/iris/engine/mantle/EngineMantle.java
|
||||
art/arcane/iris/engine/mantle/MantleWriter.java
|
||||
art/arcane/iris/engine/mantle/components/MantleFloatingObjectComponent.java
|
||||
art/arcane/iris/engine/mantle/components/MantleObjectComponent.java
|
||||
art/arcane/iris/engine/modifier/IrisDepositModifier.java
|
||||
art/arcane/iris/engine/modifier/IrisFloatingChildBiomeModifier.java
|
||||
art/arcane/iris/engine/modifier/IrisPerfectionModifier.java
|
||||
art/arcane/iris/engine/modifier/IrisPostModifier.java
|
||||
art/arcane/iris/engine/object/annotations/functions/LootTableKeyFunction.java
|
||||
art/arcane/iris/engine/object/BlockDataMergeSupport.java
|
||||
art/arcane/iris/engine/object/coral/CoralGenerator.java
|
||||
art/arcane/iris/engine/object/crystal/CrystalGenerator.java
|
||||
art/arcane/iris/engine/object/formation/FormationBlockResolver.java
|
||||
art/arcane/iris/engine/object/formation/FormationGenerator.java
|
||||
art/arcane/iris/engine/object/fungi/FungusGenerator.java
|
||||
art/arcane/iris/engine/object/fungi/FungusStemBuilder.java
|
||||
art/arcane/iris/engine/object/IPostBlockAccess.java
|
||||
art/arcane/iris/engine/object/IrisAttributeModifier.java
|
||||
art/arcane/iris/engine/object/IrisBiome.java
|
||||
@@ -141,10 +134,17 @@ art/arcane/iris/engine/object/IrisVillagerTrade.java
|
||||
art/arcane/iris/engine/object/IrisWorld.java
|
||||
art/arcane/iris/engine/object/LegacyTileData.java
|
||||
art/arcane/iris/engine/object/PotionEffectTypes.java
|
||||
art/arcane/iris/engine/object/TileData.java
|
||||
art/arcane/iris/engine/object/annotations/functions/LootTableKeyFunction.java
|
||||
art/arcane/iris/engine/object/coral/CoralGenerator.java
|
||||
art/arcane/iris/engine/object/crystal/CrystalGenerator.java
|
||||
art/arcane/iris/engine/object/formation/FormationBlockResolver.java
|
||||
art/arcane/iris/engine/object/formation/FormationGenerator.java
|
||||
art/arcane/iris/engine/object/fungi/FungusGenerator.java
|
||||
art/arcane/iris/engine/object/fungi/FungusStemBuilder.java
|
||||
art/arcane/iris/engine/object/ruin/RuinBlockCanvas.java
|
||||
art/arcane/iris/engine/object/ruin/RuinDecoratorApplier.java
|
||||
art/arcane/iris/engine/object/ruin/RuinGenerator.java
|
||||
art/arcane/iris/engine/object/TileData.java
|
||||
art/arcane/iris/engine/object/tree/ProceduralTreeGenerator.java
|
||||
art/arcane/iris/engine/object/tree/TreeBlockResolver.java
|
||||
art/arcane/iris/engine/object/tree/TreePlausibility.java
|
||||
@@ -153,6 +153,7 @@ art/arcane/iris/engine/platform/DummyBiomeProvider.java
|
||||
art/arcane/iris/engine/platform/DummyChunkGenerator.java
|
||||
art/arcane/iris/engine/platform/studio/generators/ObjectStudioGenerator.java
|
||||
art/arcane/iris/platform/bukkit/BukkitBiome.java
|
||||
art/arcane/iris/platform/bukkit/BukkitBlockResolution.java
|
||||
art/arcane/iris/platform/bukkit/BukkitBlockState.java
|
||||
art/arcane/iris/platform/bukkit/BukkitEntityType.java
|
||||
art/arcane/iris/platform/bukkit/BukkitItem.java
|
||||
@@ -160,18 +161,17 @@ art/arcane/iris/platform/bukkit/BukkitPlatform.java
|
||||
art/arcane/iris/platform/bukkit/BukkitRegistries.java
|
||||
art/arcane/iris/platform/bukkit/BukkitScheduler.java
|
||||
art/arcane/iris/platform/bukkit/BukkitWorld.java
|
||||
art/arcane/iris/util/common/data/B.java
|
||||
art/arcane/iris/util/common/data/IrisCustomData.java
|
||||
art/arcane/iris/util/common/data/VectorMap.java
|
||||
art/arcane/iris/util/common/data/registry/Attributes.java
|
||||
art/arcane/iris/util/common/data/registry/KeyedRegistry.java
|
||||
art/arcane/iris/util/common/data/registry/Materials.java
|
||||
art/arcane/iris/util/common/data/registry/Particles.java
|
||||
art/arcane/iris/util/common/data/registry/RegistryTypeAdapter.java
|
||||
art/arcane/iris/util/common/data/registry/RegistryUtil.java
|
||||
art/arcane/iris/util/common/data/VectorMap.java
|
||||
art/arcane/iris/util/common/director/DirectorExecutor.java
|
||||
art/arcane/iris/util/common/director/context/VectorContextHandler.java
|
||||
art/arcane/iris/util/common/director/context/WorldContextHandler.java
|
||||
art/arcane/iris/util/common/director/DirectorExecutor.java
|
||||
art/arcane/iris/util/common/director/handlers/BlockVectorHandler.java
|
||||
art/arcane/iris/util/common/director/handlers/PlayerHandler.java
|
||||
art/arcane/iris/util/common/director/handlers/VectorHandler.java
|
||||
@@ -188,8 +188,6 @@ art/arcane/iris/util/common/math/VectorMath.java
|
||||
art/arcane/iris/util/common/misc/Bindings.java
|
||||
art/arcane/iris/util/common/nbt/mca/Chunk.java
|
||||
art/arcane/iris/util/common/nbt/mca/NBTWorld.java
|
||||
art/arcane/iris/util/common/plugin/chunk/ChunkTickets.java
|
||||
art/arcane/iris/util/common/plugin/chunk/TicketHolder.java
|
||||
art/arcane/iris/util/common/plugin/Chunks.java
|
||||
art/arcane/iris/util/common/plugin/CommandDummy.java
|
||||
art/arcane/iris/util/common/plugin/IController.java
|
||||
@@ -200,6 +198,8 @@ art/arcane/iris/util/common/plugin/RouterCommand.java
|
||||
art/arcane/iris/util/common/plugin/VirtualCommand.java
|
||||
art/arcane/iris/util/common/plugin/VolmitPlugin.java
|
||||
art/arcane/iris/util/common/plugin/VolmitSender.java
|
||||
art/arcane/iris/util/common/plugin/chunk/ChunkTickets.java
|
||||
art/arcane/iris/util/common/plugin/chunk/TicketHolder.java
|
||||
art/arcane/iris/util/common/reflect/KeyedType.java
|
||||
art/arcane/iris/util/common/reflect/OldEnum.java
|
||||
art/arcane/iris/util/common/scheduling/J.java
|
||||
@@ -209,8 +209,8 @@ art/arcane/iris/util/project/hunk/view/ChunkDataHunkHolder.java
|
||||
art/arcane/iris/util/project/hunk/view/ChunkDataHunkView.java
|
||||
art/arcane/iris/util/project/hunk/view/ChunkHunkView.java
|
||||
art/arcane/iris/util/project/matter/IrisMatterSupport.java
|
||||
art/arcane/iris/util/project/matter/WorldMatter.java
|
||||
art/arcane/iris/util/project/matter/slices/EntityMatter.java
|
||||
art/arcane/iris/util/project/matter/slices/TileMatter.java
|
||||
art/arcane/iris/util/project/matter/WorldMatter.java
|
||||
art/arcane/iris/util/project/sentry/Attachments.java
|
||||
art/arcane/iris/util/project/sentry/ServerID.java
|
||||
|
||||
@@ -1,12 +1,13 @@
|
||||
package art.arcane.iris.core.link.data;
|
||||
|
||||
import art.arcane.iris.platform.bukkit.BukkitBlockResolution;
|
||||
|
||||
import art.arcane.iris.core.link.ExternalDataProvider;
|
||||
import art.arcane.iris.core.link.Identifier;
|
||||
import art.arcane.iris.core.nms.container.BlockProperty;
|
||||
import art.arcane.iris.core.service.ExternalDataSVC;
|
||||
import art.arcane.iris.engine.data.cache.Cache;
|
||||
import art.arcane.iris.engine.framework.Engine;
|
||||
import art.arcane.iris.util.common.data.B;
|
||||
import art.arcane.iris.util.common.data.IrisCustomData;
|
||||
import art.arcane.volmlib.util.collection.KMap;
|
||||
import art.arcane.volmlib.util.math.RNG;
|
||||
@@ -89,7 +90,7 @@ public class CraftEngineDataProvider extends ExternalDataProvider {
|
||||
throw new MissingResourceException("Failed to find BlockData!", blockId.namespace(), blockId.key());
|
||||
}
|
||||
|
||||
return IrisCustomData.of(B.getAir(), ExternalDataSVC.buildState(blockId, state));
|
||||
return IrisCustomData.of(BukkitBlockResolution.getAir(), ExternalDataSVC.buildState(blockId, state));
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@@ -1,11 +1,12 @@
|
||||
package art.arcane.iris.core.link.data;
|
||||
|
||||
import art.arcane.iris.platform.bukkit.BukkitBlockResolution;
|
||||
|
||||
import art.arcane.iris.core.link.ExternalDataProvider;
|
||||
import art.arcane.iris.core.link.Identifier;
|
||||
import art.arcane.iris.core.service.ExternalDataSVC;
|
||||
import art.arcane.iris.engine.framework.Engine;
|
||||
import art.arcane.volmlib.util.collection.KMap;
|
||||
import art.arcane.iris.util.common.data.B;
|
||||
import art.arcane.iris.util.common.data.IrisCustomData;
|
||||
import me.kryniowesegryderiusz.kgenerators.Main;
|
||||
import me.kryniowesegryderiusz.kgenerators.api.KGeneratorsAPI;
|
||||
@@ -48,7 +49,7 @@ public class KGeneratorsDataProvider extends ExternalDataProvider {
|
||||
if (block.getType() != Material.STRUCTURE_VOID) return;
|
||||
var existing = KGeneratorsAPI.getLoadedGeneratorLocation(block.getLocation());
|
||||
if (existing != null) return;
|
||||
block.setBlockData(B.getAir(), false);
|
||||
block.setBlockData(BukkitBlockResolution.getAir(), false);
|
||||
var gen = Main.getGenerators().get(blockId.key());
|
||||
if (gen == null) return;
|
||||
var loc = new GeneratorLocation(-1, gen, block.getLocation(), Main.getPlacedGenerators().getChunkInfo(block.getChunk()), null, null);
|
||||
|
||||
@@ -18,6 +18,8 @@
|
||||
|
||||
package art.arcane.iris.core.link.data;
|
||||
|
||||
import art.arcane.iris.platform.bukkit.BukkitBlockResolution;
|
||||
|
||||
import art.arcane.iris.spi.IrisLogging;
|
||||
import art.arcane.iris.core.link.ExternalDataProvider;
|
||||
import art.arcane.iris.core.link.Identifier;
|
||||
@@ -27,7 +29,6 @@ import art.arcane.iris.core.nms.container.BlockProperty;
|
||||
import art.arcane.iris.core.service.ExternalDataSVC;
|
||||
import art.arcane.iris.engine.framework.Engine;
|
||||
import art.arcane.volmlib.util.collection.KMap;
|
||||
import art.arcane.iris.util.common.data.B;
|
||||
import art.arcane.iris.util.common.data.IrisCustomData;
|
||||
import io.lumine.mythic.bukkit.BukkitAdapter;
|
||||
import io.lumine.mythic.bukkit.utils.serialize.Chroma;
|
||||
@@ -72,7 +73,7 @@ public class MythicCrucibleDataProvider extends ExternalDataProvider {
|
||||
CustomBlockItemContext blockItemContext = crucibleItem.getBlockData();
|
||||
FurnitureItemContext furnitureItemContext = crucibleItem.getFurnitureData();
|
||||
if (furnitureItemContext != null) {
|
||||
return IrisCustomData.of(B.getAir(), ExternalDataSVC.buildState(blockId, state));
|
||||
return IrisCustomData.of(BukkitBlockResolution.getAir(), ExternalDataSVC.buildState(blockId, state));
|
||||
} else if (blockItemContext != null) {
|
||||
return blockItemContext.getBlockData();
|
||||
}
|
||||
|
||||
@@ -1,5 +1,7 @@
|
||||
package art.arcane.iris.core.link.data;
|
||||
|
||||
import art.arcane.iris.platform.bukkit.BukkitBlockResolution;
|
||||
|
||||
import com.nexomc.nexo.api.NexoBlocks;
|
||||
import com.nexomc.nexo.api.NexoFurniture;
|
||||
import com.nexomc.nexo.api.NexoItems;
|
||||
@@ -12,7 +14,6 @@ import art.arcane.iris.core.nms.container.BlockProperty;
|
||||
import art.arcane.iris.core.service.ExternalDataSVC;
|
||||
import art.arcane.iris.engine.framework.Engine;
|
||||
import art.arcane.volmlib.util.collection.KMap;
|
||||
import art.arcane.iris.util.common.data.B;
|
||||
import art.arcane.iris.util.common.data.IrisCustomData;
|
||||
import org.bukkit.Color;
|
||||
import org.bukkit.block.Block;
|
||||
@@ -51,7 +52,7 @@ public class NexoDataProvider extends ExternalDataProvider {
|
||||
throw new MissingResourceException("Failed to find BlockData!", blockId.namespace(), blockId.key());
|
||||
return IrisCustomData.of(data, blockState);
|
||||
} else if (NexoFurniture.isFurniture(blockId.key())) {
|
||||
return IrisCustomData.of(B.getAir(), blockState);
|
||||
return IrisCustomData.of(BukkitBlockResolution.getAir(), blockState);
|
||||
}
|
||||
|
||||
throw new MissingResourceException("Failed to find BlockData!", blockId.namespace(), blockId.key());
|
||||
|
||||
@@ -18,6 +18,8 @@
|
||||
|
||||
package art.arcane.iris.core.project;
|
||||
|
||||
import art.arcane.iris.platform.bukkit.BukkitBlockResolution;
|
||||
|
||||
import art.arcane.iris.spi.IrisLogging;
|
||||
import art.arcane.iris.spi.IrisServices;
|
||||
import art.arcane.iris.core.link.Identifier;
|
||||
@@ -31,7 +33,6 @@ import art.arcane.iris.engine.object.annotations.*;
|
||||
import art.arcane.iris.core.nms.INMS;
|
||||
import art.arcane.volmlib.util.collection.KList;
|
||||
import art.arcane.volmlib.util.collection.KMap;
|
||||
import art.arcane.iris.util.common.data.B;
|
||||
import art.arcane.volmlib.util.json.JSONArray;
|
||||
import art.arcane.volmlib.util.json.JSONObject;
|
||||
import art.arcane.iris.util.common.reflect.KeyedType;
|
||||
@@ -275,7 +276,7 @@ public class SchemaBuilder {
|
||||
ja.put(i);
|
||||
}
|
||||
|
||||
for (String i : B.getBlockTypes()) {
|
||||
for (String i : BukkitBlockResolution.getBlockTypes()) {
|
||||
ja.put(i);
|
||||
}
|
||||
|
||||
@@ -330,7 +331,7 @@ public class SchemaBuilder {
|
||||
|
||||
if (!definitions.containsKey(key)) {
|
||||
JSONObject j = new JSONObject();
|
||||
j.put("enum", B.getItemTypes());
|
||||
j.put("enum", BukkitBlockResolution.getItemTypes());
|
||||
definitions.put(key, j);
|
||||
}
|
||||
|
||||
@@ -438,7 +439,7 @@ public class SchemaBuilder {
|
||||
JSONArray any = new JSONArray();
|
||||
prop.put("anyOf", any);
|
||||
|
||||
B.getBlockStates().forEach((blocks, properties) -> {
|
||||
BukkitBlockResolution.getBlockStates().forEach((blocks, properties) -> {
|
||||
if (blocks.isEmpty()) return;
|
||||
|
||||
String raw = blocks.getFirst().replace(':', '_');
|
||||
@@ -570,7 +571,7 @@ public class SchemaBuilder {
|
||||
ja.put(i);
|
||||
}
|
||||
|
||||
for (String i : B.getBlockTypes()) {
|
||||
for (String i : BukkitBlockResolution.getBlockTypes()) {
|
||||
ja.put(i);
|
||||
}
|
||||
|
||||
@@ -588,7 +589,7 @@ public class SchemaBuilder {
|
||||
|
||||
if (!definitions.containsKey(key)) {
|
||||
JSONObject j = new JSONObject();
|
||||
j.put("enum", B.getItemTypes());
|
||||
j.put("enum", BukkitBlockResolution.getItemTypes());
|
||||
definitions.put(key, j);
|
||||
}
|
||||
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
package art.arcane.iris.core.tools;
|
||||
|
||||
import art.arcane.iris.util.common.data.B;
|
||||
import art.arcane.iris.platform.bukkit.BukkitBlockResolution;
|
||||
|
||||
import org.bukkit.World;
|
||||
import org.bukkit.block.data.BlockData;
|
||||
|
||||
@@ -19,7 +20,7 @@ public class IrisReflectiveAPI {
|
||||
}
|
||||
|
||||
public static void registerCustomBlockData(String namespace, String key, BlockData blockData) {
|
||||
B.registerCustomBlockData(namespace, key, blockData);
|
||||
BukkitBlockResolution.registerCustomBlockData(namespace, key, blockData);
|
||||
}
|
||||
|
||||
public static void retainMantleData(String classname) {
|
||||
|
||||
@@ -18,8 +18,9 @@
|
||||
|
||||
package art.arcane.iris.core.tools;
|
||||
|
||||
import art.arcane.iris.platform.bukkit.BukkitBlockResolution;
|
||||
|
||||
import art.arcane.iris.engine.object.IrisObject;
|
||||
import art.arcane.iris.util.common.data.B;
|
||||
import art.arcane.iris.util.common.data.VectorMap;
|
||||
import org.bukkit.Axis;
|
||||
import org.bukkit.Tag;
|
||||
@@ -47,8 +48,8 @@ public final class TreePlausibilizer {
|
||||
{0, 1, 0}, {0, -1, 0},
|
||||
{0, 0, 1}, {0, 0, -1}
|
||||
};
|
||||
private static final BlockData FALLBACK_LOG = B.get("minecraft:oak_log[axis=y]");
|
||||
private static final BlockData FALLBACK_LEAF = B.get("minecraft:oak_leaves[distance=1,persistent=false,waterlogged=false]");
|
||||
private static final BlockData FALLBACK_LOG = BukkitBlockResolution.get("minecraft:oak_log[axis=y]");
|
||||
private static final BlockData FALLBACK_LEAF = BukkitBlockResolution.get("minecraft:oak_leaves[distance=1,persistent=false,waterlogged=false]");
|
||||
|
||||
private TreePlausibilizer() {
|
||||
}
|
||||
|
||||
@@ -18,6 +18,8 @@
|
||||
|
||||
package art.arcane.iris.engine.decorator;
|
||||
|
||||
import art.arcane.iris.platform.bukkit.BukkitBlockResolution;
|
||||
|
||||
import art.arcane.iris.core.loader.IrisData;
|
||||
import art.arcane.iris.engine.mantle.EngineMantle;
|
||||
import art.arcane.iris.engine.object.IrisBiome;
|
||||
@@ -26,7 +28,6 @@ import art.arcane.iris.engine.object.IrisDecorator;
|
||||
import art.arcane.iris.platform.bukkit.BukkitBlockState;
|
||||
import art.arcane.iris.spi.IrisLogging;
|
||||
import art.arcane.iris.spi.PlatformBlockState;
|
||||
import art.arcane.iris.util.common.data.B;
|
||||
import art.arcane.iris.util.project.hunk.Hunk;
|
||||
import art.arcane.volmlib.util.math.RNG;
|
||||
import org.bukkit.Material;
|
||||
@@ -103,7 +104,7 @@ final class DecoratorCore {
|
||||
BlockData top = rawBd.clone();
|
||||
((Bisected) top).setHalf(Bisected.Half.TOP);
|
||||
try {
|
||||
if (!caveSkipFluid || !B.isFluid(unwrap(data.get(x, height + 2, z)))) {
|
||||
if (!caveSkipFluid || !BukkitBlockResolution.isFluid(unwrap(data.get(x, height + 2, z)))) {
|
||||
data.set(x, height + 2, z, BukkitBlockState.of(top));
|
||||
}
|
||||
} catch (Throwable e) {
|
||||
@@ -114,7 +115,7 @@ final class DecoratorCore {
|
||||
bd = BukkitBlockState.of(bottom);
|
||||
}
|
||||
|
||||
if (B.isAir(unwrap(data.get(x, height + 1, z)))) {
|
||||
if (BukkitBlockResolution.isAir(unwrap(data.get(x, height + 1, z)))) {
|
||||
data.set(x, height + 1, z, fixFacesForHunk(bd, data, x, z, realX, height + 1, realZ, mantle));
|
||||
}
|
||||
}
|
||||
@@ -132,7 +133,7 @@ final class DecoratorCore {
|
||||
}
|
||||
|
||||
if (decorator.getForceBlock() != null) {
|
||||
if (caveSkipFluid && B.isFluid(unwrap(bdx))) {
|
||||
if (caveSkipFluid && BukkitBlockResolution.isFluid(unwrap(bdx))) {
|
||||
return;
|
||||
}
|
||||
data.set(x, height, z, fixFacesForHunk(
|
||||
@@ -156,7 +157,7 @@ final class DecoratorCore {
|
||||
BlockData top = rawBd.clone();
|
||||
((Bisected) top).setHalf(Bisected.Half.TOP);
|
||||
try {
|
||||
if (!caveSkipFluid || !B.isFluid(unwrap(data.get(x, height + 2, z)))) {
|
||||
if (!caveSkipFluid || !BukkitBlockResolution.isFluid(unwrap(data.get(x, height + 2, z)))) {
|
||||
data.set(x, height + 2, z, BukkitBlockState.of(top));
|
||||
}
|
||||
} catch (Throwable e) {
|
||||
@@ -167,7 +168,7 @@ final class DecoratorCore {
|
||||
bd = BukkitBlockState.of(bottom);
|
||||
}
|
||||
|
||||
if (B.isAir(unwrap(data.get(x, height + 1, z)))) {
|
||||
if (BukkitBlockResolution.isAir(unwrap(data.get(x, height + 1, z)))) {
|
||||
data.set(x, height + 1, z, fixFacesForHunk(bd, data, x, z, realX, height + 1, realZ, mantle));
|
||||
}
|
||||
}
|
||||
@@ -196,7 +197,7 @@ final class DecoratorCore {
|
||||
int stack = computeStack(decorator, rng, realX, realZ, irisData, effectiveMax);
|
||||
|
||||
if (stack == 1) {
|
||||
if (opts.caveSkipFluid && B.isFluid(unwrap(data.get(x, height, z)))) {
|
||||
if (opts.caveSkipFluid && BukkitBlockResolution.isFluid(unwrap(data.get(x, height, z)))) {
|
||||
return;
|
||||
}
|
||||
data.set(x, height, z, decorator.pickBlockDataTop(rng, irisData, realX, realZ));
|
||||
@@ -224,7 +225,7 @@ final class DecoratorCore {
|
||||
break;
|
||||
}
|
||||
|
||||
if (opts.caveSkipFluid && B.isFluid(unwrap(data.get(x, height + 1 + i, z)))) {
|
||||
if (opts.caveSkipFluid && BukkitBlockResolution.isFluid(unwrap(data.get(x, height + 1 + i, z)))) {
|
||||
break;
|
||||
}
|
||||
|
||||
@@ -242,7 +243,7 @@ final class DecoratorCore {
|
||||
int stack = computeStack(decorator, rng, realX, realZ, irisData, max);
|
||||
|
||||
if (stack == 1) {
|
||||
if (opts.caveSkipFluid && B.isFluid(unwrap(data.get(x, height, z)))) {
|
||||
if (opts.caveSkipFluid && BukkitBlockResolution.isFluid(unwrap(data.get(x, height, z)))) {
|
||||
return;
|
||||
}
|
||||
data.set(x, height, z, fixFacesForHunk(
|
||||
@@ -266,7 +267,7 @@ final class DecoratorCore {
|
||||
bd = BukkitBlockState.of(dripstoneBlock(stack, i, BlockFace.DOWN));
|
||||
}
|
||||
|
||||
if (opts.caveSkipFluid && B.isFluid(unwrap(data.get(x, h, z)))) {
|
||||
if (opts.caveSkipFluid && BukkitBlockResolution.isFluid(unwrap(data.get(x, h, z)))) {
|
||||
break;
|
||||
}
|
||||
data.set(x, h, z, fixFacesForHunk(bd, data, x, z, realX, h, realZ, mantle));
|
||||
@@ -336,7 +337,7 @@ final class DecoratorCore {
|
||||
static PlatformBlockState fixFacesForHunk(PlatformBlockState b, Hunk<PlatformBlockState> hunk, int rX, int rZ,
|
||||
int x, int y, int z, EngineMantle mantle) {
|
||||
BlockData rawB = unwrap(b);
|
||||
if (!B.isVineBlock(rawB)) {
|
||||
if (!BukkitBlockResolution.isVineBlock(rawB)) {
|
||||
return b;
|
||||
}
|
||||
MultipleFacing data = (MultipleFacing) rawB.clone();
|
||||
|
||||
@@ -18,6 +18,8 @@
|
||||
|
||||
package art.arcane.iris.engine.framework;
|
||||
|
||||
import art.arcane.iris.platform.bukkit.BukkitBlockResolution;
|
||||
|
||||
import art.arcane.iris.spi.IrisServices;
|
||||
import art.arcane.iris.core.IrisSettings;
|
||||
import art.arcane.iris.core.events.IrisLootEvent;
|
||||
@@ -46,7 +48,6 @@ import art.arcane.volmlib.util.collection.KList;
|
||||
import art.arcane.volmlib.util.collection.KMap;
|
||||
import art.arcane.iris.util.project.context.ChunkContext;
|
||||
import art.arcane.iris.util.project.context.IrisContext;
|
||||
import art.arcane.iris.util.common.data.B;
|
||||
import art.arcane.iris.util.common.data.DataProvider;
|
||||
import art.arcane.iris.util.common.data.IrisCustomData;
|
||||
import art.arcane.volmlib.util.documentation.BlockCoordinates;
|
||||
@@ -328,7 +329,7 @@ public interface Engine extends DataProvider, Fallible, LootProvider, BlockUpdat
|
||||
}
|
||||
|
||||
BlockData blockData = (BlockData) data.nativeHandle();
|
||||
if (B.isUpdatable(blockData)) {
|
||||
if (BukkitBlockResolution.isUpdatable(blockData)) {
|
||||
getMantle().updateBlock(x, y, z);
|
||||
}
|
||||
if (blockData instanceof IrisCustomData) {
|
||||
@@ -405,14 +406,14 @@ public interface Engine extends DataProvider, Fallible, LootProvider, BlockUpdat
|
||||
x &= 15;
|
||||
z &= 15;
|
||||
Block block = c.getBlock(x, y, z);
|
||||
if (!B.isFluid(block.getBlockData())) {
|
||||
if (!BukkitBlockResolution.isFluid(block.getBlockData())) {
|
||||
return;
|
||||
}
|
||||
boolean u = B.isAir(block.getRelative(BlockFace.DOWN).getBlockData())
|
||||
|| B.isAir(block.getRelative(BlockFace.WEST).getBlockData())
|
||||
|| B.isAir(block.getRelative(BlockFace.EAST).getBlockData())
|
||||
|| B.isAir(block.getRelative(BlockFace.SOUTH).getBlockData())
|
||||
|| B.isAir(block.getRelative(BlockFace.NORTH).getBlockData());
|
||||
boolean u = BukkitBlockResolution.isAir(block.getRelative(BlockFace.DOWN).getBlockData())
|
||||
|| BukkitBlockResolution.isAir(block.getRelative(BlockFace.WEST).getBlockData())
|
||||
|| BukkitBlockResolution.isAir(block.getRelative(BlockFace.EAST).getBlockData())
|
||||
|| BukkitBlockResolution.isAir(block.getRelative(BlockFace.SOUTH).getBlockData())
|
||||
|| BukkitBlockResolution.isAir(block.getRelative(BlockFace.NORTH).getBlockData());
|
||||
|
||||
if (u) grid[x][z] = Math.max(grid[x][z], y);
|
||||
});
|
||||
@@ -511,11 +512,11 @@ public interface Engine extends DataProvider, Fallible, LootProvider, BlockUpdat
|
||||
Block block = c.getBlock(x, y, z);
|
||||
BlockData data = block.getBlockData();
|
||||
blockUpdatedMetric();
|
||||
if (B.isStorage(data)) {
|
||||
if (BukkitBlockResolution.isStorage(data)) {
|
||||
RNG rx = rf.nextParallelRNG(BlockPosition.toLong(x, y, z));
|
||||
InventorySlotType slot = null;
|
||||
|
||||
if (B.isStorageChest(data)) {
|
||||
if (BukkitBlockResolution.isStorageChest(data)) {
|
||||
slot = InventorySlotType.STORAGE;
|
||||
}
|
||||
|
||||
@@ -608,7 +609,7 @@ public interface Engine extends DataProvider, Fallible, LootProvider, BlockUpdat
|
||||
|
||||
PlacedObject po = getObjectPlacement(rx, ry, rz, mc);
|
||||
if (po != null && po.getPlacement() != null) {
|
||||
if (B.isStorageChest(b.getBlockData())) {
|
||||
if (BukkitBlockResolution.isStorageChest(b.getBlockData())) {
|
||||
IrisLootTable table = po.getPlacement().getTable(BukkitBlockState.of(b.getBlockData()), getData());
|
||||
if (table != null) {
|
||||
tables.add(table);
|
||||
|
||||
@@ -1,5 +1,7 @@
|
||||
package art.arcane.iris.engine.framework.placer;
|
||||
|
||||
import art.arcane.iris.platform.bukkit.BukkitBlockResolution;
|
||||
|
||||
import art.arcane.iris.core.loader.IrisData;
|
||||
import art.arcane.iris.core.tools.IrisToolbelt;
|
||||
import art.arcane.iris.engine.data.cache.Cache;
|
||||
@@ -14,7 +16,6 @@ import art.arcane.iris.platform.bukkit.BukkitBlockState;
|
||||
import art.arcane.iris.spi.IrisLogging;
|
||||
import art.arcane.iris.spi.PlatformBlockState;
|
||||
import art.arcane.volmlib.util.collection.KList;
|
||||
import art.arcane.iris.util.common.data.B;
|
||||
import art.arcane.iris.util.common.data.IrisCustomData;
|
||||
import art.arcane.volmlib.util.math.RNG;
|
||||
import art.arcane.volmlib.util.matter.MatterCavern;
|
||||
@@ -59,7 +60,7 @@ public class WorldObjectPlacer implements IObjectPlacer {
|
||||
|
||||
if (y <= world.getMinHeight() || block.getType() == Material.BEDROCK) return;
|
||||
InventorySlotType slot = null;
|
||||
if (B.isStorageChest(d)) {
|
||||
if (BukkitBlockResolution.isStorageChest(d)) {
|
||||
slot = InventorySlotType.STORAGE;
|
||||
}
|
||||
|
||||
|
||||
@@ -18,6 +18,8 @@
|
||||
|
||||
package art.arcane.iris.engine.mantle;
|
||||
|
||||
import art.arcane.iris.platform.bukkit.BukkitBlockResolution;
|
||||
|
||||
import art.arcane.iris.spi.IrisLogging;
|
||||
import art.arcane.iris.util.project.matter.TileWrapper;
|
||||
import com.google.common.collect.ImmutableList;
|
||||
@@ -32,7 +34,6 @@ import art.arcane.iris.engine.object.IrisPosition;
|
||||
import art.arcane.iris.engine.object.TileData;
|
||||
import art.arcane.volmlib.util.collection.KMap;
|
||||
import art.arcane.volmlib.util.collection.KSet;
|
||||
import art.arcane.iris.util.common.data.B;
|
||||
import art.arcane.iris.util.common.data.IrisCustomData;
|
||||
import art.arcane.volmlib.util.documentation.ChunkCoordinates;
|
||||
import art.arcane.volmlib.util.function.Function3;
|
||||
@@ -299,7 +300,7 @@ public class MantleWriter implements IObjectPlacer, AutoCloseable {
|
||||
|
||||
@Override
|
||||
public boolean isSolid(int x, int y, int z) {
|
||||
return B.isSolid((BlockData) get(x, y, z).nativeHandle());
|
||||
return BukkitBlockResolution.isSolid((BlockData) get(x, y, z).nativeHandle());
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
+3
-2
@@ -18,6 +18,8 @@
|
||||
|
||||
package art.arcane.iris.engine.mantle.components;
|
||||
|
||||
import art.arcane.iris.platform.bukkit.BukkitBlockResolution;
|
||||
|
||||
import art.arcane.iris.core.loader.IrisData;
|
||||
import art.arcane.iris.engine.IrisComplex;
|
||||
import art.arcane.iris.engine.data.cache.Cache;
|
||||
@@ -37,7 +39,6 @@ import art.arcane.iris.engine.object.IrisObjectRotation;
|
||||
import art.arcane.iris.engine.object.IrisObjectTranslate;
|
||||
import art.arcane.iris.engine.object.ObjectPlaceMode;
|
||||
import art.arcane.iris.spi.IrisLogging;
|
||||
import art.arcane.iris.util.common.data.B;
|
||||
import art.arcane.iris.util.common.data.IrisCustomData;
|
||||
import art.arcane.iris.util.project.context.ChunkContext;
|
||||
import art.arcane.volmlib.util.collection.KList;
|
||||
@@ -453,7 +454,7 @@ public class MantleFloatingObjectComponent extends IrisMantleComponent {
|
||||
BlockData data = (BlockData) state.nativeHandle();
|
||||
PlatformBlockState existingState = placer.get(x, y, z);
|
||||
BlockData existing = existingState == null ? null : (BlockData) existingState.nativeHandle();
|
||||
boolean wouldReplace = existing != null && B.isSolid(existing) && B.isVineBlock(data);
|
||||
boolean wouldReplace = existing != null && BukkitBlockResolution.isSolid(existing) && BukkitBlockResolution.isVineBlock(data);
|
||||
boolean placesBlock = !data.getMaterial().equals(Material.AIR) && !data.getMaterial().equals(Material.CAVE_AIR) && !wouldReplace;
|
||||
return data instanceof IrisCustomData || placesBlock;
|
||||
}
|
||||
|
||||
+7
-6
@@ -18,6 +18,8 @@
|
||||
|
||||
package art.arcane.iris.engine.mantle.components;
|
||||
|
||||
import art.arcane.iris.platform.bukkit.BukkitBlockResolution;
|
||||
|
||||
import art.arcane.iris.core.IrisSettings;
|
||||
import art.arcane.iris.engine.data.cache.Cache;
|
||||
import art.arcane.iris.engine.IrisComplex;
|
||||
@@ -35,7 +37,6 @@ import art.arcane.volmlib.util.collection.KMap;
|
||||
import art.arcane.volmlib.util.collection.KSet;
|
||||
import art.arcane.iris.util.project.context.ChunkedDoubleDataCache;
|
||||
import art.arcane.iris.util.project.context.ChunkContext;
|
||||
import art.arcane.iris.util.common.data.B;
|
||||
import art.arcane.iris.util.project.stream.ProceduralStream;
|
||||
import art.arcane.volmlib.util.documentation.BlockCoordinates;
|
||||
import art.arcane.volmlib.util.documentation.ChunkCoordinates;
|
||||
@@ -583,7 +584,7 @@ public class MantleObjectComponent extends IrisMantleComponent {
|
||||
if (marker != null) {
|
||||
writer.setData(b.getX(), b.getY(), b.getZ(), marker);
|
||||
}
|
||||
if (effectivePlacement.isDolphinTarget() && effectivePlacement.isUnderwater() && B.isStorageChest(unwrap(data))) {
|
||||
if (effectivePlacement.isDolphinTarget() && effectivePlacement.isUnderwater() && BukkitBlockResolution.isStorageChest(unwrap(data))) {
|
||||
writer.setData(b.getX(), b.getY(), b.getZ(), MatterStructurePOI.BURIED_TREASURE);
|
||||
}
|
||||
}, null, getData());
|
||||
@@ -598,7 +599,7 @@ public class MantleObjectComponent extends IrisMantleComponent {
|
||||
if (marker != null) {
|
||||
writer.setData(b.getX(), b.getY(), b.getZ(), marker);
|
||||
}
|
||||
if (effectivePlacement.isDolphinTarget() && effectivePlacement.isUnderwater() && B.isStorageChest(unwrap(data))) {
|
||||
if (effectivePlacement.isDolphinTarget() && effectivePlacement.isUnderwater() && BukkitBlockResolution.isStorageChest(unwrap(data))) {
|
||||
writer.setData(b.getX(), b.getY(), b.getZ(), MatterStructurePOI.BURIED_TREASURE);
|
||||
}
|
||||
}, null, getData());
|
||||
@@ -610,7 +611,7 @@ public class MantleObjectComponent extends IrisMantleComponent {
|
||||
if (marker != null) {
|
||||
writer.setData(b.getX(), b.getY(), b.getZ(), marker);
|
||||
}
|
||||
if (effectivePlacement.isDolphinTarget() && effectivePlacement.isUnderwater() && B.isStorageChest(unwrap(data))) {
|
||||
if (effectivePlacement.isDolphinTarget() && effectivePlacement.isUnderwater() && BukkitBlockResolution.isStorageChest(unwrap(data))) {
|
||||
writer.setData(b.getX(), b.getY(), b.getZ(), MatterStructurePOI.BURIED_TREASURE);
|
||||
}
|
||||
}, null, getData());
|
||||
@@ -807,7 +808,7 @@ public class MantleObjectComponent extends IrisMantleComponent {
|
||||
if (marker != null) {
|
||||
writer.setData(b.getX(), b.getY(), b.getZ(), marker);
|
||||
}
|
||||
if (effectivePlacement.isDolphinTarget() && effectivePlacement.isUnderwater() && B.isStorageChest(unwrap(data))) {
|
||||
if (effectivePlacement.isDolphinTarget() && effectivePlacement.isUnderwater() && BukkitBlockResolution.isStorageChest(unwrap(data))) {
|
||||
writer.setData(b.getX(), b.getY(), b.getZ(), MatterStructurePOI.BURIED_TREASURE);
|
||||
}
|
||||
}, null, getData());
|
||||
@@ -987,7 +988,7 @@ public class MantleObjectComponent extends IrisMantleComponent {
|
||||
if (marker != null) {
|
||||
writer.setData(b.getX(), b.getY(), b.getZ(), marker);
|
||||
}
|
||||
if (placement.isDolphinTarget() && placement.isUnderwater() && B.isStorageChest(unwrap(data))) {
|
||||
if (placement.isDolphinTarget() && placement.isUnderwater() && BukkitBlockResolution.isStorageChest(unwrap(data))) {
|
||||
writer.setData(b.getX(), b.getY(), b.getZ(), MatterStructurePOI.BURIED_TREASURE);
|
||||
}
|
||||
}, null, getData());
|
||||
|
||||
@@ -18,11 +18,12 @@
|
||||
|
||||
package art.arcane.iris.engine.modifier;
|
||||
|
||||
import art.arcane.iris.platform.bukkit.BukkitBlockResolution;
|
||||
|
||||
import art.arcane.iris.engine.framework.Engine;
|
||||
import art.arcane.iris.engine.framework.EngineAssignedModifier;
|
||||
import art.arcane.iris.engine.object.*;
|
||||
import art.arcane.iris.util.project.context.ChunkContext;
|
||||
import art.arcane.iris.util.common.data.B;
|
||||
import art.arcane.volmlib.util.data.HeightMap;
|
||||
import art.arcane.iris.util.project.hunk.Hunk;
|
||||
import art.arcane.volmlib.util.mantle.runtime.MantleChunk;
|
||||
@@ -141,7 +142,7 @@ public class IrisDepositModifier extends EngineAssignedModifier<PlatformBlockSta
|
||||
PlatformBlockState remapped = resolveDepositVariant(cx, cz, nx, ny, nz, ore, dimension, context);
|
||||
PlatformBlockState finalBlock = remapped != null
|
||||
? remapped
|
||||
: BukkitBlockState.of(B.toDeepSlateOre(unwrap(data.get(nx, ny, nz)), unwrap(ore)));
|
||||
: BukkitBlockState.of(BukkitBlockResolution.toDeepSlateOre(unwrap(data.get(nx, ny, nz)), unwrap(ore)));
|
||||
data.set(nx, ny, nz, finalBlock);
|
||||
}
|
||||
}
|
||||
|
||||
+6
-4
@@ -18,6 +18,8 @@
|
||||
|
||||
package art.arcane.iris.engine.modifier;
|
||||
|
||||
import art.arcane.iris.platform.bukkit.BukkitBlockResolution;
|
||||
|
||||
import art.arcane.iris.core.loader.IrisData;
|
||||
import art.arcane.iris.engine.IrisComplex;
|
||||
import art.arcane.iris.engine.decorator.FloatingDecorator;
|
||||
@@ -260,9 +262,9 @@ public class IrisFloatingChildBiomeModifier extends EngineAssignedModifier<Platf
|
||||
IrisFloatingChildBiomes entry = sample.entry;
|
||||
Integer localFluidHeight = entry.getLocalFluidHeight();
|
||||
if (localFluidHeight != null && localFluidHeight > 0) {
|
||||
BlockData rawFluid = B.get(entry.getFluidBlock());
|
||||
BlockData rawFluid = BukkitBlockResolution.get(entry.getFluidBlock());
|
||||
if (rawFluid == null) {
|
||||
rawFluid = B.get("minecraft:water");
|
||||
rawFluid = BukkitBlockResolution.get("minecraft:water");
|
||||
}
|
||||
PlatformBlockState fluid = BukkitBlockState.of(rawFluid);
|
||||
int fluidCap = Math.min(sample.thickness - 1, localFluidHeight);
|
||||
@@ -323,7 +325,7 @@ public class IrisFloatingChildBiomeModifier extends EngineAssignedModifier<Platf
|
||||
int max = Math.max(1, chunkHeight - topY);
|
||||
if (topY + 1 < chunkHeight) {
|
||||
PlatformBlockState above = output.get(xf, topY + 1, zf);
|
||||
if (above == null || B.isAir((BlockData) above.nativeHandle())) {
|
||||
if (above == null || BukkitBlockResolution.isAir((BlockData) above.nativeHandle())) {
|
||||
try {
|
||||
RNG colRng = rng.nextParallelRNG((int) FloatingIslandSample.columnSeed(baseSeed, wx, wz));
|
||||
FloatingDecorator.decorateColumn(getEngine(), target, IrisDecorationPart.NONE, xf, zf, wx, wz, topY, max, output, colRng, NOOP_DECORATION_MISS);
|
||||
@@ -356,7 +358,7 @@ public class IrisFloatingChildBiomeModifier extends EngineAssignedModifier<Platf
|
||||
fluidTopY = y;
|
||||
}
|
||||
}
|
||||
if (fluidTopY > 0 && fluidTopY + 1 < chunkHeight && B.isAir(unwrap(output.get(xf, fluidTopY + 1, zf)))) {
|
||||
if (fluidTopY > 0 && fluidTopY + 1 < chunkHeight && BukkitBlockResolution.isAir(unwrap(output.get(xf, fluidTopY + 1, zf)))) {
|
||||
try {
|
||||
seaSurfaceDecorator.decorate(xf, zf, wx, wx + 1, wx - 1, wz, wz + 1, wz - 1, output, target, fluidTopY, chunkHeight);
|
||||
} catch (Throwable e) {
|
||||
|
||||
@@ -18,6 +18,8 @@
|
||||
|
||||
package art.arcane.iris.engine.modifier;
|
||||
|
||||
import art.arcane.iris.platform.bukkit.BukkitBlockResolution;
|
||||
|
||||
import art.arcane.iris.engine.framework.Engine;
|
||||
import art.arcane.iris.engine.framework.EngineAssignedModifier;
|
||||
import art.arcane.iris.util.project.context.ChunkContext;
|
||||
@@ -103,7 +105,7 @@ public class IrisPerfectionModifier extends EngineAssignedModifier<PlatformBlock
|
||||
for (int k = top; k >= 0; k--) {
|
||||
PlatformBlockState b = output.get(finalI, k, j);
|
||||
BlockData rawB = unwrap(b);
|
||||
boolean now = b != null && !(B.isAir(rawB) || B.isFluid(rawB));
|
||||
boolean now = b != null && !(BukkitBlockResolution.isAir(rawB) || BukkitBlockResolution.isFluid(rawB));
|
||||
|
||||
if (now != inside) {
|
||||
inside = now;
|
||||
@@ -127,16 +129,16 @@ public class IrisPerfectionModifier extends EngineAssignedModifier<PlatformBlock
|
||||
boolean remove2 = false;
|
||||
|
||||
BlockData rawTip = (BlockData) tip.nativeHandle();
|
||||
if (B.isDecorant(rawTip)) {
|
||||
if (BukkitBlockResolution.isDecorant(rawTip)) {
|
||||
BlockData bel = unwrap(output.get(finalI, k - 1, j));
|
||||
|
||||
if (bel == null) {
|
||||
remove = true;
|
||||
} else if (!B.canPlaceOnto(rawTip.getMaterial(), bel.getMaterial())) {
|
||||
} else if (!BukkitBlockResolution.canPlaceOnto(rawTip.getMaterial(), bel.getMaterial())) {
|
||||
remove = true;
|
||||
} else if (bel instanceof Bisected) {
|
||||
BlockData bb = unwrap(output.get(finalI, k - 2, j));
|
||||
if (bb == null || !B.canPlaceOnto(bel.getMaterial(), bb.getMaterial())) {
|
||||
if (bb == null || !BukkitBlockResolution.canPlaceOnto(bel.getMaterial(), bb.getMaterial())) {
|
||||
remove = true;
|
||||
remove2 = true;
|
||||
}
|
||||
@@ -191,7 +193,7 @@ public class IrisPerfectionModifier extends EngineAssignedModifier<PlatformBlock
|
||||
|
||||
if (b != null) {
|
||||
BlockData rawB = (BlockData) b.nativeHandle();
|
||||
if (!B.isAir(rawB) && !B.isFluid(rawB)) {
|
||||
if (!BukkitBlockResolution.isAir(rawB) && !BukkitBlockResolution.isFluid(rawB)) {
|
||||
return i;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -18,6 +18,8 @@
|
||||
|
||||
package art.arcane.iris.engine.modifier;
|
||||
|
||||
import art.arcane.iris.platform.bukkit.BukkitBlockResolution;
|
||||
|
||||
import art.arcane.iris.engine.framework.Engine;
|
||||
import art.arcane.iris.engine.framework.EngineAssignedModifier;
|
||||
import art.arcane.iris.engine.object.IrisBiome;
|
||||
@@ -128,10 +130,10 @@ public class IrisPostModifier extends EngineAssignedModifier<PlatformBlockState>
|
||||
BlockData bc = (BlockData) getPostBlock(x, hc, z, currentPostX, currentPostZ, currentData).nativeHandle();
|
||||
BlockData bd = (BlockData) getPostBlock(x, hd, z, currentPostX, currentPostZ, currentData).nativeHandle();
|
||||
g = 0;
|
||||
g = B.isSolid(ba) ? g + 1 : g;
|
||||
g = B.isSolid(bb) ? g + 1 : g;
|
||||
g = B.isSolid(bc) ? g + 1 : g;
|
||||
g = B.isSolid(bd) ? g + 1 : g;
|
||||
g = BukkitBlockResolution.isSolid(ba) ? g + 1 : g;
|
||||
g = BukkitBlockResolution.isSolid(bb) ? g + 1 : g;
|
||||
g = BukkitBlockResolution.isSolid(bc) ? g + 1 : g;
|
||||
g = BukkitBlockResolution.isSolid(bd) ? g + 1 : g;
|
||||
|
||||
if (g >= 3) {
|
||||
setPostBlock(x, h + 1, z, getPostBlock(x, h, z, currentPostX, currentPostZ, currentData), currentPostX, currentPostZ, currentData);
|
||||
@@ -183,7 +185,7 @@ public class IrisPostModifier extends EngineAssignedModifier<PlatformBlockState>
|
||||
|
||||
if (d != null) {
|
||||
BlockData rawD = (BlockData) d.nativeHandle();
|
||||
boolean cancel = B.isAir(rawD);
|
||||
boolean cancel = BukkitBlockResolution.isAir(rawD);
|
||||
|
||||
if (rawD.getMaterial().equals(Material.SNOW) && h + 1 <= getDimension().getFluidHeight()) {
|
||||
cancel = true;
|
||||
@@ -229,23 +231,23 @@ public class IrisPostModifier extends EngineAssignedModifier<PlatformBlockState>
|
||||
// Foliage
|
||||
b = (BlockData) getPostBlock(x, h + 1, z, currentPostX, currentPostZ, currentData).nativeHandle();
|
||||
|
||||
if (B.isVineBlock(b) && b instanceof MultipleFacing) {
|
||||
if (BukkitBlockResolution.isVineBlock(b) && b instanceof MultipleFacing) {
|
||||
MultipleFacing f = (MultipleFacing) b.clone();
|
||||
int finalH = h + 1;
|
||||
|
||||
f.getAllowedFaces().forEach(face -> {
|
||||
BlockData d = (BlockData) getPostBlock(x + face.getModX(), finalH + face.getModY(), z + face.getModZ(), currentPostX, currentPostZ, currentData).nativeHandle();
|
||||
f.setFace(face, !B.isAir(d) && !B.isVineBlock(d));
|
||||
f.setFace(face, !BukkitBlockResolution.isAir(d) && !BukkitBlockResolution.isVineBlock(d));
|
||||
});
|
||||
if (!f.equals(b)) {
|
||||
setPostBlock(x, h + 1, z, BukkitBlockState.of(f), currentPostX, currentPostZ, currentData);
|
||||
}
|
||||
}
|
||||
|
||||
if (B.isFoliage(b) || b.getMaterial().equals(Material.DEAD_BUSH)) {
|
||||
if (BukkitBlockResolution.isFoliage(b) || b.getMaterial().equals(Material.DEAD_BUSH)) {
|
||||
Material onto = ((BlockData) getPostBlock(x, h, z, currentPostX, currentPostZ, currentData).nativeHandle()).getMaterial();
|
||||
|
||||
if (!B.canPlaceOnto(b.getMaterial(), onto) && !B.isDecorant(b)) {
|
||||
if (!BukkitBlockResolution.canPlaceOnto(b.getMaterial(), onto) && !BukkitBlockResolution.isDecorant(b)) {
|
||||
setPostBlock(x, h + 1, z, AIR, currentPostX, currentPostZ, currentData);
|
||||
}
|
||||
}
|
||||
@@ -263,7 +265,7 @@ public class IrisPostModifier extends EngineAssignedModifier<PlatformBlockState>
|
||||
|
||||
public boolean isSolid(int x, int y, int z, int currentPostX, int currentPostZ, Hunk<PlatformBlockState> currentData) {
|
||||
BlockData d = (BlockData) getPostBlock(x, y, z, currentPostX, currentPostZ, currentData).nativeHandle();
|
||||
return d.getMaterial().isSolid() && !B.isVineBlock(d);
|
||||
return d.getMaterial().isSolid() && !BukkitBlockResolution.isVineBlock(d);
|
||||
}
|
||||
|
||||
public boolean isSolidNonSlab(int x, int y, int z, int currentPostX, int currentPostZ, Hunk<PlatformBlockState> currentData) {
|
||||
|
||||
@@ -2,7 +2,7 @@ package art.arcane.iris.engine.object;
|
||||
|
||||
import art.arcane.iris.platform.bukkit.BukkitBlockState;
|
||||
import art.arcane.iris.spi.PlatformBlockState;
|
||||
import art.arcane.iris.util.common.data.B;
|
||||
import art.arcane.iris.platform.bukkit.BukkitBlockResolution;
|
||||
import org.bukkit.block.data.BlockData;
|
||||
|
||||
import java.util.function.Function;
|
||||
@@ -12,7 +12,7 @@ final class BlockDataMergeSupport {
|
||||
}
|
||||
|
||||
static PlatformBlockState merge(PlatformBlockState base, PlatformBlockState update) {
|
||||
BlockData merged = merge((BlockData) base.nativeHandle(), (BlockData) update.nativeHandle(), B::get);
|
||||
BlockData merged = merge((BlockData) base.nativeHandle(), (BlockData) update.nativeHandle(), BukkitBlockResolution::get);
|
||||
return merged == null ? null : BukkitBlockState.of(merged);
|
||||
}
|
||||
|
||||
|
||||
@@ -18,6 +18,8 @@
|
||||
|
||||
package art.arcane.iris.engine.object;
|
||||
|
||||
import art.arcane.iris.platform.bukkit.BukkitBlockResolution;
|
||||
|
||||
import art.arcane.iris.core.link.Identifier;
|
||||
import art.arcane.iris.core.loader.IrisData;
|
||||
import art.arcane.iris.core.loader.IrisRegistrant;
|
||||
@@ -173,7 +175,7 @@ public class IrisBlockData extends IrisRegistrant {
|
||||
IrisLogging.debug("Block Data used " + sx + " (CUSTOM)");
|
||||
}
|
||||
|
||||
BlockData bx = B.get(sx);
|
||||
BlockData bx = BukkitBlockResolution.get(sx);
|
||||
|
||||
if (bx != null) {
|
||||
return BukkitBlockState.of(bx);
|
||||
@@ -186,7 +188,7 @@ public class IrisBlockData extends IrisRegistrant {
|
||||
}
|
||||
|
||||
String ss = keyify(getBlock()) + computeProperties();
|
||||
b = B.get(ss);
|
||||
b = BukkitBlockResolution.get(ss);
|
||||
|
||||
if (debug) {
|
||||
IrisLogging.debug("Block Data used " + ss);
|
||||
|
||||
@@ -18,10 +18,11 @@
|
||||
|
||||
package art.arcane.iris.engine.object;
|
||||
|
||||
import art.arcane.iris.platform.bukkit.BukkitBlockResolution;
|
||||
|
||||
import art.arcane.iris.spi.IrisLogging;
|
||||
import com.google.gson.Gson;
|
||||
import art.arcane.volmlib.util.collection.KList;
|
||||
import art.arcane.iris.util.common.data.B;
|
||||
import art.arcane.volmlib.util.io.IO;
|
||||
import art.arcane.volmlib.util.json.JSONObject;
|
||||
import art.arcane.iris.util.common.scheduling.J;
|
||||
@@ -266,7 +267,7 @@ public class IrisCompat {
|
||||
String buf = n;
|
||||
int err = 16;
|
||||
|
||||
BlockData tx = B.getOrNull(buf, false);
|
||||
BlockData tx = BukkitBlockResolution.getOrNull(buf, false);
|
||||
|
||||
if (tx != null) {
|
||||
return tx;
|
||||
@@ -276,7 +277,7 @@ public class IrisCompat {
|
||||
while (true) {
|
||||
if (err-- <= 0) {
|
||||
IrisLogging.error("Can't find block data for " + n);
|
||||
return B.getNoCompat("STONE");
|
||||
return BukkitBlockResolution.getNoCompat("STONE");
|
||||
}
|
||||
String m = buf;
|
||||
if (m.contains("[")) {
|
||||
@@ -300,14 +301,14 @@ public class IrisCompat {
|
||||
}
|
||||
|
||||
IrisLogging.error("Can't find block data for " + n);
|
||||
return B.getNoCompat("STONE");
|
||||
return BukkitBlockResolution.getNoCompat("STONE");
|
||||
}
|
||||
}
|
||||
|
||||
public Material getItem(String n) {
|
||||
String buf = n;
|
||||
int err = 16;
|
||||
Material txf = B.getMaterialOrNull(buf);
|
||||
Material txf = BukkitBlockResolution.getMaterialOrNull(buf);
|
||||
|
||||
if (txf != null) {
|
||||
return txf;
|
||||
@@ -318,7 +319,7 @@ public class IrisCompat {
|
||||
searching:
|
||||
while (true) {
|
||||
if (nomore < 0) {
|
||||
return B.getMaterial("STONE");
|
||||
return BukkitBlockResolution.getMaterial("STONE");
|
||||
}
|
||||
|
||||
nomore--;
|
||||
@@ -343,7 +344,7 @@ public class IrisCompat {
|
||||
}
|
||||
|
||||
buf = n;
|
||||
BlockData tx = B.getOrNull(buf, false);
|
||||
BlockData tx = BukkitBlockResolution.getOrNull(buf, false);
|
||||
|
||||
if (tx != null) {
|
||||
return tx.getMaterial();
|
||||
@@ -353,13 +354,13 @@ public class IrisCompat {
|
||||
searching:
|
||||
while (true) {
|
||||
if (nomore < 0) {
|
||||
return B.getMaterial("STONE");
|
||||
return BukkitBlockResolution.getMaterial("STONE");
|
||||
}
|
||||
|
||||
nomore--;
|
||||
|
||||
if (err-- <= 0) {
|
||||
return B.getMaterial("STONE");
|
||||
return BukkitBlockResolution.getMaterial("STONE");
|
||||
}
|
||||
|
||||
for (IrisCompatabilityBlockFilter i : blockFilters) {
|
||||
@@ -375,7 +376,7 @@ public class IrisCompat {
|
||||
}
|
||||
}
|
||||
|
||||
return B.getMaterial("STONE");
|
||||
return BukkitBlockResolution.getMaterial("STONE");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -18,11 +18,12 @@
|
||||
|
||||
package art.arcane.iris.engine.object;
|
||||
|
||||
import art.arcane.iris.platform.bukkit.BukkitBlockResolution;
|
||||
|
||||
import art.arcane.iris.engine.data.cache.AtomicCache;
|
||||
import art.arcane.iris.engine.object.annotations.Desc;
|
||||
import art.arcane.iris.engine.object.annotations.Required;
|
||||
import art.arcane.iris.spi.IrisLogging;
|
||||
import art.arcane.iris.util.common.data.B;
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Data;
|
||||
import lombok.NoArgsConstructor;
|
||||
@@ -51,13 +52,13 @@ public class IrisCompatabilityBlockFilter {
|
||||
}
|
||||
|
||||
public BlockData getFind() {
|
||||
return findData.aquire(() -> B.get(when));
|
||||
return findData.aquire(() -> BukkitBlockResolution.get(when));
|
||||
}
|
||||
|
||||
public BlockData getReplace() {
|
||||
return replaceData.aquire(() ->
|
||||
{
|
||||
BlockData b = B.getOrNull(supplement, false);
|
||||
BlockData b = BukkitBlockResolution.getOrNull(supplement, false);
|
||||
|
||||
if (b == null) {
|
||||
return null;
|
||||
|
||||
@@ -18,11 +18,12 @@
|
||||
|
||||
package art.arcane.iris.engine.object;
|
||||
|
||||
import art.arcane.iris.platform.bukkit.BukkitBlockResolution;
|
||||
|
||||
import art.arcane.iris.spi.IrisLogging;
|
||||
import art.arcane.iris.engine.data.cache.AtomicCache;
|
||||
import art.arcane.iris.engine.object.annotations.Desc;
|
||||
import art.arcane.iris.engine.object.annotations.Required;
|
||||
import art.arcane.iris.util.common.data.B;
|
||||
import lombok.Data;
|
||||
import lombok.NoArgsConstructor;
|
||||
import lombok.experimental.Accessors;
|
||||
@@ -48,13 +49,13 @@ public class IrisCompatabilityItemFilter {
|
||||
}
|
||||
|
||||
public Material getFind() {
|
||||
return findData.aquire(() -> B.getMaterial(when));
|
||||
return findData.aquire(() -> BukkitBlockResolution.getMaterial(when));
|
||||
}
|
||||
|
||||
public Material getReplace() {
|
||||
return replaceData.aquire(() ->
|
||||
{
|
||||
Material b = B.getMaterialOrNull(supplement);
|
||||
Material b = BukkitBlockResolution.getMaterialOrNull(supplement);
|
||||
|
||||
if (b == null) {
|
||||
return null;
|
||||
|
||||
@@ -18,6 +18,8 @@
|
||||
|
||||
package art.arcane.iris.engine.object;
|
||||
|
||||
import art.arcane.iris.platform.bukkit.BukkitBlockResolution;
|
||||
|
||||
import art.arcane.iris.core.loader.IrisData;
|
||||
import art.arcane.iris.engine.data.cache.AtomicCache;
|
||||
import art.arcane.iris.engine.object.annotations.Desc;
|
||||
@@ -25,7 +27,6 @@ import art.arcane.iris.engine.object.annotations.MaxNumber;
|
||||
import art.arcane.iris.engine.object.annotations.MinNumber;
|
||||
import art.arcane.iris.engine.object.annotations.Required;
|
||||
import art.arcane.iris.engine.object.annotations.Snippet;
|
||||
import art.arcane.iris.util.common.data.B;
|
||||
import art.arcane.volmlib.util.collection.KMap;
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Data;
|
||||
@@ -75,8 +76,8 @@ public class IrisDepositVariant {
|
||||
KMap<Material, BlockData> out = new KMap<>();
|
||||
|
||||
for (java.util.Map.Entry<String, String> entry : remap.entrySet()) {
|
||||
BlockData source = B.getOrNull(entry.getKey(), false);
|
||||
BlockData target = B.getOrNull(entry.getValue(), true);
|
||||
BlockData source = BukkitBlockResolution.getOrNull(entry.getKey(), false);
|
||||
BlockData target = BukkitBlockResolution.getOrNull(entry.getValue(), true);
|
||||
|
||||
if (source == null || target == null) {
|
||||
continue;
|
||||
|
||||
@@ -18,6 +18,8 @@
|
||||
|
||||
package art.arcane.iris.engine.object;
|
||||
|
||||
import art.arcane.iris.platform.bukkit.BukkitBlockResolution;
|
||||
|
||||
import art.arcane.iris.spi.IrisServices;
|
||||
import art.arcane.iris.core.link.Identifier;
|
||||
import art.arcane.iris.core.service.ExternalDataSVC;
|
||||
@@ -27,7 +29,6 @@ import art.arcane.iris.platform.bukkit.BukkitPlatform;
|
||||
import art.arcane.iris.spi.IrisLogging;
|
||||
import art.arcane.volmlib.util.collection.KList;
|
||||
import art.arcane.volmlib.util.collection.KMap;
|
||||
import art.arcane.iris.util.common.data.B;
|
||||
import art.arcane.iris.util.common.format.C;
|
||||
import art.arcane.volmlib.util.format.Form;
|
||||
import art.arcane.volmlib.util.math.RNG;
|
||||
@@ -108,7 +109,7 @@ public class IrisLoot {
|
||||
private KMap<String, Object> customNbt;
|
||||
|
||||
public Material getType() {
|
||||
return B.getMaterial(type);
|
||||
return BukkitBlockResolution.getMaterial(type);
|
||||
}
|
||||
|
||||
public ItemStack get(boolean debug, RNG rng) {
|
||||
|
||||
@@ -18,6 +18,8 @@
|
||||
|
||||
package art.arcane.iris.engine.object;
|
||||
|
||||
import art.arcane.iris.platform.bukkit.BukkitBlockResolution;
|
||||
|
||||
import art.arcane.iris.platform.bukkit.BukkitPlatform;
|
||||
import art.arcane.iris.core.loader.IrisData;
|
||||
import art.arcane.iris.core.loader.IrisRegistrant;
|
||||
@@ -328,7 +330,7 @@ public class IrisObject extends IrisRegistrant {
|
||||
|
||||
for (int i = 0; i < s; i++) {
|
||||
Vector3i pos = new Vector3i(din.readShort(), din.readShort(), din.readShort());
|
||||
BlockData data = B.get(din.readUTF());
|
||||
BlockData data = BukkitBlockResolution.get(din.readUTF());
|
||||
if (isStructureMarker(data)) {
|
||||
continue;
|
||||
}
|
||||
@@ -370,7 +372,7 @@ public class IrisObject extends IrisRegistrant {
|
||||
|
||||
for (i = 0; i < s; i++) {
|
||||
Vector3i pos = new Vector3i(din.readShort(), din.readShort(), din.readShort());
|
||||
BlockData data = B.get(palette.get(din.readShort()));
|
||||
BlockData data = BukkitBlockResolution.get(palette.get(din.readShort()));
|
||||
if (isStructureMarker(data)) {
|
||||
continue;
|
||||
}
|
||||
@@ -1098,7 +1100,7 @@ public class IrisObject extends IrisRegistrant {
|
||||
zz += config.warp(rng, i.getZ() + z, i.getY() + y, i.getX() + x, getLoader());
|
||||
}
|
||||
|
||||
if (yv < 0 && (config.getMode().equals(ObjectPlaceMode.PAINT)) && !B.isVineBlock((BlockData) data.nativeHandle())) {
|
||||
if (yv < 0 && (config.getMode().equals(ObjectPlaceMode.PAINT)) && !BukkitBlockResolution.isVineBlock((BlockData) data.nativeHandle())) {
|
||||
yy = (int) Math.round(i.getY()) + Math.floorDiv(h, 2) + placer.getHighest(xx, zz, getLoader(), config.isUnderwater());
|
||||
}
|
||||
|
||||
@@ -1124,13 +1126,13 @@ public class IrisObject extends IrisRegistrant {
|
||||
data = BukkitBlockState.of(waterlogged);
|
||||
}
|
||||
|
||||
if (B.isVineBlock((BlockData) data.nativeHandle())) {
|
||||
if (BukkitBlockResolution.isVineBlock((BlockData) data.nativeHandle())) {
|
||||
MultipleFacing f = (MultipleFacing) ((BlockData) data.nativeHandle()).clone();
|
||||
boolean facesChanged = false;
|
||||
for (BlockFace face : f.getAllowedFaces()) {
|
||||
PlatformBlockState facingState = placer.get(xx + face.getModX(), yy + face.getModY(), zz + face.getModZ());
|
||||
BlockData facingBlock = facingState == null ? null : (BlockData) facingState.nativeHandle();
|
||||
if (B.isSolid(facingBlock) && !B.isVineBlock(facingBlock)) {
|
||||
if (BukkitBlockResolution.isSolid(facingBlock) && !BukkitBlockResolution.isVineBlock(facingBlock)) {
|
||||
f.setFace(face, true);
|
||||
facesChanged = true;
|
||||
}
|
||||
@@ -1151,7 +1153,7 @@ public class IrisObject extends IrisRegistrant {
|
||||
PlatformBlockState existingState = placer.get(xx, yy, zz);
|
||||
BlockData existingRaw = existingState == null ? null : (BlockData) existingState.nativeHandle();
|
||||
BlockData rawData = (BlockData) data.nativeHandle();
|
||||
boolean wouldReplace = B.isSolid(existingRaw) && B.isVineBlock(rawData);
|
||||
boolean wouldReplace = BukkitBlockResolution.isSolid(existingRaw) && BukkitBlockResolution.isVineBlock(rawData);
|
||||
boolean place = !rawData.getMaterial().equals(Material.AIR) && !rawData.getMaterial().equals(Material.CAVE_AIR) && !wouldReplace;
|
||||
|
||||
if (rawData instanceof IrisCustomData || place) {
|
||||
@@ -1368,7 +1370,7 @@ public class IrisObject extends IrisRegistrant {
|
||||
|
||||
for (int j = lowest + y; j > lowerBound; j--) {
|
||||
PlatformBlockState fluidState = placer.get(xx, j, zz);
|
||||
if (B.isFluid(fluidState == null ? null : (BlockData) fluidState.nativeHandle())) {
|
||||
if (BukkitBlockResolution.isFluid(fluidState == null ? null : (BlockData) fluidState.nativeHandle())) {
|
||||
break;
|
||||
}
|
||||
if (eroding) {
|
||||
@@ -1384,13 +1386,13 @@ public class IrisObject extends IrisRegistrant {
|
||||
}
|
||||
}
|
||||
|
||||
if (B.isVineBlock((BlockData) d.nativeHandle())) {
|
||||
if (BukkitBlockResolution.isVineBlock((BlockData) d.nativeHandle())) {
|
||||
MultipleFacing f = (MultipleFacing) ((BlockData) d.nativeHandle()).clone();
|
||||
boolean facesChanged = false;
|
||||
for (BlockFace face : f.getAllowedFaces()) {
|
||||
PlatformBlockState facingState = placer.get(xx + face.getModX(), j + face.getModY(), zz + face.getModZ());
|
||||
BlockData facingBlock = facingState == null ? null : (BlockData) facingState.nativeHandle();
|
||||
if (B.isSolid(facingBlock) && !B.isVineBlock(facingBlock)) {
|
||||
if (BukkitBlockResolution.isSolid(facingBlock) && !BukkitBlockResolution.isVineBlock(facingBlock)) {
|
||||
f.setFace(face, true);
|
||||
facesChanged = true;
|
||||
}
|
||||
@@ -1497,7 +1499,7 @@ public class IrisObject extends IrisRegistrant {
|
||||
targetY = Math.max(worldMin + 1, Math.min(worldMax, targetY));
|
||||
if (targetY > origY) {
|
||||
PlatformBlockState fill = complex != null ? complex.getRockStream().get(cx, cz) : null;
|
||||
if (fill == null || B.isAir((BlockData) fill.nativeHandle())) {
|
||||
if (fill == null || BukkitBlockResolution.isAir((BlockData) fill.nativeHandle())) {
|
||||
fill = STONE;
|
||||
}
|
||||
for (int yy = origY + 1; yy <= targetY; yy++) {
|
||||
@@ -1568,7 +1570,7 @@ public class IrisObject extends IrisRegistrant {
|
||||
}
|
||||
|
||||
BlockData raw = (BlockData) existing.nativeHandle();
|
||||
return B.isWater(raw) || B.isWaterLogged(raw);
|
||||
return BukkitBlockResolution.isWater(raw) || BukkitBlockResolution.isWaterLogged(raw);
|
||||
}
|
||||
|
||||
public IrisObject rotateCopy(IrisObjectRotation rt) {
|
||||
|
||||
@@ -18,6 +18,8 @@
|
||||
|
||||
package art.arcane.iris.engine.object;
|
||||
|
||||
import art.arcane.iris.platform.bukkit.BukkitBlockResolution;
|
||||
|
||||
import art.arcane.iris.core.loader.IrisData;
|
||||
import art.arcane.iris.engine.data.cache.AtomicCache;
|
||||
import art.arcane.iris.engine.framework.Engine;
|
||||
@@ -26,7 +28,6 @@ import art.arcane.iris.spi.IrisLogging;
|
||||
import art.arcane.iris.spi.PlatformBlockState;
|
||||
import art.arcane.volmlib.util.collection.KList;
|
||||
import art.arcane.volmlib.util.collection.KMap;
|
||||
import art.arcane.iris.util.common.data.B;
|
||||
import art.arcane.iris.util.common.data.DataProvider;
|
||||
import art.arcane.volmlib.util.data.WeightedRandom;
|
||||
import art.arcane.volmlib.util.math.RNG;
|
||||
@@ -321,7 +322,7 @@ public class IrisObjectPlacement {
|
||||
public IrisLootTable getTable(PlatformBlockState state, IrisData dataManager) {
|
||||
TableCache cache = getCache(dataManager);
|
||||
BlockData data = (BlockData) state.nativeHandle();
|
||||
if (B.isStorageChest(data)) {
|
||||
if (BukkitBlockResolution.isStorageChest(data)) {
|
||||
IrisLootTable picked = null;
|
||||
if (cache.exact.containsKey(data.getMaterial()) && cache.exact.get(data.getMaterial()).containsKey(data)) {
|
||||
picked = cache.exact.get(data.getMaterial()).get(data).pullRandom();
|
||||
|
||||
@@ -18,10 +18,11 @@
|
||||
|
||||
package art.arcane.iris.engine.object;
|
||||
|
||||
import art.arcane.iris.platform.bukkit.BukkitBlockResolution;
|
||||
|
||||
import art.arcane.iris.core.loader.IrisData;
|
||||
import art.arcane.iris.platform.bukkit.BukkitBlockState;
|
||||
import art.arcane.iris.spi.PlatformBlockState;
|
||||
import art.arcane.iris.util.common.data.B;
|
||||
import art.arcane.iris.util.common.math.Vector3i;
|
||||
import art.arcane.volmlib.util.math.RNG;
|
||||
import org.bukkit.block.data.BlockData;
|
||||
@@ -48,7 +49,7 @@ public final class IrisProceduralBlocks {
|
||||
return state == null ? null : ((BlockData) state.nativeHandle()).clone();
|
||||
}
|
||||
if (block != null && !block.isEmpty()) {
|
||||
BlockData bd = B.getOrNull(block, false);
|
||||
BlockData bd = BukkitBlockResolution.getOrNull(block, false);
|
||||
return bd == null ? null : bd.clone();
|
||||
}
|
||||
return null;
|
||||
|
||||
@@ -18,12 +18,13 @@
|
||||
|
||||
package art.arcane.iris.engine.object.tree;
|
||||
|
||||
import art.arcane.iris.platform.bukkit.BukkitBlockResolution;
|
||||
|
||||
import art.arcane.iris.core.loader.IrisData;
|
||||
import art.arcane.iris.engine.object.IrisMaterialPalette;
|
||||
import art.arcane.iris.engine.object.IrisProceduralTree;
|
||||
import art.arcane.iris.engine.object.IrisTreeDecorator;
|
||||
import art.arcane.iris.spi.PlatformBlockState;
|
||||
import art.arcane.iris.util.common.data.B;
|
||||
import art.arcane.volmlib.util.math.RNG;
|
||||
import org.bukkit.Axis;
|
||||
import org.bukkit.Material;
|
||||
@@ -106,10 +107,10 @@ public final class TreeBlockResolver {
|
||||
}
|
||||
if (tree.getWeightedSecondaryLeaves() != null && !tree.getWeightedSecondaryLeaves().isEmpty()) {
|
||||
String picked = pickWeighted(tree, posRng);
|
||||
return picked == null ? null : cloneOrNull(B.getOrNull(picked, false));
|
||||
return picked == null ? null : cloneOrNull(BukkitBlockResolution.getOrNull(picked, false));
|
||||
}
|
||||
if (tree.getSecondaryLeaves() != null && !tree.getSecondaryLeaves().isEmpty()) {
|
||||
return cloneOrNull(B.getOrNull(tree.getSecondaryLeaves(), false));
|
||||
return cloneOrNull(BukkitBlockResolution.getOrNull(tree.getSecondaryLeaves(), false));
|
||||
}
|
||||
return null;
|
||||
}
|
||||
@@ -139,7 +140,7 @@ public final class TreeBlockResolver {
|
||||
return state == null ? null : ((BlockData) state.nativeHandle()).clone();
|
||||
}
|
||||
if (block != null && !block.isEmpty()) {
|
||||
return cloneOrNull(B.getOrNull(block, false));
|
||||
return cloneOrNull(BukkitBlockResolution.getOrNull(block, false));
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
@@ -0,0 +1,284 @@
|
||||
/*
|
||||
* Iris is a World Generator for Minecraft Bukkit Servers
|
||||
* Copyright (c) 2026 Arcane Arts (Volmit Software)
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation, either version 3 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
package art.arcane.iris.platform.bukkit;
|
||||
|
||||
import art.arcane.iris.core.IrisSettings;
|
||||
import art.arcane.iris.core.link.Identifier;
|
||||
import art.arcane.iris.core.link.data.DataType;
|
||||
import art.arcane.iris.core.nms.INMS;
|
||||
import art.arcane.iris.core.nms.container.BlockProperty;
|
||||
import art.arcane.iris.core.service.ExternalDataSVC;
|
||||
import art.arcane.iris.engine.object.IrisCompat;
|
||||
import art.arcane.iris.spi.IrisLogging;
|
||||
import art.arcane.iris.spi.IrisServices;
|
||||
import art.arcane.iris.util.common.data.registry.Materials;
|
||||
import art.arcane.iris.util.common.reflect.KeyedType;
|
||||
import art.arcane.volmlib.util.collection.KList;
|
||||
import art.arcane.volmlib.util.collection.KMap;
|
||||
import art.arcane.volmlib.util.data.BSupport;
|
||||
import it.unimi.dsi.fastutil.ints.IntSet;
|
||||
import org.bukkit.Material;
|
||||
import org.bukkit.NamespacedKey;
|
||||
import org.bukkit.block.data.BlockData;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.Locale;
|
||||
import java.util.Optional;
|
||||
|
||||
public final class BukkitBlockResolution {
|
||||
private static final BSupportImpl BASE = new BSupportImpl();
|
||||
|
||||
private BukkitBlockResolution() {
|
||||
}
|
||||
|
||||
private static final class BSupportImpl extends BSupport<BlockProperty> {
|
||||
@Override
|
||||
protected void warn(String message) {
|
||||
IrisLogging.warn(message);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void debug(String message) {
|
||||
IrisLogging.debug(message);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void reportError(Throwable throwable) {
|
||||
IrisLogging.reportError(throwable);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void error(String message) {
|
||||
IrisLogging.error(message);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected Material shortGrassMaterial() {
|
||||
return Materials.GRASS;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void appendExtraFoliageMaterials(IntSet foliage) {
|
||||
}
|
||||
|
||||
@Override
|
||||
protected boolean includeLitInUpdatable() {
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected BlockData resolveCompatBlock(String bdxf) {
|
||||
if (bdxf.contains(":")) {
|
||||
if (bdxf.startsWith("minecraft:")) {
|
||||
return IrisServices.get(IrisCompat.class).getBlock(bdxf);
|
||||
}
|
||||
return null;
|
||||
}
|
||||
return IrisServices.get(IrisCompat.class).getBlock(bdxf);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected BlockData resolveExternalBlockData(String ix) {
|
||||
if (ix.startsWith("minecraft:") || !ix.contains(":")) {
|
||||
return null;
|
||||
}
|
||||
|
||||
Identifier key = Identifier.fromString(ix);
|
||||
Optional<BlockData> bd = IrisServices.get(ExternalDataSVC.class).getBlockData(key);
|
||||
debug("Loading block data " + key);
|
||||
return bd.orElse(null);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected boolean shouldPreventLeafDecay() {
|
||||
return IrisSettings.get().getGenerator().isPreventLeafDecay();
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void appendExternalBlockTypes(KList<String> blockTypes) {
|
||||
for (Identifier id : IrisServices.get(ExternalDataSVC.class).getAllIdentifiers(DataType.BLOCK)) {
|
||||
blockTypes.add(id.toString());
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void appendExternalItemTypes(KList<String> itemTypes) {
|
||||
for (Identifier id : IrisServices.get(ExternalDataSVC.class).getAllIdentifiers(DataType.ITEM)) {
|
||||
itemTypes.add(id.toString());
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
protected KMap<List<String>, List<BlockProperty>> loadExternalBlockStates() {
|
||||
KMap<List<BlockProperty>, List<String>> flipped = new KMap<>();
|
||||
INMS.get().getBlockProperties().forEach((k, v) -> {
|
||||
NamespacedKey key = KeyedType.getKey(k);
|
||||
String serialized = key == null ? k.name().toLowerCase(Locale.ROOT) : key.toString();
|
||||
flipped.computeIfAbsent(v, $ -> new KList<>()).add(serialized);
|
||||
});
|
||||
|
||||
var emptyStates = flipped.computeIfAbsent(new KList<>(0), $ -> new KList<>());
|
||||
for (var pair : IrisServices.get(ExternalDataSVC.class).getAllBlockProperties()) {
|
||||
if (pair.getB().isEmpty()) {
|
||||
emptyStates.add(pair.getA().toString());
|
||||
} else {
|
||||
flipped.computeIfAbsent(pair.getB(), $ -> new KList<>()).add(pair.getA().toString());
|
||||
}
|
||||
}
|
||||
|
||||
KMap<List<String>, List<BlockProperty>> states = new KMap<>();
|
||||
flipped.forEach((k, v) -> {
|
||||
var old = states.put(v, k);
|
||||
if (old != null) {
|
||||
error("Duplicate block state: " + v + " (" + old + " and " + k + ")");
|
||||
}
|
||||
});
|
||||
|
||||
return states;
|
||||
}
|
||||
}
|
||||
|
||||
public static BlockData toDeepSlateOre(BlockData block, BlockData ore) {
|
||||
return BASE.toDeepSlateOre(block, ore);
|
||||
}
|
||||
|
||||
public static boolean isDeepSlate(BlockData blockData) {
|
||||
return BASE.isDeepSlate(blockData);
|
||||
}
|
||||
|
||||
public static boolean isOre(BlockData blockData) {
|
||||
return BASE.isOre(blockData);
|
||||
}
|
||||
|
||||
public static boolean canPlaceOnto(Material mat, Material onto) {
|
||||
return BASE.canPlaceOnto(mat, onto);
|
||||
}
|
||||
|
||||
public static boolean isFoliagePlantable(BlockData d) {
|
||||
return BASE.isFoliagePlantable(d);
|
||||
}
|
||||
|
||||
public static boolean isFoliagePlantable(Material d) {
|
||||
return BASE.isFoliagePlantable(d);
|
||||
}
|
||||
|
||||
public static boolean isWater(BlockData b) {
|
||||
return BASE.isWater(b);
|
||||
}
|
||||
|
||||
public static BlockData getAir() {
|
||||
return BASE.getAir();
|
||||
}
|
||||
|
||||
public static Material getMaterialOrNull(String bdx) {
|
||||
return BASE.getMaterialOrNull(bdx);
|
||||
}
|
||||
|
||||
public static Material getMaterial(String bdx) {
|
||||
return BASE.getMaterial(bdx);
|
||||
}
|
||||
|
||||
public static boolean isSolid(BlockData mat) {
|
||||
return BASE.isSolid(mat);
|
||||
}
|
||||
|
||||
public static BlockData getOrNull(String bdxf) {
|
||||
return BASE.getOrNull(bdxf);
|
||||
}
|
||||
|
||||
public static BlockData getOrNull(String bdxf, boolean warn) {
|
||||
return BASE.getOrNull(bdxf, warn);
|
||||
}
|
||||
|
||||
public static BlockData getNoCompat(String bdxf) {
|
||||
return BASE.getNoCompat(bdxf);
|
||||
}
|
||||
|
||||
public static BlockData get(String bdxf) {
|
||||
return BASE.get(bdxf);
|
||||
}
|
||||
|
||||
public static boolean isStorage(BlockData mat) {
|
||||
return BASE.isStorage(mat);
|
||||
}
|
||||
|
||||
public static boolean isStorageChest(BlockData mat) {
|
||||
return BASE.isStorageChest(mat);
|
||||
}
|
||||
|
||||
public static boolean isLit(BlockData mat) {
|
||||
return BASE.isLit(mat);
|
||||
}
|
||||
|
||||
public static boolean isUpdatable(BlockData mat) {
|
||||
return BASE.isUpdatable(mat);
|
||||
}
|
||||
|
||||
public static boolean isFoliage(Material d) {
|
||||
return BASE.isFoliage(d);
|
||||
}
|
||||
|
||||
public static boolean isFoliage(BlockData d) {
|
||||
return BASE.isFoliage(d);
|
||||
}
|
||||
|
||||
public static boolean isDecorant(BlockData m) {
|
||||
return BASE.isDecorant(m);
|
||||
}
|
||||
|
||||
public static KList<BlockData> get(KList<String> find) {
|
||||
return BASE.get(find);
|
||||
}
|
||||
|
||||
public static boolean isFluid(BlockData d) {
|
||||
return BASE.isFluid(d);
|
||||
}
|
||||
|
||||
public static boolean isAirOrFluid(BlockData d) {
|
||||
return BASE.isAirOrFluid(d);
|
||||
}
|
||||
|
||||
public static boolean isAir(BlockData d) {
|
||||
return BASE.isAir(d);
|
||||
}
|
||||
|
||||
public static synchronized String[] getBlockTypes() {
|
||||
return BASE.getBlockTypes();
|
||||
}
|
||||
|
||||
public static synchronized KMap<List<String>, List<BlockProperty>> getBlockStates() {
|
||||
return BASE.getBlockStates();
|
||||
}
|
||||
|
||||
public static String[] getItemTypes() {
|
||||
return BASE.getItemTypes();
|
||||
}
|
||||
|
||||
public static boolean isWaterLogged(BlockData b) {
|
||||
return BASE.isWaterLogged(b);
|
||||
}
|
||||
|
||||
public static void registerCustomBlockData(String namespace, String key, BlockData blockData) {
|
||||
BASE.registerCustomBlockData(namespace, key, blockData);
|
||||
}
|
||||
|
||||
public static boolean isVineBlock(BlockData data) {
|
||||
return BASE.isVineBlock(data);
|
||||
}
|
||||
}
|
||||
@@ -20,7 +20,6 @@ package art.arcane.iris.platform.bukkit;
|
||||
|
||||
import art.arcane.iris.core.nms.INMS;
|
||||
import art.arcane.iris.spi.PlatformBlockState;
|
||||
import art.arcane.iris.util.common.data.B;
|
||||
import art.arcane.iris.util.common.data.IrisCustomData;
|
||||
import org.bukkit.Bukkit;
|
||||
import org.bukkit.block.data.BlockData;
|
||||
@@ -40,6 +39,10 @@ public final class BukkitBlockState implements PlatformBlockState {
|
||||
private final String namespace;
|
||||
private volatile Boolean air;
|
||||
private volatile Boolean solid;
|
||||
private volatile Boolean fluid;
|
||||
private volatile Boolean water;
|
||||
private volatile Boolean foliage;
|
||||
private volatile Boolean decorant;
|
||||
|
||||
private BukkitBlockState(BlockData data, String key) {
|
||||
this.data = data;
|
||||
@@ -123,7 +126,7 @@ public final class BukkitBlockState implements PlatformBlockState {
|
||||
public boolean isAir() {
|
||||
Boolean cached = air;
|
||||
if (cached == null) {
|
||||
cached = B.isAir(data);
|
||||
cached = BukkitBlockResolution.isAir(data);
|
||||
air = cached;
|
||||
}
|
||||
return cached;
|
||||
@@ -133,12 +136,107 @@ public final class BukkitBlockState implements PlatformBlockState {
|
||||
public boolean isSolid() {
|
||||
Boolean cached = solid;
|
||||
if (cached == null) {
|
||||
cached = B.isSolid(data);
|
||||
cached = BukkitBlockResolution.isSolid(data);
|
||||
solid = cached;
|
||||
}
|
||||
return cached;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isFluid() {
|
||||
Boolean cached = fluid;
|
||||
if (cached == null) {
|
||||
cached = BukkitBlockResolution.isFluid(data);
|
||||
fluid = cached;
|
||||
}
|
||||
return cached;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isWater() {
|
||||
Boolean cached = water;
|
||||
if (cached == null) {
|
||||
cached = BukkitBlockResolution.isWater(data);
|
||||
water = cached;
|
||||
}
|
||||
return cached;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isWaterLogged() {
|
||||
return BukkitBlockResolution.isWaterLogged(data);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isLit() {
|
||||
return BukkitBlockResolution.isLit(data);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isUpdatable() {
|
||||
return BukkitBlockResolution.isUpdatable(data);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isFoliage() {
|
||||
Boolean cached = foliage;
|
||||
if (cached == null) {
|
||||
cached = BukkitBlockResolution.isFoliage(data);
|
||||
foliage = cached;
|
||||
}
|
||||
return cached;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isFoliagePlantable() {
|
||||
return BukkitBlockResolution.isFoliagePlantable(data);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isDecorant() {
|
||||
Boolean cached = decorant;
|
||||
if (cached == null) {
|
||||
cached = BukkitBlockResolution.isDecorant(data);
|
||||
decorant = cached;
|
||||
}
|
||||
return cached;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isStorage() {
|
||||
return BukkitBlockResolution.isStorage(data);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isStorageChest() {
|
||||
return BukkitBlockResolution.isStorageChest(data);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isOre() {
|
||||
return BukkitBlockResolution.isOre(data);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isDeepSlate() {
|
||||
return BukkitBlockResolution.isDeepSlate(data);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isVineBlock() {
|
||||
return BukkitBlockResolution.isVineBlock(data);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean canPlaceOnto(PlatformBlockState onto) {
|
||||
return BukkitBlockResolution.canPlaceOnto(data.getMaterial(), ((BlockData) onto.nativeHandle()).getMaterial());
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean matches(PlatformBlockState state) {
|
||||
return data.matches((BlockData) state.nativeHandle());
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean hasTileEntity() {
|
||||
return INMS.get().hasTile(data.getMaterial());
|
||||
|
||||
@@ -24,7 +24,6 @@ import art.arcane.iris.spi.PlatformBlockState;
|
||||
import art.arcane.iris.spi.PlatformEntityType;
|
||||
import art.arcane.iris.spi.PlatformItem;
|
||||
import art.arcane.iris.spi.PlatformRegistries;
|
||||
import art.arcane.iris.util.common.data.B;
|
||||
import org.bukkit.Material;
|
||||
import org.bukkit.NamespacedKey;
|
||||
import org.bukkit.Registry;
|
||||
@@ -41,10 +40,32 @@ import java.util.List;
|
||||
public final class BukkitRegistries implements PlatformRegistries {
|
||||
@Override
|
||||
public PlatformBlockState block(String key) {
|
||||
BlockData data = B.get(key);
|
||||
BlockData data = BukkitBlockResolution.get(key);
|
||||
return data == null ? null : BukkitBlockState.of(data);
|
||||
}
|
||||
|
||||
@Override
|
||||
public PlatformBlockState blockOrNull(String key) {
|
||||
BlockData data = BukkitBlockResolution.getOrNull(key);
|
||||
return data == null ? null : BukkitBlockState.of(data);
|
||||
}
|
||||
|
||||
@Override
|
||||
public PlatformBlockState blockOrNull(String key, boolean warn) {
|
||||
BlockData data = BukkitBlockResolution.getOrNull(key, warn);
|
||||
return data == null ? null : BukkitBlockState.of(data);
|
||||
}
|
||||
|
||||
@Override
|
||||
public PlatformBlockState air() {
|
||||
return BukkitBlockState.of(BukkitBlockResolution.getAir());
|
||||
}
|
||||
|
||||
@Override
|
||||
public PlatformBlockState deepSlateOre(PlatformBlockState block, PlatformBlockState ore) {
|
||||
return BukkitBlockState.of(BukkitBlockResolution.toDeepSlateOre((BlockData) block.nativeHandle(), (BlockData) ore.nativeHandle()));
|
||||
}
|
||||
|
||||
@Override
|
||||
public PlatformBiome biome(String key) {
|
||||
NamespacedKey namespacedKey = NamespacedKey.fromString(key);
|
||||
|
||||
@@ -1,309 +1,107 @@
|
||||
package art.arcane.iris.util.common.data;
|
||||
|
||||
import art.arcane.iris.spi.IrisPlatforms;
|
||||
import art.arcane.iris.spi.PlatformBlockState;
|
||||
import art.arcane.volmlib.util.collection.KList;
|
||||
import art.arcane.volmlib.util.collection.KMap;
|
||||
import art.arcane.volmlib.util.data.BSupport;
|
||||
import art.arcane.iris.spi.IrisLogging;
|
||||
import art.arcane.iris.spi.IrisServices;
|
||||
import art.arcane.iris.engine.object.IrisCompat;
|
||||
import art.arcane.iris.core.IrisSettings;
|
||||
import art.arcane.iris.core.link.Identifier;
|
||||
import art.arcane.iris.core.link.data.DataType;
|
||||
import art.arcane.iris.core.nms.INMS;
|
||||
import art.arcane.iris.core.nms.container.BlockProperty;
|
||||
import art.arcane.iris.core.service.ExternalDataSVC;
|
||||
import art.arcane.iris.util.common.data.registry.Materials;
|
||||
import art.arcane.iris.util.common.reflect.KeyedType;
|
||||
import it.unimi.dsi.fastutil.ints.IntSet;
|
||||
import org.bukkit.Material;
|
||||
import org.bukkit.NamespacedKey;
|
||||
import org.bukkit.block.data.BlockData;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.Locale;
|
||||
import java.util.Optional;
|
||||
|
||||
public class B {
|
||||
private static final BSupportImpl BASE = new BSupportImpl();
|
||||
public static PlatformBlockState getState(String bdxf) {
|
||||
return IrisPlatforms.get().registries().block(bdxf);
|
||||
}
|
||||
|
||||
private static final class BSupportImpl extends BSupport<BlockProperty> {
|
||||
@Override
|
||||
protected void warn(String message) {
|
||||
IrisLogging.warn(message);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void debug(String message) {
|
||||
IrisLogging.debug(message);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void reportError(Throwable throwable) {
|
||||
IrisLogging.reportError(throwable);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void error(String message) {
|
||||
IrisLogging.error(message);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected Material shortGrassMaterial() {
|
||||
return Materials.GRASS;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void appendExtraFoliageMaterials(IntSet foliage) {
|
||||
// Iris has no extra foliage materials beyond Bukkit Material.
|
||||
}
|
||||
|
||||
@Override
|
||||
protected boolean includeLitInUpdatable() {
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected BlockData resolveCompatBlock(String bdxf) {
|
||||
if (bdxf.contains(":")) {
|
||||
if (bdxf.startsWith("minecraft:")) {
|
||||
return IrisServices.get(IrisCompat.class).getBlock(bdxf);
|
||||
}
|
||||
return null;
|
||||
}
|
||||
return IrisServices.get(IrisCompat.class).getBlock(bdxf);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected BlockData resolveExternalBlockData(String ix) {
|
||||
if (ix.startsWith("minecraft:") || !ix.contains(":")) {
|
||||
return null;
|
||||
}
|
||||
|
||||
Identifier key = Identifier.fromString(ix);
|
||||
Optional<BlockData> bd = IrisServices.get(ExternalDataSVC.class).getBlockData(key);
|
||||
debug("Loading block data " + key);
|
||||
return bd.orElse(null);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected boolean shouldPreventLeafDecay() {
|
||||
return IrisSettings.get().getGenerator().isPreventLeafDecay();
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void appendExternalBlockTypes(KList<String> blockTypes) {
|
||||
for (Identifier id : IrisServices.get(ExternalDataSVC.class).getAllIdentifiers(DataType.BLOCK)) {
|
||||
blockTypes.add(id.toString());
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void appendExternalItemTypes(KList<String> itemTypes) {
|
||||
for (Identifier id : IrisServices.get(ExternalDataSVC.class).getAllIdentifiers(DataType.ITEM)) {
|
||||
itemTypes.add(id.toString());
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
protected KMap<List<String>, List<BlockProperty>> loadExternalBlockStates() {
|
||||
KMap<List<BlockProperty>, List<String>> flipped = new KMap<>();
|
||||
INMS.get().getBlockProperties().forEach((k, v) -> {
|
||||
NamespacedKey key = KeyedType.getKey(k);
|
||||
String serialized = key == null ? k.name().toLowerCase(Locale.ROOT) : key.toString();
|
||||
flipped.computeIfAbsent(v, $ -> new KList<>()).add(serialized);
|
||||
});
|
||||
|
||||
var emptyStates = flipped.computeIfAbsent(new KList<>(0), $ -> new KList<>());
|
||||
for (var pair : IrisServices.get(ExternalDataSVC.class).getAllBlockProperties()) {
|
||||
if (pair.getB().isEmpty()) {
|
||||
emptyStates.add(pair.getA().toString());
|
||||
} else {
|
||||
flipped.computeIfAbsent(pair.getB(), $ -> new KList<>()).add(pair.getA().toString());
|
||||
}
|
||||
}
|
||||
|
||||
KMap<List<String>, List<BlockProperty>> states = new KMap<>();
|
||||
flipped.forEach((k, v) -> {
|
||||
var old = states.put(v, k);
|
||||
if (old != null) {
|
||||
error("Duplicate block state: " + v + " (" + old + " and " + k + ")");
|
||||
}
|
||||
});
|
||||
|
||||
return states;
|
||||
public static PlatformBlockState getStateOrNull(String bdxf) {
|
||||
return IrisPlatforms.get().registries().blockOrNull(bdxf);
|
||||
}
|
||||
|
||||
public static PlatformBlockState getStateOrNull(String bdxf, boolean warn) {
|
||||
return IrisPlatforms.get().registries().blockOrNull(bdxf, warn);
|
||||
}
|
||||
|
||||
public static KList<PlatformBlockState> getStates(KList<String> find) {
|
||||
KList<PlatformBlockState> states = new KList<>(find.size());
|
||||
for (String key : find) {
|
||||
states.add(getState(key));
|
||||
}
|
||||
return states;
|
||||
}
|
||||
|
||||
public static BlockData toDeepSlateOre(BlockData block, BlockData ore) {
|
||||
return BASE.toDeepSlateOre(block, ore);
|
||||
public static PlatformBlockState getAirState() {
|
||||
return IrisPlatforms.get().registries().air();
|
||||
}
|
||||
|
||||
public static art.arcane.iris.spi.PlatformBlockState toDeepSlateOre(art.arcane.iris.spi.PlatformBlockState block, art.arcane.iris.spi.PlatformBlockState ore) {
|
||||
return art.arcane.iris.platform.bukkit.BukkitBlockState.of(BASE.toDeepSlateOre((BlockData) block.nativeHandle(), (BlockData) ore.nativeHandle()));
|
||||
public static PlatformBlockState toDeepSlateOre(PlatformBlockState block, PlatformBlockState ore) {
|
||||
return IrisPlatforms.get().registries().deepSlateOre(block, ore);
|
||||
}
|
||||
|
||||
public static boolean isOre(art.arcane.iris.spi.PlatformBlockState state) {
|
||||
return BASE.isOre(state == null ? null : (BlockData) state.nativeHandle());
|
||||
public static boolean isAir(PlatformBlockState state) {
|
||||
return state == null || state.isAir();
|
||||
}
|
||||
|
||||
public static boolean isDeepSlate(BlockData blockData) {
|
||||
return BASE.isDeepSlate(blockData);
|
||||
public static boolean isSolid(PlatformBlockState state) {
|
||||
return state != null && state.isSolid();
|
||||
}
|
||||
|
||||
public static boolean isOre(BlockData blockData) {
|
||||
return BASE.isOre(blockData);
|
||||
public static boolean isFluid(PlatformBlockState state) {
|
||||
return state != null && state.isFluid();
|
||||
}
|
||||
|
||||
public static boolean canPlaceOnto(Material mat, Material onto) {
|
||||
return BASE.canPlaceOnto(mat, onto);
|
||||
public static boolean isAirOrFluid(PlatformBlockState state) {
|
||||
return state == null || state.isAirOrFluid();
|
||||
}
|
||||
|
||||
public static boolean canPlaceOnto(art.arcane.iris.spi.PlatformBlockState mat, art.arcane.iris.spi.PlatformBlockState onto) {
|
||||
return BASE.canPlaceOnto(((BlockData) mat.nativeHandle()).getMaterial(), ((BlockData) onto.nativeHandle()).getMaterial());
|
||||
public static boolean isWater(PlatformBlockState state) {
|
||||
return state != null && state.isWater();
|
||||
}
|
||||
|
||||
public static boolean isFoliagePlantable(BlockData d) {
|
||||
return BASE.isFoliagePlantable(d);
|
||||
public static boolean isWaterLogged(PlatformBlockState state) {
|
||||
return state != null && state.isWaterLogged();
|
||||
}
|
||||
|
||||
public static boolean isFoliagePlantable(Material d) {
|
||||
return BASE.isFoliagePlantable(d);
|
||||
public static boolean isLit(PlatformBlockState state) {
|
||||
return state != null && state.isLit();
|
||||
}
|
||||
|
||||
public static boolean isWater(BlockData b) {
|
||||
return BASE.isWater(b);
|
||||
public static boolean isUpdatable(PlatformBlockState state) {
|
||||
return state != null && state.isUpdatable();
|
||||
}
|
||||
|
||||
public static boolean isWater(art.arcane.iris.spi.PlatformBlockState state) {
|
||||
return BASE.isWater(state == null ? null : (BlockData) state.nativeHandle());
|
||||
public static boolean isFoliage(PlatformBlockState state) {
|
||||
return state != null && state.isFoliage();
|
||||
}
|
||||
|
||||
public static BlockData getAir() {
|
||||
return BASE.getAir();
|
||||
public static boolean isFoliagePlantable(PlatformBlockState state) {
|
||||
return state != null && state.isFoliagePlantable();
|
||||
}
|
||||
|
||||
public static Material getMaterialOrNull(String bdx) {
|
||||
return BASE.getMaterialOrNull(bdx);
|
||||
public static boolean isDecorant(PlatformBlockState state) {
|
||||
return state != null && state.isDecorant();
|
||||
}
|
||||
|
||||
public static Material getMaterial(String bdx) {
|
||||
return BASE.getMaterial(bdx);
|
||||
public static boolean isStorage(PlatformBlockState state) {
|
||||
return state != null && state.isStorage();
|
||||
}
|
||||
|
||||
public static boolean isSolid(BlockData mat) {
|
||||
return BASE.isSolid(mat);
|
||||
public static boolean isStorageChest(PlatformBlockState state) {
|
||||
return state != null && state.isStorageChest();
|
||||
}
|
||||
|
||||
public static boolean isSolid(art.arcane.iris.spi.PlatformBlockState state) {
|
||||
return BASE.isSolid(state == null ? null : (BlockData) state.nativeHandle());
|
||||
public static boolean isOre(PlatformBlockState state) {
|
||||
return state != null && state.isOre();
|
||||
}
|
||||
|
||||
public static BlockData getOrNull(String bdxf) {
|
||||
return BASE.getOrNull(bdxf);
|
||||
public static boolean isDeepSlate(PlatformBlockState state) {
|
||||
return state != null && state.isDeepSlate();
|
||||
}
|
||||
|
||||
public static BlockData getOrNull(String bdxf, boolean warn) {
|
||||
return BASE.getOrNull(bdxf, warn);
|
||||
public static boolean isVineBlock(PlatformBlockState state) {
|
||||
return state != null && state.isVineBlock();
|
||||
}
|
||||
|
||||
public static BlockData getNoCompat(String bdxf) {
|
||||
return BASE.getNoCompat(bdxf);
|
||||
public static boolean canPlaceOnto(PlatformBlockState mat, PlatformBlockState onto) {
|
||||
return mat != null && onto != null && mat.canPlaceOnto(onto);
|
||||
}
|
||||
|
||||
public static BlockData get(String bdxf) {
|
||||
return BASE.get(bdxf);
|
||||
}
|
||||
|
||||
public static art.arcane.iris.spi.PlatformBlockState getState(String bdxf) {
|
||||
return art.arcane.iris.platform.bukkit.BukkitBlockState.of(BASE.get(bdxf));
|
||||
}
|
||||
|
||||
public static art.arcane.iris.spi.PlatformBlockState getStateOrNull(String bdxf) {
|
||||
BlockData data = BASE.getOrNull(bdxf);
|
||||
return data == null ? null : art.arcane.iris.platform.bukkit.BukkitBlockState.of(data);
|
||||
}
|
||||
|
||||
public static boolean isStorage(BlockData mat) {
|
||||
return BASE.isStorage(mat);
|
||||
}
|
||||
|
||||
public static boolean isStorageChest(BlockData mat) {
|
||||
return BASE.isStorageChest(mat);
|
||||
}
|
||||
|
||||
public static boolean isLit(BlockData mat) {
|
||||
return BASE.isLit(mat);
|
||||
}
|
||||
|
||||
public static boolean isUpdatable(BlockData mat) {
|
||||
return BASE.isUpdatable(mat);
|
||||
}
|
||||
|
||||
public static boolean isFoliage(Material d) {
|
||||
return BASE.isFoliage(d);
|
||||
}
|
||||
|
||||
public static boolean isFoliage(BlockData d) {
|
||||
return BASE.isFoliage(d);
|
||||
}
|
||||
|
||||
public static boolean isDecorant(BlockData m) {
|
||||
return BASE.isDecorant(m);
|
||||
}
|
||||
|
||||
public static boolean isDecorant(art.arcane.iris.spi.PlatformBlockState state) {
|
||||
return BASE.isDecorant(state == null ? null : (BlockData) state.nativeHandle());
|
||||
}
|
||||
|
||||
public static KList<BlockData> get(KList<String> find) {
|
||||
return BASE.get(find);
|
||||
}
|
||||
|
||||
public static boolean isFluid(BlockData d) {
|
||||
return BASE.isFluid(d);
|
||||
}
|
||||
|
||||
public static boolean isFluid(art.arcane.iris.spi.PlatformBlockState state) {
|
||||
return BASE.isFluid(state == null ? null : (BlockData) state.nativeHandle());
|
||||
}
|
||||
|
||||
public static boolean matches(art.arcane.iris.spi.PlatformBlockState filter, art.arcane.iris.spi.PlatformBlockState state) {
|
||||
return ((BlockData) filter.nativeHandle()).matches((BlockData) state.nativeHandle());
|
||||
}
|
||||
|
||||
public static boolean isAirOrFluid(BlockData d) {
|
||||
return BASE.isAirOrFluid(d);
|
||||
}
|
||||
|
||||
public static boolean isAirOrFluid(art.arcane.iris.spi.PlatformBlockState state) {
|
||||
return BASE.isAirOrFluid((BlockData) state.nativeHandle());
|
||||
}
|
||||
|
||||
public static boolean isAir(BlockData d) {
|
||||
return BASE.isAir(d);
|
||||
}
|
||||
|
||||
public synchronized static String[] getBlockTypes() {
|
||||
return BASE.getBlockTypes();
|
||||
}
|
||||
|
||||
public synchronized static KMap<List<String>, List<BlockProperty>> getBlockStates() {
|
||||
return BASE.getBlockStates();
|
||||
}
|
||||
|
||||
public static String[] getItemTypes() {
|
||||
return BASE.getItemTypes();
|
||||
}
|
||||
|
||||
public static boolean isWaterLogged(BlockData b) {
|
||||
return BASE.isWaterLogged(b);
|
||||
}
|
||||
|
||||
public static void registerCustomBlockData(String namespace, String key, BlockData blockData) {
|
||||
BASE.registerCustomBlockData(namespace, key, blockData);
|
||||
}
|
||||
|
||||
public static boolean isVineBlock(BlockData data) {
|
||||
return BASE.isVineBlock(data);
|
||||
public static boolean matches(PlatformBlockState filter, PlatformBlockState state) {
|
||||
return filter != null && state != null && filter.matches(state);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -18,6 +18,8 @@
|
||||
|
||||
package art.arcane.iris.util.nbt.common.mca;
|
||||
|
||||
import art.arcane.iris.platform.bukkit.BukkitBlockResolution;
|
||||
|
||||
import art.arcane.iris.spi.IrisLogging;
|
||||
import art.arcane.iris.core.nms.INMS;
|
||||
import art.arcane.iris.engine.data.cache.Cache;
|
||||
@@ -25,7 +27,6 @@ import art.arcane.volmlib.util.collection.KMap;
|
||||
import art.arcane.volmlib.util.nbt.mca.MCAWorldStoreSupport;
|
||||
import art.arcane.volmlib.util.nbt.mca.MCAWorldRuntimeSupport;
|
||||
import art.arcane.volmlib.util.nbt.mca.NBTWorldSupport;
|
||||
import art.arcane.iris.util.common.data.B;
|
||||
import art.arcane.iris.util.common.reflect.KeyedType;
|
||||
import art.arcane.volmlib.util.math.M;
|
||||
import art.arcane.volmlib.util.nbt.tag.CompoundTag;
|
||||
@@ -40,10 +41,10 @@ import java.util.Map;
|
||||
import java.util.Locale;
|
||||
|
||||
public class NBTWorld {
|
||||
private static final BlockData AIR = B.get("AIR");
|
||||
private static final BlockData AIR = BukkitBlockResolution.get("AIR");
|
||||
private static final NBTWorldSupport.BlockStateCodec<BlockData> BLOCK_STATE_CODEC = NBTWorldSupport.blockStateCodec(
|
||||
blockStateString -> B.getOrNull(blockStateString, true),
|
||||
B::getAir,
|
||||
blockStateString -> BukkitBlockResolution.getOrNull(blockStateString, true),
|
||||
BukkitBlockResolution::getAir,
|
||||
blockData -> blockData.getAsString(true),
|
||||
blockData -> {
|
||||
NamespacedKey key = KeyedType.getKey(blockData.getMaterial());
|
||||
|
||||
@@ -18,9 +18,10 @@
|
||||
|
||||
package art.arcane.iris.util.project.hunk.view;
|
||||
|
||||
import art.arcane.iris.platform.bukkit.BukkitBlockResolution;
|
||||
|
||||
import art.arcane.iris.platform.bukkit.BukkitBlockState;
|
||||
import art.arcane.iris.spi.PlatformBlockState;
|
||||
import art.arcane.iris.util.common.data.B;
|
||||
import art.arcane.iris.util.common.data.IrisCustomData;
|
||||
import art.arcane.iris.util.project.hunk.Hunk;
|
||||
import org.bukkit.block.data.BlockData;
|
||||
@@ -28,7 +29,7 @@ import org.bukkit.generator.ChunkGenerator.ChunkData;
|
||||
|
||||
@SuppressWarnings("ClassCanBeRecord")
|
||||
public class ChunkDataHunkView implements Hunk<PlatformBlockState> {
|
||||
private static final BlockData AIR = B.getAir();
|
||||
private static final BlockData AIR = BukkitBlockResolution.getAir();
|
||||
|
||||
private final art.arcane.volmlib.util.hunk.view.ChunkDataHunkView view;
|
||||
|
||||
|
||||
@@ -30,6 +30,40 @@ public interface PlatformBlockState {
|
||||
|
||||
boolean isSolid();
|
||||
|
||||
boolean isFluid();
|
||||
|
||||
boolean isWater();
|
||||
|
||||
boolean isWaterLogged();
|
||||
|
||||
boolean isLit();
|
||||
|
||||
boolean isUpdatable();
|
||||
|
||||
boolean isFoliage();
|
||||
|
||||
boolean isFoliagePlantable();
|
||||
|
||||
boolean isDecorant();
|
||||
|
||||
boolean isStorage();
|
||||
|
||||
boolean isStorageChest();
|
||||
|
||||
boolean isOre();
|
||||
|
||||
boolean isDeepSlate();
|
||||
|
||||
boolean isVineBlock();
|
||||
|
||||
boolean canPlaceOnto(PlatformBlockState onto);
|
||||
|
||||
boolean matches(PlatformBlockState state);
|
||||
|
||||
default boolean isAirOrFluid() {
|
||||
return isAir() || isFluid();
|
||||
}
|
||||
|
||||
boolean hasTileEntity();
|
||||
|
||||
PlatformBlockState withProperty(String name, String value);
|
||||
|
||||
@@ -26,6 +26,14 @@ import java.util.List;
|
||||
public interface PlatformRegistries {
|
||||
PlatformBlockState block(String key);
|
||||
|
||||
PlatformBlockState blockOrNull(String key);
|
||||
|
||||
PlatformBlockState blockOrNull(String key, boolean warn);
|
||||
|
||||
PlatformBlockState air();
|
||||
|
||||
PlatformBlockState deepSlateOre(PlatformBlockState block, PlatformBlockState ore);
|
||||
|
||||
PlatformBiome biome(String key);
|
||||
|
||||
PlatformItem item(String key);
|
||||
|
||||
Reference in New Issue
Block a user