Skip to content

Commit 6516cc4

Browse files
committedMay 29, 2016
Refactoring to OC drivers.
1 parent 32308df commit 6516cc4

17 files changed

+156
-148
lines changed
 
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,38 @@
1+
package pl.asie.computronics.integration;
2+
3+
import li.cil.oc.api.driver.SidedBlock;
4+
import li.cil.oc.api.network.ManagedEnvironment;
5+
import net.minecraft.tileentity.TileEntity;
6+
import net.minecraft.util.EnumFacing;
7+
import net.minecraft.util.math.BlockPos;
8+
import net.minecraft.world.World;
9+
10+
import javax.annotation.Nullable;
11+
12+
/**
13+
* @author Vexatos
14+
*/
15+
public abstract class DriverSpecificTileEntity<T> implements SidedBlock {
16+
17+
protected final Class<T> tileClass;
18+
19+
public DriverSpecificTileEntity(Class<T> tileClass) {
20+
this.tileClass = tileClass;
21+
}
22+
23+
@Override
24+
public boolean worksWith(World world, BlockPos pos, EnumFacing side) {
25+
final TileEntity tile = world.getTileEntity(pos);
26+
return tile != null && tileClass.isInstance(tile);
27+
}
28+
29+
@Nullable
30+
@Override
31+
public final ManagedEnvironment createEnvironment(World world, BlockPos pos, EnumFacing side) {
32+
final TileEntity tile = world.getTileEntity(pos);
33+
return tileClass.isInstance(tile) ? createEnvironment(world, pos, side, tileClass.cast(tile)) : null;
34+
}
35+
36+
@Nullable
37+
protected abstract NamedManagedEnvironment<T> createEnvironment(World world, BlockPos pos, EnumFacing side, T tile);
38+
}

Diff for: ‎src/main/java/pl/asie/computronics/integration/enderio/DriverAbstractMachine.java

+7-9
Original file line numberDiff line numberDiff line change
@@ -7,13 +7,12 @@
77
import li.cil.oc.api.machine.Arguments;
88
import li.cil.oc.api.machine.Callback;
99
import li.cil.oc.api.machine.Context;
10-
import li.cil.oc.api.network.ManagedEnvironment;
11-
import li.cil.oc.api.prefab.DriverSidedTileEntity;
1210
import net.minecraft.tileentity.TileEntity;
1311
import net.minecraft.util.EnumFacing;
1412
import net.minecraft.util.math.BlockPos;
1513
import net.minecraft.world.World;
1614
import pl.asie.computronics.integration.CCMultiPeripheral;
15+
import pl.asie.computronics.integration.DriverSpecificTileEntity;
1716
import pl.asie.computronics.integration.NamedManagedEnvironment;
1817
import pl.asie.computronics.reference.Names;
1918

@@ -22,7 +21,7 @@
2221
*/
2322
public class DriverAbstractMachine {
2423

25-
public static class OCDriver extends DriverSidedTileEntity {
24+
public static class OCDriver extends DriverSpecificTileEntity<AbstractMachineEntity> {
2625

2726
public static class InternalManagedEnvironment extends NamedManagedEnvironment<AbstractMachineEntity> {
2827

@@ -41,14 +40,13 @@ public Object[] isActive(Context c, Arguments a) {
4140
}
4241
}
4342

44-
@Override
45-
public Class<?> getTileEntityClass() {
46-
return AbstractMachineEntity.class;
43+
public OCDriver() {
44+
super(AbstractMachineEntity.class);
4745
}
4846

4947
@Override
50-
public ManagedEnvironment createEnvironment(World world, BlockPos pos, EnumFacing side) {
51-
return new InternalManagedEnvironment(((AbstractMachineEntity) world.getTileEntity(pos)));
48+
public InternalManagedEnvironment createEnvironment(World world, BlockPos pos, EnumFacing side, AbstractMachineEntity tile) {
49+
return new InternalManagedEnvironment(tile);
5250
}
5351
}
5452

@@ -87,7 +85,7 @@ public Object[] callMethod(IComputerAccess computer, ILuaContext context, int me
8785
return new Object[] { tile.isActive() };
8886
}
8987
}
90-
return null;
88+
return new Object[] {};
9189
}
9290
}
9391
}

Diff for: ‎src/main/java/pl/asie/computronics/integration/enderio/DriverAbstractPoweredMachine.java

+7-9
Original file line numberDiff line numberDiff line change
@@ -7,13 +7,12 @@
77
import li.cil.oc.api.machine.Arguments;
88
import li.cil.oc.api.machine.Callback;
99
import li.cil.oc.api.machine.Context;
10-
import li.cil.oc.api.network.ManagedEnvironment;
11-
import li.cil.oc.api.prefab.DriverSidedTileEntity;
1210
import net.minecraft.tileentity.TileEntity;
1311
import net.minecraft.util.EnumFacing;
1412
import net.minecraft.util.math.BlockPos;
1513
import net.minecraft.world.World;
1614
import pl.asie.computronics.integration.CCMultiPeripheral;
15+
import pl.asie.computronics.integration.DriverSpecificTileEntity;
1716
import pl.asie.computronics.integration.NamedManagedEnvironment;
1817
import pl.asie.computronics.reference.Names;
1918

@@ -22,7 +21,7 @@
2221
*/
2322
public class DriverAbstractPoweredMachine {
2423

25-
public static class OCDriver extends DriverSidedTileEntity {
24+
public static class OCDriver extends DriverSpecificTileEntity<AbstractPoweredMachineEntity> {
2625

2726
public static class InternalManagedEnvironment extends NamedManagedEnvironment<AbstractPoweredMachineEntity> {
2827

@@ -41,14 +40,13 @@ public Object[] getPowerPerTick(Context c, Arguments a) {
4140
}
4241
}
4342

44-
@Override
45-
public Class<?> getTileEntityClass() {
46-
return AbstractPoweredMachineEntity.class;
43+
public OCDriver(){
44+
super(AbstractPoweredMachineEntity.class);
4745
}
4846

4947
@Override
50-
public ManagedEnvironment createEnvironment(World world, BlockPos pos, EnumFacing side) {
51-
return new InternalManagedEnvironment(((AbstractPoweredMachineEntity) world.getTileEntity(pos)));
48+
public InternalManagedEnvironment createEnvironment(World world, BlockPos pos, EnumFacing side, AbstractPoweredMachineEntity tile) {
49+
return new InternalManagedEnvironment(tile);
5250
}
5351
}
5452

@@ -87,7 +85,7 @@ public Object[] callMethod(IComputerAccess computer, ILuaContext context, int me
8785
return new Object[] { tile.getPowerUsePerTick() };
8886
}
8987
}
90-
return null;
88+
return new Object[] {};
9189
}
9290
}
9391

Diff for: ‎src/main/java/pl/asie/computronics/integration/enderio/DriverCapacitorBank.java

+7-9
Original file line numberDiff line numberDiff line change
@@ -8,13 +8,12 @@
88
import li.cil.oc.api.machine.Arguments;
99
import li.cil.oc.api.machine.Callback;
1010
import li.cil.oc.api.machine.Context;
11-
import li.cil.oc.api.network.ManagedEnvironment;
12-
import li.cil.oc.api.prefab.DriverSidedTileEntity;
1311
import net.minecraft.tileentity.TileEntity;
1412
import net.minecraft.util.EnumFacing;
1513
import net.minecraft.util.math.BlockPos;
1614
import net.minecraft.world.World;
1715
import pl.asie.computronics.integration.CCMultiPeripheral;
16+
import pl.asie.computronics.integration.DriverSpecificTileEntity;
1817
import pl.asie.computronics.integration.NamedManagedEnvironment;
1918
import pl.asie.computronics.reference.Names;
2019

@@ -112,7 +111,7 @@ private static Object[] modes() {
112111
return new Object[] { modes };
113112
}
114113

115-
public static class OCDriver extends DriverSidedTileEntity {
114+
public static class OCDriver extends DriverSpecificTileEntity<TileCapBank> {
116115

117116
public static class InternalManagedEnvironment extends NamedManagedEnvironment<TileCapBank> {
118117

@@ -176,14 +175,13 @@ public Object[] redstone_modes(Context c, Arguments a) {
176175
}
177176
}
178177

179-
@Override
180-
public Class<?> getTileEntityClass() {
181-
return TileCapBank.class;
178+
public OCDriver(){
179+
super(TileCapBank.class);
182180
}
183181

184182
@Override
185-
public ManagedEnvironment createEnvironment(World world, BlockPos pos, EnumFacing side) {
186-
return new InternalManagedEnvironment(((TileCapBank) world.getTileEntity(pos)));
183+
public InternalManagedEnvironment createEnvironment(World world, BlockPos pos, EnumFacing side, TileCapBank tile) {
184+
return new InternalManagedEnvironment(tile);
187185
}
188186
}
189187

@@ -270,7 +268,7 @@ public Object[] callMethod(IComputerAccess computer, ILuaContext context, int me
270268
return DriverCapacitorBank.modes();
271269
}
272270
}
273-
return null;
271+
return new Object[] {};
274272
}
275273
}
276274
}

Diff for: ‎src/main/java/pl/asie/computronics/integration/enderio/DriverHasExperience.java

+7-9
Original file line numberDiff line numberDiff line change
@@ -7,13 +7,12 @@
77
import li.cil.oc.api.machine.Arguments;
88
import li.cil.oc.api.machine.Callback;
99
import li.cil.oc.api.machine.Context;
10-
import li.cil.oc.api.network.ManagedEnvironment;
11-
import li.cil.oc.api.prefab.DriverSidedTileEntity;
1210
import net.minecraft.tileentity.TileEntity;
1311
import net.minecraft.util.EnumFacing;
1412
import net.minecraft.util.math.BlockPos;
1513
import net.minecraft.world.World;
1614
import pl.asie.computronics.integration.CCMultiPeripheral;
15+
import pl.asie.computronics.integration.DriverSpecificTileEntity;
1716
import pl.asie.computronics.integration.NamedManagedEnvironment;
1817
import pl.asie.computronics.reference.Names;
1918

@@ -22,7 +21,7 @@
2221
*/
2322
public class DriverHasExperience {
2423

25-
public static class OCDriver extends DriverSidedTileEntity {
24+
public static class OCDriver extends DriverSpecificTileEntity<IHaveExperience> {
2625

2726
public static class InternalManagedEnvironment extends NamedManagedEnvironment<IHaveExperience> {
2827

@@ -51,14 +50,13 @@ public Object[] getMaxExperience(Context c, Arguments a) {
5150
}
5251
}
5352

54-
@Override
55-
public Class<?> getTileEntityClass() {
56-
return IHaveExperience.class;
53+
public OCDriver(){
54+
super(IHaveExperience.class);
5755
}
5856

5957
@Override
60-
public ManagedEnvironment createEnvironment(World world, BlockPos pos, EnumFacing side) {
61-
return new InternalManagedEnvironment(((IHaveExperience) world.getTileEntity(pos)));
58+
public InternalManagedEnvironment createEnvironment(World world, BlockPos pos, EnumFacing side, IHaveExperience tile) {
59+
return new InternalManagedEnvironment(tile);
6260
}
6361
}
6462

@@ -103,7 +101,7 @@ public Object[] callMethod(IComputerAccess computer, ILuaContext context, int me
103101
return new Object[] { tile.getContainer().getMaximumExperiance() };
104102
}
105103
}
106-
return null;
104+
return new Object[] {};
107105
}
108106
}
109107
}

Diff for: ‎src/main/java/pl/asie/computronics/integration/enderio/DriverIOConfigurable.java

+7-9
Original file line numberDiff line numberDiff line change
@@ -8,13 +8,12 @@
88
import li.cil.oc.api.machine.Arguments;
99
import li.cil.oc.api.machine.Callback;
1010
import li.cil.oc.api.machine.Context;
11-
import li.cil.oc.api.network.ManagedEnvironment;
12-
import li.cil.oc.api.prefab.DriverSidedTileEntity;
1311
import net.minecraft.tileentity.TileEntity;
1412
import net.minecraft.util.EnumFacing;
1513
import net.minecraft.util.math.BlockPos;
1614
import net.minecraft.world.World;
1715
import pl.asie.computronics.integration.CCMultiPeripheral;
16+
import pl.asie.computronics.integration.DriverSpecificTileEntity;
1817
import pl.asie.computronics.integration.NamedManagedEnvironment;
1918
import pl.asie.computronics.reference.Names;
2019

@@ -56,7 +55,7 @@ private static int checkSide(int side) {
5655
return side;
5756
}
5857

59-
public static class OCDriver extends DriverSidedTileEntity {
58+
public static class OCDriver extends DriverSpecificTileEntity<IIoConfigurable> {
6059

6160
public static class InternalManagedEnvironment extends NamedManagedEnvironment<IIoConfigurable> {
6261

@@ -85,14 +84,13 @@ public Object[] io_modes(Context c, Arguments a) {
8584
}
8685
}
8786

88-
@Override
89-
public Class<?> getTileEntityClass() {
90-
return IIoConfigurable.class;
87+
public OCDriver(){
88+
super(IIoConfigurable.class);
9189
}
9290

9391
@Override
94-
public ManagedEnvironment createEnvironment(World world, BlockPos pos, EnumFacing side) {
95-
return new InternalManagedEnvironment(((IIoConfigurable) world.getTileEntity(pos)));
92+
public InternalManagedEnvironment createEnvironment(World world, BlockPos pos, EnumFacing side, IIoConfigurable tile) {
93+
return new InternalManagedEnvironment(tile);
9694
}
9795
}
9896

@@ -157,7 +155,7 @@ public Object[] callMethod(IComputerAccess computer, ILuaContext context, int me
157155
return DriverIOConfigurable.modes();
158156
}
159157
}
160-
return null;
158+
return new Object[] {};
161159
}
162160
}
163161
}

Diff for: ‎src/main/java/pl/asie/computronics/integration/enderio/DriverPowerMonitor.java

+7-9
Original file line numberDiff line numberDiff line change
@@ -8,14 +8,13 @@
88
import li.cil.oc.api.machine.Arguments;
99
import li.cil.oc.api.machine.Callback;
1010
import li.cil.oc.api.machine.Context;
11-
import li.cil.oc.api.network.ManagedEnvironment;
12-
import li.cil.oc.api.prefab.DriverSidedTileEntity;
1311
import net.minecraft.tileentity.TileEntity;
1412
import net.minecraft.util.EnumFacing;
1513
import net.minecraft.util.math.BlockPos;
1614
import net.minecraft.world.World;
1715
import pl.asie.computronics.api.multiperipheral.IMultiPeripheral;
1816
import pl.asie.computronics.integration.CCMultiPeripheral;
17+
import pl.asie.computronics.integration.DriverSpecificTileEntity;
1918
import pl.asie.computronics.integration.NamedManagedEnvironment;
2019
import pl.asie.computronics.reference.Names;
2120

@@ -32,7 +31,7 @@ private static NetworkPowerManager checkPowerManager(TilePowerMonitor tile) {
3231
return man;
3332
}
3433

35-
public static class OCDriver extends DriverSidedTileEntity {
34+
public static class OCDriver extends DriverSpecificTileEntity<TilePowerMonitor> {
3635

3736
public static class InternalManagedEnvironment extends NamedManagedEnvironment<TilePowerMonitor> {
3837

@@ -119,14 +118,13 @@ public Object[] setStopLevel(Context c, Arguments a) {
119118
}
120119
}
121120

122-
@Override
123-
public Class<?> getTileEntityClass() {
124-
return TilePowerMonitor.class;
121+
public OCDriver(){
122+
super(TilePowerMonitor.class);
125123
}
126124

127125
@Override
128-
public ManagedEnvironment createEnvironment(World world, BlockPos pos, EnumFacing side) {
129-
return new InternalManagedEnvironment(((TilePowerMonitor) world.getTileEntity(pos)));
126+
public InternalManagedEnvironment createEnvironment(World world, BlockPos pos, EnumFacing side, TilePowerMonitor tile) {
127+
return new InternalManagedEnvironment(tile);
130128
}
131129
}
132130

@@ -218,7 +216,7 @@ public Object[] callMethod(IComputerAccess computer, ILuaContext context, int me
218216
return new Object[] {};
219217
}
220218
}
221-
return null;
219+
return new Object[] {};
222220
}
223221
}
224222
}

0 commit comments

Comments
 (0)
Please sign in to comment.