mirror of
https://github.com/HbmMods/Hbm-s-Nuclear-Tech-GIT.git
synced 2026-03-14 05:35:35 +00:00
RoR gauges
This commit is contained in:
parent
2e27763092
commit
e8bbc53e36
17
changelog
17
changelog
@ -1,26 +1,35 @@
|
||||
## Added
|
||||
* Key pad
|
||||
* Fits visually with the RBMK display block
|
||||
* Allows up to four buttons to be configured with a screwdriver (shhift click!)
|
||||
* Allows up to four buttons to be configured with a screwdriver (shift click!)
|
||||
* Buttons will send RoR signals when pressed, with a configured value on the configured frequencies
|
||||
* Can be set to polling, which will resend the command until the button is pressed again
|
||||
* Can be set to polling, which will re-send the command until the button is pressed again
|
||||
* Single push buttons and buttons set to polling which are enabled will glow in the dark
|
||||
* Each button can be assigned a label with glow in the dark paint
|
||||
* Allows RBMK control rods to be fully remote controllable with no console
|
||||
* Gauge
|
||||
* Allows up to four gauges to be configured with a screwdriver
|
||||
* Gauges can read RoR signals and display numeric values on a specified range
|
||||
* Minimum and maximum values can be defined, the gauge also has a red area for when the value exceeds the maximum
|
||||
* If the minimum value is larger than the maximum, the needle will start at the top and run backwards
|
||||
* Also has glow in the dark paint labels
|
||||
|
||||
## Changed
|
||||
* Updated chinese and ukrainian localization
|
||||
* Updated textures for some nuclear bomb GUIs
|
||||
* Updated textures for steel tools
|
||||
* RBMK fuel rods too hot to be taken out manually can now be removed by players in creative mode
|
||||
* Updated the SILEX recycling recipe for MOX fuel to reflect the recent recipe change
|
||||
* High-xenon MOX pellets now yield xenon-135 again
|
||||
* Improved logging for incorrectly configured machine recipes
|
||||
* Removed the legacy toolbox item
|
||||
* Due to complaints, the MOX recipe was now made more expensive
|
||||
* Manual control rods now have the `extendrods` command, which allows the target setting to be adjusted without using an abolute value
|
||||
* Manual control rods now have the `extendrods` command, which allows the target setting to be adjusted without using an absolute value
|
||||
* Removed the legacy relay structure
|
||||
|
||||
## Fixed
|
||||
* Fixed some damage categories not applying correctly, causing things like general energy resistance to not work against lasers
|
||||
* Fixed RoR components not being able to be attached to the top of reasim fuel rods
|
||||
* Fixed a crash in multiplayer regarding RBMK control rods
|
||||
* Fixed incorrect QMAW description of the autoloader, talking about fuel depletion instead of fuel enrichment
|
||||
* Fixed outdated QMAW description of some RBMK parts
|
||||
* Fixed log spam when placing down a RoR controller
|
||||
@ -1098,6 +1098,7 @@ public class ModBlocks {
|
||||
public static Block rbmk_crane_console;
|
||||
public static Block rbmk_display;
|
||||
public static Block rbmk_key_pad;
|
||||
public static Block rbmk_gauge;
|
||||
public static Block rbmk_autoloader;
|
||||
public static Block rbmk_loader;
|
||||
public static Block rbmk_steam_inlet;
|
||||
@ -2119,6 +2120,7 @@ public class ModBlocks {
|
||||
rbmk_crane_console = new RBMKCraneConsole().setBlockName("rbmk_crane_console").setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":rbmk/rbmk_crane_console");
|
||||
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_gauge = new RBMKGauge().setBlockName("rbmk_gauge").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_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");
|
||||
@ -3112,6 +3114,7 @@ public class ModBlocks {
|
||||
GameRegistry.registerBlock(rbmk_crane_console, rbmk_crane_console.getUnlocalizedName());
|
||||
register(rbmk_display);
|
||||
register(rbmk_key_pad);
|
||||
register(rbmk_gauge);
|
||||
register(rbmk_autoloader);
|
||||
register(rbmk_loader);
|
||||
register(rbmk_steam_inlet);
|
||||
|
||||
25
src/main/java/com/hbm/blocks/machine/rbmk/RBMKGauge.java
Normal file
25
src/main/java/com/hbm/blocks/machine/rbmk/RBMKGauge.java
Normal file
@ -0,0 +1,25 @@
|
||||
package com.hbm.blocks.machine.rbmk;
|
||||
|
||||
import com.hbm.main.MainRegistry;
|
||||
import com.hbm.tileentity.machine.rbmk.TileEntityRBMKGauge;
|
||||
|
||||
import api.hbm.block.IToolable;
|
||||
import cpw.mods.fml.common.network.internal.FMLNetworkHandler;
|
||||
import net.minecraft.entity.player.EntityPlayer;
|
||||
import net.minecraft.tileentity.TileEntity;
|
||||
import net.minecraft.world.World;
|
||||
|
||||
public class RBMKGauge extends RBMKMiniPanelBase implements IToolable {
|
||||
|
||||
@Override
|
||||
public TileEntity createNewTileEntity(World world, int meta) {
|
||||
return new TileEntityRBMKGauge();
|
||||
}
|
||||
|
||||
@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;
|
||||
}
|
||||
}
|
||||
@ -81,19 +81,16 @@ public class WorldConfig {
|
||||
public static boolean enableSulfurCave = true;
|
||||
public static boolean enableAsbestosCave = true;
|
||||
|
||||
// public static int radioStructure = 500;
|
||||
public static int antennaStructure = 250;
|
||||
public static int atomStructure = 500;
|
||||
public static int dungeonStructure = 64;
|
||||
public static int relayStructure = 500;
|
||||
public static int satelliteStructure = 500;
|
||||
// public static int factoryStructure = 1000;
|
||||
public static int dudStructure = 500;
|
||||
public static int spaceshipStructure = 1000;
|
||||
public static int barrelStructure = 5000;
|
||||
public static int geyserWater = 3000;
|
||||
public static int geyserChlorine = 3000;
|
||||
public static int geyserVapor = 500;
|
||||
public static int geyserVapor = 250;
|
||||
public static int capsuleStructure = 100;
|
||||
public static int arcticStructure = 500;
|
||||
public static int jungleStructure = 2000;
|
||||
@ -204,13 +201,10 @@ public class WorldConfig {
|
||||
enableAsbestosCave = CommonConfig.createConfigBool(config, CATEGORY_OREGEN, "2.C01_enableAsbestosCave", "Toggles asbestos caves", true);
|
||||
|
||||
final String CATEGORY_DUNGEON = CommonConfig.CATEGORY_DUNGEONS;
|
||||
// radioStructure = CommonConfig.createConfigInt(config, CATEGORY_DUNGEON, "4.00_radioSpawn", "Spawn radio station on every nTH chunk", 500);
|
||||
antennaStructure = CommonConfig.createConfigInt(config, CATEGORY_DUNGEON, "4.01_antennaSpawn", "Spawn antenna on every nTH chunk", 250);
|
||||
atomStructure = CommonConfig.createConfigInt(config, CATEGORY_DUNGEON, "4.02_atomSpawn", "Spawn power plant on every nTH chunk", 500);
|
||||
dungeonStructure = CommonConfig.createConfigInt(config, CATEGORY_DUNGEON, "4.04_dungeonSpawn", "Spawn library dungeon on every nTH chunk", 64);
|
||||
relayStructure = CommonConfig.createConfigInt(config, CATEGORY_DUNGEON, "4.05_relaySpawn", "Spawn relay on every nTH chunk", 500);
|
||||
satelliteStructure = CommonConfig.createConfigInt(config, CATEGORY_DUNGEON, "4.06_satelliteSpawn", "Spawn satellite dish on every nTH chunk", 500);
|
||||
// factoryStructure = CommonConfig.createConfigInt(config, CATEGORY_DUNGEON, "4.09_factorySpawn", "Spawn factory on every nTH chunk", 1000);
|
||||
dudStructure = CommonConfig.createConfigInt(config, CATEGORY_DUNGEON, "4.10_dudSpawn", "Spawn dud on every nTH chunk", 500);
|
||||
spaceshipStructure = CommonConfig.createConfigInt(config, CATEGORY_DUNGEON, "4.11_spaceshipSpawn", "Spawn spaceship on every nTH chunk", 1000);
|
||||
barrelStructure = CommonConfig.createConfigInt(config, CATEGORY_DUNGEON, "4.12_barrelSpawn", "Spawn waste tank on every nTH chunk", 5000);
|
||||
@ -220,7 +214,7 @@ public class WorldConfig {
|
||||
vaultfreq = CommonConfig.createConfigInt(config, CATEGORY_DUNGEON, "4.16_vaultSpawn", "Spawn locked safe on every nTH chunk", 2500);
|
||||
geyserWater = CommonConfig.createConfigInt(config, CATEGORY_DUNGEON, "4.17_geyserWaterSpawn", "Spawn water geyser on every nTH chunk", 3000);
|
||||
geyserChlorine = CommonConfig.createConfigInt(config, CATEGORY_DUNGEON, "4.18_geyserChlorineSpawn", "Spawn poison geyser on every nTH chunk", 3000);
|
||||
geyserVapor = CommonConfig.createConfigInt(config, CATEGORY_DUNGEON, "4.19_geyserVaporSpawn", "Spawn vapor geyser on every nTH chunk", 500);
|
||||
geyserVapor = CommonConfig.createConfigInt(config, CATEGORY_DUNGEON, "4.19_geyserVaporSpawn", "Spawn vapor geyser on every nTH chunk", 250);
|
||||
capsuleStructure = CommonConfig.createConfigInt(config, CATEGORY_DUNGEON, "4.21_capsuleSpawn", "Spawn landing capsule on every nTH chunk", 100);
|
||||
arcticStructure = CommonConfig.createConfigInt(config, CATEGORY_DUNGEON, "4.22_arcticVaultSpawn", "Spawn arctic code vault on every nTH chunk", 500);
|
||||
jungleStructure = CommonConfig.createConfigInt(config, CATEGORY_DUNGEON, "4.23_jungleDungeonSpawn", "Spawn jungle dungeon on every nTH chunk", 2000);
|
||||
@ -245,13 +239,10 @@ public class WorldConfig {
|
||||
craterBiomeOuterRad = (float) CommonConfig.createConfigDouble(config, CATEGORY_BIOMES, "17.R02_craterBiomeOuterRad", "RAD/s for the outer crater biome", 0.5D);
|
||||
craterBiomeWaterMult = (float) CommonConfig.createConfigDouble(config, CATEGORY_BIOMES, "17.R03_craterBiomeWaterMult", "Multiplier for RAD/s in crater biomes when in water", 5D);
|
||||
|
||||
// radioStructure = CommonConfig.setDefZero(radioStructure, 1000);
|
||||
antennaStructure = CommonConfig.setDefZero(antennaStructure, 1000);
|
||||
atomStructure = CommonConfig.setDefZero(atomStructure, 1000);
|
||||
dungeonStructure = CommonConfig.setDefZero(dungeonStructure, 1000);
|
||||
relayStructure = CommonConfig.setDefZero(relayStructure, 1000);
|
||||
satelliteStructure = CommonConfig.setDefZero(satelliteStructure, 1000);
|
||||
// factoryStructure = CommonConfig.setDefZero(factoryStructure, 1000);
|
||||
dudStructure = CommonConfig.setDefZero(dudStructure, 1000);
|
||||
spaceshipStructure = CommonConfig.setDefZero(spaceshipStructure, 1000);
|
||||
barrelStructure = CommonConfig.setDefZero(barrelStructure, 1000);
|
||||
|
||||
175
src/main/java/com/hbm/inventory/gui/GUIScreenRBMKGauge.java
Normal file
175
src/main/java/com/hbm/inventory/gui/GUIScreenRBMKGauge.java
Normal file
@ -0,0 +1,175 @@
|
||||
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.TileEntityRBMKGauge;
|
||||
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 GUIScreenRBMKGauge extends GuiScreen {
|
||||
|
||||
private static ResourceLocation texture = new ResourceLocation(RefStrings.MODID + ":textures/gui/machine/gui_rbmk_gauge.png");
|
||||
public TileEntityRBMKGauge keypad;
|
||||
protected int xSize = 256;
|
||||
protected int ySize = 204;
|
||||
protected int guiLeft;
|
||||
protected int guiTop;
|
||||
|
||||
protected GuiTextField[] color = new GuiTextField[4];
|
||||
protected GuiTextField[] label = new GuiTextField[4];
|
||||
protected GuiTextField[] rtty = new GuiTextField[4];
|
||||
protected GuiTextField[] min = new GuiTextField[4];
|
||||
protected GuiTextField[] max = new GuiTextField[4];
|
||||
protected boolean[] active = new boolean[4];
|
||||
protected boolean[] polling = new boolean[4];
|
||||
|
||||
public GUIScreenRBMKGauge(TileEntityRBMKGauge keypad) {
|
||||
this.keypad = keypad;
|
||||
|
||||
this.xSize = 256;
|
||||
this.ySize = 204;
|
||||
}
|
||||
|
||||
@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 < 4; i++) {
|
||||
String col = Integer.toHexString(keypad.gauges[i].color);
|
||||
while(col.length() < 6) col = "0" + col;
|
||||
color[i] = new GuiTextField(this.fontRendererObj, guiLeft + 27 + oX, guiTop + 55 + oY + i * 36, 72 - oX * 2, 14);
|
||||
GUIScreenRBMKKeyPad.setupTextFieldStandard(color[i], 6, col);
|
||||
label[i] = new GuiTextField(this.fontRendererObj, guiLeft + 175 + oX, guiTop + 55 + oY + i * 36, 72 - oX * 2, 14);
|
||||
GUIScreenRBMKKeyPad.setupTextFieldStandard(label[i], 15, keypad.gauges[i].label);
|
||||
rtty[i] = new GuiTextField(this.fontRendererObj, guiLeft + 27 + oX, guiTop + 73 + oY + i * 36, 72 - oX * 2, 14);
|
||||
GUIScreenRBMKKeyPad.setupTextFieldStandard(rtty[i], 10, keypad.gauges[i].rtty);
|
||||
min[i] = new GuiTextField(this.fontRendererObj, guiLeft + 121 + oX, guiTop + 73 + oY + i * 36, 52 - oX * 2, 14);
|
||||
GUIScreenRBMKKeyPad.setupTextFieldStandard(min[i], 32, keypad.gauges[i].min + "");
|
||||
max[i] = new GuiTextField(this.fontRendererObj, guiLeft + 195 + oX, guiTop + 73 + oY + i * 36, 52 - oX * 2, 14);
|
||||
GUIScreenRBMKKeyPad.setupTextFieldStandard(max[i], 32, keypad.gauges[i].max + "");
|
||||
|
||||
active[i] = keypad.gauges[i].active;
|
||||
polling[i] = keypad.gauges[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.rbmkGauge");
|
||||
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 < 4; i++) {
|
||||
if(this.active[i]) drawTexturedModalRect(guiLeft + 111, guiTop + i * 36 + 54, 18, 204, 16, 16);
|
||||
if(this.polling[i]) drawTexturedModalRect(guiLeft + 128, guiTop + i * 36 + 53, 0, 204, 18, 18);
|
||||
}
|
||||
|
||||
for(int i = 0; i < 4; i++) {
|
||||
this.color[i].drawTextBox();
|
||||
this.label[i].drawTextBox();
|
||||
this.rtty[i].drawTextBox();
|
||||
this.min[i].drawTextBox();
|
||||
this.max[i].drawTextBox();
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void mouseClicked(int x, int y, int b) {
|
||||
super.mouseClicked(x, y, b);
|
||||
|
||||
for(int i = 0; i < 4; 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 < 4; 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 < 4; i++) {
|
||||
try { data.setInteger("color" + i, Integer.parseInt(this.color[i].getText(), 16)); } catch(Exception ex) { }
|
||||
data.setString("label" + i, this.label[i].getText());
|
||||
data.setString("rtty" + i, this.rtty[i].getText());
|
||||
try { data.setInteger("min" + i, Integer.parseInt(this.min[i].getText())); } catch(Exception ex) { }
|
||||
try { data.setInteger("max" + i, Integer.parseInt(this.max[i].getText())); } catch(Exception ex) { }
|
||||
}
|
||||
PacketDispatcher.wrapper.sendToServer(new NBTControlPacket(data, keypad.xCoord, keypad.yCoord, keypad.zCoord));
|
||||
return;
|
||||
}
|
||||
|
||||
for(int i = 0; i < 4; i++) {
|
||||
this.color[i].mouseClicked(x, y, b);
|
||||
this.label[i].mouseClicked(x, y, b);
|
||||
this.rtty[i].mouseClicked(x, y, b);
|
||||
this.min[i].mouseClicked(x, y, b);
|
||||
this.max[i].mouseClicked(x, y, b);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void keyTyped(char c, int b) {
|
||||
|
||||
for(int i = 0; i < 4; i++) {
|
||||
if(this.color[i].textboxKeyTyped(c, b)) return;
|
||||
if(this.label[i].textboxKeyTyped(c, b)) return;
|
||||
if(this.rtty[i].textboxKeyTyped(c, b)) return;
|
||||
if(this.min[i].textboxKeyTyped(c, b)) return;
|
||||
if(this.max[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; }
|
||||
}
|
||||
@ -114,11 +114,13 @@ public class GUIScreenRBMKKeyPad extends GuiScreen {
|
||||
for(int i = 0; i < 4; 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;
|
||||
}
|
||||
}
|
||||
|
||||
@ -247,18 +247,6 @@ public class HbmWorldGen implements IWorldGenerator {
|
||||
new LibraryDungeon().generate(world, rand, x, y, z);
|
||||
}
|
||||
|
||||
if(biome.temperature == 0.5F || biome.temperature == 2.0F) {
|
||||
if(WorldConfig.relayStructure > 0 && rand.nextInt(WorldConfig.relayStructure) == 0) {
|
||||
for(int a = 0; a < 1; a++) {
|
||||
int x = i + rand.nextInt(16);
|
||||
int z = j + rand.nextInt(16);
|
||||
int y = world.getHeightValue(x, z);
|
||||
|
||||
new Relay().generate(world, rand, x, y, z);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if(WorldConfig.dudStructure > 0 && rand.nextInt(WorldConfig.dudStructure) == 0) {
|
||||
int x = i + 8 + rand.nextInt(16);
|
||||
int z = j + 8 + rand.nextInt(16);
|
||||
@ -399,10 +387,13 @@ public class HbmWorldGen implements IWorldGenerator {
|
||||
int z = j + rand.nextInt(16);
|
||||
int y = world.getHeightValue(x, z);
|
||||
|
||||
if(world.getBlock(x, y, z) == Blocks.stone)
|
||||
world.setBlock(x, y, z, ModBlocks.geysir_vapor);
|
||||
else if(world.getBlock(x, y - 1, z) == Blocks.stone)
|
||||
world.setBlock(x, y - 1, z, ModBlocks.geysir_vapor);
|
||||
for(int k = 1; k >= -1; k--) {
|
||||
if(world.getBlock(x, y + k, z) == Blocks.stone) {
|
||||
world.setBlock(x, y + k, z, ModBlocks.geysir_vapor);
|
||||
MainRegistry.logger.info("[Debug] Successfully spawned vapor geyser at " + x + " " + z);
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (rand.nextInt(1000) == 0) {
|
||||
|
||||
@ -412,6 +412,7 @@ public class ClientProxy extends ServerProxy {
|
||||
ClientRegistry.bindTileEntitySpecialRenderer(TileEntityRBMKConsole.class, new RenderRBMKConsole());
|
||||
ClientRegistry.bindTileEntitySpecialRenderer(TileEntityRBMKDisplay.class, new RenderRBMKDisplay());
|
||||
ClientRegistry.bindTileEntitySpecialRenderer(TileEntityRBMKKeyPad.class, new RenderRBMKKeyPad());
|
||||
ClientRegistry.bindTileEntitySpecialRenderer(TileEntityRBMKGauge.class, new RenderRBMKGauge());
|
||||
ClientRegistry.bindTileEntitySpecialRenderer(TileEntityRBMKRod.class, new RenderRBMKFuelChannel());
|
||||
ClientRegistry.bindTileEntitySpecialRenderer(TileEntityRBMKRodReaSim.class, new RenderRBMKFuelChannel());
|
||||
ClientRegistry.bindTileEntitySpecialRenderer(TileEntityRBMKAutoloader.class, new RenderRBMKAutoloader());
|
||||
|
||||
@ -793,6 +793,7 @@ public class CraftingManager {
|
||||
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_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.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 });
|
||||
|
||||
@ -1619,12 +1619,14 @@ public class ResourceManager {
|
||||
public static final HFRWavefrontObjectVBO rbmk_autoloader = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/rbmk/autoloader.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_gauge = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/rbmk/gauge.obj")).asVBO();
|
||||
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_tex = new ResourceLocation(RefStrings.MODID, "textures/models/machines/rbmk_crane.png");
|
||||
public static final ResourceLocation rbmk_autoloader_tex = new ResourceLocation(RefStrings.MODID, "textures/models/machines/rbmk_autoloader.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_gauge_tex = new ResourceLocation(RefStrings.MODID, "textures/models/network/gauge.png");
|
||||
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 crystal_power = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/blocks/crystals_power.obj")).noSmooth();
|
||||
|
||||
92
src/main/java/com/hbm/render/tileentity/RenderRBMKGauge.java
Normal file
92
src/main/java/com/hbm/render/tileentity/RenderRBMKGauge.java
Normal file
@ -0,0 +1,92 @@
|
||||
package com.hbm.render.tileentity;
|
||||
|
||||
import org.lwjgl.opengl.GL11;
|
||||
|
||||
import com.hbm.main.ResourceManager;
|
||||
import com.hbm.tileentity.machine.rbmk.TileEntityRBMKGauge;
|
||||
import com.hbm.tileentity.machine.rbmk.TileEntityRBMKGauge.GaugeUnit;
|
||||
import com.hbm.util.ColorUtil;
|
||||
|
||||
import net.minecraft.client.Minecraft;
|
||||
import net.minecraft.client.gui.FontRenderer;
|
||||
import net.minecraft.client.renderer.tileentity.TileEntitySpecialRenderer;
|
||||
import net.minecraft.tileentity.TileEntity;
|
||||
import net.minecraft.util.MathHelper;
|
||||
|
||||
public class RenderRBMKGauge 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;
|
||||
}
|
||||
|
||||
TileEntityRBMKGauge gauge = (TileEntityRBMKGauge) te;
|
||||
|
||||
for(int i = 0; i < 4; i++) {
|
||||
GaugeUnit unit = gauge.gauges[i];
|
||||
if(!unit.active) continue;
|
||||
|
||||
GL11.glPushMatrix();
|
||||
GL11.glTranslated(0.25, (i / 2) * -0.5 + 0.25, (i % 2) * -0.5 + 0.25);
|
||||
|
||||
GL11.glColor3f(1F, 1F, 1F);
|
||||
this.bindTexture(ResourceManager.rbmk_gauge_tex);
|
||||
ResourceManager.rbmk_gauge.renderPart("Gauge");
|
||||
|
||||
GL11.glPushMatrix();
|
||||
GL11.glColor3f(ColorUtil.fr(unit.color), ColorUtil.fg(unit.color), ColorUtil.fb(unit.color));
|
||||
|
||||
int lower = Math.min(unit.min, unit.max);
|
||||
int upper = Math.max(unit.min, unit.max);
|
||||
if(lower == upper) upper += 1;
|
||||
int range = upper - lower;
|
||||
double angle = (double) (unit.value - lower) / (double) range * 50D;
|
||||
if(unit.min > unit.max) angle = 50 - angle;
|
||||
|
||||
angle = MathHelper.clamp_double(angle, 0, 80);
|
||||
|
||||
GL11.glTranslated(0, 0.4375, -0.125);
|
||||
GL11.glRotated(angle - 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();
|
||||
|
||||
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.4F / 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();
|
||||
}
|
||||
|
||||
}
|
||||
@ -404,6 +404,7 @@ public class TileMappings {
|
||||
put(TileEntityRBMKConsole.class, "tileentity_rbmk_console");
|
||||
put(TileEntityRBMKDisplay.class, "tileentity_rbmk_display");
|
||||
put(TileEntityRBMKKeyPad.class, "tileentity_rbmk_keypad");
|
||||
put(TileEntityRBMKGauge.class, "tileentity_rbmk_gauge");
|
||||
put(TileEntityRBMKInlet.class, "tileentity_rbmk_inlet");
|
||||
put(TileEntityRBMKOutlet.class, "tileentity_rbmk_outlet");
|
||||
put(TileEntityRBMKAutoloader.class, "tileentity_rbmk_autoloader");
|
||||
|
||||
@ -0,0 +1,191 @@
|
||||
package com.hbm.tileentity.machine.rbmk;
|
||||
|
||||
import com.hbm.interfaces.IControlReceiver;
|
||||
import com.hbm.inventory.gui.GUIScreenRBMKGauge;
|
||||
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.util.MathHelper;
|
||||
import net.minecraft.world.World;
|
||||
|
||||
public class TileEntityRBMKGauge extends TileEntityLoadedBase implements IGUIProvider, IControlReceiver {
|
||||
|
||||
/* __________
|
||||
* / /|
|
||||
* /________ / |
|
||||
* | __ __ | |
|
||||
* |(_\) (_\)| |
|
||||
* | __ __ | |
|
||||
* |(_\) (_\)| /
|
||||
* |_________|/
|
||||
*/
|
||||
|
||||
public GaugeUnit[] gauges = new GaugeUnit[4];
|
||||
|
||||
public TileEntityRBMKGauge() {
|
||||
for(int i = 0; i < 4; i++) this.gauges[i] = new GaugeUnit(i);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void updateEntity() {
|
||||
|
||||
if(!worldObj.isRemote) {
|
||||
|
||||
for(int i = 0; i < 4; i++) this.gauges[i].update();
|
||||
|
||||
this.networkPackNT(50);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void serialize(ByteBuf buf) {
|
||||
super.serialize(buf);
|
||||
for(int i = 0; i < 4; i++) this.gauges[i].serialize(buf);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void deserialize(ByteBuf buf) {
|
||||
super.deserialize(buf);
|
||||
for(int i = 0; i < 4; i++) this.gauges[i].deserialize(buf);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void readFromNBT(NBTTagCompound nbt) {
|
||||
super.readFromNBT(nbt);
|
||||
|
||||
for(int i = 0; i < 4; i++) this.gauges[i].readFromNBT(nbt, i);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void writeToNBT(NBTTagCompound nbt) {
|
||||
super.writeToNBT(nbt);
|
||||
|
||||
for(int i = 0; i < 4; i++) this.gauges[i].writeToNBT(nbt, i);
|
||||
}
|
||||
|
||||
public class GaugeUnit {
|
||||
|
||||
/** If the value should be pulled from the RTTY system every tick, otherwise only on state change */
|
||||
public boolean polling;
|
||||
/** Color of the gauge needle */
|
||||
public int color;
|
||||
/** Label on the gauge as rendered on the panel */
|
||||
public String label = "";
|
||||
/** What channel to read values from */
|
||||
public String rtty = "";
|
||||
/** The minium value handled by the gauge */
|
||||
public int min = 0;
|
||||
/** The maximum value of the gauge, i.e. where the red area begins */
|
||||
public int max = 100;
|
||||
/** The current read value of the gauge, i.e. the needle position */
|
||||
public int value;
|
||||
/** Whether this gauge is visible on the panel */
|
||||
public boolean active;
|
||||
|
||||
public GaugeUnit(int initialIndex) {
|
||||
if(initialIndex == 0) color = 0x800000;
|
||||
if(initialIndex == 1) color = 0x804000;
|
||||
if(initialIndex == 2) color = 0x808000;
|
||||
if(initialIndex == 3) color = 0x000080;
|
||||
label = "Gauge " + (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);
|
||||
buf.writeInt(color);
|
||||
BufferUtil.writeString(buf, label);
|
||||
BufferUtil.writeString(buf, rtty);
|
||||
buf.writeInt(min);
|
||||
buf.writeInt(max);
|
||||
buf.writeInt(value);
|
||||
}
|
||||
|
||||
public void deserialize(ByteBuf buf) {
|
||||
active = buf.readBoolean();
|
||||
polling = buf.readBoolean();
|
||||
color = buf.readInt();
|
||||
label = BufferUtil.readString(buf);
|
||||
rtty = BufferUtil.readString(buf);
|
||||
min = buf.readInt();
|
||||
max = buf.readInt();
|
||||
value = buf.readInt();
|
||||
}
|
||||
|
||||
public void readFromNBT(NBTTagCompound nbt, int index) {
|
||||
this.active = nbt.getBoolean("active" + index);
|
||||
this.polling = nbt.getBoolean("polling" + index);
|
||||
this.color = nbt.getInteger("color" + index);
|
||||
this.label = nbt.getString("label" + index);
|
||||
this.rtty = nbt.getString("rtty" + index);
|
||||
this.min = nbt.getInteger("min" + index);
|
||||
this.max = nbt.getInteger("max" + 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.setInteger("color" + index, color);
|
||||
nbt.setString("label" + index, label);
|
||||
nbt.setString("rtty" + index, rtty);
|
||||
nbt.setInteger("min" + index, min);
|
||||
nbt.setInteger("max" + index, max);
|
||||
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 GUIScreenRBMKGauge(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 < 4; i++) {
|
||||
this.gauges[i].active = (active & (1 << i)) != 0;
|
||||
this.gauges[i].polling = (polling & (1 << i)) != 0;
|
||||
}
|
||||
|
||||
for(int i = 0; i < 4; i++) {
|
||||
GaugeUnit gauge = this.gauges[i];
|
||||
gauge.color = MathHelper.clamp_int(data.getInteger("color" + i), 0, 0xffffff);
|
||||
gauge.label = data.getString("label" + i);
|
||||
gauge.rtty = data.getString("rtty" + i);
|
||||
gauge.min = data.getInteger("min" + i);
|
||||
gauge.max = data.getInteger("max" + i);
|
||||
}
|
||||
}
|
||||
}
|
||||
File diff suppressed because it is too large
Load Diff
@ -4889,6 +4889,7 @@ tile.rbmk_control_reasim.name=RBMK Steuerstäbe (ReaSim)
|
||||
tile.rbmk_control_reasim_auto.name=RBMK Automatische Steuerstäbe (ReaSim)
|
||||
tile.rbmk_crane_console.name=RBMK Kransteuerung
|
||||
tile.rbmk_display.name=RBMK Anzeigepanel
|
||||
tile.rbmk_gauge.name=Redstone-over-Radio Meter
|
||||
tile.rbmk_heater.name=RBMK-Heizer
|
||||
tile.rbmk_key_pad.name=Redstone-over-Radio Tastenfeld
|
||||
tile.rbmk_loader.name=RBMK-Dampfadapter
|
||||
|
||||
@ -6168,6 +6168,7 @@ tile.rbmk_control_reasim.name=RBMK Control Rods (ReaSim)
|
||||
tile.rbmk_control_reasim_auto.name=RBMK Automatic Control Rods (ReaSim)
|
||||
tile.rbmk_crane_console.name=RBMK Crane Console
|
||||
tile.rbmk_display.name=RBMK Display Panel
|
||||
tile.rbmk_gauge.name=Redstone-over-Radio Gauge
|
||||
tile.rbmk_heater.name=RBMK Fluid Heater
|
||||
tile.rbmk_key_pad.name=Redstone-over-Radio Keypad
|
||||
tile.rbmk_loader.name=RBMK Steam Connector
|
||||
|
||||
440
src/main/resources/assets/hbm/models/rbmk/gauge.obj
Normal file
440
src/main/resources/assets/hbm/models/rbmk/gauge.obj
Normal file
@ -0,0 +1,440 @@
|
||||
# Blender v2.79 (sub 0) OBJ File: ''
|
||||
# www.blender.org
|
||||
o Needle
|
||||
v 0.031250 0.562500 -0.109375
|
||||
v 0.031250 0.437500 -0.109375
|
||||
v 0.031250 0.562500 -0.140625
|
||||
v 0.031250 0.437500 -0.140625
|
||||
v 0.031250 0.656250 -0.125000
|
||||
v 0.046875 0.656250 -0.125000
|
||||
v 0.046875 0.562500 -0.109375
|
||||
v 0.046875 0.437500 -0.109375
|
||||
v 0.046875 0.437500 -0.140625
|
||||
v 0.046875 0.562500 -0.140625
|
||||
vt -0.002146 -0.002232
|
||||
vt -0.002146 -0.002232
|
||||
vt -0.002146 -0.002232
|
||||
vt -0.002146 -0.002232
|
||||
vt -0.002146 -0.002232
|
||||
vt -0.002146 -0.002232
|
||||
vt -0.002146 -0.002232
|
||||
vt -0.002146 -0.002232
|
||||
vt -0.002146 -0.002232
|
||||
vt -0.002146 -0.002232
|
||||
vn 1.0000 0.0000 0.0000
|
||||
vn 0.0000 0.1644 -0.9864
|
||||
vn 0.0000 0.1644 0.9864
|
||||
vn 0.0000 0.0000 -1.0000
|
||||
vn 0.0000 0.0000 1.0000
|
||||
s off
|
||||
f 8/1/1 9/2/1 10/3/1
|
||||
f 5/4/2 10/3/2 3/5/2
|
||||
f 1/6/3 6/7/3 5/4/3
|
||||
f 3/5/4 9/2/4 4/8/4
|
||||
f 2/9/5 7/10/5 1/6/5
|
||||
f 6/7/1 7/10/1 10/3/1
|
||||
f 7/10/1 8/1/1 10/3/1
|
||||
f 5/4/2 6/7/2 10/3/2
|
||||
f 1/6/3 7/10/3 6/7/3
|
||||
f 3/5/4 10/3/4 9/2/4
|
||||
f 2/9/5 8/1/5 7/10/5
|
||||
o Gauge
|
||||
v 0.062500 0.687500 0.125000
|
||||
v 0.000000 0.718750 -0.156250
|
||||
v 0.000000 0.718750 0.156250
|
||||
v 0.062500 0.437500 -0.125000
|
||||
v 0.062500 0.687500 -0.125000
|
||||
v 0.000000 0.406250 -0.156250
|
||||
v 0.000000 0.406250 0.156250
|
||||
v 0.062500 0.437500 0.125000
|
||||
v 0.062500 0.718750 0.156250
|
||||
v 0.062500 0.718750 -0.156250
|
||||
v 0.062500 0.406250 -0.156250
|
||||
v 0.062500 0.406250 0.156250
|
||||
v 0.031250 0.687500 0.125000
|
||||
v 0.031250 0.687500 -0.125000
|
||||
v 0.031250 0.437500 -0.125000
|
||||
v 0.031250 0.437500 0.125000
|
||||
v 0.031250 0.463180 0.123708
|
||||
v 0.031250 0.455398 0.124389
|
||||
v 0.031250 0.457733 0.061446
|
||||
v 0.031250 0.449950 0.062127
|
||||
v 0.036250 0.463180 0.123708
|
||||
v 0.036250 0.455398 0.124389
|
||||
v 0.036250 0.457733 0.061446
|
||||
v 0.036250 0.449950 0.062127
|
||||
v 0.031250 0.687500 0.050000
|
||||
v 0.031250 0.505978 0.115470
|
||||
v 0.031250 0.498432 0.117492
|
||||
v 0.031250 0.489802 0.055100
|
||||
v 0.031250 0.482255 0.057122
|
||||
v 0.036250 0.505978 0.115470
|
||||
v 0.036250 0.498432 0.117492
|
||||
v 0.036250 0.489802 0.055100
|
||||
v 0.036250 0.482255 0.057122
|
||||
v 0.031250 0.546695 0.099926
|
||||
v 0.031250 0.539614 0.103228
|
||||
v 0.031250 0.520281 0.043282
|
||||
v 0.031250 0.513201 0.046584
|
||||
v 0.036250 0.546695 0.099926
|
||||
v 0.036250 0.539614 0.103228
|
||||
v 0.036250 0.520281 0.043282
|
||||
v 0.036250 0.513201 0.046584
|
||||
v 0.031250 0.584094 0.077548
|
||||
v 0.031250 0.577694 0.082029
|
||||
v 0.031250 0.548245 0.026350
|
||||
v 0.031250 0.541846 0.030832
|
||||
v 0.036250 0.584094 0.077548
|
||||
v 0.036250 0.577694 0.082029
|
||||
v 0.036250 0.548245 0.026350
|
||||
v 0.036250 0.541846 0.030832
|
||||
v 0.031250 0.617039 0.049015
|
||||
v 0.031250 0.611515 0.054539
|
||||
v 0.031250 0.572845 0.004820
|
||||
v 0.031250 0.567320 0.010345
|
||||
v 0.036250 0.617039 0.049015
|
||||
v 0.036250 0.611515 0.054539
|
||||
v 0.036250 0.572845 0.004820
|
||||
v 0.036250 0.567320 0.010345
|
||||
v 0.031250 0.644529 0.015194
|
||||
v 0.031250 0.640047 0.021594
|
||||
v 0.031250 0.593332 -0.020654
|
||||
v 0.031250 0.588850 -0.014255
|
||||
v 0.036250 0.644529 0.015194
|
||||
v 0.036250 0.640047 0.021594
|
||||
v 0.036250 0.593332 -0.020654
|
||||
v 0.036250 0.588850 -0.014255
|
||||
v 0.031250 0.665728 -0.022886
|
||||
v 0.031250 0.662426 -0.015805
|
||||
v 0.031250 0.609084 -0.049299
|
||||
v 0.031250 0.605782 -0.042219
|
||||
v 0.036250 0.665728 -0.022886
|
||||
v 0.036250 0.662426 -0.015805
|
||||
v 0.036250 0.609084 -0.049299
|
||||
v 0.036250 0.605782 -0.042219
|
||||
v 0.031250 0.679992 -0.064068
|
||||
v 0.031250 0.677970 -0.056522
|
||||
v 0.031250 0.619622 -0.080245
|
||||
v 0.031250 0.617600 -0.072698
|
||||
v 0.036250 0.679992 -0.064068
|
||||
v 0.036250 0.677970 -0.056522
|
||||
v 0.036250 0.619622 -0.080245
|
||||
v 0.036250 0.617600 -0.072698
|
||||
v 0.031250 0.686889 -0.107102
|
||||
v 0.031250 0.686208 -0.099320
|
||||
v 0.031250 0.624627 -0.112550
|
||||
v 0.031250 0.623946 -0.104767
|
||||
v 0.036250 0.686889 -0.107102
|
||||
v 0.036250 0.686208 -0.099320
|
||||
v 0.036250 0.624627 -0.112550
|
||||
v 0.036250 0.623946 -0.104767
|
||||
vt 0.428571 0.142857
|
||||
vt 0.500000 0.857143
|
||||
vt 0.428571 0.857143
|
||||
vt 0.071429 1.000000
|
||||
vt 0.071429 0.857143
|
||||
vt -0.000000 0.142857
|
||||
vt 0.071429 0.142857
|
||||
vt 0.142857 0.214286
|
||||
vt 0.071429 0.785714
|
||||
vt 0.142857 0.785714
|
||||
vt 0.428571 -0.000000
|
||||
vt 0.392857 0.785714
|
||||
vt 0.107143 0.785714
|
||||
vt 0.107143 0.214286
|
||||
vt 0.392857 0.214286
|
||||
vt 1.000000 1.000000
|
||||
vt 0.785714 1.000000
|
||||
vt 1.000000 0.428571
|
||||
vt 0.392857 0.285714
|
||||
vt 0.107143 0.142857
|
||||
vt 0.107143 0.285714
|
||||
vt 0.357143 0.785714
|
||||
vt 0.428571 0.214286
|
||||
vt 0.357143 0.214286
|
||||
vt 0.107143 0.714286
|
||||
vt 0.107143 0.857143
|
||||
vt 0.193750 0.857143
|
||||
vt 0.571429 0.285714
|
||||
vt 0.642857 0.142857
|
||||
vt 0.642857 0.285714
|
||||
vt 0.500000 0.142857
|
||||
vt 0.500000 0.285714
|
||||
vt 0.642857 0.000000
|
||||
vt 0.571429 0.142857
|
||||
vt 0.571429 0.000000
|
||||
vt 0.571429 0.428571
|
||||
vt 0.642857 0.428571
|
||||
vt 0.714286 0.285714
|
||||
vt 0.714286 0.142857
|
||||
vt 0.642857 1.000000
|
||||
vt 0.500000 0.428571
|
||||
vt 0.785714 0.428571
|
||||
vt 0.571429 0.285714
|
||||
vt 0.642857 0.142857
|
||||
vt 0.642857 0.285714
|
||||
vt 0.500000 0.142857
|
||||
vt 0.500000 0.285714
|
||||
vt 0.642857 0.000000
|
||||
vt 0.571429 0.142857
|
||||
vt 0.571429 0.000000
|
||||
vt 0.571429 0.428571
|
||||
vt 0.642857 0.428571
|
||||
vt 0.714286 0.285714
|
||||
vt 0.714286 0.142857
|
||||
vt 0.571429 0.285714
|
||||
vt 0.642857 0.142857
|
||||
vt 0.642857 0.285714
|
||||
vt 0.500000 0.142857
|
||||
vt 0.500000 0.285714
|
||||
vt 0.642857 0.000000
|
||||
vt 0.571429 0.142857
|
||||
vt 0.571429 0.000000
|
||||
vt 0.571429 0.428571
|
||||
vt 0.642857 0.428571
|
||||
vt 0.714286 0.285714
|
||||
vt 0.714286 0.142857
|
||||
vt 0.571429 0.285714
|
||||
vt 0.642857 0.142857
|
||||
vt 0.642857 0.285714
|
||||
vt 0.500000 0.142857
|
||||
vt 0.500000 0.285714
|
||||
vt 0.642857 0.000000
|
||||
vt 0.571429 0.142857
|
||||
vt 0.571429 0.000000
|
||||
vt 0.571429 0.428571
|
||||
vt 0.642857 0.428571
|
||||
vt 0.714286 0.285714
|
||||
vt 0.714286 0.142857
|
||||
vt 0.571429 0.285714
|
||||
vt 0.642857 0.142857
|
||||
vt 0.642857 0.285714
|
||||
vt 0.500000 0.142857
|
||||
vt 0.500000 0.285714
|
||||
vt 0.642857 0.000000
|
||||
vt 0.571429 0.142857
|
||||
vt 0.571429 0.000000
|
||||
vt 0.571429 0.428571
|
||||
vt 0.642857 0.428571
|
||||
vt 0.714286 0.285714
|
||||
vt 0.714286 0.142857
|
||||
vt 0.571429 0.285714
|
||||
vt 0.642857 0.142857
|
||||
vt 0.642857 0.285714
|
||||
vt 0.500000 0.142857
|
||||
vt 0.500000 0.285714
|
||||
vt 0.642857 0.000000
|
||||
vt 0.571429 0.142857
|
||||
vt 0.571429 0.000000
|
||||
vt 0.571429 0.428571
|
||||
vt 0.642857 0.428571
|
||||
vt 0.714286 0.285714
|
||||
vt 0.714286 0.142857
|
||||
vt 0.571429 0.285714
|
||||
vt 0.642857 0.142857
|
||||
vt 0.642857 0.285714
|
||||
vt 0.500000 0.142857
|
||||
vt 0.500000 0.285714
|
||||
vt 0.642857 0.000000
|
||||
vt 0.571429 0.142857
|
||||
vt 0.571429 0.000000
|
||||
vt 0.571429 0.428571
|
||||
vt 0.642857 0.428571
|
||||
vt 0.714286 0.285714
|
||||
vt 0.714286 0.142857
|
||||
vt 0.571429 0.285714
|
||||
vt 0.642857 0.142857
|
||||
vt 0.642857 0.285714
|
||||
vt 0.500000 0.142857
|
||||
vt 0.500000 0.285714
|
||||
vt 0.642857 0.000000
|
||||
vt 0.571429 0.142857
|
||||
vt 0.571429 0.000000
|
||||
vt 0.571429 0.428571
|
||||
vt 0.642857 0.428571
|
||||
vt 0.714286 0.285714
|
||||
vt 0.714286 0.142857
|
||||
vt 0.571429 0.285714
|
||||
vt 0.642857 0.142857
|
||||
vt 0.642857 0.285714
|
||||
vt 0.500000 0.142857
|
||||
vt 0.500000 0.285714
|
||||
vt 0.642857 0.000000
|
||||
vt 0.571429 0.142857
|
||||
vt 0.571429 0.000000
|
||||
vt 0.571429 0.428571
|
||||
vt 0.642857 0.428571
|
||||
vt 0.714286 0.285714
|
||||
vt 0.714286 0.142857
|
||||
vt 0.500000 0.142857
|
||||
vt 0.428571 1.000000
|
||||
vt -0.000000 0.857143
|
||||
vt 0.071429 0.214286
|
||||
vt 0.071429 -0.000000
|
||||
vt 0.392857 0.142857
|
||||
vt 0.428571 0.785714
|
||||
vt 0.392857 0.857143
|
||||
vt 0.392857 0.714286
|
||||
vt 0.500000 1.000000
|
||||
vn 0.0000 0.0000 -1.0000
|
||||
vn 0.0000 1.0000 0.0000
|
||||
vn 0.0000 -0.0000 1.0000
|
||||
vn 0.0000 -1.0000 0.0000
|
||||
vn 1.0000 0.0000 0.0000
|
||||
vn 0.0000 -0.9962 0.0872
|
||||
vn 0.0000 -0.0872 -0.9962
|
||||
vn 0.0000 0.0872 0.9962
|
||||
vn 0.0000 0.9962 -0.0872
|
||||
vn 0.0000 -0.9659 0.2588
|
||||
vn 0.0000 -0.2588 -0.9659
|
||||
vn 0.0000 0.2588 0.9659
|
||||
vn 0.0000 0.9659 -0.2588
|
||||
vn 0.0000 -0.9063 0.4226
|
||||
vn 0.0000 -0.4226 -0.9063
|
||||
vn 0.0000 0.4226 0.9063
|
||||
vn 0.0000 0.9063 -0.4226
|
||||
vn 0.0000 -0.8192 0.5736
|
||||
vn 0.0000 -0.5736 -0.8192
|
||||
vn 0.0000 0.5736 0.8192
|
||||
vn 0.0000 0.8192 -0.5736
|
||||
vn 0.0000 -0.7071 0.7071
|
||||
vn 0.0000 -0.7071 -0.7071
|
||||
vn 0.0000 0.7071 0.7071
|
||||
vn 0.0000 0.7071 -0.7071
|
||||
vn 0.0000 -0.5736 0.8192
|
||||
vn 0.0000 -0.8192 -0.5736
|
||||
vn 0.0000 0.8191 0.5736
|
||||
vn 0.0000 0.5736 -0.8192
|
||||
vn 0.0000 -0.4226 0.9063
|
||||
vn 0.0000 -0.9063 -0.4226
|
||||
vn 0.0000 0.9063 0.4226
|
||||
vn 0.0000 0.4226 -0.9063
|
||||
vn 0.0000 -0.2588 0.9659
|
||||
vn 0.0000 -0.9659 -0.2588
|
||||
vn 0.0000 0.9659 0.2588
|
||||
vn 0.0000 0.2588 -0.9659
|
||||
vn 0.0000 -0.0872 0.9962
|
||||
vn 0.0000 -0.9962 -0.0872
|
||||
vn 0.0000 0.9962 0.0872
|
||||
vn 0.0000 0.0872 -0.9962
|
||||
vn 0.0000 0.8192 0.5736
|
||||
vn 0.0000 -0.9962 -0.0871
|
||||
s off
|
||||
f 21/11/6 12/12/6 20/13/6
|
||||
f 20/13/7 13/14/7 19/15/7
|
||||
f 19/15/8 17/16/8 22/17/8
|
||||
f 18/18/6 23/19/6 11/20/6
|
||||
f 22/17/9 16/21/9 21/11/9
|
||||
f 15/22/10 19/15/10 11/23/10
|
||||
f 18/24/10 21/11/10 14/25/10
|
||||
f 14/25/10 20/13/10 15/22/10
|
||||
f 11/23/10 22/17/10 18/24/10
|
||||
f 24/26/10 35/27/10 25/28/10
|
||||
f 14/29/7 26/30/7 18/31/7
|
||||
f 15/32/8 25/33/8 14/34/8
|
||||
f 11/35/9 23/36/9 35/37/9
|
||||
f 32/38/10 33/39/10 31/40/10
|
||||
f 30/41/11 32/38/11 28/42/11
|
||||
f 29/43/12 34/44/12 30/45/12
|
||||
f 28/46/13 31/40/13 27/47/13
|
||||
f 27/48/14 33/39/14 29/49/14
|
||||
f 35/50/10 26/51/10 25/52/10
|
||||
f 41/53/10 42/54/10 40/55/10
|
||||
f 39/56/15 41/53/15 37/57/15
|
||||
f 38/58/16 43/59/16 39/60/16
|
||||
f 37/61/17 40/55/17 36/62/17
|
||||
f 36/63/18 42/54/18 38/64/18
|
||||
f 49/65/10 50/66/10 48/67/10
|
||||
f 47/68/19 49/65/19 45/69/19
|
||||
f 46/70/20 51/71/20 47/72/20
|
||||
f 45/73/21 48/67/21 44/74/21
|
||||
f 44/75/22 50/66/22 46/76/22
|
||||
f 57/77/10 58/78/10 56/79/10
|
||||
f 55/80/23 57/77/23 53/81/23
|
||||
f 54/82/24 59/83/24 55/84/24
|
||||
f 53/85/25 56/79/25 52/86/25
|
||||
f 52/87/26 58/78/26 54/88/26
|
||||
f 65/89/10 66/90/10 64/91/10
|
||||
f 63/92/27 65/89/27 61/93/27
|
||||
f 62/94/28 67/95/28 63/96/28
|
||||
f 61/97/29 64/91/29 60/98/29
|
||||
f 60/99/30 66/90/30 62/100/30
|
||||
f 73/101/10 74/102/10 72/103/10
|
||||
f 71/104/31 73/101/31 69/105/31
|
||||
f 70/106/32 75/107/32 71/108/32
|
||||
f 69/109/33 72/103/33 68/110/33
|
||||
f 68/111/34 74/102/34 70/112/34
|
||||
f 81/113/10 82/114/10 80/115/10
|
||||
f 79/116/35 81/113/35 77/117/35
|
||||
f 78/118/36 83/119/36 79/120/36
|
||||
f 77/121/37 80/115/37 76/122/37
|
||||
f 76/123/38 82/114/38 78/124/38
|
||||
f 89/125/10 90/126/10 88/127/10
|
||||
f 87/128/39 89/125/39 85/129/39
|
||||
f 86/130/40 91/131/40 87/132/40
|
||||
f 85/133/41 88/127/41 84/134/41
|
||||
f 84/135/42 90/126/42 86/136/42
|
||||
f 97/137/10 98/138/10 96/139/10
|
||||
f 95/140/43 97/137/43 93/141/43
|
||||
f 94/142/44 99/143/44 95/144/44
|
||||
f 93/145/45 96/139/45 92/146/45
|
||||
f 92/147/46 98/138/46 94/148/46
|
||||
f 21/11/6 16/149/6 12/12/6
|
||||
f 20/13/7 12/150/7 13/14/7
|
||||
f 19/15/8 13/151/8 17/16/8
|
||||
f 18/18/6 26/152/6 23/19/6
|
||||
f 22/17/9 17/153/9 16/21/9
|
||||
f 15/22/10 20/13/10 19/15/10
|
||||
f 18/24/10 22/17/10 21/11/10
|
||||
f 14/25/10 21/11/10 20/13/10
|
||||
f 11/23/10 19/15/10 22/17/10
|
||||
f 14/29/7 25/154/7 26/30/7
|
||||
f 15/32/8 24/155/8 25/33/8
|
||||
f 24/156/9 15/157/9 35/37/9
|
||||
f 15/157/9 11/35/9 35/37/9
|
||||
f 32/38/10 34/44/10 33/39/10
|
||||
f 30/41/11 34/44/11 32/38/11
|
||||
f 29/43/12 33/39/12 34/44/12
|
||||
f 28/46/13 32/38/13 31/40/13
|
||||
f 27/48/14 31/40/14 33/39/14
|
||||
f 35/50/10 23/158/10 26/51/10
|
||||
f 41/53/10 43/59/10 42/54/10
|
||||
f 39/56/15 43/59/15 41/53/15
|
||||
f 38/58/16 42/54/16 43/59/16
|
||||
f 37/61/17 41/53/17 40/55/17
|
||||
f 36/63/18 40/55/18 42/54/18
|
||||
f 49/65/10 51/71/10 50/66/10
|
||||
f 47/68/19 51/71/19 49/65/19
|
||||
f 46/70/20 50/66/20 51/71/20
|
||||
f 45/73/21 49/65/21 48/67/21
|
||||
f 44/75/22 48/67/22 50/66/22
|
||||
f 57/77/10 59/83/10 58/78/10
|
||||
f 55/80/23 59/83/23 57/77/23
|
||||
f 54/82/24 58/78/24 59/83/24
|
||||
f 53/85/25 57/77/25 56/79/25
|
||||
f 52/87/26 56/79/26 58/78/26
|
||||
f 65/89/10 67/95/10 66/90/10
|
||||
f 63/92/27 67/95/27 65/89/27
|
||||
f 62/94/28 66/90/28 67/95/28
|
||||
f 61/97/29 65/89/29 64/91/29
|
||||
f 60/99/30 64/91/30 66/90/30
|
||||
f 73/101/10 75/107/10 74/102/10
|
||||
f 71/104/31 75/107/31 73/101/31
|
||||
f 70/106/32 74/102/32 75/107/32
|
||||
f 69/109/47 73/101/47 72/103/47
|
||||
f 68/111/34 72/103/34 74/102/34
|
||||
f 81/113/10 83/119/10 82/114/10
|
||||
f 79/116/35 83/119/35 81/113/35
|
||||
f 78/118/36 82/114/36 83/119/36
|
||||
f 77/121/37 81/113/37 80/115/37
|
||||
f 76/123/38 80/115/38 82/114/38
|
||||
f 89/125/10 91/131/10 90/126/10
|
||||
f 87/128/39 91/131/39 89/125/39
|
||||
f 86/130/40 90/126/40 91/131/40
|
||||
f 85/133/41 89/125/41 88/127/41
|
||||
f 84/135/42 88/127/42 90/126/42
|
||||
f 97/137/10 99/143/10 98/138/10
|
||||
f 95/140/43 99/143/43 97/137/43
|
||||
f 94/142/48 98/138/48 99/143/48
|
||||
f 93/145/45 97/137/45 96/139/45
|
||||
f 92/147/46 96/139/46 98/138/46
|
||||
Binary file not shown.
|
After Width: | Height: | Size: 5.0 KiB |
Binary file not shown.
|
Before Width: | Height: | Size: 2.0 KiB |
Binary file not shown.
|
Before Width: | Height: | Size: 3.2 KiB |
BIN
src/main/resources/assets/hbm/textures/models/network/gauge.png
Normal file
BIN
src/main/resources/assets/hbm/textures/models/network/gauge.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 191 B |
Loading…
x
Reference in New Issue
Block a user