Skip to content

Commit

Permalink
Convert Create integrations to use generic peripherals
Browse files Browse the repository at this point in the history
  • Loading branch information
SquidDev committed Apr 5, 2024
1 parent de21f6c commit 077a820
Show file tree
Hide file tree
Showing 5 changed files with 27 additions and 54 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand All @@ -18,20 +17,15 @@
import java.util.Map;
import java.util.Optional;

public class BasinIntegration extends BlockEntityIntegrationPeripheral<BasinBlockEntity> {

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<Object> getInputFluids() {
public final List<Object> getInputFluids(BasinBlockEntity blockEntity) {
IFluidHandler handler = blockEntity.getTanks().getFirst().getCapability().orElse(null);
if (handler == null) {
return null;
Expand All @@ -49,7 +43,7 @@ public final List<Object> getInputFluids() {
}

@LuaFunction(mainThread = true)
public final List<Object> getOutputFluids() {
public final List<Object> getOutputFluids(BasinBlockEntity blockEntity) {
IFluidHandler handler = blockEntity.getTanks().getSecond().getCapability().orElse(null);
if (handler == null) {
return null;
Expand All @@ -67,12 +61,12 @@ public final List<Object> getOutputFluids() {
}

@LuaFunction(mainThread = true)
public final Map<String, Object> getFilter() {
public final Map<String, Object> getFilter(BasinBlockEntity blockEntity) {
return LuaConverter.stackToObject(blockEntity.getFilter().getFilter());
}

@LuaFunction(mainThread = true)
public final List<Object> getInventory() {
public final List<Object> getInventory(BasinBlockEntity blockEntity) {
Optional<IItemHandler> handlerOptional = blockEntity.getCapability(ForgeCapabilities.ITEM_HANDLER).resolve();
if (handlerOptional.isEmpty()) return null;
IItemHandler handler = handlerOptional.get();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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<BlazeBurnerBlockEntity> {

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<String, Object> getInfo() {
public final Map<String, Object> getInfo(BlazeBurnerBlockEntity blockEntity) {
Map<String, Object> data = new HashMap<>();
data.put("fuelType", blockEntity.getActiveFuel().toString().toLowerCase());
data.put("heatLevel", blockEntity.getHeatLevelFromBlock().getSerializedName());
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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<FluidTankBlockEntity> {

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<String, Object> getInfo() {
public final Map<String, Object> getInfo(FluidTankBlockEntity blockEntity) {
Map<String, Object> data = new HashMap<>();
data.put("capacity", blockEntity.getControllerBE().getTankInventory().getCapacity());
data.put("amount", blockEntity.getControllerBE().getTankInventory().getFluidAmount());
Expand Down
Original file line number Diff line number Diff line change
@@ -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());
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -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<MechanicalMixerBlockEntity> {

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;
Expand Down

0 comments on commit 077a820

Please sign in to comment.