DFC emitter functionality (mostly), new shotgun shell textures
|
Before Width: | Height: | Size: 1.9 KiB After Width: | Height: | Size: 1.9 KiB |
|
Before Width: | Height: | Size: 267 B After Width: | Height: | Size: 298 B |
|
Before Width: | Height: | Size: 296 B After Width: | Height: | Size: 310 B |
|
Before Width: | Height: | Size: 245 B After Width: | Height: | Size: 311 B |
|
Before Width: | Height: | Size: 294 B After Width: | Height: | Size: 332 B |
|
Before Width: | Height: | Size: 327 B After Width: | Height: | Size: 323 B |
|
Before Width: | Height: | Size: 284 B After Width: | Height: | Size: 317 B |
|
Before Width: | Height: | Size: 283 B After Width: | Height: | Size: 314 B |
|
Before Width: | Height: | Size: 283 B After Width: | Height: | Size: 286 B |
|
Before Width: | Height: | Size: 284 B After Width: | Height: | Size: 324 B |
|
Before Width: | Height: | Size: 293 B After Width: | Height: | Size: 342 B |
@ -1,5 +1,7 @@
|
|||||||
package com.hbm.entity.projectile;
|
package com.hbm.entity.projectile;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
import com.hbm.lib.Library;
|
import com.hbm.lib.Library;
|
||||||
import com.hbm.lib.ModDamageSource;
|
import com.hbm.lib.ModDamageSource;
|
||||||
|
|
||||||
@ -8,6 +10,7 @@ import cpw.mods.fml.relauncher.SideOnly;
|
|||||||
import net.minecraft.entity.Entity;
|
import net.minecraft.entity.Entity;
|
||||||
import net.minecraft.entity.player.EntityPlayer;
|
import net.minecraft.entity.player.EntityPlayer;
|
||||||
import net.minecraft.nbt.NBTTagCompound;
|
import net.minecraft.nbt.NBTTagCompound;
|
||||||
|
import net.minecraft.util.AxisAlignedBB;
|
||||||
import net.minecraft.util.MovingObjectPosition;
|
import net.minecraft.util.MovingObjectPosition;
|
||||||
import net.minecraft.util.Vec3;
|
import net.minecraft.util.Vec3;
|
||||||
import net.minecraft.world.World;
|
import net.minecraft.world.World;
|
||||||
@ -56,14 +59,15 @@ public class EntityLaser extends Entity {
|
|||||||
|
|
||||||
MovingObjectPosition pos = Library.rayTrace(player, range, 1);
|
MovingObjectPosition pos = Library.rayTrace(player, range, 1);
|
||||||
|
|
||||||
if(pos.entityHit != null) {
|
|
||||||
pos.entityHit.attackEntityFrom(ModDamageSource.radiation, 2);
|
|
||||||
}
|
|
||||||
|
|
||||||
//worldObj.createExplosion(this, pos.hitVec.xCoord, pos.hitVec.yCoord, pos.hitVec.zCoord, 1, false);
|
//worldObj.createExplosion(this, pos.hitVec.xCoord, pos.hitVec.yCoord, pos.hitVec.zCoord, 1, false);
|
||||||
|
|
||||||
worldObj.spawnParticle("cloud", pos.hitVec.xCoord, pos.hitVec.yCoord, pos.hitVec.zCoord, 0, 0, 0);
|
worldObj.spawnParticle("cloud", pos.hitVec.xCoord, pos.hitVec.yCoord, pos.hitVec.zCoord, 0, 0, 0);
|
||||||
worldObj.playSound(pos.hitVec.xCoord, pos.hitVec.yCoord, pos.hitVec.zCoord, "random.fizz", 1, 1, true);
|
worldObj.playSound(pos.hitVec.xCoord, pos.hitVec.yCoord, pos.hitVec.zCoord, "random.fizz", 1, 1, true);
|
||||||
|
|
||||||
|
List<Entity> list = worldObj.getEntitiesWithinAABB(Entity.class, AxisAlignedBB.getBoundingBox(pos.hitVec.xCoord - 1, pos.hitVec.yCoord - 1, pos.hitVec.zCoord - 1, pos.hitVec.xCoord + 1, pos.hitVec.yCoord + 1, pos.hitVec.zCoord + 1));
|
||||||
|
|
||||||
|
for(Entity e : list)
|
||||||
|
e.attackEntityFrom(ModDamageSource.radiation, 5);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -1,6 +1,5 @@
|
|||||||
package com.hbm.inventory.container;
|
package com.hbm.inventory.container;
|
||||||
|
|
||||||
import com.hbm.inventory.SlotMachineOutput;
|
|
||||||
import com.hbm.tileentity.machine.TileEntityCoreEmitter;
|
import com.hbm.tileentity.machine.TileEntityCoreEmitter;
|
||||||
|
|
||||||
import net.minecraft.entity.player.EntityPlayer;
|
import net.minecraft.entity.player.EntityPlayer;
|
||||||
@ -16,9 +15,6 @@ public class ContainerCoreEmitter extends Container {
|
|||||||
|
|
||||||
nukeBoy = tedf;
|
nukeBoy = tedf;
|
||||||
|
|
||||||
this.addSlotToContainer(new Slot(tedf, 0, 8, 17));
|
|
||||||
this.addSlotToContainer(new SlotMachineOutput(invPlayer.player, tedf, 1, 8, 53));
|
|
||||||
|
|
||||||
for(int i = 0; i < 3; i++)
|
for(int i = 0; i < 3; i++)
|
||||||
{
|
{
|
||||||
for(int j = 0; j < 9; j++)
|
for(int j = 0; j < 9; j++)
|
||||||
|
|||||||
@ -4,13 +4,10 @@ import org.lwjgl.opengl.GL11;
|
|||||||
|
|
||||||
import com.hbm.inventory.FluidTank;
|
import com.hbm.inventory.FluidTank;
|
||||||
import com.hbm.inventory.container.ContainerAMSLimiter;
|
import com.hbm.inventory.container.ContainerAMSLimiter;
|
||||||
import com.hbm.inventory.container.ContainerMachinePress;
|
|
||||||
import com.hbm.lib.RefStrings;
|
import com.hbm.lib.RefStrings;
|
||||||
import com.hbm.tileentity.machine.TileEntityAMSLimiter;
|
import com.hbm.tileentity.machine.TileEntityAMSLimiter;
|
||||||
import com.hbm.tileentity.machine.TileEntityMachinePress;
|
|
||||||
|
|
||||||
import net.minecraft.client.Minecraft;
|
import net.minecraft.client.Minecraft;
|
||||||
import net.minecraft.client.gui.inventory.GuiContainer;
|
|
||||||
import net.minecraft.client.resources.I18n;
|
import net.minecraft.client.resources.I18n;
|
||||||
import net.minecraft.entity.player.InventoryPlayer;
|
import net.minecraft.entity.player.InventoryPlayer;
|
||||||
import net.minecraft.util.ResourceLocation;
|
import net.minecraft.util.ResourceLocation;
|
||||||
|
|||||||
@ -1,41 +1,88 @@
|
|||||||
package com.hbm.inventory.gui;
|
package com.hbm.inventory.gui;
|
||||||
|
|
||||||
|
import org.apache.commons.lang3.math.NumberUtils;
|
||||||
|
import org.lwjgl.input.Keyboard;
|
||||||
import org.lwjgl.opengl.GL11;
|
import org.lwjgl.opengl.GL11;
|
||||||
|
|
||||||
|
import com.hbm.inventory.FluidTank;
|
||||||
import com.hbm.inventory.container.ContainerCoreEmitter;
|
import com.hbm.inventory.container.ContainerCoreEmitter;
|
||||||
|
import com.hbm.lib.Library;
|
||||||
import com.hbm.lib.RefStrings;
|
import com.hbm.lib.RefStrings;
|
||||||
|
import com.hbm.packet.AuxButtonPacket;
|
||||||
|
import com.hbm.packet.PacketDispatcher;
|
||||||
import com.hbm.tileentity.machine.TileEntityCoreEmitter;
|
import com.hbm.tileentity.machine.TileEntityCoreEmitter;
|
||||||
|
|
||||||
import net.minecraft.client.Minecraft;
|
import net.minecraft.client.Minecraft;
|
||||||
|
import net.minecraft.client.audio.PositionedSoundRecord;
|
||||||
|
import net.minecraft.client.gui.GuiTextField;
|
||||||
import net.minecraft.client.resources.I18n;
|
import net.minecraft.client.resources.I18n;
|
||||||
import net.minecraft.entity.player.InventoryPlayer;
|
import net.minecraft.entity.player.InventoryPlayer;
|
||||||
|
import net.minecraft.util.MathHelper;
|
||||||
import net.minecraft.util.ResourceLocation;
|
import net.minecraft.util.ResourceLocation;
|
||||||
|
|
||||||
public class GUICoreEmitter extends GuiInfoContainer {
|
public class GUICoreEmitter extends GuiInfoContainer {
|
||||||
|
|
||||||
private static ResourceLocation texture = new ResourceLocation(RefStrings.MODID + ":textures/gui/dfc/gui_emitter.png");
|
private static ResourceLocation texture = new ResourceLocation(RefStrings.MODID + ":textures/gui/dfc/gui_emitter.png");
|
||||||
private TileEntityCoreEmitter press;
|
private TileEntityCoreEmitter emitter;
|
||||||
|
private GuiTextField field;
|
||||||
|
|
||||||
public GUICoreEmitter(InventoryPlayer invPlayer, TileEntityCoreEmitter tedf) {
|
public GUICoreEmitter(InventoryPlayer invPlayer, TileEntityCoreEmitter tedf) {
|
||||||
super(new ContainerCoreEmitter(invPlayer, tedf));
|
super(new ContainerCoreEmitter(invPlayer, tedf));
|
||||||
press = tedf;
|
emitter = tedf;
|
||||||
|
|
||||||
this.xSize = 176;
|
this.xSize = 176;
|
||||||
this.ySize = 166;
|
this.ySize = 166;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void initGui() {
|
||||||
|
|
||||||
|
super.initGui();
|
||||||
|
|
||||||
|
Keyboard.enableRepeatEvents(true);
|
||||||
|
this.field = new GuiTextField(this.fontRendererObj, guiLeft + 57, guiTop + 57, 29, 12);
|
||||||
|
this.field.setTextColor(-1);
|
||||||
|
this.field.setDisabledTextColour(-1);
|
||||||
|
this.field.setEnableBackgroundDrawing(false);
|
||||||
|
this.field.setMaxStringLength(5);
|
||||||
|
this.field.setText(String.valueOf(emitter.watts));
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void drawScreen(int mouseX, int mouseY, float f) {
|
public void drawScreen(int mouseX, int mouseY, float f) {
|
||||||
super.drawScreen(mouseX, mouseY, f);
|
super.drawScreen(mouseX, mouseY, f);
|
||||||
|
this.field.drawTextBox();
|
||||||
|
|
||||||
this.drawElectricityInfo(this, mouseX, mouseY, guiLeft + 26, guiTop + 69 - 52, 16, 52, press.power, press.maxPower);
|
emitter.tank.renderTankInfo(this, mouseX, mouseY, guiLeft + 8, guiTop + 17, 16, 52);
|
||||||
|
this.drawElectricityInfo(this, mouseX, mouseY, guiLeft + 26, guiTop + 17, 16, 52, emitter.power, emitter.maxPower);
|
||||||
|
}
|
||||||
|
|
||||||
|
protected void mouseClicked(int x, int y, int i) {
|
||||||
|
super.mouseClicked(x, y, i);
|
||||||
|
this.field.mouseClicked(x, y, i);
|
||||||
|
|
||||||
|
if(guiLeft + 97 <= x && guiLeft + 97 + 18 > x && guiTop + 52 < y && guiTop + 52 + 18 >= y) {
|
||||||
|
|
||||||
|
if(NumberUtils.isNumber(field.getText())) {
|
||||||
|
int j = MathHelper.clamp_int(Integer.parseInt(field.getText()), 1, 100);
|
||||||
|
field.setText(j + "");
|
||||||
|
mc.getSoundHandler().playSound(PositionedSoundRecord.func_147674_a(new ResourceLocation("gui.button.press"), 1.0F));
|
||||||
|
PacketDispatcher.wrapper.sendToServer(new AuxButtonPacket(emitter.xCoord, emitter.yCoord, emitter.zCoord, j, 0));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if(guiLeft + 133 <= x && guiLeft + 133 + 18 > x && guiTop + 52 < y && guiTop + 52 + 18 >= y) {
|
||||||
|
mc.getSoundHandler().playSound(PositionedSoundRecord.func_147674_a(new ResourceLocation("gui.button.press"), 1.0F));
|
||||||
|
PacketDispatcher.wrapper.sendToServer(new AuxButtonPacket(emitter.xCoord, emitter.yCoord, emitter.zCoord, 0, 1));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected void drawGuiContainerForegroundLayer( int i, int j) {
|
protected void drawGuiContainerForegroundLayer( int i, int j) {
|
||||||
String name = this.press.hasCustomInventoryName() ? this.press.getInventoryName() : I18n.format(this.press.getInventoryName());
|
String name = this.emitter.hasCustomInventoryName() ? this.emitter.getInventoryName() : I18n.format(this.emitter.getInventoryName());
|
||||||
|
|
||||||
this.fontRendererObj.drawString(name, this.xSize / 2 - this.fontRendererObj.getStringWidth(name) / 2, 6, 4210752);
|
this.fontRendererObj.drawString(name, this.xSize / 2 - this.fontRendererObj.getStringWidth(name) / 2, 6, 4210752);
|
||||||
|
|
||||||
|
this.fontRendererObj.drawString("Output: " + Library.getShortNumber(emitter.joules) + "Spk", 50, 30, 0xFF7F7F);
|
||||||
|
|
||||||
this.fontRendererObj.drawString(I18n.format("container.inventory"), 8, this.ySize - 96 + 2, 4210752);
|
this.fontRendererObj.drawString(I18n.format("container.inventory"), 8, this.ySize - 96 + 2, 4210752);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -44,5 +91,27 @@ public class GUICoreEmitter extends GuiInfoContainer {
|
|||||||
GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F);
|
GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F);
|
||||||
Minecraft.getMinecraft().getTextureManager().bindTexture(texture);
|
Minecraft.getMinecraft().getTextureManager().bindTexture(texture);
|
||||||
drawTexturedModalRect(guiLeft, guiTop, 0, 0, xSize, ySize);
|
drawTexturedModalRect(guiLeft, guiTop, 0, 0, xSize, ySize);
|
||||||
|
|
||||||
|
if(field.isFocused())
|
||||||
|
drawTexturedModalRect(guiLeft + 53, guiTop + 53, 210, 4, 34, 16);
|
||||||
|
|
||||||
|
if(emitter.isOn)
|
||||||
|
drawTexturedModalRect(guiLeft + 133, guiTop + 52, 192, 0, 18, 18);
|
||||||
|
|
||||||
|
drawTexturedModalRect(guiLeft + 53, guiTop + 45, 210, 0, emitter.watts * 34 / 100, 4);
|
||||||
|
|
||||||
|
int i = (int) emitter.getPowerScaled(52);
|
||||||
|
drawTexturedModalRect(guiLeft + 26, guiTop + 69 - i, 176, 52 - i, 16, i);
|
||||||
|
|
||||||
|
Minecraft.getMinecraft().getTextureManager().bindTexture(emitter.tank.getSheet());
|
||||||
|
emitter.tank.renderTank(this, guiLeft + 8, guiTop + 69, emitter.tank.getTankType().textureX() * FluidTank.x, emitter.tank.getTankType().textureY() * FluidTank.y, 16, 52);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
protected void keyTyped(char p_73869_1_, int p_73869_2_)
|
||||||
|
{
|
||||||
|
if (this.field.textboxKeyTyped(p_73869_1_, p_73869_2_)) { }
|
||||||
|
else {
|
||||||
|
super.keyTyped(p_73869_1_, p_73869_2_);
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -138,8 +138,6 @@ public class GUIMachineReactorSmall extends GuiInfoContainer {
|
|||||||
if(diFurnace.tanks[2].getFill() > 0) {
|
if(diFurnace.tanks[2].getFill() > 0) {
|
||||||
int i = diFurnace.getSteamScaled(88);
|
int i = diFurnace.getSteamScaled(88);
|
||||||
|
|
||||||
//i = (int) Math.min(i, 160);
|
|
||||||
|
|
||||||
int offset = 234;
|
int offset = 234;
|
||||||
|
|
||||||
switch(diFurnace.tanks[2].getTankType()) {
|
switch(diFurnace.tanks[2].getTankType()) {
|
||||||
|
|||||||
@ -10,7 +10,6 @@ import org.lwjgl.input.Keyboard;
|
|||||||
import org.lwjgl.opengl.GL11;
|
import org.lwjgl.opengl.GL11;
|
||||||
|
|
||||||
import com.hbm.inventory.container.ContainerRadioRec;
|
import com.hbm.inventory.container.ContainerRadioRec;
|
||||||
import com.hbm.inventory.gui.GUIRadioRec.RadioButton;
|
|
||||||
import com.hbm.lib.RefStrings;
|
import com.hbm.lib.RefStrings;
|
||||||
import com.hbm.packet.AuxButtonPacket;
|
import com.hbm.packet.AuxButtonPacket;
|
||||||
import com.hbm.packet.PacketDispatcher;
|
import com.hbm.packet.PacketDispatcher;
|
||||||
|
|||||||
@ -1,34 +1,21 @@
|
|||||||
package com.hbm.packet;
|
package com.hbm.packet;
|
||||||
|
|
||||||
import com.hbm.explosion.ExplosionLarge;
|
|
||||||
import com.hbm.handler.FluidTypeHandler.FluidType;
|
import com.hbm.handler.FluidTypeHandler.FluidType;
|
||||||
import com.hbm.items.weapon.ItemMissile.PartSize;
|
import com.hbm.items.weapon.ItemMissile.PartSize;
|
||||||
import com.hbm.saveddata.SatelliteSaveStructure;
|
|
||||||
import com.hbm.saveddata.SatelliteSavedData;
|
|
||||||
import com.hbm.tileentity.bomb.TileEntityLaunchTable;
|
import com.hbm.tileentity.bomb.TileEntityLaunchTable;
|
||||||
import com.hbm.tileentity.bomb.TileEntityTurretCIWS;
|
import com.hbm.tileentity.machine.TileEntityCoreEmitter;
|
||||||
import com.hbm.tileentity.bomb.TileEntityTurretCheapo;
|
|
||||||
import com.hbm.tileentity.machine.TileEntityAMSBase;
|
|
||||||
import com.hbm.tileentity.machine.TileEntityAMSEmitter;
|
|
||||||
import com.hbm.tileentity.machine.TileEntityAMSLimiter;
|
|
||||||
import com.hbm.tileentity.machine.TileEntityForceField;
|
import com.hbm.tileentity.machine.TileEntityForceField;
|
||||||
import com.hbm.tileentity.machine.TileEntityMachineDiesel;
|
|
||||||
import com.hbm.tileentity.machine.TileEntityMachineMissileAssembly;
|
import com.hbm.tileentity.machine.TileEntityMachineMissileAssembly;
|
||||||
import com.hbm.tileentity.machine.TileEntityMachineReactorLarge;
|
import com.hbm.tileentity.machine.TileEntityMachineReactorLarge;
|
||||||
import com.hbm.tileentity.machine.TileEntityMachineReactorSmall;
|
import com.hbm.tileentity.machine.TileEntityMachineReactorSmall;
|
||||||
import com.hbm.tileentity.machine.TileEntityMachineSeleniumEngine;
|
|
||||||
import com.hbm.tileentity.machine.TileEntityRadioRec;
|
import com.hbm.tileentity.machine.TileEntityRadioRec;
|
||||||
import com.hbm.tileentity.machine.TileEntityReactorControl;
|
import com.hbm.tileentity.machine.TileEntityReactorControl;
|
||||||
|
|
||||||
import cpw.mods.fml.common.network.simpleimpl.IMessage;
|
import cpw.mods.fml.common.network.simpleimpl.IMessage;
|
||||||
import cpw.mods.fml.common.network.simpleimpl.IMessageHandler;
|
import cpw.mods.fml.common.network.simpleimpl.IMessageHandler;
|
||||||
import cpw.mods.fml.common.network.simpleimpl.MessageContext;
|
import cpw.mods.fml.common.network.simpleimpl.MessageContext;
|
||||||
import cpw.mods.fml.relauncher.Side;
|
|
||||||
import cpw.mods.fml.relauncher.SideOnly;
|
|
||||||
import io.netty.buffer.ByteBuf;
|
import io.netty.buffer.ByteBuf;
|
||||||
import net.minecraft.client.Minecraft;
|
|
||||||
import net.minecraft.entity.player.EntityPlayer;
|
import net.minecraft.entity.player.EntityPlayer;
|
||||||
import net.minecraft.init.Blocks;
|
|
||||||
import net.minecraft.tileentity.TileEntity;
|
import net.minecraft.tileentity.TileEntity;
|
||||||
|
|
||||||
public class AuxButtonPacket implements IMessage {
|
public class AuxButtonPacket implements IMessage {
|
||||||
@ -219,6 +206,17 @@ public class AuxButtonPacket implements IMessage {
|
|||||||
launcher.padSize = PartSize.values()[m.value];
|
launcher.padSize = PartSize.values()[m.value];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (te instanceof TileEntityCoreEmitter) {
|
||||||
|
TileEntityCoreEmitter core = (TileEntityCoreEmitter)te;
|
||||||
|
|
||||||
|
if(m.id == 0) {
|
||||||
|
core.watts = m.value;
|
||||||
|
}
|
||||||
|
if(m.id == 1) {
|
||||||
|
core.isOn = !core.isOn;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
//} catch (Exception x) { }
|
//} catch (Exception x) { }
|
||||||
|
|
||||||
return null;
|
return null;
|
||||||
|
|||||||
@ -41,8 +41,11 @@ public class RenderLaser extends Render {
|
|||||||
MovingObjectPosition pos = Library.rayTrace(player, 100, 1);
|
MovingObjectPosition pos = Library.rayTrace(player, 100, 1);
|
||||||
|
|
||||||
Vec3 skeleton = Vec3.createVectorHelper(pos.hitVec.xCoord - player.posX, pos.hitVec.yCoord - player.posY - player.getEyeHeight(), pos.hitVec.zCoord - player.posZ);
|
Vec3 skeleton = Vec3.createVectorHelper(pos.hitVec.xCoord - player.posX, pos.hitVec.yCoord - player.posY - player.getEyeHeight(), pos.hitVec.zCoord - player.posZ);
|
||||||
|
int init = (int) -(System.currentTimeMillis() % 360);
|
||||||
|
|
||||||
BeamPronter.prontHelix(skeleton, 0, 0, 0, EnumWaveType.SPIRAL, EnumBeamType.LINE, 0x0000ff, 0x8080ff, 0, (int)(skeleton.lengthVector() * 5), 0.2F);
|
//BeamPronter.prontHelix(skeleton, 0, 0, 0, EnumWaveType.SPIRAL, EnumBeamType.LINE, 0x0000ff, 0x8080ff, 0, (int)(skeleton.lengthVector() * 5), 0.2F);
|
||||||
|
BeamPronter.prontHelix(skeleton, EnumWaveType.SPIRAL, EnumBeamType.SOLID, 0xff5000, 0xff5000, init, (int) skeleton.lengthVector() + 1, 0.1F, 4, 0.05F);
|
||||||
|
BeamPronter.prontHelix(skeleton, EnumWaveType.SPIRAL, EnumBeamType.SOLID, 0xff3000, 0xff3000, init, 1, 0F, 4, 0.05F);
|
||||||
}
|
}
|
||||||
|
|
||||||
GL11.glPopMatrix();
|
GL11.glPopMatrix();
|
||||||
|
|||||||
@ -1,17 +1,12 @@
|
|||||||
package com.hbm.render.tileentity;
|
package com.hbm.render.tileentity;
|
||||||
|
|
||||||
import java.util.Random;
|
|
||||||
|
|
||||||
import org.lwjgl.opengl.GL11;
|
import org.lwjgl.opengl.GL11;
|
||||||
|
|
||||||
import com.hbm.lib.RefStrings;
|
|
||||||
import com.hbm.main.ResourceManager;
|
import com.hbm.main.ResourceManager;
|
||||||
import com.hbm.tileentity.machine.TileEntityAMSBase;
|
import com.hbm.tileentity.machine.TileEntityAMSBase;
|
||||||
|
|
||||||
import net.minecraft.client.renderer.Tessellator;
|
|
||||||
import net.minecraft.client.renderer.tileentity.TileEntitySpecialRenderer;
|
import net.minecraft.client.renderer.tileentity.TileEntitySpecialRenderer;
|
||||||
import net.minecraft.tileentity.TileEntity;
|
import net.minecraft.tileentity.TileEntity;
|
||||||
import net.minecraft.util.ResourceLocation;
|
|
||||||
|
|
||||||
public class RenderAMSBase extends TileEntitySpecialRenderer {
|
public class RenderAMSBase extends TileEntitySpecialRenderer {
|
||||||
|
|
||||||
|
|||||||
@ -62,9 +62,9 @@ public class RenderAMSEmitter extends TileEntitySpecialRenderer {
|
|||||||
|
|
||||||
TileEntityAMSEmitter emitter = (TileEntityAMSEmitter)tileEntity;
|
TileEntityAMSEmitter emitter = (TileEntityAMSEmitter)tileEntity;
|
||||||
|
|
||||||
if(emitter.getWorldObj().getTileEntity(emitter.xCoord, emitter.yCoord - 9, emitter.zCoord) instanceof TileEntityAMSBase && !emitter.locked) {
|
if(emitter.getWorldObj().getTileEntity(emitter.xCoord, emitter.yCoord - 9, emitter.zCoord) instanceof TileEntityAMSBase && !emitter.locked || true) {
|
||||||
|
|
||||||
if(emitter.efficiency > 0) {
|
if(emitter.efficiency > 0 || true) {
|
||||||
|
|
||||||
double lastPosX = 0;
|
double lastPosX = 0;
|
||||||
double lastPosZ = 0;
|
double lastPosZ = 0;
|
||||||
|
|||||||
@ -2,7 +2,6 @@ package com.hbm.render.tileentity;
|
|||||||
|
|
||||||
import org.lwjgl.opengl.GL11;
|
import org.lwjgl.opengl.GL11;
|
||||||
|
|
||||||
import com.hbm.lib.RefStrings;
|
|
||||||
import com.hbm.main.ResourceManager;
|
import com.hbm.main.ResourceManager;
|
||||||
import com.hbm.render.util.BeamPronter;
|
import com.hbm.render.util.BeamPronter;
|
||||||
import com.hbm.render.util.BeamPronter.EnumBeamType;
|
import com.hbm.render.util.BeamPronter.EnumBeamType;
|
||||||
@ -13,10 +12,7 @@ import com.hbm.tileentity.machine.TileEntityCoreReceiver;
|
|||||||
|
|
||||||
import net.minecraft.client.renderer.tileentity.TileEntitySpecialRenderer;
|
import net.minecraft.client.renderer.tileentity.TileEntitySpecialRenderer;
|
||||||
import net.minecraft.tileentity.TileEntity;
|
import net.minecraft.tileentity.TileEntity;
|
||||||
import net.minecraft.util.ResourceLocation;
|
|
||||||
import net.minecraft.util.Vec3;
|
import net.minecraft.util.Vec3;
|
||||||
import net.minecraftforge.client.model.AdvancedModelLoader;
|
|
||||||
import net.minecraftforge.client.model.IModelCustom;
|
|
||||||
|
|
||||||
public class RenderCoreComponent extends TileEntitySpecialRenderer {
|
public class RenderCoreComponent extends TileEntitySpecialRenderer {
|
||||||
|
|
||||||
@ -54,8 +50,14 @@ public class RenderCoreComponent extends TileEntitySpecialRenderer {
|
|||||||
if(tileEntity instanceof TileEntityCoreEmitter) {
|
if(tileEntity instanceof TileEntityCoreEmitter) {
|
||||||
bindTexture(ResourceManager.dfc_emitter_tex);
|
bindTexture(ResourceManager.dfc_emitter_tex);
|
||||||
ResourceManager.dfc_emitter.renderAll();
|
ResourceManager.dfc_emitter.renderAll();
|
||||||
BeamPronter.prontHelix(Vec3.createVectorHelper(0, 0, 6), 0, 0.5, 0.5, EnumWaveType.SPIRAL, EnumBeamType.LINE, 0xFF0000, 0xFF8000, (int)tileEntity.getWorldObj().getTotalWorldTime() % 360 * -50, 100, 0.25F);
|
GL11.glTranslated(0, 0.5, 0);
|
||||||
|
int range = ((TileEntityCoreEmitter)tileEntity).beam;
|
||||||
|
|
||||||
|
if(range > 0) {
|
||||||
|
BeamPronter.prontHelix(Vec3.createVectorHelper(0, 0, range), EnumWaveType.SPIRAL, EnumBeamType.SOLID, 0xFFFF00, 0xFFFF00, 0, 1, 0F, 2, 0.0625F);
|
||||||
|
BeamPronter.prontHelix(Vec3.createVectorHelper(0, 0, range), EnumWaveType.RANDOM, EnumBeamType.SOLID, 0xFF6000, 0xFF6000, (int)tileEntity.getWorldObj().getTotalWorldTime() % 100, range * 2, 0.125F, 4, 0.0625F);
|
||||||
|
BeamPronter.prontHelix(Vec3.createVectorHelper(0, 0, range), EnumWaveType.RANDOM, EnumBeamType.SOLID, 0xFF6000, 0xFF6000, (int)tileEntity.getWorldObj().getTotalWorldTime() % 100 + 1, range * 2, 0.125F, 4, 0.0625F);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if(tileEntity instanceof TileEntityCoreReceiver) {
|
if(tileEntity instanceof TileEntityCoreReceiver) {
|
||||||
|
|||||||
@ -115,9 +115,10 @@ public class RendererObjTester extends TileEntitySpecialRenderer {
|
|||||||
bindTexture(new ResourceLocation(RefStrings.MODID, "textures/models/ModelCalStock.png"));*/
|
bindTexture(new ResourceLocation(RefStrings.MODID, "textures/models/ModelCalStock.png"));*/
|
||||||
//stock.renderAll(1F/16F);
|
//stock.renderAll(1F/16F);
|
||||||
|
|
||||||
SoyuzPronter.prontSoyuz();
|
//SoyuzPronter.prontSoyuz();
|
||||||
//TomPronter.prontTom();
|
//TomPronter.prontTom();
|
||||||
//BeamPronter.prontHelix(Vec3.createVectorHelper(0, 5, 0), 0.5, 0.5, 0.5, EnumWaveType.SPIRAL, EnumBeamType.LINE, 0x0000ff, 0xffff00, (int)tileEntity.getWorldObj().getTotalWorldTime() % 360 * 25, 25, 0.25F);
|
BeamPronter.prontHelix(Vec3.createVectorHelper(5, 5, 5), EnumWaveType.SPIRAL, EnumBeamType.SOLID, 0xff8000, 0xff8000, (int)tileEntity.getWorldObj().getTotalWorldTime() % 360 * 25, 25, 0.1F, 4, 0.05F);
|
||||||
|
BeamPronter.prontHelix(Vec3.createVectorHelper(5, 5, 5), EnumWaveType.SPIRAL, EnumBeamType.SOLID, 0xffff00, 0xffff00, (int)tileEntity.getWorldObj().getTotalWorldTime() % 360 * 25, 1, 0F, 4, 0.05F);
|
||||||
//BeamPronter.prontHelix(Vec3.createVectorHelper(0, 5, 0), 0.5, 0.5, 0.5, EnumWaveType.SPIRAL, EnumBeamType.LINE, 0x0000ff, 0xffff00, (int)tileEntity.getWorldObj().getTotalWorldTime() % 360 * 25 + 180, 25, 0.25F);
|
//BeamPronter.prontHelix(Vec3.createVectorHelper(0, 5, 0), 0.5, 0.5, 0.5, EnumWaveType.SPIRAL, EnumBeamType.LINE, 0x0000ff, 0xffff00, (int)tileEntity.getWorldObj().getTotalWorldTime() % 360 * 25 + 180, 25, 0.25F);
|
||||||
|
|
||||||
GL11.glPopMatrix();
|
GL11.glPopMatrix();
|
||||||
|
|||||||
@ -20,7 +20,17 @@ public class BeamPronter {
|
|||||||
LINE
|
LINE
|
||||||
}
|
}
|
||||||
|
|
||||||
public static void prontHelix(Vec3 skeleton, double x, double y, double z, EnumWaveType wave, EnumBeamType beam, int outerColor, int innerColor, int start, int segments, float size) {
|
public static void prontHelix(Vec3 skeleton, EnumWaveType wave, EnumBeamType beam, int outerColor, int innerColor, int start, int segments, float size, int layers, float thickness) {
|
||||||
|
|
||||||
|
GL11.glPushMatrix();
|
||||||
|
|
||||||
|
float sYaw = (float)(Math.atan2(skeleton.xCoord, skeleton.zCoord) * 180F / Math.PI);
|
||||||
|
float sqrt = MathHelper.sqrt_double(skeleton.xCoord * skeleton.xCoord + skeleton.zCoord * skeleton.zCoord);
|
||||||
|
float sPitch = (float)(Math.atan2(skeleton.yCoord, (double)sqrt) * 180F / Math.PI);
|
||||||
|
|
||||||
|
GL11.glRotatef(180, 0, 1F, 0);
|
||||||
|
GL11.glRotatef(sYaw, 0, 1F, 0);
|
||||||
|
GL11.glRotatef(sPitch - 90, 1F, 0, 0);
|
||||||
|
|
||||||
GL11.glPushMatrix();
|
GL11.glPushMatrix();
|
||||||
GL11.glDisable(GL11.GL_TEXTURE_2D);
|
GL11.glDisable(GL11.GL_TEXTURE_2D);
|
||||||
@ -34,18 +44,13 @@ public class BeamPronter {
|
|||||||
|
|
||||||
Tessellator tessellator = Tessellator.instance;
|
Tessellator tessellator = Tessellator.instance;
|
||||||
|
|
||||||
Vec3 unit = skeleton.normalize();
|
Vec3 unit = Vec3.createVectorHelper(0, 1, 0);
|
||||||
Random rand = new Random(start);
|
Random rand = new Random(start);
|
||||||
double length = skeleton.lengthVector();
|
double length = skeleton.lengthVector();
|
||||||
double segLength = length / segments;
|
double segLength = length / segments;
|
||||||
|
double lastX = 0;
|
||||||
float sYaw = (float)(Math.atan2(skeleton.xCoord, skeleton.zCoord));
|
double lastY = 0;
|
||||||
float sqrt = MathHelper.sqrt_double(skeleton.xCoord * skeleton.xCoord + skeleton.zCoord * skeleton.zCoord);
|
double lastZ = 0;
|
||||||
float sPitch = (float)(Math.atan2(skeleton.yCoord, (double)sqrt));
|
|
||||||
|
|
||||||
double lastX = x;
|
|
||||||
double lastY = y;
|
|
||||||
double lastZ = z;
|
|
||||||
|
|
||||||
for(int i = 0; i <= segments; i++) {
|
for(int i = 0; i <= segments; i++) {
|
||||||
|
|
||||||
@ -58,8 +63,8 @@ public class BeamPronter {
|
|||||||
spinner.rotateAroundY((float)Math.PI * 2 * rand.nextFloat());
|
spinner.rotateAroundY((float)Math.PI * 2 * rand.nextFloat());
|
||||||
}
|
}
|
||||||
|
|
||||||
spinner.rotateAroundX(sPitch + (float)Math.PI * 0.5F);
|
//spinner.rotateAroundX(sPitch + (float)Math.PI * 0.5F);
|
||||||
spinner.rotateAroundY(sYaw);
|
//spinner.rotateAroundY(sYaw);
|
||||||
|
|
||||||
double pX = unit.xCoord * segLength * i + spinner.xCoord;
|
double pX = unit.xCoord * segLength * i + spinner.xCoord;
|
||||||
double pY = unit.yCoord * segLength * i + spinner.yCoord;
|
double pY = unit.yCoord * segLength * i + spinner.yCoord;
|
||||||
@ -69,13 +74,49 @@ public class BeamPronter {
|
|||||||
|
|
||||||
tessellator.startDrawing(3);
|
tessellator.startDrawing(3);
|
||||||
tessellator.setColorOpaque_I(outerColor);
|
tessellator.setColorOpaque_I(outerColor);
|
||||||
tessellator.addVertex(pX + x, pY + y, pZ + z);
|
tessellator.addVertex(pX, pY, pZ);
|
||||||
tessellator.addVertex(lastX + x, lastY + y, lastZ + z);
|
tessellator.addVertex(lastX, lastY, lastZ);
|
||||||
tessellator.draw();
|
tessellator.draw();
|
||||||
}
|
}
|
||||||
|
|
||||||
if(beam == EnumBeamType.SOLID && i > 0) {
|
if(beam == EnumBeamType.SOLID && i > 0) {
|
||||||
|
|
||||||
|
float radius = thickness / layers;
|
||||||
|
|
||||||
|
for(int j = 1; j <= layers; j++) {
|
||||||
|
|
||||||
|
float inter = (float)(j - 1) / (float)(layers - 1);
|
||||||
|
int color = (int) (outerColor + (innerColor - outerColor) * inter);
|
||||||
|
|
||||||
|
tessellator.startDrawingQuads();
|
||||||
|
tessellator.setColorOpaque_I(color);
|
||||||
|
tessellator.addVertex(lastX + (radius * j), lastY, lastZ + (radius * j));
|
||||||
|
tessellator.addVertex(lastX + (radius * j), lastY, lastZ - (radius * j));
|
||||||
|
tessellator.addVertex(pX + (radius * j), pY, pZ - (radius * j));
|
||||||
|
tessellator.addVertex(pX + (radius * j), pY, pZ + (radius * j));
|
||||||
|
tessellator.draw();
|
||||||
|
tessellator.startDrawingQuads();
|
||||||
|
tessellator.setColorOpaque_I(color);
|
||||||
|
tessellator.addVertex(lastX - (radius * j), lastY, lastZ + (radius * j));
|
||||||
|
tessellator.addVertex(lastX - (radius * j), lastY, lastZ - (radius * j));
|
||||||
|
tessellator.addVertex(pX - (radius * j), pY, pZ - (radius * j));
|
||||||
|
tessellator.addVertex(pX - (radius * j), pY, pZ + (radius * j));
|
||||||
|
tessellator.draw();
|
||||||
|
tessellator.startDrawingQuads();
|
||||||
|
tessellator.setColorOpaque_I(color);
|
||||||
|
tessellator.addVertex(lastX + (radius * j), lastY, lastZ + (radius * j));
|
||||||
|
tessellator.addVertex(lastX - (radius * j), lastY, lastZ + (radius * j));
|
||||||
|
tessellator.addVertex(pX - (radius * j), pY, pZ + (radius * j));
|
||||||
|
tessellator.addVertex(pX + (radius * j), pY, pZ + (radius * j));
|
||||||
|
tessellator.draw();
|
||||||
|
tessellator.startDrawingQuads();
|
||||||
|
tessellator.setColorOpaque_I(color);
|
||||||
|
tessellator.addVertex(lastX + (radius * j), lastY, lastZ - (radius * j));
|
||||||
|
tessellator.addVertex(lastX - (radius * j), lastY, lastZ - (radius * j));
|
||||||
|
tessellator.addVertex(pX - (radius * j), pY, pZ - (radius * j));
|
||||||
|
tessellator.addVertex(pX + (radius * j), pY, pZ - (radius * j));
|
||||||
|
tessellator.draw();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
lastX = pX;
|
lastX = pX;
|
||||||
@ -87,8 +128,8 @@ public class BeamPronter {
|
|||||||
|
|
||||||
tessellator.startDrawing(3);
|
tessellator.startDrawing(3);
|
||||||
tessellator.setColorOpaque_I(innerColor);
|
tessellator.setColorOpaque_I(innerColor);
|
||||||
tessellator.addVertex(x, y, z);
|
tessellator.addVertex(0, 0, 0);
|
||||||
tessellator.addVertex(x + skeleton.xCoord, y + skeleton.yCoord, z + skeleton.zCoord);
|
tessellator.addVertex(0, skeleton.lengthVector(), 0);
|
||||||
tessellator.draw();
|
tessellator.draw();
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -100,6 +141,8 @@ public class BeamPronter {
|
|||||||
GL11.glEnable(GL11.GL_LIGHTING);
|
GL11.glEnable(GL11.GL_LIGHTING);
|
||||||
GL11.glEnable(GL11.GL_TEXTURE_2D);
|
GL11.glEnable(GL11.GL_TEXTURE_2D);
|
||||||
GL11.glPopMatrix();
|
GL11.glPopMatrix();
|
||||||
|
|
||||||
|
GL11.glPopMatrix();
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@ -9,10 +9,8 @@ import com.hbm.handler.FluidTypeHandler.FluidType;
|
|||||||
import com.hbm.interfaces.IConsumer;
|
import com.hbm.interfaces.IConsumer;
|
||||||
import com.hbm.interfaces.IFluidAcceptor;
|
import com.hbm.interfaces.IFluidAcceptor;
|
||||||
import com.hbm.interfaces.IFluidContainer;
|
import com.hbm.interfaces.IFluidContainer;
|
||||||
import com.hbm.interfaces.IFluidSource;
|
|
||||||
import com.hbm.inventory.FluidTank;
|
import com.hbm.inventory.FluidTank;
|
||||||
import com.hbm.items.ModItems;
|
import com.hbm.items.ModItems;
|
||||||
import com.hbm.items.special.ItemBattery;
|
|
||||||
import com.hbm.lib.Library;
|
import com.hbm.lib.Library;
|
||||||
import com.hbm.packet.AuxElectricityPacket;
|
import com.hbm.packet.AuxElectricityPacket;
|
||||||
import com.hbm.packet.AuxGaugePacket;
|
import com.hbm.packet.AuxGaugePacket;
|
||||||
|
|||||||
@ -8,21 +8,35 @@ import com.hbm.interfaces.IConsumer;
|
|||||||
import com.hbm.interfaces.IFluidAcceptor;
|
import com.hbm.interfaces.IFluidAcceptor;
|
||||||
import com.hbm.interfaces.ILaserable;
|
import com.hbm.interfaces.ILaserable;
|
||||||
import com.hbm.inventory.FluidTank;
|
import com.hbm.inventory.FluidTank;
|
||||||
|
import com.hbm.lib.ModDamageSource;
|
||||||
import com.hbm.tileentity.TileEntityMachineBase;
|
import com.hbm.tileentity.TileEntityMachineBase;
|
||||||
|
|
||||||
|
import cpw.mods.fml.relauncher.Side;
|
||||||
|
import cpw.mods.fml.relauncher.SideOnly;
|
||||||
import net.minecraft.block.Block;
|
import net.minecraft.block.Block;
|
||||||
|
import net.minecraft.entity.Entity;
|
||||||
|
import net.minecraft.init.Blocks;
|
||||||
|
import net.minecraft.tileentity.TileEntity;
|
||||||
|
import net.minecraft.util.AxisAlignedBB;
|
||||||
|
import net.minecraft.util.MathHelper;
|
||||||
import net.minecraftforge.common.util.ForgeDirection;
|
import net.minecraftforge.common.util.ForgeDirection;
|
||||||
|
|
||||||
public class TileEntityCoreEmitter extends TileEntityMachineBase implements IConsumer, IFluidAcceptor, ILaserable {
|
public class TileEntityCoreEmitter extends TileEntityMachineBase implements IConsumer, IFluidAcceptor, ILaserable {
|
||||||
|
|
||||||
public long power;
|
public long power;
|
||||||
public static final long maxPower = 1000000000L;
|
public static final long maxPower = 1000000000L;
|
||||||
|
public int watts;
|
||||||
|
public int beam;
|
||||||
public long joules;
|
public long joules;
|
||||||
public boolean isOn;
|
public boolean isOn;
|
||||||
public FluidTank tank;
|
public FluidTank tank;
|
||||||
|
public long prev;
|
||||||
|
|
||||||
|
public static final int range = 50;
|
||||||
|
|
||||||
public TileEntityCoreEmitter() {
|
public TileEntityCoreEmitter() {
|
||||||
super(2);
|
super(0);
|
||||||
|
tank = new FluidTank(FluidType.CRYOGEL, 64000, 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@ -35,19 +49,110 @@ public class TileEntityCoreEmitter extends TileEntityMachineBase implements ICon
|
|||||||
|
|
||||||
if (!worldObj.isRemote) {
|
if (!worldObj.isRemote) {
|
||||||
|
|
||||||
//tank.setType(0, 1, slots);
|
watts = MathHelper.clamp_int(watts, 1, 100);
|
||||||
//tank.updateTank(xCoord, yCoord, zCoord);
|
long demand = maxPower * watts / 2000;
|
||||||
|
|
||||||
ForgeDirection dir = ForgeDirection.getOrientation(this.getBlockMetadata());
|
tank.updateTank(xCoord, yCoord, zCoord);
|
||||||
int range = 50;
|
|
||||||
|
|
||||||
for(int i = 1; i <= range; i++) {
|
beam = 0;
|
||||||
|
|
||||||
Block b = worldObj.getBlock(xCoord + dir.offsetX, yCoord + dir.offsetY, zCoord + dir.offsetZ);
|
if(joules > 0 || prev > 0) {
|
||||||
|
|
||||||
|
if(tank.getFill() >= 20) {
|
||||||
|
tank.setFill(tank.getFill() - 20);
|
||||||
|
} else {
|
||||||
|
worldObj.setBlock(xCoord, yCoord, zCoord, Blocks.flowing_lava);
|
||||||
|
return;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if(isOn) {
|
||||||
|
|
||||||
|
if(power >= demand) {
|
||||||
|
power -= demand;
|
||||||
|
long add = watts;
|
||||||
|
joules += add;
|
||||||
|
}
|
||||||
|
prev = joules;
|
||||||
|
|
||||||
|
if(joules > 0) {
|
||||||
|
ForgeDirection dir = ForgeDirection.getOrientation(this.getBlockMetadata());
|
||||||
|
for(int i = 1; i <= range; i++) {
|
||||||
|
|
||||||
|
beam = i;
|
||||||
|
|
||||||
|
int x = xCoord + dir.offsetX * i;
|
||||||
|
int y = yCoord + dir.offsetY * i;
|
||||||
|
int z = zCoord + dir.offsetZ * i;
|
||||||
|
|
||||||
|
TileEntity te = worldObj.getTileEntity(x, y, z);
|
||||||
|
|
||||||
|
if(te instanceof ILaserable) {
|
||||||
|
|
||||||
|
((ILaserable)te).addEnergy(joules * 98 / 100);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
Block b = worldObj.getBlock(x, y, z);
|
||||||
|
|
||||||
|
if(b != Blocks.air) {
|
||||||
|
|
||||||
|
float hardness = b.getExplosionResistance(null);
|
||||||
|
if(hardness < 6000 && worldObj.rand.nextInt(20) == 0) {
|
||||||
|
worldObj.func_147480_a(x, y, z, false);
|
||||||
|
}
|
||||||
|
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
joules = 0;
|
||||||
|
|
||||||
|
double blx = Math.min(xCoord, xCoord + dir.offsetX * beam) + 0.2;
|
||||||
|
double bux = Math.max(xCoord, xCoord + dir.offsetX * beam) + 0.8;
|
||||||
|
double bly = Math.min(yCoord, yCoord + dir.offsetY * beam) + 0.2;
|
||||||
|
double buy = Math.max(yCoord, yCoord + dir.offsetY * beam) + 0.8;
|
||||||
|
double blz = Math.min(zCoord, zCoord + dir.offsetZ * beam) + 0.2;
|
||||||
|
double buz = Math.max(zCoord, zCoord + dir.offsetZ * beam) + 0.8;
|
||||||
|
|
||||||
|
List<Entity> list = worldObj.getEntitiesWithinAABB(Entity.class, AxisAlignedBB.getBoundingBox(blx, bly, blz, bux, buy, buz));
|
||||||
|
|
||||||
|
for(Entity e : list) {
|
||||||
|
e.attackEntityFrom(ModDamageSource.amsCore, 5);
|
||||||
|
e.setFire(10);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
joules = 0;
|
||||||
|
prev = 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
this.updateGauge((int) power, 0, 50);
|
||||||
|
this.updateGauge(watts, 1, 50);
|
||||||
|
this.updateGauge((int) prev, 2, 50);
|
||||||
|
this.updateGauge(beam, 3, 50);
|
||||||
|
this.updateGauge(isOn ? 1 : 0, 4, 250);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void processGauge(int val, int id) {
|
||||||
|
|
||||||
|
if(id == 0) power = val;
|
||||||
|
if(id == 1) watts = val;
|
||||||
|
if(id == 2) joules = val;
|
||||||
|
if(id == 3) beam = val;
|
||||||
|
if(id == 4) isOn = val == 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
public long getPowerScaled(long i) {
|
||||||
|
return (power * i) / maxPower;
|
||||||
|
}
|
||||||
|
|
||||||
|
public int getWattsScaled(int i) {
|
||||||
|
return (watts * i) / 100;
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void setFluidFill(int i, FluidType type) {
|
public void setFluidFill(int i, FluidType type) {
|
||||||
if(type.name().equals(tank.getTankType().name()))
|
if(type.name().equals(tank.getTankType().name()))
|
||||||
@ -108,4 +213,16 @@ public class TileEntityCoreEmitter extends TileEntityMachineBase implements ICon
|
|||||||
joules += energy;
|
joules += energy;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public AxisAlignedBB getRenderBoundingBox() {
|
||||||
|
return TileEntity.INFINITE_EXTENT_AABB;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
@SideOnly(Side.CLIENT)
|
||||||
|
public double getMaxRenderDistanceSquared()
|
||||||
|
{
|
||||||
|
return 65536.0D;
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||