Skip to content

Commit

Permalink
Power system re-write, recipe fixes.
Browse files Browse the repository at this point in the history
Please note that this version breaks all wires placed in worlds before.
  • Loading branch information
Dragon2488 committed Jul 18, 2016
1 parent 25c581e commit d982cc4
Show file tree
Hide file tree
Showing 33 changed files with 506 additions and 858 deletions.
Expand Up @@ -39,7 +39,7 @@ protected void drawGuiContainerForegroundLayer(int p_146979_1_, int p_146979_2_)
String name = I18n.translateToLocal("tile.techreborn.thermalGenerator.name");
this.fontRendererObj.drawString(name, this.xSize / 2 - this.fontRendererObj.getStringWidth(name) / 2, 6,
4210752);
this.fontRendererObj.drawString(I18n.translateToLocalFormatted("container.inventory", new Object[0]), 8,
this.fontRendererObj.drawString(I18n.translateToLocalFormatted("container.inventory"), 8,
this.ySize - 96 + 2, 4210752);
this.fontRendererObj.drawString("Liquid Amount", 10, 20, 16448255);
this.fontRendererObj.drawString(tile.tank.getFluidAmount() + "", 10, 30, 16448255);
Expand Down
12 changes: 0 additions & 12 deletions src/main/java/techreborn/events/TRTickHandler.java
Expand Up @@ -4,12 +4,10 @@
import net.minecraft.init.MobEffects;
import net.minecraft.inventory.EntityEquipmentSlot;
import net.minecraft.item.Item;
import net.minecraftforge.common.MinecraftForge;
import net.minecraftforge.fml.common.eventhandler.EventPriority;
import net.minecraftforge.fml.common.eventhandler.SubscribeEvent;
import net.minecraftforge.fml.common.gameevent.TickEvent;
import techreborn.init.ModItems;
import techreborn.power.PowerTickEvent;

public class TRTickHandler
{
Expand All @@ -32,14 +30,4 @@ public void onPlayerTick(TickEvent.PlayerTickEvent e)
previouslyWearing = chestslot;
}

@SubscribeEvent
public void worldTick(TickEvent.WorldTickEvent e)
{
if (e.world.isRemote)
{
return;
}
MinecraftForge.EVENT_BUS.post(new PowerTickEvent());
}

}
11 changes: 5 additions & 6 deletions src/main/java/techreborn/init/ModRecipes.java
Expand Up @@ -887,10 +887,10 @@ static void addGeneralShapedRecipes()
}
}

CraftingHelper.addShapedOreRecipe(ItemParts.getPartByName("nichromeHeatingCoil"), " N ", "NCN", " N ", 'N',
TechRebornAPI.addRollingOreMachinceRecipe(ItemParts.getPartByName("nichromeHeatingCoil"), " N ", "NCN", " N ", 'N',
"ingotNickel", 'C', "ingotChrome");

CraftingHelper.addShapedOreRecipe(ItemParts.getPartByName("kanthalHeatingCoil"), "III", "CAA", "AAA", 'I',
TechRebornAPI.addRollingOreMachinceRecipe(ItemParts.getPartByName("kanthalHeatingCoil"), "III", "CAA", "AAA", 'I',
"ingotSteel", 'C', "ingotChrome", 'A', "ingotAluminum");

CraftingHelper.addShapedOreRecipe(ItemParts.getPartByName("heliumCoolantSimple"), " T ", "TCT", " T ", 'T',
Expand Down Expand Up @@ -1070,8 +1070,7 @@ static void addMachineRecipes()
.addShapedOreRecipe(new ItemStack(ModBlocks.LesuStorage), "LLL", "LCL", "LLL", 'L', "blockLapis", 'C',
"circuitBasic");

TechRebornAPI
.addRollingOreMachinceRecipe(ItemParts.getPartByName("cupronickelHeatingCoil"), "NCN", "C C", "NCN",
TechRebornAPI.addRollingOreMachinceRecipe(ItemParts.getPartByName("cupronickelHeatingCoil"), "NCN", "C C", "NCN",
'N', "ingotCupronickel", 'C', "ingotCopper");

RecipeHandler.addRecipe(new VacuumFreezerRecipe(ItemIngots.getIngotByName("hotTungstensteel"),
Expand Down Expand Up @@ -2311,7 +2310,7 @@ static void addIc2Recipes()
getOre("ic2Extractor"));

CraftingHelper.addShapedOreRecipe(new ItemStack(ModBlocks.BlastFurnace), "CHC", "HBH", "FHF", 'H',
new ItemStack(ModItems.parts, 1, 17), 'C', "circuitAdvanced", 'B',
ItemParts.getPartByName("cupronickelHeatingCoil"), 'C', "circuitAdvanced", 'B',
BlockMachineFrame.getFrameByName("advancedMachine", 1), 'F', ModBlocks.ElectricFurnace);

CraftingHelper.addShapedOreRecipe(new ItemStack(ModBlocks.IndustrialGrinder), "ECP", "GGG", "CBC", 'E',
Expand Down Expand Up @@ -2344,7 +2343,7 @@ static void addIc2Recipes()
CraftingHelper
.addShapedOreRecipe(new ItemStack(ModBlocks.RollingMachine), "PCP", "MBM", "PCP", 'P', Blocks.PISTON,
'C', "circuitAdvanced", 'M', ModBlocks.Compressor, 'B',
BlockMachineFrame.getFrameByName("machine", 1));
"machineBlockAdvanced");

// CraftingHelper.addShapedOreRecipe(new
// ItemStack(ModBlocks.ElectricCraftingTable),
Expand Down
12 changes: 3 additions & 9 deletions src/main/java/techreborn/parts/TechRebornParts.java
Expand Up @@ -30,26 +30,20 @@ public class TechRebornParts implements ICompatModule
@Nullable
public static Item fluidPipe;

public static HashMap<EnumCableType, Class<? extends CableMultipart>> multipartHashMap = new HashMap<>();

@Override
public void preInit(FMLPreInitializationEvent event)
{
MinecraftForge.EVENT_BUS.register(this);
}

@Override
public void init(FMLInitializationEvent event)
{
for (EnumCableType cableType : EnumCableType.values())
{
multipartHashMap.put(cableType, cableType.cableClass);
MultipartRegistry.registerPart(cableType.cableClass, "techreborn:cable." + cableType.name());
}
public void init(FMLInitializationEvent event) {

cables = new ItemCables();
cables.setRegistryName("cables");
GameRegistry.register(cables);

MultipartRegistry.registerPart(CableMultipart.class, "techreborn:cable");
MultipartRegistry.registerPart(EmptyFluidPipe.class, "techreborn:fluidpipe.empty");
MultipartRegistry.registerPart(InsertingFluidPipe.class, "techreborn:fluidpipe.inserting");
MultipartRegistry.registerPart(ExtractingFluidPipe.class, "techreborn:fluidpipe.extracting");
Expand Down
168 changes: 54 additions & 114 deletions src/main/java/techreborn/parts/powerCables/CableMultipart.java
@@ -1,9 +1,5 @@
package techreborn.parts.powerCables;

import reborncore.mcmultipart.MCMultiPartMod;
import reborncore.mcmultipart.microblock.IMicroblock;
import reborncore.mcmultipart.multipart.*;
import reborncore.mcmultipart.raytrace.PartMOP;
import net.minecraft.block.Block;
import net.minecraft.block.material.Material;
import net.minecraft.block.properties.IProperty;
Expand All @@ -15,8 +11,13 @@
import net.minecraft.entity.EntityLivingBase;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.item.ItemStack;
import net.minecraft.nbt.NBTTagCompound;
import net.minecraft.network.PacketBuffer;
import net.minecraft.tileentity.TileEntity;
import net.minecraft.util.*;
import net.minecraft.util.BlockRenderLayer;
import net.minecraft.util.EnumFacing;
import net.minecraft.util.ITickable;
import net.minecraft.util.ResourceLocation;
import net.minecraft.util.math.AxisAlignedBB;
import net.minecraft.util.math.BlockPos;
import net.minecraft.util.text.TextFormatting;
Expand All @@ -29,19 +30,20 @@
import reborncore.common.misc.Functions;
import reborncore.common.misc.vecmath.Vecs3dCube;
import reborncore.common.util.WorldUtils;
import techreborn.config.ConfigTechReborn;
import techreborn.init.ModSounds;
import reborncore.mcmultipart.MCMultiPartMod;
import reborncore.mcmultipart.microblock.IMicroblock;
import reborncore.mcmultipart.multipart.*;
import reborncore.mcmultipart.raytrace.PartMOP;
import techreborn.parts.TechRebornParts;
import techreborn.parts.walia.IPartWaliaProvider;
import techreborn.power.TRPowerNet;
import techreborn.utils.damageSources.ElectrialShockSource;

import java.util.*;

/**
* Created by modmuss50 on 02/03/2016.
*/
public abstract class CableMultipart extends Multipart
public class CableMultipart extends Multipart
implements INormallyOccludingPart, ISlottedPart, ITickable, ICableType, IPartWaliaProvider {

public static final IUnlistedProperty<Boolean> UP = Properties.toUnlisted(PropertyBool.create("up"));
Expand All @@ -55,10 +57,14 @@ public abstract class CableMultipart extends Multipart
public float center = 0.6F;
public float offset = 0.10F;
public Map<EnumFacing, BlockPos> connectedSides;
public int ticks = 0;
public ItemStack stack;
public TRPowerNet mergeWith = null;
private TRPowerNet network;
public double lastEnergyPacket;
public EnumCableType cableType = EnumCableType.ICOPPER;

public CableMultipart(EnumCableType cableType) {
this.cableType = cableType;
connectedSides = new HashMap<>();
refreshBounding();
}

public CableMultipart() {
connectedSides = new HashMap<>();
Expand Down Expand Up @@ -144,7 +150,6 @@ public void addSelectionBoxes(List<AxisAlignedBB> list) {
@Override
public void onRemoved() {
super.onRemoved();
removeFromNetwork();
for (EnumFacing dir : EnumFacing.VALUES) {
CableMultipart multipart = getPartFromWorld(getWorld(), getPos().offset(dir), dir);
if (multipart != null) {
Expand All @@ -153,12 +158,6 @@ public void onRemoved() {
}
}

@Override
public void onUnloaded() {
super.onUnloaded();
removeFromNetwork();
}

@Override
public void addOcclusionBoxes(List<AxisAlignedBB> list) {
for (EnumFacing dir : EnumFacing.VALUES) {
Expand All @@ -172,13 +171,9 @@ public void addOcclusionBoxes(List<AxisAlignedBB> list) {
public void onNeighborBlockChange(Block block) {
super.onNeighborBlockChange(block);
nearByChange();

}

public void nearByChange() {
if (network == null) {
findAndJoinNetwork(getWorld(), getPos());
}
checkConnectedSides();
for (EnumFacing direction : EnumFacing.VALUES) {
BlockPos blockPos = getPos().offset(direction);
Expand All @@ -188,7 +183,6 @@ public void nearByChange() {
part.checkConnectedSides();
}
}
TRPowerNet.buildEndpoint(network);
}

@Override
Expand Down Expand Up @@ -258,18 +252,14 @@ public EnumSet<PartSlot> getSlotMask() {
@Override
public void update() {
if (getWorld() != null) {
if(lastEnergyPacket > 0)
--lastEnergyPacket;

if (getWorld().getTotalWorldTime() % 80 == 0) {
checkConnectedSides();
}
}
if (network == null) {
this.findAndJoinNetwork(getWorld(), getPos());
} else {
if (mergeWith != null) {
getNetwork().merge(mergeWith);
mergeWith = null;
}
}

}

@Override
Expand All @@ -294,7 +284,7 @@ public float getHardness(PartMOP hit) {
}

public Material getMaterial() {
return Material.CLOTH;
return getCableType().material;
}

@Override
Expand All @@ -307,113 +297,63 @@ public List<ItemStack> getDrops() {
@Override
public void onEntityCollided(Entity entity) {
if (getCableType().canKill && entity instanceof EntityLivingBase) {
if (network != null) {
if (network.getEnergy() != 0) {
if (ConfigTechReborn.UninsulatedElectocutionDamage) {
if (getCableType() == EnumCableType.HV) {
entity.setFire(1);
}
network.setEnergy(-1);
entity.attackEntityFrom(new ElectrialShockSource(), 1F);
}
if (ConfigTechReborn.UninsulatedElectocutionSound) {
getWorld().playSound(null, entity.posX, entity.posY,
entity.posZ, ModSounds.shock,
SoundCategory.BLOCKS, 0.6F, 1F);
}
if (ConfigTechReborn.UninsulatedElectocutionParticle) {
getWorld().spawnParticle(EnumParticleTypes.CRIT, entity.posX, entity.posY, entity.posZ, 0,
0, 0);
}
}
}
entity.attackEntityFrom(new ElectrialShockSource(), (float) (lastEnergyPacket / 16F));
}

}

@Override
public void onEntityStanding(Entity entity) {

}

@Override
public ItemStack getPickBlock(EntityPlayer player, PartMOP hit) {
return new ItemStack(TechRebornParts.cables, 1, getCableType().ordinal());
}

public final void findAndJoinNetwork(World world, BlockPos pos) {
for (EnumFacing dir : EnumFacing.VALUES) {
CableMultipart cableMultipart = getPartFromWorld(getWorld(), getPos().offset(dir), dir);
if (cableMultipart != null && cableMultipart.getCableType() == getCableType()) {
TRPowerNet net = cableMultipart.getNetwork();
if (net != null) {
network = net;
network.addElement(this);
break;
}
}
}
if (network == null) {
network = new TRPowerNet(getCableType());
network.addElement(this);
}
network.endpoints.clear();
for (EnumFacing dir : EnumFacing.VALUES) {
TileEntity te = getNeighbourTile(dir);
if (te != null && te instanceof IEnergyInterfaceTile) {
network.addConnection((IEnergyInterfaceTile) te, dir.getOpposite());
}
@Override
public void addInfo(List<String> info) {
info.add(TextFormatting.GREEN + "EU Transfer: " +
TextFormatting.LIGHT_PURPLE + getCableType().transferRate);
if (getCableType().canKill) {
info.add(TextFormatting.RED + "Damages entity's!");
}
}

public final TRPowerNet getNetwork() {
return network;
}

public final void setNetwork(TRPowerNet n) {
if (n == null) {
} else {
network = n;
network.addElement(this);
}
@Override
public ResourceLocation getModelPath() {
return new ResourceLocation("techreborn:cable");
}

public final void removeFromNetwork() {
if (network == null) {
} else
network.removeElement(this);
@Override
public boolean canRenderInLayer(BlockRenderLayer layer) {
return layer == BlockRenderLayer.CUTOUT;
}

public final void rebuildNetwork() {
this.removeFromNetwork();
this.resetNetwork();
this.findAndJoinNetwork(getWorld(), getPos());
@Override
public NBTTagCompound writeToNBT(NBTTagCompound tag) {
tag.setString("CableType", cableType.name());
return tag;
}

public final void resetNetwork() {
if (network != null) {
network.removeElement(this);
@Override
public void readFromNBT(NBTTagCompound tag) {
if(tag.hasKey("CableType")) {
cableType = EnumCableType.valueOf(tag.getString("CableType"));
}

network = null;
}

@Override
public void addInfo(List<String> info) {
info.add(TextFormatting.GREEN + "EU Transfer: " +
TextFormatting.LIGHT_PURPLE + getCableType().transferRate);
if (getCableType().canKill) {
info.add(TextFormatting.RED + "Damages entity's!");
}
public void writeUpdatePacket(PacketBuffer buf) {
super.writeUpdatePacket(buf);
buf.writeInt(cableType.ordinal());
}

@Override
public ResourceLocation getModelPath() {
return new ResourceLocation("techreborn:cable");
public void readUpdatePacket(PacketBuffer buf) {
super.readUpdatePacket(buf);
cableType = EnumCableType.values()[buf.readInt()];
}

@Override
public boolean canRenderInLayer(BlockRenderLayer layer) {
return layer == BlockRenderLayer.CUTOUT;
public EnumCableType getCableType() {
return cableType;
}

}

0 comments on commit d982cc4

Please sign in to comment.