mirror of
https://github.com/HbmMods/Hbm-s-Nuclear-Tech-GIT.git
synced 2026-08-10 17:55:44 +00:00
numitrons
This commit is contained in:
parent
7dda5c1c0a
commit
865ad1377f
@ -9,6 +9,12 @@
|
|||||||
* Base production rates for plasma forge exclusive recipes are very slow
|
* Base production rates for plasma forge exclusive recipes are very slow
|
||||||
* Does not accept upgrades, however, can use up otherwise useless fission fragments and unstable isotopes to gain a temporary x4 speed bonus with no penalty
|
* Does not accept upgrades, however, can use up otherwise useless fission fragments and unstable isotopes to gain a temporary x4 speed bonus with no penalty
|
||||||
* Can also assemble fusion reactor vessels, which are cheaper but need quantum circuits
|
* Can also assemble fusion reactor vessels, which are cheaper but need quantum circuits
|
||||||
|
* Blank Redstone-over-Radio Panel
|
||||||
|
* A cheap way of extending the size of RoR control consoles without needing unconfigured button or gauge panels
|
||||||
|
* Now used to craft the other RoR panel variants
|
||||||
|
* Redstone-over-Radio numeric display
|
||||||
|
* Shows integer RoR values as numbers
|
||||||
|
* Can have up to two display panels per block
|
||||||
|
|
||||||
## Changed
|
## Changed
|
||||||
* Doubled bismuth and tantalum yields from high-performance solvent bedrock ore processing
|
* Doubled bismuth and tantalum yields from high-performance solvent bedrock ore processing
|
||||||
@ -21,6 +27,7 @@
|
|||||||
* The restrictions for firing Folly (using the scope, waiting for the startup) no longer apply to NPCs (which can never fulfill them anyway), allowing them to actually use it
|
* The restrictions for firing Folly (using the scope, waiting for the startup) no longer apply to NPCs (which can never fulfill them anyway), allowing them to actually use it
|
||||||
* The plinking sound played when a drill cannot break a block now only plays once for the entire AoE instead of once for every single block that couldn't be broken
|
* The plinking sound played when a drill cannot break a block now only plays once for the entire AoE instead of once for every single block that couldn't be broken
|
||||||
* Fluid barrels now have a sideways connector when hooked up to pipes, bridging the two pixel gap
|
* Fluid barrels now have a sideways connector when hooked up to pipes, bridging the two pixel gap
|
||||||
|
* Redstone over radio panels now render with their unique parts in the inventory, making the items easier to tell apart
|
||||||
|
|
||||||
## Fixed
|
## Fixed
|
||||||
* Fixed size 15 dual kerosene thruster not rendering at all
|
* Fixed size 15 dual kerosene thruster not rendering at all
|
||||||
|
|||||||
@ -1090,9 +1090,11 @@ public class ModBlocks {
|
|||||||
public static Block rbmk_heater;
|
public static Block rbmk_heater;
|
||||||
public static Block rbmk_console;
|
public static Block rbmk_console;
|
||||||
public static Block rbmk_crane_console;
|
public static Block rbmk_crane_console;
|
||||||
|
public static Block rbmk_display_blank;
|
||||||
public static Block rbmk_display;
|
public static Block rbmk_display;
|
||||||
public static Block rbmk_key_pad;
|
public static Block rbmk_key_pad;
|
||||||
public static Block rbmk_gauge;
|
public static Block rbmk_gauge;
|
||||||
|
public static Block rbmk_numitron;
|
||||||
public static Block rbmk_autoloader;
|
public static Block rbmk_autoloader;
|
||||||
public static Block rbmk_loader;
|
public static Block rbmk_loader;
|
||||||
public static Block rbmk_steam_inlet;
|
public static Block rbmk_steam_inlet;
|
||||||
@ -2113,9 +2115,11 @@ public class ModBlocks {
|
|||||||
rbmk_heater = new RBMKHeater().setBlockName("rbmk_heater").setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":rbmk/rbmk_heater");
|
rbmk_heater = new RBMKHeater().setBlockName("rbmk_heater").setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":rbmk/rbmk_heater");
|
||||||
rbmk_console = new RBMKConsole().setBlockName("rbmk_console").setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":rbmk/rbmk_console");
|
rbmk_console = new RBMKConsole().setBlockName("rbmk_console").setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":rbmk/rbmk_console");
|
||||||
rbmk_crane_console = new RBMKCraneConsole().setBlockName("rbmk_crane_console").setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":rbmk/rbmk_crane_console");
|
rbmk_crane_console = new RBMKCraneConsole().setBlockName("rbmk_crane_console").setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":rbmk/rbmk_crane_console");
|
||||||
|
rbmk_display_blank = new RBMKMiniPanelBase().setBlockName("rbmk_display_blank").setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":rbmk/rbmk_display");
|
||||||
rbmk_display = new RBMKDisplay().setBlockName("rbmk_display").setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":rbmk/rbmk_display");
|
rbmk_display = new RBMKDisplay().setBlockName("rbmk_display").setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":rbmk/rbmk_display");
|
||||||
rbmk_key_pad = new RBMKKeyPad().setBlockName("rbmk_key_pad").setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":rbmk/rbmk_display");
|
rbmk_key_pad = new RBMKKeyPad().setBlockName("rbmk_key_pad").setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":rbmk/rbmk_display");
|
||||||
rbmk_gauge = new RBMKGauge().setBlockName("rbmk_gauge").setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":rbmk/rbmk_display");
|
rbmk_gauge = new RBMKGauge().setBlockName("rbmk_gauge").setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":rbmk/rbmk_display");
|
||||||
|
rbmk_numitron = new RBMKNumitron().setBlockName("rbmk_numitron").setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":rbmk/rbmk_display");
|
||||||
rbmk_autoloader = new RBMKAutoloader().setBlockName("rbmk_autoloader").setCreativeTab(MainRegistry.machineTab).setHardness(50.0F).setResistance(60.0F).setBlockTextureName(RefStrings.MODID + ":rbmk_autoloader");
|
rbmk_autoloader = new RBMKAutoloader().setBlockName("rbmk_autoloader").setCreativeTab(MainRegistry.machineTab).setHardness(50.0F).setResistance(60.0F).setBlockTextureName(RefStrings.MODID + ":rbmk_autoloader");
|
||||||
rbmk_loader = new RBMKLoader(Material.iron).setBlockName("rbmk_loader").setCreativeTab(MainRegistry.machineTab).setHardness(50.0F).setResistance(60.0F).setBlockTextureName(RefStrings.MODID + ":rbmk_loader");
|
rbmk_loader = new RBMKLoader(Material.iron).setBlockName("rbmk_loader").setCreativeTab(MainRegistry.machineTab).setHardness(50.0F).setResistance(60.0F).setBlockTextureName(RefStrings.MODID + ":rbmk_loader");
|
||||||
rbmk_steam_inlet = new RBMKInlet(Material.iron).setBlockName("rbmk_steam_inlet").setCreativeTab(MainRegistry.machineTab).setHardness(50.0F).setResistance(60.0F).setBlockTextureName(RefStrings.MODID + ":rbmk_steam_inlet");
|
rbmk_steam_inlet = new RBMKInlet(Material.iron).setBlockName("rbmk_steam_inlet").setCreativeTab(MainRegistry.machineTab).setHardness(50.0F).setResistance(60.0F).setBlockTextureName(RefStrings.MODID + ":rbmk_steam_inlet");
|
||||||
@ -3107,9 +3111,11 @@ public class ModBlocks {
|
|||||||
GameRegistry.registerBlock(rbmk_heater, rbmk_heater.getUnlocalizedName());
|
GameRegistry.registerBlock(rbmk_heater, rbmk_heater.getUnlocalizedName());
|
||||||
GameRegistry.registerBlock(rbmk_console, rbmk_console.getUnlocalizedName());
|
GameRegistry.registerBlock(rbmk_console, rbmk_console.getUnlocalizedName());
|
||||||
GameRegistry.registerBlock(rbmk_crane_console, rbmk_crane_console.getUnlocalizedName());
|
GameRegistry.registerBlock(rbmk_crane_console, rbmk_crane_console.getUnlocalizedName());
|
||||||
|
register(rbmk_display_blank);
|
||||||
register(rbmk_display);
|
register(rbmk_display);
|
||||||
register(rbmk_key_pad);
|
register(rbmk_key_pad);
|
||||||
register(rbmk_gauge);
|
register(rbmk_gauge);
|
||||||
|
register(rbmk_numitron);
|
||||||
register(rbmk_autoloader);
|
register(rbmk_autoloader);
|
||||||
register(rbmk_loader);
|
register(rbmk_loader);
|
||||||
register(rbmk_steam_inlet);
|
register(rbmk_steam_inlet);
|
||||||
|
|||||||
@ -1,10 +1,16 @@
|
|||||||
package com.hbm.blocks.machine.rbmk;
|
package com.hbm.blocks.machine.rbmk;
|
||||||
|
|
||||||
|
import org.lwjgl.opengl.GL11;
|
||||||
|
|
||||||
import com.hbm.main.MainRegistry;
|
import com.hbm.main.MainRegistry;
|
||||||
|
import com.hbm.main.ResourceManager;
|
||||||
|
import com.hbm.render.tileentity.RenderArcFurnace;
|
||||||
import com.hbm.tileentity.machine.rbmk.TileEntityRBMKGauge;
|
import com.hbm.tileentity.machine.rbmk.TileEntityRBMKGauge;
|
||||||
|
|
||||||
import api.hbm.block.IToolable;
|
import api.hbm.block.IToolable;
|
||||||
import cpw.mods.fml.common.network.internal.FMLNetworkHandler;
|
import cpw.mods.fml.common.network.internal.FMLNetworkHandler;
|
||||||
|
import net.minecraft.block.Block;
|
||||||
|
import net.minecraft.client.Minecraft;
|
||||||
import net.minecraft.entity.player.EntityPlayer;
|
import net.minecraft.entity.player.EntityPlayer;
|
||||||
import net.minecraft.tileentity.TileEntity;
|
import net.minecraft.tileentity.TileEntity;
|
||||||
import net.minecraft.world.World;
|
import net.minecraft.world.World;
|
||||||
@ -22,4 +28,39 @@ public class RBMKGauge extends RBMKMiniPanelBase implements IToolable {
|
|||||||
if(world.isRemote) FMLNetworkHandler.openGui(player, MainRegistry.instance, 0, world, x, y, z);
|
if(world.isRemote) FMLNetworkHandler.openGui(player, MainRegistry.instance, 0, world, x, y, z);
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void renderInventoryBlock(Block block, int meta, int modelId, Object renderBlocks) {
|
||||||
|
super.renderInventoryBlock(block, meta, modelId, renderBlocks);
|
||||||
|
|
||||||
|
GL11.glPushMatrix();
|
||||||
|
GL11.glTranslated(0, -0.5, 0);
|
||||||
|
GL11.glRotated(-90, 0, 1, 0);
|
||||||
|
|
||||||
|
for(int i = 0; i < 4; i++) {
|
||||||
|
|
||||||
|
GL11.glPushMatrix();
|
||||||
|
GL11.glTranslated(0.25, (i / 2) * -0.5 + 0.25, (i % 2) * -0.5 + 0.25);
|
||||||
|
|
||||||
|
GL11.glColor3f(1F, 1F, 1F);
|
||||||
|
Minecraft.getMinecraft().getTextureManager().bindTexture(ResourceManager.rbmk_gauge_tex);
|
||||||
|
ResourceManager.rbmk_gauge.renderPart("Gauge");
|
||||||
|
|
||||||
|
GL11.glColor3f(0.5F, 0F, 0F);
|
||||||
|
GL11.glTranslated(0, 0.4375, -0.125);
|
||||||
|
GL11.glRotated(85, 1, 0, 0);
|
||||||
|
GL11.glTranslated(0, -0.4375, 0.125);
|
||||||
|
|
||||||
|
GL11.glDisable(GL11.GL_TEXTURE_2D);
|
||||||
|
RenderArcFurnace.fullbright(true);
|
||||||
|
GL11.glEnable(GL11.GL_LIGHTING);
|
||||||
|
ResourceManager.rbmk_gauge.renderPart("Needle");
|
||||||
|
RenderArcFurnace.fullbright(false);
|
||||||
|
GL11.glEnable(GL11.GL_TEXTURE_2D);
|
||||||
|
|
||||||
|
GL11.glPopMatrix();
|
||||||
|
}
|
||||||
|
|
||||||
|
GL11.glPopMatrix();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -1,10 +1,15 @@
|
|||||||
package com.hbm.blocks.machine.rbmk;
|
package com.hbm.blocks.machine.rbmk;
|
||||||
|
|
||||||
|
import org.lwjgl.opengl.GL11;
|
||||||
|
|
||||||
import com.hbm.main.MainRegistry;
|
import com.hbm.main.MainRegistry;
|
||||||
|
import com.hbm.main.ResourceManager;
|
||||||
import com.hbm.tileentity.machine.rbmk.TileEntityRBMKKeyPad;
|
import com.hbm.tileentity.machine.rbmk.TileEntityRBMKKeyPad;
|
||||||
|
|
||||||
import api.hbm.block.IToolable;
|
import api.hbm.block.IToolable;
|
||||||
import cpw.mods.fml.common.network.internal.FMLNetworkHandler;
|
import cpw.mods.fml.common.network.internal.FMLNetworkHandler;
|
||||||
|
import net.minecraft.block.Block;
|
||||||
|
import net.minecraft.client.Minecraft;
|
||||||
import net.minecraft.entity.player.EntityPlayer;
|
import net.minecraft.entity.player.EntityPlayer;
|
||||||
import net.minecraft.tileentity.TileEntity;
|
import net.minecraft.tileentity.TileEntity;
|
||||||
import net.minecraft.world.World;
|
import net.minecraft.world.World;
|
||||||
@ -48,4 +53,29 @@ public class RBMKKeyPad extends RBMKMiniPanelBase implements IToolable {
|
|||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void renderInventoryBlock(Block block, int meta, int modelId, Object renderBlocks) {
|
||||||
|
super.renderInventoryBlock(block, meta, modelId, renderBlocks);
|
||||||
|
|
||||||
|
GL11.glPushMatrix();
|
||||||
|
GL11.glTranslated(0, -0.5, 0);
|
||||||
|
GL11.glRotated(-90, 0, 1, 0);
|
||||||
|
|
||||||
|
for(int i = 0; i < 4; i++) {
|
||||||
|
|
||||||
|
GL11.glPushMatrix();
|
||||||
|
GL11.glTranslated(0.25, (i / 2) * -0.5 + 0.25, (i % 2) * -0.5 + 0.25);
|
||||||
|
|
||||||
|
GL11.glColor3f(1F, 1F, 1F);
|
||||||
|
Minecraft.getMinecraft().getTextureManager().bindTexture(ResourceManager.rbmk_keypad_tex);
|
||||||
|
ResourceManager.rbmk_button.renderPart("Socket");
|
||||||
|
GL11.glColor3f(0.65F, 0F, 0F);
|
||||||
|
ResourceManager.rbmk_button.renderPart("Button");
|
||||||
|
GL11.glPopMatrix();
|
||||||
|
}
|
||||||
|
|
||||||
|
GL11.glColor3f(1F, 1F, 1F);
|
||||||
|
GL11.glPopMatrix();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -15,16 +15,22 @@ import net.minecraft.client.renderer.RenderBlocks;
|
|||||||
import net.minecraft.client.renderer.Tessellator;
|
import net.minecraft.client.renderer.Tessellator;
|
||||||
import net.minecraft.entity.EntityLivingBase;
|
import net.minecraft.entity.EntityLivingBase;
|
||||||
import net.minecraft.item.ItemStack;
|
import net.minecraft.item.ItemStack;
|
||||||
|
import net.minecraft.tileentity.TileEntity;
|
||||||
import net.minecraft.util.MathHelper;
|
import net.minecraft.util.MathHelper;
|
||||||
import net.minecraft.world.IBlockAccess;
|
import net.minecraft.world.IBlockAccess;
|
||||||
import net.minecraft.world.World;
|
import net.minecraft.world.World;
|
||||||
|
|
||||||
public abstract class RBMKMiniPanelBase extends BlockContainer implements ISBRHUniversal {
|
public class RBMKMiniPanelBase extends BlockContainer implements ISBRHUniversal {
|
||||||
|
|
||||||
public RBMKMiniPanelBase() {
|
public RBMKMiniPanelBase() {
|
||||||
super(Material.iron);
|
super(Material.iron);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public TileEntity createNewTileEntity(World world, int meta) {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
@Override public int getRenderType() { return renderID; }
|
@Override public int getRenderType() { return renderID; }
|
||||||
@Override public boolean isOpaqueCube() { return false; }
|
@Override public boolean isOpaqueCube() { return false; }
|
||||||
@Override public boolean renderAsNormalBlock() { return false; }
|
@Override public boolean renderAsNormalBlock() { return false; }
|
||||||
|
|||||||
50
src/main/java/com/hbm/blocks/machine/rbmk/RBMKNumitron.java
Normal file
50
src/main/java/com/hbm/blocks/machine/rbmk/RBMKNumitron.java
Normal file
@ -0,0 +1,50 @@
|
|||||||
|
package com.hbm.blocks.machine.rbmk;
|
||||||
|
|
||||||
|
import org.lwjgl.opengl.GL11;
|
||||||
|
|
||||||
|
import com.hbm.main.MainRegistry;
|
||||||
|
import com.hbm.main.ResourceManager;
|
||||||
|
import com.hbm.tileentity.machine.rbmk.TileEntityRBMKNumitron;
|
||||||
|
|
||||||
|
import api.hbm.block.IToolable;
|
||||||
|
import cpw.mods.fml.common.network.internal.FMLNetworkHandler;
|
||||||
|
import net.minecraft.block.Block;
|
||||||
|
import net.minecraft.client.Minecraft;
|
||||||
|
import net.minecraft.entity.player.EntityPlayer;
|
||||||
|
import net.minecraft.tileentity.TileEntity;
|
||||||
|
import net.minecraft.world.World;
|
||||||
|
|
||||||
|
public class RBMKNumitron extends RBMKMiniPanelBase implements IToolable {
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public TileEntity createNewTileEntity(World world, int meta) {
|
||||||
|
return new TileEntityRBMKNumitron();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean onScrew(World world, EntityPlayer player, int x, int y, int z, int side, float fX, float fY, float fZ, ToolType tool) {
|
||||||
|
if(tool != ToolType.SCREWDRIVER) return false;
|
||||||
|
if(world.isRemote) FMLNetworkHandler.openGui(player, MainRegistry.instance, 0, world, x, y, z);
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void renderInventoryBlock(Block block, int meta, int modelId, Object renderBlocks) {
|
||||||
|
super.renderInventoryBlock(block, meta, modelId, renderBlocks);
|
||||||
|
|
||||||
|
GL11.glPushMatrix();
|
||||||
|
GL11.glTranslated(0, -0.5, 0);
|
||||||
|
GL11.glRotated(-90, 0, 1, 0);
|
||||||
|
|
||||||
|
for(int i = 0; i < 2; i++) {
|
||||||
|
|
||||||
|
GL11.glPushMatrix();
|
||||||
|
GL11.glTranslated(0.25, i * -0.5 + 0.25, 0);
|
||||||
|
Minecraft.getMinecraft().getTextureManager().bindTexture(ResourceManager.rbmk_numitron_tex);
|
||||||
|
ResourceManager.rbmk_numitron.renderAll();
|
||||||
|
GL11.glPopMatrix();
|
||||||
|
}
|
||||||
|
|
||||||
|
GL11.glPopMatrix();
|
||||||
|
}
|
||||||
|
}
|
||||||
149
src/main/java/com/hbm/inventory/gui/GUIScreenRBMKDisplay.java
Normal file
149
src/main/java/com/hbm/inventory/gui/GUIScreenRBMKDisplay.java
Normal file
@ -0,0 +1,149 @@
|
|||||||
|
package com.hbm.inventory.gui;
|
||||||
|
|
||||||
|
import org.lwjgl.input.Keyboard;
|
||||||
|
import org.lwjgl.opengl.GL11;
|
||||||
|
|
||||||
|
import com.hbm.lib.RefStrings;
|
||||||
|
import com.hbm.packet.PacketDispatcher;
|
||||||
|
import com.hbm.packet.toserver.NBTControlPacket;
|
||||||
|
import com.hbm.tileentity.machine.rbmk.TileEntityRBMKNumitron;
|
||||||
|
import com.hbm.util.i18n.I18nUtil;
|
||||||
|
|
||||||
|
import net.minecraft.client.Minecraft;
|
||||||
|
import net.minecraft.client.audio.PositionedSoundRecord;
|
||||||
|
import net.minecraft.client.gui.GuiScreen;
|
||||||
|
import net.minecraft.client.gui.GuiTextField;
|
||||||
|
import net.minecraft.nbt.NBTTagCompound;
|
||||||
|
import net.minecraft.util.ResourceLocation;
|
||||||
|
|
||||||
|
public class GUIScreenRBMKDisplay extends GuiScreen {
|
||||||
|
|
||||||
|
private static ResourceLocation texture = new ResourceLocation(RefStrings.MODID + ":textures/gui/machine/gui_rbmk_numitron.png");
|
||||||
|
public TileEntityRBMKNumitron display;
|
||||||
|
protected int xSize = 256;
|
||||||
|
protected int ySize = 114;
|
||||||
|
protected int guiLeft;
|
||||||
|
protected int guiTop;
|
||||||
|
|
||||||
|
protected GuiTextField[] label = new GuiTextField[2];
|
||||||
|
protected GuiTextField[] rtty = new GuiTextField[2];
|
||||||
|
protected boolean[] active = new boolean[2];
|
||||||
|
protected boolean[] polling = new boolean[2];
|
||||||
|
|
||||||
|
public GUIScreenRBMKDisplay(TileEntityRBMKNumitron display) {
|
||||||
|
this.display = display;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void initGui() {
|
||||||
|
super.initGui();
|
||||||
|
this.guiLeft = (this.width - this.xSize) / 2;
|
||||||
|
this.guiTop = (this.height - this.ySize) / 2;
|
||||||
|
|
||||||
|
Keyboard.enableRepeatEvents(true);
|
||||||
|
|
||||||
|
int oX = 4;
|
||||||
|
int oY = 4;
|
||||||
|
|
||||||
|
for(int i = 0; i < 2; i++) {
|
||||||
|
label[i] = new GuiTextField(this.fontRendererObj, guiLeft + 175 + oX, guiTop + 55 + oY + i * 36, 72 - oX * 2, 14);
|
||||||
|
GUIScreenRBMKKeyPad.setupTextFieldStandard(label[i], 30, display.displays[i].label);
|
||||||
|
rtty[i] = new GuiTextField(this.fontRendererObj, guiLeft + 27 + oX, guiTop + 55 + oY + i * 36, 72 - oX * 2, 14);
|
||||||
|
GUIScreenRBMKKeyPad.setupTextFieldStandard(rtty[i], 10, display.displays[i].rtty);
|
||||||
|
|
||||||
|
active[i] = display.displays[i].active;
|
||||||
|
polling[i] = display.displays[i].polling;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void drawScreen(int mouseX, int mouseY, float f) {
|
||||||
|
this.drawDefaultBackground();
|
||||||
|
this.drawGuiContainerBackgroundLayer(f, mouseX, mouseY);
|
||||||
|
GL11.glDisable(GL11.GL_LIGHTING);
|
||||||
|
this.drawGuiContainerForegroundLayer(mouseX, mouseY);
|
||||||
|
GL11.glEnable(GL11.GL_LIGHTING);
|
||||||
|
}
|
||||||
|
|
||||||
|
private void drawGuiContainerForegroundLayer(int x, int y) {
|
||||||
|
String name = I18nUtil.resolveKey("container.rbmkNumitron");
|
||||||
|
this.fontRendererObj.drawString(name, this.guiLeft + this.xSize / 2 - this.fontRendererObj.getStringWidth(name) / 2, this.guiTop + 6, 4210752);
|
||||||
|
}
|
||||||
|
|
||||||
|
private void drawGuiContainerBackgroundLayer(float f, int mouseX, int mouseY) {
|
||||||
|
GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F);
|
||||||
|
Minecraft.getMinecraft().getTextureManager().bindTexture(texture);
|
||||||
|
drawTexturedModalRect(guiLeft, guiTop, 0, 0, xSize, ySize);
|
||||||
|
|
||||||
|
for(int i = 0; i < 2; i++) {
|
||||||
|
if(this.active[i]) drawTexturedModalRect(guiLeft + 111, guiTop + i * 36 + 54, 18, 114, 16, 16);
|
||||||
|
if(this.polling[i]) drawTexturedModalRect(guiLeft + 128, guiTop + i * 36 + 53, 0, 114, 18, 18);
|
||||||
|
}
|
||||||
|
|
||||||
|
for(int i = 0; i < 2; i++) {
|
||||||
|
this.label[i].drawTextBox();
|
||||||
|
this.rtty[i].drawTextBox();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected void mouseClicked(int x, int y, int b) {
|
||||||
|
super.mouseClicked(x, y, b);
|
||||||
|
|
||||||
|
for(int i = 0; i < 2; i++) {
|
||||||
|
if(guiLeft + 111 <= x && guiLeft + 111 + 16 > x && guiTop + i * 36 + 54 < y && guiTop + i * 36 + 54 + 16 >= y) {
|
||||||
|
this.active[i] = !this.active[i];
|
||||||
|
mc.getSoundHandler().playSound(PositionedSoundRecord.func_147674_a(new ResourceLocation("gui.button.press"), 0.5F + (this.active[i] ? 0.25F : 0F)));
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
if(guiLeft + 128 <= x && guiLeft + 128 + 18 > x && guiTop + i * 36 + 53 < y && guiTop + i * 36 + 53 + 18 >= y) {
|
||||||
|
this.polling[i] = !this.polling[i];
|
||||||
|
mc.getSoundHandler().playSound(PositionedSoundRecord.func_147674_a(new ResourceLocation("gui.button.press"), 0.5F + (this.polling[i] ? 0.25F : 0F)));
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if(guiLeft + 209 <= x && guiLeft + 209 + 18 > x && guiTop + 17 < y && guiTop + 17 + 18 >= y) {
|
||||||
|
mc.getSoundHandler().playSound(PositionedSoundRecord.func_147674_a(new ResourceLocation("gui.button.press"), 1.0F));
|
||||||
|
NBTTagCompound data = new NBTTagCompound();
|
||||||
|
byte active = 0;
|
||||||
|
byte polling = 0;
|
||||||
|
for(int i = 0; i < 2; i++) {
|
||||||
|
if(this.active[i]) active |= 1 << i;
|
||||||
|
if(this.polling[i]) polling |= 1 << i;
|
||||||
|
}
|
||||||
|
data.setByte("active", active);
|
||||||
|
data.setByte("polling", polling);
|
||||||
|
|
||||||
|
for(int i = 0; i < 2; i++) {
|
||||||
|
data.setString("label" + i, this.label[i].getText());
|
||||||
|
data.setString("rtty" + i, this.rtty[i].getText());
|
||||||
|
}
|
||||||
|
PacketDispatcher.wrapper.sendToServer(new NBTControlPacket(data, display.xCoord, display.yCoord, display.zCoord));
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
for(int i = 0; i < 2; i++) {
|
||||||
|
this.label[i].mouseClicked(x, y, b);
|
||||||
|
this.rtty[i].mouseClicked(x, y, b);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected void keyTyped(char c, int b) {
|
||||||
|
|
||||||
|
for(int i = 0; i < 2; i++) {
|
||||||
|
if(this.label[i].textboxKeyTyped(c, b)) return;
|
||||||
|
if(this.rtty[i].textboxKeyTyped(c, b)) return;
|
||||||
|
}
|
||||||
|
|
||||||
|
if(b == 1 || b == this.mc.gameSettings.keyBindInventory.getKeyCode()) {
|
||||||
|
this.mc.thePlayer.closeScreen();
|
||||||
|
this.mc.setIngameFocus();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override public void onGuiClosed() { Keyboard.enableRepeatEvents(false); }
|
||||||
|
@Override public boolean doesGuiPauseGame() { return false; }
|
||||||
|
}
|
||||||
@ -35,9 +35,6 @@ public class GUIScreenRBMKGauge extends GuiScreen {
|
|||||||
|
|
||||||
public GUIScreenRBMKGauge(TileEntityRBMKGauge keypad) {
|
public GUIScreenRBMKGauge(TileEntityRBMKGauge keypad) {
|
||||||
this.keypad = keypad;
|
this.keypad = keypad;
|
||||||
|
|
||||||
this.xSize = 256;
|
|
||||||
this.ySize = 204;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|||||||
@ -413,6 +413,7 @@ public class ClientProxy extends ServerProxy {
|
|||||||
ClientRegistry.bindTileEntitySpecialRenderer(TileEntityRBMKDisplay.class, new RenderRBMKDisplay());
|
ClientRegistry.bindTileEntitySpecialRenderer(TileEntityRBMKDisplay.class, new RenderRBMKDisplay());
|
||||||
ClientRegistry.bindTileEntitySpecialRenderer(TileEntityRBMKKeyPad.class, new RenderRBMKKeyPad());
|
ClientRegistry.bindTileEntitySpecialRenderer(TileEntityRBMKKeyPad.class, new RenderRBMKKeyPad());
|
||||||
ClientRegistry.bindTileEntitySpecialRenderer(TileEntityRBMKGauge.class, new RenderRBMKGauge());
|
ClientRegistry.bindTileEntitySpecialRenderer(TileEntityRBMKGauge.class, new RenderRBMKGauge());
|
||||||
|
ClientRegistry.bindTileEntitySpecialRenderer(TileEntityRBMKNumitron.class, new RenderRBMKNumitron());
|
||||||
ClientRegistry.bindTileEntitySpecialRenderer(TileEntityRBMKRod.class, new RenderRBMKFuelChannel());
|
ClientRegistry.bindTileEntitySpecialRenderer(TileEntityRBMKRod.class, new RenderRBMKFuelChannel());
|
||||||
ClientRegistry.bindTileEntitySpecialRenderer(TileEntityRBMKRodReaSim.class, new RenderRBMKFuelChannel());
|
ClientRegistry.bindTileEntitySpecialRenderer(TileEntityRBMKRodReaSim.class, new RenderRBMKFuelChannel());
|
||||||
ClientRegistry.bindTileEntitySpecialRenderer(TileEntityRBMKAutoloader.class, new RenderRBMKAutoloader());
|
ClientRegistry.bindTileEntitySpecialRenderer(TileEntityRBMKAutoloader.class, new RenderRBMKAutoloader());
|
||||||
|
|||||||
@ -790,9 +790,12 @@ public class CraftingManager {
|
|||||||
addRecipeAuto(new ItemStack(ModBlocks.rbmk_loader, 1), new Object[] { "SCS", "CBC", "SCS", 'S', STEEL.plate(), 'C', CU.ingot(), 'B', ModItems.tank_steel });
|
addRecipeAuto(new ItemStack(ModBlocks.rbmk_loader, 1), new Object[] { "SCS", "CBC", "SCS", 'S', STEEL.plate(), 'C', CU.ingot(), 'B', ModItems.tank_steel });
|
||||||
addRecipeAuto(new ItemStack(ModBlocks.rbmk_steam_inlet, 1), new Object[] { "SCS", "CBC", "SCS", 'S', STEEL.ingot(), 'C', IRON.plate(), 'B', ModItems.tank_steel });
|
addRecipeAuto(new ItemStack(ModBlocks.rbmk_steam_inlet, 1), new Object[] { "SCS", "CBC", "SCS", 'S', STEEL.ingot(), 'C', IRON.plate(), 'B', ModItems.tank_steel });
|
||||||
addRecipeAuto(new ItemStack(ModBlocks.rbmk_steam_outlet, 1), new Object[] { "SCS", "CBC", "SCS", 'S', STEEL.ingot(), 'C', CU.plate(), 'B', ModItems.tank_steel });
|
addRecipeAuto(new ItemStack(ModBlocks.rbmk_steam_outlet, 1), new Object[] { "SCS", "CBC", "SCS", 'S', STEEL.ingot(), 'C', CU.plate(), 'B', ModItems.tank_steel });
|
||||||
addRecipeAuto(new ItemStack(ModBlocks.rbmk_display, 1), new Object[] { "B", "C", "D", 'B', B.ingot(), 'D', ModBlocks.deco_rbmk, 'C', DictFrame.fromOne(ModItems.circuit, EnumCircuitType.VACUUM_TUBE) });
|
|
||||||
addRecipeAuto(new ItemStack(ModBlocks.rbmk_key_pad, 1), new Object[] { "B", "C", "D", 'B', ModBlocks.radio_torch_sender, 'D', ModBlocks.deco_rbmk, 'C', DictFrame.fromOne(ModItems.circuit, EnumCircuitType.ANALOG) });
|
addRecipeAuto(new ItemStack(ModBlocks.rbmk_display_blank, 8), new Object[] { "B", "D", 'B', B.ingot(), 'D', ModBlocks.concrete_asbestos });
|
||||||
addRecipeAuto(new ItemStack(ModBlocks.rbmk_gauge, 1), new Object[] { "B", "C", "D", 'B', ModBlocks.radio_torch_receiver, 'D', ModBlocks.deco_rbmk, 'C', DictFrame.fromOne(ModItems.circuit, EnumCircuitType.VACUUM_TUBE) });
|
addRecipeAuto(new ItemStack(ModBlocks.rbmk_display, 1), new Object[] { "C", "B", 'C', ModItems.crt_display, 'B', ModBlocks.rbmk_display_blank });
|
||||||
|
addRecipeAuto(new ItemStack(ModBlocks.rbmk_key_pad, 1), new Object[] { "R", "C", "B", 'R', ModBlocks.radio_torch_sender, 'B', ModBlocks.rbmk_display_blank, 'C', DictFrame.fromOne(ModItems.circuit, EnumCircuitType.ANALOG) });
|
||||||
|
addRecipeAuto(new ItemStack(ModBlocks.rbmk_gauge, 1), new Object[] { "R", "C", "B", 'R', ModBlocks.radio_torch_receiver, 'B', ModBlocks.rbmk_display_blank, 'C', DictFrame.fromOne(ModItems.circuit, EnumCircuitType.VACUUM_TUBE) });
|
||||||
|
addRecipeAuto(new ItemStack(ModBlocks.rbmk_numitron, 1), new Object[] { " R ", "CCC", " B ", 'R', ModBlocks.radio_torch_receiver, 'B', ModBlocks.rbmk_display_blank, 'C', DictFrame.fromOne(ModItems.circuit, EnumCircuitType.NUMITRON) });
|
||||||
|
|
||||||
addRecipeAuto(new ItemStack(ModBlocks.deco_rbmk, 8), new Object[] { "R", 'R', ModBlocks.rbmk_blank });
|
addRecipeAuto(new ItemStack(ModBlocks.deco_rbmk, 8), new Object[] { "R", 'R', ModBlocks.rbmk_blank });
|
||||||
addRecipeAuto(new ItemStack(ModBlocks.deco_rbmk_smooth, 1), new Object[] { "R", 'R', ModBlocks.deco_rbmk });
|
addRecipeAuto(new ItemStack(ModBlocks.deco_rbmk_smooth, 1), new Object[] { "R", 'R', ModBlocks.deco_rbmk });
|
||||||
|
|||||||
@ -1628,6 +1628,7 @@ public class ResourceManager {
|
|||||||
public static final HFRWavefrontObjectVBO rbmk_console = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/rbmk/rbmk_console.obj")).asVBO();
|
public static final HFRWavefrontObjectVBO rbmk_console = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/rbmk/rbmk_console.obj")).asVBO();
|
||||||
public static final HFRWavefrontObjectVBO rbmk_button = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/rbmk/button.obj")).asVBO();
|
public static final HFRWavefrontObjectVBO rbmk_button = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/rbmk/button.obj")).asVBO();
|
||||||
public static final HFRWavefrontObjectVBO rbmk_gauge = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/rbmk/gauge.obj")).asVBO();
|
public static final HFRWavefrontObjectVBO rbmk_gauge = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/rbmk/gauge.obj")).asVBO();
|
||||||
|
public static final HFRWavefrontObjectVBO rbmk_numitron = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/rbmk/numitron.obj")).asVBO();
|
||||||
public static final HFRWavefrontObject rbmk_debris = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/rbmk/debris.obj")).noSmooth();
|
public static final HFRWavefrontObject rbmk_debris = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/rbmk/debris.obj")).noSmooth();
|
||||||
public static final ResourceLocation rbmk_crane_console_tex = new ResourceLocation(RefStrings.MODID, "textures/models/machines/crane_console.png");
|
public static final ResourceLocation rbmk_crane_console_tex = new ResourceLocation(RefStrings.MODID, "textures/models/machines/crane_console.png");
|
||||||
public static final ResourceLocation rbmk_crane_tex = new ResourceLocation(RefStrings.MODID, "textures/models/machines/rbmk_crane.png");
|
public static final ResourceLocation rbmk_crane_tex = new ResourceLocation(RefStrings.MODID, "textures/models/machines/rbmk_crane.png");
|
||||||
@ -1635,6 +1636,8 @@ public class ResourceManager {
|
|||||||
public static final ResourceLocation rbmk_console_tex = new ResourceLocation(RefStrings.MODID, "textures/models/machines/rbmk_control.png");
|
public static final ResourceLocation rbmk_console_tex = new ResourceLocation(RefStrings.MODID, "textures/models/machines/rbmk_control.png");
|
||||||
public static final ResourceLocation rbmk_keypad_tex = new ResourceLocation(RefStrings.MODID, "textures/models/network/keypad.png");
|
public static final ResourceLocation rbmk_keypad_tex = new ResourceLocation(RefStrings.MODID, "textures/models/network/keypad.png");
|
||||||
public static final ResourceLocation rbmk_gauge_tex = new ResourceLocation(RefStrings.MODID, "textures/models/network/gauge.png");
|
public static final ResourceLocation rbmk_gauge_tex = new ResourceLocation(RefStrings.MODID, "textures/models/network/gauge.png");
|
||||||
|
public static final ResourceLocation rbmk_numitron_tex = new ResourceLocation(RefStrings.MODID, "textures/models/network/numitron.png");
|
||||||
|
public static final ResourceLocation rbmk_numitron_lights_tex = new ResourceLocation(RefStrings.MODID, "textures/models/network/numitron_lights.png");
|
||||||
public static final HFRWavefrontObject hev_battery = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/blocks/battery.obj")).noSmooth();
|
public static final HFRWavefrontObject hev_battery = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/blocks/battery.obj")).noSmooth();
|
||||||
public static final HFRWavefrontObject anvil = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/blocks/anvil.obj")).noSmooth();
|
public static final HFRWavefrontObject anvil = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/blocks/anvil.obj")).noSmooth();
|
||||||
public static final HFRWavefrontObject crystal_power = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/blocks/crystals_power.obj")).noSmooth();
|
public static final HFRWavefrontObject crystal_power = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/blocks/crystals_power.obj")).noSmooth();
|
||||||
|
|||||||
112
src/main/java/com/hbm/render/tileentity/RenderRBMKNumitron.java
Normal file
112
src/main/java/com/hbm/render/tileentity/RenderRBMKNumitron.java
Normal file
@ -0,0 +1,112 @@
|
|||||||
|
package com.hbm.render.tileentity;
|
||||||
|
|
||||||
|
import org.lwjgl.opengl.GL11;
|
||||||
|
|
||||||
|
import com.hbm.main.ResourceManager;
|
||||||
|
import com.hbm.tileentity.machine.rbmk.TileEntityRBMKNumitron;
|
||||||
|
import com.hbm.tileentity.machine.rbmk.TileEntityRBMKNumitron.DisplayUnit;
|
||||||
|
import com.hbm.util.BobMathUtil;
|
||||||
|
|
||||||
|
import net.minecraft.client.Minecraft;
|
||||||
|
import net.minecraft.client.gui.FontRenderer;
|
||||||
|
import net.minecraft.client.renderer.Tessellator;
|
||||||
|
import net.minecraft.client.renderer.tileentity.TileEntitySpecialRenderer;
|
||||||
|
import net.minecraft.tileentity.TileEntity;
|
||||||
|
|
||||||
|
public class RenderRBMKNumitron extends TileEntitySpecialRenderer {
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void renderTileEntityAt(TileEntity te, double x, double y, double z, float interp) {
|
||||||
|
|
||||||
|
GL11.glPushMatrix();
|
||||||
|
GL11.glTranslated(x + 0.5, y, z + 0.5);
|
||||||
|
GL11.glEnable(GL11.GL_CULL_FACE);
|
||||||
|
GL11.glEnable(GL11.GL_LIGHTING);
|
||||||
|
|
||||||
|
switch(te.getBlockMetadata()) {
|
||||||
|
case 2: GL11.glRotatef(90, 0F, 1F, 0F); break;
|
||||||
|
case 4: GL11.glRotatef(180, 0F, 1F, 0F); break;
|
||||||
|
case 3: GL11.glRotatef(270, 0F, 1F, 0F); break;
|
||||||
|
case 5: GL11.glRotatef(0, 0F, 1F, 0F); break;
|
||||||
|
}
|
||||||
|
|
||||||
|
TileEntityRBMKNumitron gauge = (TileEntityRBMKNumitron) te;
|
||||||
|
|
||||||
|
for(int i = 0; i < 2; i++) {
|
||||||
|
DisplayUnit unit = gauge.displays[i];
|
||||||
|
if(!unit.active) continue;
|
||||||
|
|
||||||
|
GL11.glPushMatrix();
|
||||||
|
GL11.glTranslated(0.25, i * -0.5 + 0.25, 0);
|
||||||
|
|
||||||
|
GL11.glColor3f(1F, 1F, 1F);
|
||||||
|
this.bindTexture(ResourceManager.rbmk_numitron_tex);
|
||||||
|
ResourceManager.rbmk_numitron.renderAll();
|
||||||
|
|
||||||
|
GL11.glPushMatrix();
|
||||||
|
|
||||||
|
RenderArcFurnace.fullbright(true);
|
||||||
|
GL11.glEnable(GL11.GL_LIGHTING);
|
||||||
|
|
||||||
|
this.bindTexture(ResourceManager.rbmk_numitron_lights_tex);
|
||||||
|
|
||||||
|
double scale = 200D;
|
||||||
|
double w = 8D / scale;
|
||||||
|
double h = 13D / scale;
|
||||||
|
double yOffset = 0.5625D;
|
||||||
|
|
||||||
|
String value = BobMathUtil.getShortNumber(unit.value);
|
||||||
|
while(value.length() < 7) value = "0" + value;
|
||||||
|
|
||||||
|
Tessellator tess = Tessellator.instance;
|
||||||
|
tess.startDrawingQuads();
|
||||||
|
for(int j = 0; j < 7; j++) {
|
||||||
|
double zOffset = (j - 3) * 0.1D;
|
||||||
|
char c = value.charAt(j);
|
||||||
|
double u = -1;
|
||||||
|
double v = 0;
|
||||||
|
if(c == '.') {u = 0.9; v = 0.5;}
|
||||||
|
if(c == '-') {u = 0.8; v = 0.5;}
|
||||||
|
else if(c == 'k') {u = 0.0; v = 0.5;}
|
||||||
|
else if(c == 'M') {u = 0.1; v = 0.5;}
|
||||||
|
else if(c == 'G') {u = 0.2; v = 0.5;}
|
||||||
|
else if(c == 'T') {u = 0.3; v = 0.5;}
|
||||||
|
else if(c == 'P') {u = 0.4; v = 0.5;} // i would love to say this sucks, but this is actually surprisingly easy to read and probably the most performant way of doing it
|
||||||
|
int charVal = c - '0'; // no string operations, no int parsing, no nothing, we just rawdog shit shit
|
||||||
|
if(charVal >= 0 && charVal <= 9) {u = 0.1 * charVal; v = 0.0;}
|
||||||
|
if(u == -1) {u = 0.8; v = 0.5;}
|
||||||
|
tess.setNormal(0F, 1F, 0F);
|
||||||
|
tess.addVertexWithUV(0.03135, -h + yOffset, w - zOffset, u, v + 0.5);
|
||||||
|
tess.addVertexWithUV(0.03135, h + yOffset, w - zOffset, u, v);
|
||||||
|
tess.addVertexWithUV(0.03135, h + yOffset, -w - zOffset, u + 0.1, v);
|
||||||
|
tess.addVertexWithUV(0.03135, -h + yOffset, -w - zOffset, u + 0.1, v + 0.5);
|
||||||
|
}
|
||||||
|
tess.draw();
|
||||||
|
|
||||||
|
RenderArcFurnace.fullbright(false);
|
||||||
|
|
||||||
|
GL11.glPopMatrix();
|
||||||
|
|
||||||
|
FontRenderer font = Minecraft.getMinecraft().fontRenderer;
|
||||||
|
int height = font.FONT_HEIGHT;
|
||||||
|
|
||||||
|
if(unit.label != null && !unit.label.isEmpty()) {
|
||||||
|
|
||||||
|
GL11.glTranslated(0.01, 0.3125, 0);
|
||||||
|
int width = font.getStringWidth(unit.label);
|
||||||
|
float f3 = Math.min(0.0125F, 0.75F / Math.max(width, 1));
|
||||||
|
GL11.glScalef(f3, -f3, f3);
|
||||||
|
GL11.glNormal3f(0.0F, 0.0F, -1.0F);
|
||||||
|
GL11.glRotatef(90, 0, 1, 0);
|
||||||
|
|
||||||
|
RenderArcFurnace.fullbright(true);
|
||||||
|
font.drawString(unit.label, - width / 2, - height / 2, 0x00ff00);
|
||||||
|
RenderArcFurnace.fullbright(false);
|
||||||
|
}
|
||||||
|
GL11.glPopMatrix();
|
||||||
|
}
|
||||||
|
|
||||||
|
GL11.glPopMatrix();
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
@ -405,6 +405,7 @@ public class TileMappings {
|
|||||||
put(TileEntityRBMKDisplay.class, "tileentity_rbmk_display");
|
put(TileEntityRBMKDisplay.class, "tileentity_rbmk_display");
|
||||||
put(TileEntityRBMKKeyPad.class, "tileentity_rbmk_keypad");
|
put(TileEntityRBMKKeyPad.class, "tileentity_rbmk_keypad");
|
||||||
put(TileEntityRBMKGauge.class, "tileentity_rbmk_gauge");
|
put(TileEntityRBMKGauge.class, "tileentity_rbmk_gauge");
|
||||||
|
put(TileEntityRBMKNumitron.class, "tileentity_rbmk_numitron");
|
||||||
put(TileEntityRBMKInlet.class, "tileentity_rbmk_inlet");
|
put(TileEntityRBMKInlet.class, "tileentity_rbmk_inlet");
|
||||||
put(TileEntityRBMKOutlet.class, "tileentity_rbmk_outlet");
|
put(TileEntityRBMKOutlet.class, "tileentity_rbmk_outlet");
|
||||||
put(TileEntityRBMKAutoloader.class, "tileentity_rbmk_autoloader");
|
put(TileEntityRBMKAutoloader.class, "tileentity_rbmk_autoloader");
|
||||||
|
|||||||
@ -0,0 +1,165 @@
|
|||||||
|
package com.hbm.tileentity.machine.rbmk;
|
||||||
|
|
||||||
|
import com.hbm.interfaces.IControlReceiver;
|
||||||
|
import com.hbm.inventory.gui.GUIScreenRBMKDisplay;
|
||||||
|
import com.hbm.tileentity.IGUIProvider;
|
||||||
|
import com.hbm.tileentity.TileEntityLoadedBase;
|
||||||
|
import com.hbm.tileentity.network.RTTYSystem;
|
||||||
|
import com.hbm.tileentity.network.RTTYSystem.RTTYChannel;
|
||||||
|
import com.hbm.util.BufferUtil;
|
||||||
|
|
||||||
|
import io.netty.buffer.ByteBuf;
|
||||||
|
import net.minecraft.entity.player.EntityPlayer;
|
||||||
|
import net.minecraft.inventory.Container;
|
||||||
|
import net.minecraft.nbt.NBTTagCompound;
|
||||||
|
import net.minecraft.world.World;
|
||||||
|
|
||||||
|
public class TileEntityRBMKNumitron extends TileEntityLoadedBase implements IGUIProvider, IControlReceiver {
|
||||||
|
|
||||||
|
/* __________
|
||||||
|
* / /|
|
||||||
|
* /________ / |
|
||||||
|
* | _______ | |
|
||||||
|
* ||_______|| |
|
||||||
|
* | _______ | |
|
||||||
|
* ||_______|| /
|
||||||
|
* |_________|/
|
||||||
|
*/
|
||||||
|
|
||||||
|
public DisplayUnit[] displays = new DisplayUnit[2];
|
||||||
|
|
||||||
|
public TileEntityRBMKNumitron() {
|
||||||
|
for(int i = 0; i < 2; i++) this.displays[i] = new DisplayUnit(i);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void updateEntity() {
|
||||||
|
|
||||||
|
if(!worldObj.isRemote) {
|
||||||
|
|
||||||
|
for(int i = 0; i < 2; i++) this.displays[i].update();
|
||||||
|
|
||||||
|
this.networkPackNT(50);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void serialize(ByteBuf buf) {
|
||||||
|
super.serialize(buf);
|
||||||
|
for(int i = 0; i < 2; i++) this.displays[i].serialize(buf);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void deserialize(ByteBuf buf) {
|
||||||
|
super.deserialize(buf);
|
||||||
|
for(int i = 0; i < 2; i++) this.displays[i].deserialize(buf);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void readFromNBT(NBTTagCompound nbt) {
|
||||||
|
super.readFromNBT(nbt);
|
||||||
|
|
||||||
|
for(int i = 0; i < 2; i++) this.displays[i].readFromNBT(nbt, i);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void writeToNBT(NBTTagCompound nbt) {
|
||||||
|
super.writeToNBT(nbt);
|
||||||
|
|
||||||
|
for(int i = 0; i < 2; i++) this.displays[i].writeToNBT(nbt, i);
|
||||||
|
}
|
||||||
|
|
||||||
|
public class DisplayUnit {
|
||||||
|
|
||||||
|
/** If the value should be pulled from the RTTY system every tick, otherwise only on state change */
|
||||||
|
public boolean polling;
|
||||||
|
/** Label on the display as rendered on the panel */
|
||||||
|
public String label = "";
|
||||||
|
/** What channel to read values from */
|
||||||
|
public String rtty = "";
|
||||||
|
/** The current read value on the display */
|
||||||
|
public int value;
|
||||||
|
/** Whether this gauge is visible on the panel */
|
||||||
|
public boolean active;
|
||||||
|
|
||||||
|
public DisplayUnit(int initialIndex) {
|
||||||
|
label = "Display " + (initialIndex + 1);
|
||||||
|
}
|
||||||
|
|
||||||
|
public void update() {
|
||||||
|
if(!active) return;
|
||||||
|
if(rtty == null || rtty.isEmpty()) return;
|
||||||
|
|
||||||
|
RTTYChannel chan = RTTYSystem.listen(worldObj, rtty);
|
||||||
|
int sigVal = 0;
|
||||||
|
|
||||||
|
if(chan != null && chan.timeStamp < worldObj.getTotalWorldTime() - 1) chan = null;
|
||||||
|
|
||||||
|
// always accept new signals
|
||||||
|
if(chan != null && chan.signal != null) {
|
||||||
|
try { sigVal = Integer.parseInt(chan.signal.toString()); } catch(Exception ex) { }
|
||||||
|
this.value = sigVal;
|
||||||
|
} else {
|
||||||
|
// if there's no new signal and we're polling, set to 0
|
||||||
|
if(polling) this.value = 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public void serialize(ByteBuf buf) {
|
||||||
|
buf.writeBoolean(active);
|
||||||
|
buf.writeBoolean(polling);
|
||||||
|
BufferUtil.writeString(buf, label);
|
||||||
|
BufferUtil.writeString(buf, rtty);
|
||||||
|
buf.writeInt(value);
|
||||||
|
}
|
||||||
|
|
||||||
|
public void deserialize(ByteBuf buf) {
|
||||||
|
active = buf.readBoolean();
|
||||||
|
polling = buf.readBoolean();
|
||||||
|
label = BufferUtil.readString(buf);
|
||||||
|
rtty = BufferUtil.readString(buf);
|
||||||
|
value = buf.readInt();
|
||||||
|
}
|
||||||
|
|
||||||
|
public void readFromNBT(NBTTagCompound nbt, int index) {
|
||||||
|
this.active = nbt.getBoolean("active" + index);
|
||||||
|
this.polling = nbt.getBoolean("polling" + index);
|
||||||
|
this.label = nbt.getString("label" + index);
|
||||||
|
this.rtty = nbt.getString("rtty" + index);
|
||||||
|
this.value = nbt.getInteger("value" + index);
|
||||||
|
}
|
||||||
|
|
||||||
|
public void writeToNBT(NBTTagCompound nbt, int index) {
|
||||||
|
nbt.setBoolean("active" + index, active);
|
||||||
|
nbt.setBoolean("polling" + index, polling);
|
||||||
|
nbt.setString("label" + index, label);
|
||||||
|
nbt.setString("rtty" + index, rtty);
|
||||||
|
nbt.setInteger("value" + index, value);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override public Container provideContainer(int ID, EntityPlayer player, World world, int x, int y, int z) { return null; }
|
||||||
|
@Override public Object provideGUI(int ID, EntityPlayer player, World world, int x, int y, int z) { return new GUIScreenRBMKDisplay(this); }
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean hasPermission(EntityPlayer player) {
|
||||||
|
return player.getDistanceSq(xCoord + 0.5, yCoord + 0.5, zCoord + 0.5) < 15 * 15;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void receiveControl(NBTTagCompound data) {
|
||||||
|
|
||||||
|
int active = data.getByte("active");
|
||||||
|
int polling = data.getByte("polling");
|
||||||
|
for(int i = 0; i < 2; i++) {
|
||||||
|
this.displays[i].active = (active & (1 << i)) != 0;
|
||||||
|
this.displays[i].polling = (polling & (1 << i)) != 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
for(int i = 0; i < 2; i++) {
|
||||||
|
DisplayUnit display = this.displays[i];
|
||||||
|
display.label = data.getString("label" + i);
|
||||||
|
display.rtty = data.getString("rtty" + i);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -463,8 +463,10 @@ container.rbmkAutoloader=RBMK-Ladeautomat
|
|||||||
container.rbmkBoiler=RBMK Dampfkanal
|
container.rbmkBoiler=RBMK Dampfkanal
|
||||||
container.rbmkControl=RBMK Steuerstäbe
|
container.rbmkControl=RBMK Steuerstäbe
|
||||||
container.rbmkControlAuto=RBMK Automatische Steuerstäbe
|
container.rbmkControlAuto=RBMK Automatische Steuerstäbe
|
||||||
|
container.rbmkGauge=Redstone-over-Radio Meter
|
||||||
container.rbmkHeater=RBMK Heizer
|
container.rbmkHeater=RBMK Heizer
|
||||||
container.rbmkKeyPad=Redstone-over-Radio Tastenfeld
|
container.rbmkKeyPad=Redstone-over-Radio Tastenfeld
|
||||||
|
container.rbmkNumitron=Redstone-over-Radio Ziffernanzeige
|
||||||
container.rbmkOutgasser=RBMK Bestrahlungskanal
|
container.rbmkOutgasser=RBMK Bestrahlungskanal
|
||||||
container.rbmkReaSim=RBMK Brennstäbe (ReaSim)
|
container.rbmkReaSim=RBMK Brennstäbe (ReaSim)
|
||||||
container.rbmkRod=RBMK Brennstäbe
|
container.rbmkRod=RBMK Brennstäbe
|
||||||
@ -4904,11 +4906,13 @@ tile.rbmk_control_reasim.name=RBMK Steuerstäbe (ReaSim)
|
|||||||
tile.rbmk_control_reasim_auto.name=RBMK Automatische Steuerstäbe (ReaSim)
|
tile.rbmk_control_reasim_auto.name=RBMK Automatische Steuerstäbe (ReaSim)
|
||||||
tile.rbmk_crane_console.name=RBMK Kransteuerung
|
tile.rbmk_crane_console.name=RBMK Kransteuerung
|
||||||
tile.rbmk_display.name=RBMK Anzeigepanel
|
tile.rbmk_display.name=RBMK Anzeigepanel
|
||||||
|
tile.rbmk_display_blank.name=Leeres Redstone-over-Radio Panel
|
||||||
tile.rbmk_gauge.name=Redstone-over-Radio Meter
|
tile.rbmk_gauge.name=Redstone-over-Radio Meter
|
||||||
tile.rbmk_heater.name=RBMK-Heizer
|
tile.rbmk_heater.name=RBMK-Heizer
|
||||||
tile.rbmk_key_pad.name=Redstone-over-Radio Tastenfeld
|
tile.rbmk_key_pad.name=Redstone-over-Radio Tastenfeld
|
||||||
tile.rbmk_loader.name=RBMK-Dampfadapter
|
tile.rbmk_loader.name=RBMK-Dampfadapter
|
||||||
tile.rbmk_moderator.name=RBMK Graphitmoderator
|
tile.rbmk_moderator.name=RBMK Graphitmoderator
|
||||||
|
tile.rbmk_numitron.name=Redstone-over-Radio Ziffernanzeige
|
||||||
tile.rbmk_outgasser.name=RBMK Bestrahlungskanal
|
tile.rbmk_outgasser.name=RBMK Bestrahlungskanal
|
||||||
tile.rbmk_reflector.name=RBMK Wolframcarbid-Moderator
|
tile.rbmk_reflector.name=RBMK Wolframcarbid-Moderator
|
||||||
tile.rbmk_rod.name=RBMK Brennstäbe
|
tile.rbmk_rod.name=RBMK Brennstäbe
|
||||||
|
|||||||
@ -871,8 +871,10 @@ container.rbmkAutoloader=RBMK Autoloader
|
|||||||
container.rbmkBoiler=RBMK Steam Channel
|
container.rbmkBoiler=RBMK Steam Channel
|
||||||
container.rbmkControl=RBMK Control Rods
|
container.rbmkControl=RBMK Control Rods
|
||||||
container.rbmkControlAuto=RBMK Automatic Control Rods
|
container.rbmkControlAuto=RBMK Automatic Control Rods
|
||||||
|
container.rbmkGauge=Redstone-over-Radio Gauge
|
||||||
container.rbmkHeater=RBMK Fluid Heater
|
container.rbmkHeater=RBMK Fluid Heater
|
||||||
container.rbmkKeyPad=Redstone-over-Radio Keypad
|
container.rbmkKeyPad=Redstone-over-Radio Keypad
|
||||||
|
container.rbmkNumitron=Redstone-over-Radio Numeric Display
|
||||||
container.rbmkOutgasser=RBMK Irradiation Channel
|
container.rbmkOutgasser=RBMK Irradiation Channel
|
||||||
container.rbmkReaSim=RBMK Fuel Rod (ReaSim)
|
container.rbmkReaSim=RBMK Fuel Rod (ReaSim)
|
||||||
container.rbmkRod=RBMK Fuel Rod
|
container.rbmkRod=RBMK Fuel Rod
|
||||||
@ -6172,12 +6174,14 @@ tile.rbmk_control_reasim.name=RBMK Control Rods (ReaSim)
|
|||||||
tile.rbmk_control_reasim_auto.name=RBMK Automatic Control Rods (ReaSim)
|
tile.rbmk_control_reasim_auto.name=RBMK Automatic Control Rods (ReaSim)
|
||||||
tile.rbmk_crane_console.name=RBMK Crane Console
|
tile.rbmk_crane_console.name=RBMK Crane Console
|
||||||
tile.rbmk_display.name=RBMK Display Panel
|
tile.rbmk_display.name=RBMK Display Panel
|
||||||
|
tile.rbmk_display_blank.name=Blank Redstone-over-Radio Panel
|
||||||
tile.rbmk_gauge.name=Redstone-over-Radio Gauge
|
tile.rbmk_gauge.name=Redstone-over-Radio Gauge
|
||||||
tile.rbmk_heater.name=RBMK Fluid Heater
|
tile.rbmk_heater.name=RBMK Fluid Heater
|
||||||
tile.rbmk_key_pad.name=Redstone-over-Radio Keypad
|
tile.rbmk_key_pad.name=Redstone-over-Radio Keypad
|
||||||
tile.rbmk_loader.name=RBMK Steam Connector
|
tile.rbmk_loader.name=RBMK Steam Connector
|
||||||
tile.rbmk_loader.desc=Allows RBMKs to have both water and steam connections at the bottom$Place one water pipe below the RBMK column, then the connector,$then connect the steam duct to the connector.
|
tile.rbmk_loader.desc=Allows RBMKs to have both water and steam connections at the bottom$Place one water pipe below the RBMK column, then the connector,$then connect the steam duct to the connector.
|
||||||
tile.rbmk_moderator.name=RBMK Graphite Moderator
|
tile.rbmk_moderator.name=RBMK Graphite Moderator
|
||||||
|
tile.rbmk_numitron.name=Redstone-over-Radio Numeric Display
|
||||||
tile.rbmk_outgasser.name=RBMK Irradiation Channel
|
tile.rbmk_outgasser.name=RBMK Irradiation Channel
|
||||||
tile.rbmk_reflector.name=RBMK Tungsten Carbide Neutron Reflector
|
tile.rbmk_reflector.name=RBMK Tungsten Carbide Neutron Reflector
|
||||||
tile.rbmk_rod.name=RBMK Fuel Channel
|
tile.rbmk_rod.name=RBMK Fuel Channel
|
||||||
|
|||||||
79
src/main/resources/assets/hbm/models/rbmk/numitron.obj
Normal file
79
src/main/resources/assets/hbm/models/rbmk/numitron.obj
Normal file
@ -0,0 +1,79 @@
|
|||||||
|
# Blender v2.79 (sub 0) OBJ File: ''
|
||||||
|
# www.blender.org
|
||||||
|
o Plane
|
||||||
|
v 0.000000 0.718750 0.406250
|
||||||
|
v 0.000000 0.406250 0.406250
|
||||||
|
v 0.000000 0.718750 -0.406250
|
||||||
|
v 0.000000 0.406250 -0.406250
|
||||||
|
v 0.031250 0.687500 -0.375000
|
||||||
|
v 0.031250 0.687500 0.375000
|
||||||
|
v 0.031250 0.437500 0.375000
|
||||||
|
v 0.031250 0.437500 -0.375000
|
||||||
|
v 0.062500 0.687500 -0.375000
|
||||||
|
v 0.062500 0.687500 0.375000
|
||||||
|
v 0.062500 0.437500 0.375000
|
||||||
|
v 0.062500 0.437500 -0.375000
|
||||||
|
v 0.062500 0.718750 -0.406250
|
||||||
|
v 0.062500 0.718750 0.406250
|
||||||
|
v 0.062500 0.406250 0.406250
|
||||||
|
v 0.062500 0.406250 -0.406250
|
||||||
|
vt -0.000000 -0.000000
|
||||||
|
vt 0.800000 0.363636
|
||||||
|
vt -0.000000 0.363636
|
||||||
|
vt 0.933333 0.363636
|
||||||
|
vt 0.066667 0.454545
|
||||||
|
vt 0.066667 0.363636
|
||||||
|
vt 0.066667 0.863636
|
||||||
|
vt 0.100000 0.500000
|
||||||
|
vt 0.066667 0.500000
|
||||||
|
vt 0.933333 0.500000
|
||||||
|
vt 0.900000 0.862201
|
||||||
|
vt 0.933333 0.863636
|
||||||
|
vt -0.000000 0.454545
|
||||||
|
vt 0.066667 0.909091
|
||||||
|
vt -0.000000 0.909091
|
||||||
|
vt 0.100000 0.863636
|
||||||
|
vt 0.933333 0.454545
|
||||||
|
vt 0.900000 0.498565
|
||||||
|
vt 0.933333 0.909091
|
||||||
|
vt 0.066667 1.000000
|
||||||
|
vt 0.933333 1.000000
|
||||||
|
vt 0.100000 0.454545
|
||||||
|
vt 0.900000 0.459670
|
||||||
|
vt 0.900000 0.914216
|
||||||
|
vt 0.100000 0.909091
|
||||||
|
vt 1.000000 0.909091
|
||||||
|
vt 1.000000 0.454545
|
||||||
|
vt 0.800000 -0.000000
|
||||||
|
vn 1.0000 0.0000 0.0000
|
||||||
|
vn 0.0000 -1.0000 0.0000
|
||||||
|
vn 0.0000 0.0000 -1.0000
|
||||||
|
vn 0.0000 0.0000 1.0000
|
||||||
|
vn 0.0000 1.0000 0.0000
|
||||||
|
s off
|
||||||
|
f 7/1/1 5/2/1 6/3/1
|
||||||
|
f 4/4/2 15/5/2 2/6/2
|
||||||
|
f 6/7/3 11/8/3 7/9/3
|
||||||
|
f 8/10/4 9/11/4 5/12/4
|
||||||
|
f 2/13/4 14/14/4 1/15/4
|
||||||
|
f 9/11/1 14/14/1 10/16/1
|
||||||
|
f 10/16/1 15/5/1 11/8/1
|
||||||
|
f 11/8/1 16/17/1 12/18/1
|
||||||
|
f 12/18/1 13/19/1 9/11/1
|
||||||
|
f 1/20/5 13/19/5 3/21/5
|
||||||
|
f 7/22/5 12/18/5 8/23/5
|
||||||
|
f 5/24/2 10/16/2 6/25/2
|
||||||
|
f 3/26/3 16/17/3 4/27/3
|
||||||
|
f 7/1/1 8/28/1 5/2/1
|
||||||
|
f 4/4/2 16/17/2 15/5/2
|
||||||
|
f 6/7/3 10/16/3 11/8/3
|
||||||
|
f 8/10/4 12/18/4 9/11/4
|
||||||
|
f 2/13/4 15/5/4 14/14/4
|
||||||
|
f 9/11/1 13/19/1 14/14/1
|
||||||
|
f 10/16/1 14/14/1 15/5/1
|
||||||
|
f 11/8/1 15/5/1 16/17/1
|
||||||
|
f 12/18/1 16/17/1 13/19/1
|
||||||
|
f 1/20/5 14/14/5 13/19/5
|
||||||
|
f 7/22/5 11/8/5 12/18/5
|
||||||
|
f 5/24/2 9/11/2 10/16/2
|
||||||
|
f 3/26/3 13/19/3 16/17/3
|
||||||
Binary file not shown.
|
After Width: | Height: | Size: 2.6 KiB |
Binary file not shown.
|
After Width: | Height: | Size: 153 B |
Binary file not shown.
|
After Width: | Height: | Size: 712 B |
Loading…
x
Reference in New Issue
Block a user