From eb45339c818b642e6a39ffa18e4f37a6f97479a7 Mon Sep 17 00:00:00 2001 From: CrazyDev22 Date: Thu, 7 Mar 2024 17:23:32 +0100 Subject: [PATCH] add oraxen furniture support --- .../iris/core/link/OraxenDataProvider.java | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/core/src/main/java/com/volmit/iris/core/link/OraxenDataProvider.java b/core/src/main/java/com/volmit/iris/core/link/OraxenDataProvider.java index 068c8c18e..feaacb769 100644 --- a/core/src/main/java/com/volmit/iris/core/link/OraxenDataProvider.java +++ b/core/src/main/java/com/volmit/iris/core/link/OraxenDataProvider.java @@ -19,17 +19,25 @@ package com.volmit.iris.core.link; import com.volmit.iris.Iris; +import com.volmit.iris.engine.framework.Engine; import com.volmit.iris.util.collection.KList; +import com.volmit.iris.util.data.B; +import com.volmit.iris.util.data.IrisBlockData; import com.volmit.iris.util.reflect.WrappedField; import io.th0rgal.oraxen.api.OraxenItems; import io.th0rgal.oraxen.items.ItemBuilder; +import io.th0rgal.oraxen.mechanics.Mechanic; import io.th0rgal.oraxen.mechanics.MechanicFactory; import io.th0rgal.oraxen.mechanics.MechanicsManager; import io.th0rgal.oraxen.mechanics.provided.gameplay.block.BlockMechanic; import io.th0rgal.oraxen.mechanics.provided.gameplay.block.BlockMechanicFactory; +import io.th0rgal.oraxen.mechanics.provided.gameplay.furniture.FurnitureFactory; +import io.th0rgal.oraxen.mechanics.provided.gameplay.furniture.FurnitureMechanic; import io.th0rgal.oraxen.mechanics.provided.gameplay.noteblock.NoteBlockMechanicFactory; import io.th0rgal.oraxen.mechanics.provided.gameplay.stringblock.StringBlockMechanicFactory; import org.bukkit.Bukkit; +import org.bukkit.Chunk; +import org.bukkit.Location; import org.bukkit.Material; import org.bukkit.block.data.BlockData; import org.bukkit.block.data.MultipleFacing; @@ -69,6 +77,8 @@ public class OraxenDataProvider extends ExternalDataProvider { return newBlockData; } else if (factory instanceof StringBlockMechanicFactory f) { return f.createTripwireData(blockId.key()); + } else if (factory instanceof FurnitureFactory) { + return new IrisBlockData(B.getAir(), blockId); } else throw new MissingResourceException("Failed to find BlockData!", blockId.namespace(), blockId.key()); } @@ -79,6 +89,14 @@ public class OraxenDataProvider extends ExternalDataProvider { return opt.orElseThrow(() -> new MissingResourceException("Failed to find ItemData!", itemId.namespace(), itemId.key())).build(); } + @Override + public void processUpdate(Engine engine, Location location, Identifier blockId) { + Mechanic mechanic = getFactory(blockId).getMechanic(blockId.key()); + if (mechanic instanceof FurnitureMechanic f) { + f.place(location); + } + } + @Override public Identifier[] getBlockTypes() { KList names = new KList<>();