Parts are now tiles, they now transmit power :)

This commit is contained in:
Modmuss50 2015-04-20 21:16:29 +01:00
parent df2ae8b335
commit 44d8f09746
2 changed files with 78 additions and 4 deletions

View file

@ -6,13 +6,14 @@ package techreborn.partSystem;
import me.modmuss50.mods.lib.Location; import me.modmuss50.mods.lib.Location;
import net.minecraft.tileentity.TileEntity;
import net.minecraft.world.World; import net.minecraft.world.World;
/** /**
* Extend this class to make your multipart * Extend this class to make your multipart
*/ */
public abstract class ModPart implements IModPart { public abstract class ModPart extends TileEntity implements IModPart {
/** /**
* The world of the part * The world of the part
@ -40,6 +41,7 @@ public abstract class ModPart implements IModPart {
*/ */
public void setWorld(World world) { public void setWorld(World world) {
this.world = world; this.world = world;
setWorldObj(world);
} }
/** /**
@ -80,5 +82,19 @@ public abstract class ModPart implements IModPart {
*/ */
public void setLocation(Location location) { public void setLocation(Location location) {
this.location = location; this.location = location;
this.xCoord = location.getX();
this.yCoord = location.getY();
this.zCoord = location.getZ();
}
@Override
public World getWorldObj() {
return getWorld();
}
@Override
public void setWorldObj(World p_145834_1_) {
super.setWorldObj(p_145834_1_);
} }
} }

View file

@ -1,17 +1,22 @@
package techreborn.partSystem.parts; package techreborn.partSystem.parts;
import ic2.api.energy.event.EnergyTileLoadEvent;
import ic2.api.energy.event.EnergyTileUnloadEvent;
import ic2.api.energy.tile.IEnergyConductor;
import ic2.api.energy.tile.IEnergyTile; import ic2.api.energy.tile.IEnergyTile;
import ic2.core.IC2;
import me.modmuss50.mods.lib.Functions; import me.modmuss50.mods.lib.Functions;
import me.modmuss50.mods.lib.vecmath.Vecs3d; import me.modmuss50.mods.lib.vecmath.Vecs3d;
import me.modmuss50.mods.lib.vecmath.Vecs3dCube; import me.modmuss50.mods.lib.vecmath.Vecs3dCube;
import techreborn.partSystem.ModPart;
import techreborn.partSystem.ModPartUtils;
import net.minecraft.entity.Entity; import net.minecraft.entity.Entity;
import net.minecraft.item.ItemStack; import net.minecraft.item.ItemStack;
import net.minecraft.nbt.NBTTagCompound; import net.minecraft.nbt.NBTTagCompound;
import net.minecraft.tileentity.TileEntity; import net.minecraft.tileentity.TileEntity;
import net.minecraft.world.World; import net.minecraft.world.World;
import net.minecraftforge.common.MinecraftForge;
import net.minecraftforge.common.util.ForgeDirection; import net.minecraftforge.common.util.ForgeDirection;
import techreborn.partSystem.ModPart;
import techreborn.partSystem.ModPartUtils;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.HashMap; import java.util.HashMap;
@ -19,7 +24,7 @@ import java.util.List;
import java.util.Map; import java.util.Map;
public class CablePart extends ModPart { public class CablePart extends ModPart implements IEnergyConductor {
public static Vecs3dCube[] boundingBoxes = new Vecs3dCube[14]; public static Vecs3dCube[] boundingBoxes = new Vecs3dCube[14];
public static float center = 0.6F; public static float center = 0.6F;
public static float offset = 0.10F; public static float offset = 0.10F;
@ -27,6 +32,7 @@ public class CablePart extends ModPart {
public int ticks = 0; public int ticks = 0;
protected ForgeDirection[] dirs = ForgeDirection.values(); protected ForgeDirection[] dirs = ForgeDirection.values();
private boolean[] connections = new boolean[6]; private boolean[] connections = new boolean[6];
public boolean addedToEnergyNet = false;
public static void public static void
refreshBounding() { refreshBounding() {
@ -125,6 +131,14 @@ public class CablePart extends ModPart {
} else { } else {
ticks += 1; ticks += 1;
} }
if(IC2.platform.isSimulating()) {
MinecraftForge.EVENT_BUS.post(new EnergyTileLoadEvent(this));
this.addedToEnergyNet = true;
checkConnectedSides();
}
} }
@Override @Override
@ -139,6 +153,10 @@ public class CablePart extends ModPart {
@Override @Override
public void onRemoved() { public void onRemoved() {
if(IC2.platform.isSimulating() && this.addedToEnergyNet) {
MinecraftForge.EVENT_BUS.post(new EnergyTileUnloadEvent(this));
this.addedToEnergyNet = false;
}
} }
@Override @Override
@ -186,4 +204,44 @@ public class CablePart extends ModPart {
} }
world.func_147479_m(x, y, z); world.func_147479_m(x, y, z);
} }
@Override
public double getConductionLoss() {
return 0D;
}
@Override
public double getInsulationEnergyAbsorption() {
return 256;
}
@Override
public double getInsulationBreakdownEnergy() {
return 2048;
}
@Override
public double getConductorBreakdownEnergy() {
return 2048;
}
@Override
public void removeInsulation() {
}
@Override
public void removeConductor() {
}
@Override
public boolean acceptsEnergyFrom(TileEntity tileEntity, ForgeDirection forgeDirection) {
return true;
}
@Override
public boolean emitsEnergyTo(TileEntity tileEntity, ForgeDirection forgeDirection) {
return true;
}
} }