Skip to content

Commit

Permalink
add oc integration for tectech multis
Browse files Browse the repository at this point in the history
  • Loading branch information
MeiTianyou committed Dec 24, 2024
1 parent 5096fc1 commit f67449e
Show file tree
Hide file tree
Showing 2 changed files with 57 additions and 0 deletions.
Original file line number Diff line number Diff line change
@@ -0,0 +1,55 @@
package pl.asie.computronics.integration.gregtech.gregtech5;

import net.minecraft.tileentity.TileEntity;
import net.minecraft.world.World;
import net.minecraftforge.common.util.ForgeDirection;

import gregtech.api.metatileentity.BaseMetaTileEntity;
import li.cil.oc.api.machine.Arguments;
import li.cil.oc.api.machine.Callback;
import li.cil.oc.api.machine.Context;
import li.cil.oc.api.network.ManagedEnvironment;
import li.cil.oc.api.prefab.DriverSidedTileEntity;
import pl.asie.computronics.integration.ManagedEnvironmentOCTile;
import tectech.thing.metaTileEntity.multi.base.Parameters;
import tectech.thing.metaTileEntity.multi.base.TTMultiblockBase;

public class DriverTTMultiblockBase extends DriverSidedTileEntity {

public static class ManagedEnvironmentTTMultiblockBase extends ManagedEnvironmentOCTile<BaseMetaTileEntity> {

public ManagedEnvironmentTTMultiblockBase(BaseMetaTileEntity tile, String name) {
super(tile, name);
}

@Callback(doc = "function(hatch:int, id: int, val:double); Sets a parameter", direct = true)
public Object[] setParameters(Context c, Arguments a) {
Parameters p = ((TTMultiblockBase) tile.getMetaTileEntity()).parametrization;
p.trySetParameters(a.checkInteger(0), a.checkInteger(1), a.checkDouble(2));
return null;
}

@Callback(doc = "function(hatch:int, id: int);double Returns the value of a parameter", direct = true)
public Object[] getParameters(Context c, Arguments a) {
return new Object[] { ((TTMultiblockBase) tile.getMetaTileEntity()).parametrization
.getGroup(a.checkInteger(0)).parameterIn[a.checkInteger((1))].get() };
}
}

@Override
public Class<?> getTileEntityClass() {
return BaseMetaTileEntity.class;
}

@Override
public boolean worksWith(World world, int x, int y, int z, ForgeDirection side) {
TileEntity tileEntity = world.getTileEntity(x, y, z);
return (tileEntity != null) && tileEntity instanceof BaseMetaTileEntity
&& ((BaseMetaTileEntity) tileEntity).getMetaTileEntity() instanceof TTMultiblockBase;
}

@Override
public ManagedEnvironment createEnvironment(World world, int x, int y, int z, ForgeDirection side) {
return new ManagedEnvironmentTTMultiblockBase((BaseMetaTileEntity) world.getTileEntity(x, y, z), "tt_machine");
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -61,6 +61,7 @@
import pl.asie.computronics.integration.gregtech.gregtech5.DriverDeviceInformation;
import pl.asie.computronics.integration.gregtech.gregtech5.DriverDigitalChest;
import pl.asie.computronics.integration.gregtech.gregtech5.DriverMachine;
import pl.asie.computronics.integration.gregtech.gregtech5.DriverTTMultiblockBase;
import pl.asie.computronics.integration.mekanism.DriverStrictEnergyStorage;
import pl.asie.computronics.integration.railcraft.driver.DriverElectricGrid;
import pl.asie.computronics.integration.railcraft.driver.DriverRoutingDetector;
Expand Down Expand Up @@ -274,6 +275,7 @@ public void init() {
Driver.add(new DriverDeviceInformation());
Driver.add(new DriverMachine());
Driver.add(new DriverBatteryBuffer());
Driver.add(new DriverTTMultiblockBase());
}
if (compat.isCompatEnabled(Compat.GregTech_DigitalChests)) {
Driver.add(new DriverDigitalChest());
Expand Down

0 comments on commit f67449e

Please sign in to comment.