From 077a820ff01c3e5a23879a384593fbae6742b9c0 Mon Sep 17 00:00:00 2001 From: Jonathan Coates Date: Fri, 5 Apr 2024 10:18:55 +0100 Subject: [PATCH] Convert Create integrations to use generic peripherals --- .../addons/create/BasinIntegration.java | 24 +++++++------------ .../addons/create/BlazeBurnerIntegration.java | 14 ++++------- .../addons/create/FluidTankIntegration.java | 14 ++++------- .../common/addons/create/Integration.java | 14 ++++------- .../create/MechanicalMixerIntegration.java | 15 ++++-------- 5 files changed, 27 insertions(+), 54 deletions(-) diff --git a/src/main/java/de/srendi/advancedperipherals/common/addons/create/BasinIntegration.java b/src/main/java/de/srendi/advancedperipherals/common/addons/create/BasinIntegration.java index fd94787a9..411a7c247 100644 --- a/src/main/java/de/srendi/advancedperipherals/common/addons/create/BasinIntegration.java +++ b/src/main/java/de/srendi/advancedperipherals/common/addons/create/BasinIntegration.java @@ -3,13 +3,12 @@ import com.simibubi.create.content.processing.basin.BasinBlockEntity; import dan200.computercraft.api.lua.LuaFunction; import de.srendi.advancedperipherals.common.util.LuaConverter; -import de.srendi.advancedperipherals.lib.peripherals.BlockEntityIntegrationPeripheral; -import net.minecraft.world.level.block.entity.BlockEntity; +import de.srendi.advancedperipherals.lib.peripherals.APGenericPeripheral; import net.minecraftforge.common.capabilities.ForgeCapabilities; -import net.minecraftforge.items.IItemHandler; -import net.minecraftforge.registries.ForgeRegistries; import net.minecraftforge.fluids.FluidStack; import net.minecraftforge.fluids.capability.IFluidHandler; +import net.minecraftforge.items.IItemHandler; +import net.minecraftforge.registries.ForgeRegistries; import org.jetbrains.annotations.NotNull; import java.util.ArrayList; @@ -18,20 +17,15 @@ import java.util.Map; import java.util.Optional; -public class BasinIntegration extends BlockEntityIntegrationPeripheral { - - public BasinIntegration(BlockEntity entity) { - super(entity); - } - +public class BasinIntegration implements APGenericPeripheral { @NotNull @Override - public String getType() { + public String getPeripheralType() { return "basin"; } @LuaFunction(mainThread = true) - public final List getInputFluids() { + public final List getInputFluids(BasinBlockEntity blockEntity) { IFluidHandler handler = blockEntity.getTanks().getFirst().getCapability().orElse(null); if (handler == null) { return null; @@ -49,7 +43,7 @@ public final List getInputFluids() { } @LuaFunction(mainThread = true) - public final List getOutputFluids() { + public final List getOutputFluids(BasinBlockEntity blockEntity) { IFluidHandler handler = blockEntity.getTanks().getSecond().getCapability().orElse(null); if (handler == null) { return null; @@ -67,12 +61,12 @@ public final List getOutputFluids() { } @LuaFunction(mainThread = true) - public final Map getFilter() { + public final Map getFilter(BasinBlockEntity blockEntity) { return LuaConverter.stackToObject(blockEntity.getFilter().getFilter()); } @LuaFunction(mainThread = true) - public final List getInventory() { + public final List getInventory(BasinBlockEntity blockEntity) { Optional handlerOptional = blockEntity.getCapability(ForgeCapabilities.ITEM_HANDLER).resolve(); if (handlerOptional.isEmpty()) return null; IItemHandler handler = handlerOptional.get(); diff --git a/src/main/java/de/srendi/advancedperipherals/common/addons/create/BlazeBurnerIntegration.java b/src/main/java/de/srendi/advancedperipherals/common/addons/create/BlazeBurnerIntegration.java index 88bde5dca..e86d6adbf 100644 --- a/src/main/java/de/srendi/advancedperipherals/common/addons/create/BlazeBurnerIntegration.java +++ b/src/main/java/de/srendi/advancedperipherals/common/addons/create/BlazeBurnerIntegration.java @@ -2,27 +2,21 @@ import com.simibubi.create.content.processing.burner.BlazeBurnerBlockEntity; import dan200.computercraft.api.lua.LuaFunction; -import de.srendi.advancedperipherals.lib.peripherals.BlockEntityIntegrationPeripheral; -import net.minecraft.world.level.block.entity.BlockEntity; +import de.srendi.advancedperipherals.lib.peripherals.APGenericPeripheral; import org.jetbrains.annotations.NotNull; import java.util.HashMap; import java.util.Map; -public class BlazeBurnerIntegration extends BlockEntityIntegrationPeripheral { - - public BlazeBurnerIntegration(BlockEntity entity) { - super(entity); - } - +public class BlazeBurnerIntegration implements APGenericPeripheral { @NotNull @Override - public String getType() { + public String getPeripheralType() { return "blazeBurner"; } @LuaFunction(mainThread = true) - public final Map getInfo() { + public final Map getInfo(BlazeBurnerBlockEntity blockEntity) { Map data = new HashMap<>(); data.put("fuelType", blockEntity.getActiveFuel().toString().toLowerCase()); data.put("heatLevel", blockEntity.getHeatLevelFromBlock().getSerializedName()); diff --git a/src/main/java/de/srendi/advancedperipherals/common/addons/create/FluidTankIntegration.java b/src/main/java/de/srendi/advancedperipherals/common/addons/create/FluidTankIntegration.java index e8d4b0779..121283e5b 100644 --- a/src/main/java/de/srendi/advancedperipherals/common/addons/create/FluidTankIntegration.java +++ b/src/main/java/de/srendi/advancedperipherals/common/addons/create/FluidTankIntegration.java @@ -2,28 +2,22 @@ import com.simibubi.create.content.fluids.tank.FluidTankBlockEntity; import dan200.computercraft.api.lua.LuaFunction; -import de.srendi.advancedperipherals.lib.peripherals.BlockEntityIntegrationPeripheral; -import net.minecraft.world.level.block.entity.BlockEntity; +import de.srendi.advancedperipherals.lib.peripherals.APGenericPeripheral; import net.minecraftforge.registries.ForgeRegistries; import org.jetbrains.annotations.NotNull; import java.util.HashMap; import java.util.Map; -public class FluidTankIntegration extends BlockEntityIntegrationPeripheral { - - public FluidTankIntegration(BlockEntity entity) { - super(entity); - } - +public class FluidTankIntegration implements APGenericPeripheral { @NotNull @Override - public String getType() { + public String getPeripheralType() { return "fluidTank"; } @LuaFunction(mainThread = true) - public final Map getInfo() { + public final Map getInfo(FluidTankBlockEntity blockEntity) { Map data = new HashMap<>(); data.put("capacity", blockEntity.getControllerBE().getTankInventory().getCapacity()); data.put("amount", blockEntity.getControllerBE().getTankInventory().getFluidAmount()); diff --git a/src/main/java/de/srendi/advancedperipherals/common/addons/create/Integration.java b/src/main/java/de/srendi/advancedperipherals/common/addons/create/Integration.java index 2f5228058..ce74a5184 100644 --- a/src/main/java/de/srendi/advancedperipherals/common/addons/create/Integration.java +++ b/src/main/java/de/srendi/advancedperipherals/common/addons/create/Integration.java @@ -1,20 +1,16 @@ package de.srendi.advancedperipherals.common.addons.create; -import com.simibubi.create.content.fluids.tank.FluidTankBlockEntity; -import com.simibubi.create.content.kinetics.mixer.MechanicalMixerBlockEntity; -import com.simibubi.create.content.processing.basin.BasinBlockEntity; -import com.simibubi.create.content.processing.burner.BlazeBurnerBlockEntity; -import de.srendi.advancedperipherals.common.addons.computercraft.integrations.IntegrationPeripheralProvider; +import dan200.computercraft.api.ComputerCraftAPI; public class Integration implements Runnable { @Override public void run() { - IntegrationPeripheralProvider.registerBlockEntityIntegration(BlazeBurnerIntegration::new, BlazeBurnerBlockEntity.class); - IntegrationPeripheralProvider.registerBlockEntityIntegration(FluidTankIntegration::new, FluidTankBlockEntity.class); + ComputerCraftAPI.registerGenericSource(new BlazeBurnerIntegration()); + ComputerCraftAPI.registerGenericSource(new FluidTankIntegration()); // Disable until verified that it does not clash with the existing create CC integration //IntegrationPeripheralProvider.registerBlockEntityIntegration(ScrollValueBehaviourIntegration::new, KineticTileEntity.class, tile -> tile.getBehaviour(ScrollValueBehaviour.TYPE) != null, 10); - IntegrationPeripheralProvider.registerBlockEntityIntegration(BasinIntegration::new, BasinBlockEntity.class); - IntegrationPeripheralProvider.registerBlockEntityIntegration(MechanicalMixerIntegration::new, MechanicalMixerBlockEntity.class); + ComputerCraftAPI.registerGenericSource(new BasinIntegration()); + ComputerCraftAPI.registerGenericSource(new MechanicalMixerIntegration()); } } diff --git a/src/main/java/de/srendi/advancedperipherals/common/addons/create/MechanicalMixerIntegration.java b/src/main/java/de/srendi/advancedperipherals/common/addons/create/MechanicalMixerIntegration.java index 0c87f7763..cfe58e035 100644 --- a/src/main/java/de/srendi/advancedperipherals/common/addons/create/MechanicalMixerIntegration.java +++ b/src/main/java/de/srendi/advancedperipherals/common/addons/create/MechanicalMixerIntegration.java @@ -3,29 +3,24 @@ import com.simibubi.create.content.kinetics.mixer.MechanicalMixerBlockEntity; import com.simibubi.create.content.processing.basin.BasinBlockEntity; import dan200.computercraft.api.lua.LuaFunction; -import de.srendi.advancedperipherals.lib.peripherals.BlockEntityIntegrationPeripheral; +import de.srendi.advancedperipherals.lib.peripherals.APGenericPeripheral; import net.minecraft.world.level.block.entity.BlockEntity; import org.jetbrains.annotations.NotNull; -public class MechanicalMixerIntegration extends BlockEntityIntegrationPeripheral { - - public MechanicalMixerIntegration(BlockEntity entity) { - super(entity); - } - +public class MechanicalMixerIntegration implements APGenericPeripheral { @NotNull @Override - public String getType() { + public String getPeripheralType() { return "mechanicalMixer"; } @LuaFunction(mainThread = true) - public final boolean isRunning() { + public final boolean isRunning(MechanicalMixerBlockEntity blockEntity) { return blockEntity.running; } @LuaFunction(mainThread = true) - public final boolean hasBasin() { + public final boolean hasBasin(MechanicalMixerBlockEntity blockEntity) { if (blockEntity.getLevel() == null) return false; BlockEntity basinTE = blockEntity.getLevel().getBlockEntity(blockEntity.getBlockPos().below(2)); return basinTE instanceof BasinBlockEntity;