Fixes #275 and added world placement helper for reactor

This commit is contained in:
Modmuss50 2015-11-17 11:12:58 +00:00
parent 8c85aeb4d3
commit 9283e46a1f
4 changed files with 98 additions and 1 deletions

View file

@ -0,0 +1,49 @@
package techreborn.client;
import reborncore.client.multiblock.Multiblock;
import techreborn.init.ModBlocks;
public class ClientMultiBlocks {
public static Multiblock reactor;
public static void init(){
reactor = new Multiblock();
checkCoils();
}
public static void checkCoils() {
if ((isCoil(3, 0, 1)) &&
(isCoil(3, 0, 0)) &&
(isCoil(3, 0, 0 - 1)) &&
(isCoil(0 - 3, 0, 1)) &&
(isCoil(0 - 3, 0, 0)) &&
(isCoil(0 - 3, 0, 0 - 1)) &&
(isCoil(2, 0, 2)) &&
(isCoil(2, 0, 1)) &&
(isCoil(2, 0, 0 - 1)) &&
(isCoil(2, 0, 0 - 2)) &&
(isCoil(0 - 2, 0, 2)) &&
(isCoil(0 - 2, 0, 1)) &&
(isCoil(0 - 2, 0, 0 - 1)) &&
(isCoil(0 - 2, 0, 0 - 2)) &&
(isCoil(1, 0, 3)) &&
(isCoil(1, 0, 2)) &&
(isCoil(1, 0, 0 - 2)) &&
(isCoil(1, 0, 0 - 3)) &&
(isCoil(0 - 1, 0, 3)) &&
(isCoil(0 - 1, 0, 2)) &&
(isCoil(0 - 1, 0, 0 - 2)) &&
(isCoil(0 - 1, 0, 0 - 3)) &&
(isCoil(0, 0, 3)) &&
(isCoil(0, 0, 0 - 3))) {
}
}
private static boolean isCoil(int x, int y, int z) {
reactor.addComponent(x, y, z, ModBlocks.FusionCoil, 0);
return true;
}
}

View file

@ -1,11 +1,20 @@
package techreborn.client.gui;
import net.minecraft.client.gui.GuiButton;
import net.minecraft.client.gui.inventory.GuiContainer;
import net.minecraft.client.resources.I18n;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.util.ChunkCoordinates;
import net.minecraft.util.ResourceLocation;
import net.minecraft.util.StatCollector;
import net.minecraftforge.common.util.ForgeDirection;
import reborncore.client.multiblock.Multiblock;
import reborncore.client.multiblock.MultiblockSet;
import reborncore.common.misc.Location;
import techreborn.client.ClientMultiBlocks;
import techreborn.client.container.ContainerFusionReactor;
import techreborn.init.ModBlocks;
import techreborn.proxies.ClientProxy;
import techreborn.tiles.fusionReactor.TileEntityFusionController;
@ -14,11 +23,13 @@ public class GuiFusionReactor extends GuiContainer {
private static final ResourceLocation texture = new ResourceLocation("techreborn", "textures/gui/fusion_reactor.png");
ContainerFusionReactor containerFusionReactor;
TileEntityFusionController fusionController;
public GuiFusionReactor(EntityPlayer player,
TileEntityFusionController tileaesu) {
super(new ContainerFusionReactor(tileaesu, player));
containerFusionReactor = (ContainerFusionReactor) this.inventorySlots;
this.fusionController = tileaesu;
}
protected void drawGuiContainerForegroundLayer(int p_146979_1_, int p_146979_2_) {
@ -32,6 +43,22 @@ public class GuiFusionReactor extends GuiContainer {
}
@Override
public void initGui() {
int k = (this.width - this.xSize) / 2;
int l = (this.height - this.ySize) / 2;
GuiButton button = new GuiButton(212, k + this.xSize - 24, l + 4, 20, 20, "");
buttonList.add(button);
super.initGui();
ChunkCoordinates coordinates = new ChunkCoordinates(fusionController.xCoord - (ForgeDirection.getOrientation(fusionController.getRotation()).offsetX * 2), fusionController.yCoord - 1, fusionController.zCoord - (ForgeDirection.getOrientation(fusionController.getRotation()).offsetZ * 2));
if(coordinates.equals(ClientProxy.multiblockRenderEvent.anchor)){
ClientProxy.multiblockRenderEvent.setMultiblock(null);
button.displayString = "B";
} else {
button.displayString = "A";
}
}
@Override
protected void drawGuiContainerBackgroundLayer(float p_146976_1_, int p_146976_2_, int p_146976_3_) {
this.mc.getTextureManager().bindTexture(texture);
@ -51,4 +78,23 @@ public class GuiFusionReactor extends GuiContainer {
return 0;
return (int) ((CurrentValue * 100.0f) / MaxValue);
}
@Override
public void actionPerformed(GuiButton button) {
super.actionPerformed(button);
if(button.id == 212){
if(ClientProxy.multiblockRenderEvent.currentMultiblock == null){
{//This code here makes a basic multiblock and then sets to the selected one.
MultiblockSet set = new MultiblockSet(ClientMultiBlocks.reactor);
ClientProxy.multiblockRenderEvent.setMultiblock(set);
ClientProxy.multiblockRenderEvent.partent = new Location(fusionController.xCoord, fusionController.yCoord, fusionController.zCoord, fusionController.getWorldObj());
ClientProxy.multiblockRenderEvent.anchor = new ChunkCoordinates(fusionController.xCoord , fusionController.yCoord -1 , fusionController.zCoord);
}
button.displayString = "A";
} else {
ClientProxy.multiblockRenderEvent.setMultiblock(null);
button.displayString = "B";
}
}
}
}

View file

@ -231,7 +231,7 @@ public abstract class TilePowerAcceptor extends RFProviderTile implements
@Override
public double useEnergy(double extract, boolean simulate) {
double energyExtracted = Math.min(extract, Math.min(this.getMaxOutput(), extract));
double energyExtracted = Math.min(getMaxPower() - energy, Math.min(getMaxPower(), extract));
if (!simulate) {
setEnergy(energy - energyExtracted);

View file

@ -3,6 +3,7 @@ package techreborn.proxies;
import cpw.mods.fml.client.registry.ClientRegistry;
import net.minecraftforge.common.MinecraftForge;
import reborncore.client.multiblock.MultiblockRenderEvent;
import techreborn.client.ClientMultiBlocks;
import techreborn.client.IconSupplier;
import techreborn.client.StackToolTipEvent;
import techreborn.client.VersionCheckerClient;
@ -23,5 +24,6 @@ public class ClientProxy extends CommonProxy {
multiblockRenderEvent = new MultiblockRenderEvent();
MinecraftForge.EVENT_BUS.register(multiblockRenderEvent);
ClientRegistry.registerKeyBinding(KeyBindings.config);
ClientMultiBlocks.init();
}
}