diff options
| author | Johann Bernhardt <johann.bernhardt@tum.de> | 2021-12-12 19:38:06 +0100 |
|---|---|---|
| committer | Johann Bernhardt <johann.bernhardt@tum.de> | 2021-12-12 19:38:06 +0100 |
| commit | 311ab89f93558233a40079f7cb16605b141b5346 (patch) | |
| tree | c5f44ef47f441a57c5f57aa801f639c7879ed760 /src/main/java/gtPlusPlus/xmod/ic2/block/RTGGenerator | |
| parent | 896143b96132f5ac54aa8d8f7386f27487e5e530 (diff) | |
| download | GT5-Unofficial-311ab89f93558233a40079f7cb16605b141b5346.tar.gz GT5-Unofficial-311ab89f93558233a40079f7cb16605b141b5346.tar.bz2 GT5-Unofficial-311ab89f93558233a40079f7cb16605b141b5346.zip | |
Move sources and resources
Diffstat (limited to 'src/main/java/gtPlusPlus/xmod/ic2/block/RTGGenerator')
4 files changed, 385 insertions, 0 deletions
diff --git a/src/main/java/gtPlusPlus/xmod/ic2/block/RTGGenerator/BlockRTG.java b/src/main/java/gtPlusPlus/xmod/ic2/block/RTGGenerator/BlockRTG.java new file mode 100644 index 0000000000..2a1b5ab44d --- /dev/null +++ b/src/main/java/gtPlusPlus/xmod/ic2/block/RTGGenerator/BlockRTG.java @@ -0,0 +1,208 @@ +package gtPlusPlus.xmod.ic2.block.RTGGenerator; + +import java.util.List; +import java.util.Random; + +import org.apache.commons.lang3.mutable.MutableObject; + +import cpw.mods.fml.common.registry.GameRegistry; +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; + +import net.minecraft.block.material.Material; +import net.minecraft.creativetab.CreativeTabs; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.item.EnumRarity; +import net.minecraft.item.Item; +import net.minecraft.item.ItemStack; +import net.minecraft.tileentity.TileEntity; +import net.minecraft.world.World; + +import gtPlusPlus.core.creative.AddToCreativeTab; +import gtPlusPlus.xmod.ic2.block.kieticgenerator.tileentity.TileEntityKineticWindGenerator; +import gtPlusPlus.xmod.ic2.item.IC2_Items; +import gtPlusPlus.xmod.ic2.item.ItemGenerators; +import ic2.core.IC2; +import ic2.core.Ic2Items; +import ic2.core.block.BlockMultiID; +import ic2.core.block.TileEntityBlock; +import ic2.core.block.reactor.tileentity.TileEntityNuclearReactorElectric; +import ic2.core.init.InternalName; + +public class BlockRTG +extends BlockMultiID +{ + public BlockRTG(final InternalName internalName1) + { + super(internalName1, Material.iron, ItemGenerators.class); + this.setCreativeTab(AddToCreativeTab.tabMachines); + this.setHardness(3.0F); + this.setStepSound(soundTypeMetal); + + IC2_Items.blockRTG = new ItemStack(this, 1, 0); + IC2_Items.blockKineticGenerator = new ItemStack(this, 1, 1); + + GameRegistry.registerTileEntity(TileEntityRTG.class, "RTG Mach II"); + GameRegistry.registerTileEntity(TileEntityKineticWindGenerator.class, "Wind Ripper Mach II"); + } + + @SuppressWarnings({ "rawtypes", "unchecked" }) + @Override + public void getSubBlocks(final Item j, final CreativeTabs tabs, final List itemList) { + final Item item = Item.getItemFromBlock(this); + if (!item.getHasSubtypes()) { + itemList.add(new ItemStack(this)); + } else { + for (int i = 0; i < 16; i++) + { + final ItemStack is = new ItemStack(this, 1, i); + if (is.getItem().getUnlocalizedName(is) == null) { + break; + } + itemList.add(is); + } + } + } + + + @Override + public String getTextureFolder(final int id) + { + return "generator"; + } + + @Override + public int damageDropped(final int meta) + { + switch (meta) + { + case 2: + return 2; + } + return 0; + } + + @Override + public Class<? extends TileEntity> getTeClass(final int meta, final MutableObject<Class<?>[]> ctorArgTypes, final MutableObject<Object[]> ctorArgs) + { + try + { + switch (meta) + { + case 0: + return TileEntityRTG.class; + case 1: + return TileEntityKineticWindGenerator.class; + } + } + catch (final Exception e) + { + throw new RuntimeException(e); + } + return null; + } + + /* + * + * { + case 0: + return TileEntityGenerator.class; + case 1: + return TileEntityGeoGenerator.class; + case 2: + return TileEntityWaterGenerator.class; + case 3: + return TileEntitySolarGenerator.class; + case 4: + return TileEntityWindGenerator.class; + case 5: + return TileEntityNuclearReactorElectric.class; + case 6: + return TileEntityRTGenerator.class; + case 7: + return TileEntitySemifluidGenerator.class; + case 8: + return TileEntityStirlingGenerator.class; + case 9: + return TileEntityKineticGenerator.class; + } + * + * (non-Javadoc) + * @see net.minecraft.block.Block#randomDisplayTick(net.minecraft.world.World, int, int, int, java.util.Random) + */ + + @Override + public void randomDisplayTick(final World world, final int x, final int y, final int z, final Random random) + { + if (!IC2.platform.isRendering()) { + return; + } + final int meta = world.getBlockMetadata(x, y, z); + if ((meta == 0) && (this.isActive(world, x, y, z))) + { + final TileEntityBlock te = (TileEntityBlock)this.getOwnTe(world, x, y, z); + if (te == null) { + return; + } + final int l = te.getFacing(); + final float f = x + 0.5F; + final float f1 = y + 0.0F + ((random.nextFloat() * 6.0F) / 16.0F); + final float f2 = z + 0.5F; + final float f3 = 0.52F; + final float f4 = (random.nextFloat() * 0.6F) - 0.3F; + switch (l) + { + case 4: + world.spawnParticle("smoke", f - f3, f1, f2 + f4, 0.0D, 0.0D, 0.0D); + world.spawnParticle("flame", f - f3, f1, f2 + f4, 0.0D, 0.0D, 0.0D); + break; + case 5: + world.spawnParticle("smoke", f + f3, f1, f2 + f4, 0.0D, 0.0D, 0.0D); + world.spawnParticle("flame", f + f3, f1, f2 + f4, 0.0D, 0.0D, 0.0D); + break; + case 2: + world.spawnParticle("smoke", f + f4, f1, f2 - f3, 0.0D, 0.0D, 0.0D); + world.spawnParticle("flame", f + f4, f1, f2 - f3, 0.0D, 0.0D, 0.0D); + break; + case 3: + world.spawnParticle("smoke", f + f4, f1, f2 + f3, 0.0D, 0.0D, 0.0D); + world.spawnParticle("flame", f + f4, f1, f2 + f3, 0.0D, 0.0D, 0.0D); + } + } + else if (meta == 5) + { + final TileEntityNuclearReactorElectric te = (TileEntityNuclearReactorElectric)this.getOwnTe(world, x, y, z); + if (te == null) { + return; + } + int puffs = te.heat / 1000; + if (puffs <= 0) { + return; + } + puffs = world.rand.nextInt(puffs); + for (int n = 0; n < puffs; n++) { + world.spawnParticle("smoke", x + random.nextFloat(), y + 0.95F, z + random.nextFloat(), 0.0D, 0.0D, 0.0D); + } + puffs -= world.rand.nextInt(4) + 3; + for (int n = 0; n < puffs; n++) { + world.spawnParticle("flame", x + random.nextFloat(), y + 1.0F, z + random.nextFloat(), 0.0D, 0.0D, 0.0D); + } + } + } + + @Override + public boolean onBlockActivated(final World world, final int i, final int j, final int k, final EntityPlayer entityplayer, final int side, final float a, final float b, final float c) + { + if ((entityplayer.getCurrentEquippedItem() != null) && (entityplayer.getCurrentEquippedItem().isItemEqual(Ic2Items.reactorChamber))) { + return false; + } + return super.onBlockActivated(world, i, j, k, entityplayer, side, a, b, c); + } + + @Override + @SideOnly(Side.CLIENT) + public EnumRarity getRarity(final ItemStack stack) + { + return stack.getItemDamage() == 5 ? EnumRarity.uncommon : EnumRarity.common; + } +} diff --git a/src/main/java/gtPlusPlus/xmod/ic2/block/RTGGenerator/TileEntityRTG.java b/src/main/java/gtPlusPlus/xmod/ic2/block/RTGGenerator/TileEntityRTG.java new file mode 100644 index 0000000000..aa50243914 --- /dev/null +++ b/src/main/java/gtPlusPlus/xmod/ic2/block/RTGGenerator/TileEntityRTG.java @@ -0,0 +1,88 @@ +package gtPlusPlus.xmod.ic2.block.RTGGenerator; + +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; + +import net.minecraft.client.gui.GuiScreen; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.item.Item; + +import gtPlusPlus.xmod.ic2.block.RTGGenerator.gui.CONTAINER_RTG; +import gtPlusPlus.xmod.ic2.block.RTGGenerator.gui.GUI_RTG; +import ic2.core.ContainerBase; +import ic2.core.Ic2Items; +import ic2.core.block.generator.tileentity.TileEntityRTGenerator; +import ic2.core.block.invslot.InvSlotConsumable; +import ic2.core.block.invslot.InvSlotConsumableId; + +public class TileEntityRTG +extends TileEntityRTGenerator +{ + public final InvSlotConsumable fuelSlot; + + public TileEntityRTG() + { + this.fuelSlot = new InvSlotConsumableId(this, "fuelSlot", 0, 12, new Item[] { Ic2Items.RTGPellets.getItem() }); + } + + @Override + public int gaugeFuelScaled(final int i) + { + return i; + } + + @Override + public boolean gainEnergy() + { + int counter = 0; + for (int i = 0; i < this.fuelSlot.size(); i++) { + if (this.fuelSlot.get(i) != null) { + counter++; + } + } + if (counter == 0) { + return false; + } + this.storage += (int)Math.pow(2.0D, counter - 1); + return true; + } + + @Override + public boolean gainFuel() + { + return false; + } + + @Override + public boolean needsFuel() + { + return true; + } + + @Override + public String getInventoryName() + { + return "RTG"; + } + + @Override + public ContainerBase<TileEntityRTGenerator> getGuiContainer(final EntityPlayer entityPlayer) + { + return new CONTAINER_RTG(entityPlayer, this); + } + + @Override + @SideOnly(Side.CLIENT) + public GuiScreen getGui(final EntityPlayer entityPlayer, final boolean isAdmin) + { + return new GUI_RTG(new CONTAINER_RTG(entityPlayer, this)); + } + + @Override + public boolean delayActiveUpdate() + { + return true; + } + + +} diff --git a/src/main/java/gtPlusPlus/xmod/ic2/block/RTGGenerator/gui/CONTAINER_RTG.java b/src/main/java/gtPlusPlus/xmod/ic2/block/RTGGenerator/gui/CONTAINER_RTG.java new file mode 100644 index 0000000000..0afe47c983 --- /dev/null +++ b/src/main/java/gtPlusPlus/xmod/ic2/block/RTGGenerator/gui/CONTAINER_RTG.java @@ -0,0 +1,37 @@ +package gtPlusPlus.xmod.ic2.block.RTGGenerator.gui; + +import java.util.List; + +import net.minecraft.entity.player.EntityPlayer; + +import gtPlusPlus.xmod.ic2.block.RTGGenerator.TileEntityRTG; +import ic2.core.block.generator.container.ContainerRTGenerator; +import ic2.core.slot.SlotInvSlot; + +public class CONTAINER_RTG +extends ContainerRTGenerator +{ + public CONTAINER_RTG(final EntityPlayer entityPlayer, final TileEntityRTG tileEntity1) + { + super(entityPlayer, tileEntity1); + for (int i = 0; i < 4; i++) { + this.addSlotToContainer(new SlotInvSlot(tileEntity1.fuelSlot, i, 36 + (i * 18), 18)); + } + for (int i = 4; i < 8; i++) { + this.addSlotToContainer(new SlotInvSlot(tileEntity1.fuelSlot, i, 36 + ((i - 4) * 18), 36)); + } + for (int i = 8; i < 12; i++) { + this.addSlotToContainer(new SlotInvSlot(tileEntity1.fuelSlot, i, 36 + ((i - 8) * 18), 54)); + } + } + + @Override + public List<String> getNetworkedFields() + { + final List<String> ret = super.getNetworkedFields(); + + ret.add("storage"); + + return ret; + } +} diff --git a/src/main/java/gtPlusPlus/xmod/ic2/block/RTGGenerator/gui/GUI_RTG.java b/src/main/java/gtPlusPlus/xmod/ic2/block/RTGGenerator/gui/GUI_RTG.java new file mode 100644 index 0000000000..c6e09a78d1 --- /dev/null +++ b/src/main/java/gtPlusPlus/xmod/ic2/block/RTGGenerator/gui/GUI_RTG.java @@ -0,0 +1,52 @@ +package gtPlusPlus.xmod.ic2.block.RTGGenerator.gui; + +import org.lwjgl.opengl.GL11; + +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; + +import net.minecraft.util.ResourceLocation; +import net.minecraft.util.StatCollector; + +import gtPlusPlus.xmod.ic2.block.RTGGenerator.TileEntityRTG; +import ic2.core.IC2; +import ic2.core.block.generator.gui.GuiRTGenerator; +import ic2.core.util.GuiTooltipHelper; + +@SideOnly(Side.CLIENT) +public class GUI_RTG +extends GuiRTGenerator +{ + public CONTAINER_RTG container; + + public GUI_RTG(final CONTAINER_RTG container1) + { + super(container1); + + this.container = container1; + this.name = "RTG Mach II"; + } + + @Override + protected void drawGuiContainerForegroundLayer(final int par1, final int par2) + { + this.fontRendererObj.drawString(this.name, (this.xSize - this.fontRendererObj.getStringWidth(this.name)) / 2, 4, 4210752); + + GuiTooltipHelper.drawAreaTooltip(par1 - this.guiLeft, par2 - this.guiTop, StatCollector.translateToLocalFormatted("ic2.generic.text.bufferEU", new Object[] { Double.valueOf(((TileEntityRTG)this.container.base).storage) }), 117, 38, 150, 48); + } + + @Override + protected void drawGuiContainerBackgroundLayer(final float f, final int x, final int y) + { + GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F); + this.mc.getTextureManager().bindTexture(background); + final int j = (this.width - this.xSize) / 2; + final int k = (this.height - this.ySize) / 2; + this.drawTexturedModalRect(j, k, 0, 0, this.xSize, this.ySize); + + final int i1 = ((TileEntityRTG)this.container.base).gaugeStorageScaled(31); + this.drawTexturedModalRect(j + 119, k + 40, 179, 3, i1, 8); + } + + private static final ResourceLocation background = new ResourceLocation(IC2.textureDomain, "textures/gui/GUIRTGenerator.png"); +} |
