mirror of
https://github.com/HbmMods/Hbm-s-Nuclear-Tech-GIT.git
synced 2026-03-22 01:44:38 +00:00
Compare commits
15 Commits
f81adc816b
...
e8bbc53e36
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
e8bbc53e36 | ||
|
|
2e27763092 | ||
|
|
b97970404a | ||
|
|
827aaf13e6 | ||
|
|
bf0ad9be66 | ||
|
|
185c049635 | ||
|
|
b8cccbca16 | ||
|
|
eaacba72c8 | ||
|
|
6678b76187 | ||
|
|
132bc10e50 | ||
|
|
2d9e645f9e | ||
|
|
bfc7790cae | ||
|
|
92706fdba3 | ||
|
|
4d28c091e1 | ||
|
|
6d3aaaf045 |
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);
|
||||
@ -398,11 +386,14 @@ public class HbmWorldGen implements IWorldGenerator {
|
||||
int x = i + rand.nextInt(16);
|
||||
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
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@ -3815,7 +3815,7 @@ item.rbmk_pellet_mox.name=MOX燃料芯块
|
||||
item.rbmk_pellet_po210be.name=钋210-铍 中子源芯块
|
||||
item.rbmk_pellet_pu238be.name=钚238-铍 中子源芯块
|
||||
item.rbmk_pellet_ra226be.name=镭226-铍 中子源芯块
|
||||
item.rbmk_pellet_thmeu.name=ThMEU 中浓缩度铀-233导向钍燃料芯块
|
||||
item.rbmk_pellet_thmeu.name=ThMEU 浓缩度铀-235导向钍燃料芯块
|
||||
item.rbmk_pellet_ueu.name=未浓缩铀燃料芯块
|
||||
item.rbmk_pellet_zfb_am_mix.name=ZFB 燃料级镅燃料芯块
|
||||
item.rbmk_pellet_zfb_bismuth.name=ZFB 铋燃料芯块
|
||||
@ -4271,20 +4271,20 @@ item.twinkie.name=小蛋糕
|
||||
item.ullapool_caber.name=阿勒浦长木杆
|
||||
item.undefined.name=形态未定义物质
|
||||
item.upgrade_5g.name=5G辐射发射器升级
|
||||
item.upgrade_afterburn_1.name=一级粉色机器升级
|
||||
item.upgrade_afterburn_2.name=二级粉色机器升级
|
||||
item.upgrade_afterburn_3.name=三级粉色机器升级
|
||||
item.upgrade_afterburn_1.name=一级加力燃烧升级
|
||||
item.upgrade_afterburn_2.name=二级加力燃烧升级
|
||||
item.upgrade_afterburn_3.name=三级加力燃烧升级
|
||||
item.upgrade_centrifuge.name=采矿激光升级-自动离心
|
||||
item.upgrade_crystallizer.name=采矿激光升级-自动结晶
|
||||
item.upgrade_effect_1.name=一级绿色机器升级
|
||||
item.upgrade_effect_2.name=二级绿色机器升级
|
||||
item.upgrade_effect_3.name=三级绿色机器升级
|
||||
item.upgrade_effect_1.name=一级效率升级
|
||||
item.upgrade_effect_2.name=二级效率升级
|
||||
item.upgrade_effect_3.name=三级效率升级
|
||||
item.upgrade_ejector_1.name=一级弹射速度升级
|
||||
item.upgrade_ejector_2.name=二级弹射速度升级
|
||||
item.upgrade_ejector_3.name=三级弹射速度升级
|
||||
item.upgrade_fortune_1.name=一级紫色机器升级
|
||||
item.upgrade_fortune_2.name=二级紫色机器升级
|
||||
item.upgrade_fortune_3.name=三级紫色机器升级
|
||||
item.upgrade_fortune_1.name=一级时运升级
|
||||
item.upgrade_fortune_2.name=二级时运升级
|
||||
item.upgrade_fortune_3.name=三级时运升级
|
||||
item.upgrade_gc_speed.name=气体离心机超频升级
|
||||
item.upgrade_health.name=粉色力场发生器升级
|
||||
item.upgrade_muffler.name=消音器
|
||||
@ -4292,16 +4292,16 @@ item.upgrade_nullifier.name=采矿激光升级-自动销毁
|
||||
item.upgrade_overdrive_1.name=一级超速传动机器升级
|
||||
item.upgrade_overdrive_2.name=二级超速传动机器升级
|
||||
item.upgrade_overdrive_3.name=三级超速传动机器升级
|
||||
item.upgrade_power_1.name=一级蓝色机器升级
|
||||
item.upgrade_power_2.name=二级蓝色机器升级
|
||||
item.upgrade_power_3.name=三级蓝色机器升级
|
||||
item.upgrade_power_1.name=一级节能升级
|
||||
item.upgrade_power_2.name=二级节能升级
|
||||
item.upgrade_power_3.name=三级节能升级
|
||||
item.upgrade_radius.name=青色力场发生器升级
|
||||
item.upgrade_screm.name=采矿激光升级-目 力 科 学 家
|
||||
item.upgrade_shredder.name=采矿激光升级-自动粉碎
|
||||
item.upgrade_smelter.name=采矿激光升级-自动熔炼
|
||||
item.upgrade_speed_1.name=一级红色机器升级
|
||||
item.upgrade_speed_2.name=二级红色机器升级
|
||||
item.upgrade_speed_3.name=三级红色机器升级
|
||||
item.upgrade_speed_1.name=一级速度升级
|
||||
item.upgrade_speed_2.name=二级速度升级
|
||||
item.upgrade_speed_3.name=三级速度升级
|
||||
item.upgrade_stack_1.name=一级堆叠弹出升级
|
||||
item.upgrade_stack_2.name=二级堆叠弹出升级
|
||||
item.upgrade_stack_3.name=三级堆叠弹出升级
|
||||
@ -6019,7 +6019,7 @@ tile.wood_structure.roof.name=木质地板
|
||||
tile.wood_structure.scaffold.name=木质脚手架
|
||||
item.gun_amat.name=反器材步枪
|
||||
tile.fluid_pump.name=流量控制泵
|
||||
item.ammo_secret.bmg50_black.name=.50BMG旁道者弹药
|
||||
item.ammo_secret.bmg50_black.name=.50BMG穿透弹药
|
||||
item.ammo_standard.bmg50_sm.name=.50BMG子弹(星辉)
|
||||
item.gun_amat_penance.name=忏悔
|
||||
item.gun_amat_subtlety.name=明敏
|
||||
@ -6430,3 +6430,17 @@ item.ncrpa_plate.name=NCR游侠动力装甲 胸甲
|
||||
tile.machine_industrial_turbine.name=工业汽轮机
|
||||
tile.machine_industrial_turbine.desc=效率: 100%%
|
||||
tile.red_connector_super.name=大型电力连接器
|
||||
item.billet_uzh.name=铀氢锆燃料坯料
|
||||
item.rbmk_fuel_uzh.name=RBMK反应堆铀氢锆燃料棒
|
||||
item.rbmk_pellet_uzh.name=铀氢锆燃料芯块
|
||||
tile.rbmk_control_reasim.name=RBMK反应堆控制棒 (ReaSim)
|
||||
tile.rbmk_control_reasim_auto.name=RBMK反应堆自动控制棒 (ReaSim)
|
||||
tile.rbmk_display.name=RBMK显示面板
|
||||
tile.rbmk.dodd.t0=冷四氟甲烷储量
|
||||
tile.rbmk.dodd.t0_max=冷四氟甲烷容量
|
||||
tile.rbmk.dodd.t0_type=冷四氟甲烷种类
|
||||
tile.rbmk.dodd.t0_p=冷四氟甲烷压力
|
||||
tile.rbmk.dodd.t1=四氟甲烷储量
|
||||
tile.rbmk.dodd.t1_max=四氟甲烷容量
|
||||
tile.rbmk.dodd.t1_type=四氟甲烷种类
|
||||
tile.rbmk.dodd.t1_p=四氟甲烷压力
|
||||
|
||||
@ -7,7 +7,8 @@
|
||||
"zh_CN": "RBMK硼中子吸收器"
|
||||
},
|
||||
"content": {
|
||||
"en_US": "The absorber simply blocks neutrons from passing. Neutrons that leave the [[RBMK]] will cause radiation to leak out, while this can be prevented by simply blocking off the entire side with solid blocks, the absorber has the small advantage of being able to transfer heat. While it's rarely useful to use an absorber instead of a [[reflector|RBMK Tungsten Carbide Neutron Reflector]], some high-heat reactor designs with linear or exponential fuels may benefit from using absorbers to separate incompatible fuel rods.",
|
||||
"en_US": "The absorber simply blocks neutrons from passing. Neutrons that leave the [[RBMK]] will cause radiation to leak out, and while this can be prevented by simply blocking off the entire side with solid blocks, the absorber has the small advantages of being able to transfer heat through it as well as generate heat from the neutron flux it absorbs. While it's rarely useful to use an absorber instead of a [[reflector|RBMK Tungsten Carbide Neutron Reflector]], some high-heat reactor designs with linear or exponential fuels may benefit from using absorbers to separate incompatible fuel rods.",
|
||||
"zh_CN": "中子吸收器会直接阻止中子通过。离开[[RBMK]]的中子会造成 辐射,虽然用固体方块把整个反应堆的边缘包住就可以挡住辐射,但中子吸收 器有一个小优点——可以传递热量。虽然很多情况下[[中子反射器|RBMK Tungsten Carbide Neutron Reflector]]比中子吸 收器更有用,但在某些含有线性或指数型燃料棒的高热量反应堆设计中,用中 子吸收器分隔不能相邻的燃料棒也不失为一种选择。"
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@ -7,7 +7,8 @@
|
||||
"zh_CN": "RBMK蒸汽管道"
|
||||
},
|
||||
"content": {
|
||||
"en_US": "The RBMK steam channel is the primary way for the [[RBMK]] to be cooled, and to extract energy from it. The steam channel will use as much water as it can at once to cool itself down to the target temperature, i.e. the temperature of the steam type that is configured in the compressor. Since [[fuel channels|RBMK Fuel Channel]] are the only parts in the RBMK that actively heat up, it's recommended to put the steam channels as close as possible to them. Like most RBMK components, the steam channels do not block neutrons, so they can be connected cardinally to fuel channels.<br><br>The compressor settings allow higher density steam to be output, however, higher density steam is hotter, which means that the steam channel's ability to cool is limited. Despite this, higher density steam means that more water can flow through the channel, increasing the amount of cooling that can be done. In practice, most reactors will work fine with regular uncompressed steam. The compressor can be configured remotely via the [[console|RBMK Console]].<br><br>The steam channel only accepts water from the bottom and outputs steam at the top. Using an [[RBMK steam connector|RBMK Steam Connector]], both fluids can be handled from the bottom.",
|
||||
"en_US": "The RBMK steam channel is the primary way for the [[RBMK]] to be cooled, and to extract energy from it. The steam channel will use as much water as it can at once to cool itself down to the target temperature, i.e. the temperature of the steam type that is configured in the compressor. Since [[fuel channels|RBMK Fuel Channel]] are the only parts in the RBMK that actively heat up, it's recommended to put the steam channels as close as possible to them. Like most RBMK components, the steam channels do not block neutrons, so they can be connected cardinally to fuel channels.<br><br>The compressor settings allow higher density steam to be output, but higher density steam is hotter, which means that the reactor as a whole must run at a higher temperature, leaving less margin for safety. However, higher density steam generates more power, assuming the reactor can handle the higher temperature without having to be throttled. In practice, most reactors will work fine with regular uncompressed steam. The compression level can be configured remotely via the [[console|RBMK Console]].<br><br>The steam channel only accepts water from the bottom and outputs steam at the top. An [[RBMK steam connector|RBMK Steam Connector]] can be placed underneath the water pipe on a steam channel to allow steam extraction from the bottom as well.",
|
||||
"zh_CN": "RBMK蒸汽管道是冷却[[RBMK]]和通过RBMK发电的主要方式。 蒸汽管道会使用尽可能多的水将自身冷却至目标温度(即设定的蒸汽压缩等级 对应的蒸汽的温度)。[[燃料通道|RBMK Fuel Channel]]是RBMK中唯一能够主动产热的部件, 因此建议将蒸汽管道放置在距离燃料通道尽量近的地方。与大多数RBMK部件 类似,蒸汽管道不会阻挡中子,因此其可以与燃料通道直接接触。<br><br>通过调整蒸汽压缩等级可以使蒸汽管道输出高等级蒸汽,但高等级蒸汽温度更 高,进而会使得蒸汽管道的冷却能力受到限制;然而,蒸汽压缩等级更高也意 味着蒸汽管道中的水流量更大,这又提高了冷却总量。在实际操作中,大多数 反应堆都能在使用普通蒸汽时正常工作。蒸汽压缩等级可通过[[控制台|RBMK Console]]远程调整。<br><br>蒸汽管道只从底部接收水并从顶部输出蒸汽,使用[[RBMK蒸汽导出器|RBMK Steam Connector]]可 使两种流体都能从底部输入输出。"
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@ -7,7 +7,8 @@
|
||||
"zh_CN": "RBMK石墨式反应堆控制台"
|
||||
},
|
||||
"content": {
|
||||
"en_US": "The RBMK console allows monitoring and control over an [[RBMK]] over a 15x15 block area. While technically optional, it is usually an important part in most successful RBMKs. To use the console, shift-click the central position of the RBMK with an RBMK linker, then shift-click the console.<br><br>The console has a display that shows fuel status and component heat as part of its model, this alone allows the reactor's status to be determined easily from afar, even without using the GUI. In addition, the console has six displays which can be configured to show various infos. To configure, open the GUI, select the columns that should be monitored, click the \"Assign selected columns\" button, and then click on the monitor type button until it shows the desired info.<br><br>On the bottom, the console's GUI also shows a graph of the total neutron flux that is being detected by the [[fuel channels|RBMK Fuel Channel]], making it easy to detect changes such as a drop in reaction due to fuel depletion or hazardous reaction spikes.<br><br>In the center, there are colored buttons which can quickly select all [[control rods|RBMK Control Rods]] in that color group with left click, or assign all selected control rods a color group with right click. In addition, there is a small text field that can set the control rod extraction level of all selected control rods. Finally, the small white/red gradient button allows to cycle between the compression settions on selected [[steam channels|RBMK Steam Channel]].",
|
||||
"en_US": "The RBMK console allows monitoring and control over an [[RBMK]] over a 15x15 block area. While technically optional, it is usually an important part in most successful RBMKs. To use the console, shift-click the central position of the RBMK with an RBMK linker, then shift-click the console.<br><br>The console has a display that shows fuel status and component heat as part of its model, this alone allows the reactor's status to be determined easily from afar, even without using the GUI. In addition, the console has six displays which can be configured to show various infos. To configure, open the GUI, select the columns that should be monitored, click the \"Assign selected columns\" button, and then click on the monitor type button until it shows the desired info.<br><br>On the bottom, the console's GUI also shows a graph of the total neutron flux that is being detected by the [[fuel channels|RBMK Fuel Channel]], making it easy to detect changes such as a drop in the reaction due to fuel depletion or a hazardous reaction spike.<br><br>In the center, there are colored buttons which can quickly select all [[control rods|RBMK Control Rods]] in that color group with left click, or assign all selected control rods a color group with right click. In addition, there is a small text field that can set the extraction level of all selected control rods. Finally, there is a small white/red gradient button which cycles through the compression settings on selected [[steam channels|RBMK Steam Channel]].",
|
||||
"zh_CN": "RBMK石墨式反应堆控制台可以监测并控制15x15方块范围内的[[RBMK]] 反应堆部件。RBMK控制台在技术上不是必需的,但通常是绝大多数成功的 RBMK的重要组成部分。要使用RBMK控制台,需要先用RBMK连接装置 潜行右击反应堆的中心位置,再潜行右击控制台。<br><br>控制台的模型上具有一个显示燃料状态和反应堆部件温度的屏幕,这个屏幕使 反应堆的状态可以很容易地从远处监测,甚至完全不用打开GUI就能做到。 此外,控制台还含有六个可以显示多种信息的屏幕,其显示内容可以配置;若 要配置其显示内容,则需要打开GUI并选择需要监测的柱体,之后点击“绑 定所选柱体”按钮,再点击检测项目按钮,直到出现想要的内容。<br><br>控制台GUI底部还有一个显示[[燃料通道|RBMK Fuel Channel]]检测到的总中子通量的图表,通 过这个图表可以很容易监测到燃料消耗导致的反应剧烈程度下降,或是危险的 中子通量激增。<br><br>对GUI中部的彩色按钮点击左键,可以选择所有相应颜色的[[控制棒|RBMK Control Rods]], 点击右键则可以将选定的控制棒分配至相应颜色的组别。彩色按钮下方的文本 框可用于设置所有选定的燃料棒的抽出程度。最后一个红白渐变色按钮可以切 换选定的[[蒸汽管道|RBMK Steam Channel]]的压缩等级。"
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@ -7,7 +7,9 @@
|
||||
"zh_CN": "RBMK反应堆自动控制棒"
|
||||
},
|
||||
"content": {
|
||||
"en_US": "Automatic control rods, unlike the standard [[RBMK control rods|RBMK Control Rods]], cannot be controlled manually, instead they can be configured to adjust their insertion level based on their own component heat. A minimum and maximum heat, along with a minimum and maximum level which correspond to those values can be set, as well as a curve which defines the behavior between those levels.<br><br>It is possible, but not recommended, to have a reactor that runs solely on automatic control rods. They do see occasional use for smoothing out reaction spikes and for controlling the neutron sources on subcritical reactors.",
|
||||
"en_US": "Automatic control rods, unlike the standard [[RBMK control rods|RBMK Control Rods]], cannot be controlled manually, instead they must be configured to adjust their insertion level based on their own temperature. A minimum and maximum temperature, along with a minimum and maximum extraction level which corresponds to those values can be set, as well as a curve which defines the behavior between those levels.<br><br>It is possible, but not recommended, to have a reactor that runs solely on automatic control rods. They do see occasional use for smoothing out reaction spikes and for controlling the neutron sources on subcritical reactors.",
|
||||
"zh_CN": "自动升降的控制棒,与[[RBMK反应堆控制棒|RBMK Control Rods]]不同,其不能手动控制, 而是需要进行设定,设定后即可根据自身温度调整控制棒插入程度。可以设定 的项目有最低温度和最高温度、对应的控制棒最低和最高插入程度,以及定义 其在两个极值之间行为的曲线。<br><br>尽管有可能搭建出一个只使用自动控制棒的反应堆,但不建议这么做。自动控 制棒偶尔会用于抹平中子通量尖峰和在亚临界反应堆中控制中子源。"
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
@ -7,7 +7,8 @@
|
||||
"zh_CN": "RBMK反应堆控制棒"
|
||||
},
|
||||
"content": {
|
||||
"en_US": "The RBMK control rods can be used to throttle or even turn off an [[RBMK]]. Neutrons that pass throguh the control rod will be reduced proportional to the rod's insertion, a 100% inserted control rod will block off all incoming neutrons, a 50% inserted control rod will only block half. Control rods can also be controlled remotely via the [[RBMK console|RBMK Console]].<br><br>Moderated control rods function in much the same manner, except that they convert fast neutrons into slow neutrons, much like how a [[moderator|RBMK Graphite Moderator]] would.<br><br>[[Automatic control rods|RBMK Automatic Control Rods]] have a similar purpose, except that they will automatically adjust their level based on the reactor's temperature.<br><br>Due to minor complications in their design, control rods may cause reaction spikes when being inserted a far distance at once, practice caution when using the AZ-5.",
|
||||
"en_US": "The RBMK control rods can be used to throttle or even turn off an [[RBMK]]. Neutrons that pass through the control rod will be reduced proportionally to the rod's insertion, meaning a 100% inserted control rod will block off all incoming neutrons, a 50% inserted control rod will only block half, and so on. Control rods can also be controlled remotely via the [[RBMK console|RBMK Console]].<br><br>Moderated control rods function in much the same manner, except that they convert fast neutrons into slow neutrons, much like how a [[moderator|RBMK Graphite Moderator]] would.<br><br>[[Automatic control rods|RBMK Automatic Control Rods]] have a similar purpose, except that they will automatically adjust their level based on the reactor's temperature.<br><br>Due to minor complications in their design, control rods may cause reaction spikes when being inserted a far distance at once, practice caution when using the AZ-5.",
|
||||
"zh_CN": "控制棒可用于限制[[RBMK]]反应堆的功率,或者直接关停反应堆。 通过控制棒的中子会按照控制棒的插入比例减少,100%插入的控制棒会阻 挡所有进入的中子,而50%插入的控制棒只会阻挡一半中子。控制棒也可通过 [[RBMK控制台|RBMK Console]]远程控制。<br><br>慢化控制棒的工作方式与普通控制棒大体相同,但其会把快中子转换为慢中子, 类似[[慢化剂|RBMK Graphite Moderator]]。<br><br>[[自动控制棒|RBMK Automatic Control Rods]]的目的相同,但其会根据反应堆的温度自行调整插入比例。<br><br>由于尖端设计有一定缺陷,控制棒在从高处一次性插到底时可能会引起中子通 量尖峰,在使用AZ-5按钮时尤其需要注意。"
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@ -7,6 +7,7 @@
|
||||
"zh_CN": "RBMK冷却器"
|
||||
},
|
||||
"content": {
|
||||
"en_US": "The cooler is an optional component that can be used to cool an [[RBMK]], however unlike the [[steam channel|RBMK Steam Channel]], the cooler does not allow the heat to be extracted and used. The RBMK cooler uses up cold perfluoromethyl and outputs regular PFM at a constant rate of 50mB/t, and rapidly cools down all RBMK components in a 5x5 area."
|
||||
"en_US": "The cooler is an optional component that can be used to cool an [[RBMK]], however unlike the [[steam channel|RBMK Steam Channel]], the cooler does not allow the heat to be extracted and used. The RBMK cooler uses up cold perfluoromethyl and outputs regular PFM at a constant rate of 50mB/t, and rapidly cools down all RBMK components in a 5x5 area by 200°C/t."
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@ -7,7 +7,8 @@
|
||||
"zh_CN": "RBMK起重机控制台"
|
||||
},
|
||||
"content": {
|
||||
"en_US": "The RBMK crane console allows fuel rods to be extracted, transported and inserted safely from a distance. Linking to an [[RBMK]] works similarly as it does with a [[RBMK console|RBMK Console]] using the RBMK linker tool. Once linked, the console spawns the crane over the RBMK. the crane can be controlled when standing in front of the console, using arrow keys by default to move it, and the enter key to load or unload a fuel rod. The crane's loading capabilities are compatible with all variants of the [[fuel channel|RBMK Fuel Channel]] and the [[storage column|RBMK Storage Column]].",
|
||||
"en_US": "The RBMK crane console allows fuel rods to be extracted, transported and inserted safely from a distance. Linking to an [[RBMK]] works similarly as it does with a [[RBMK console|RBMK Console]] using the RBMK linker tool. Once linked, the console spawns the crane over the RBMK. The crane can be controlled when standing in front of the console, using arrow keys by default to move it, and the enter key to load or unload a fuel rod. The crane's loading capabilities are compatible with all variants of the [[fuel channel|RBMK Fuel Channel]] and the [[storage column|RBMK Storage Column]].",
|
||||
"zh_CN": "RBMK起重机控制台用于在远距离安全提取、移动和插入燃料棒。用RBMK 连接装置将其连接至[[RBMK]]的方法与连接[[RBMK控制台|RBMK Console]]的方法相同。 一旦连接成功,控制台就会在反应堆上方生成起重机。操作起重机需要站在起 重机控制台前,默认使用方向键移动吊臂,按回车键装载或卸载燃料棒。起重 机的装卸能力与所有种类的[[燃料通道|RBMK Fuel Channel]]和[[燃料棒存储棒|RBMK Storage Column]]兼容。"
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@ -7,7 +7,8 @@
|
||||
"zh_CN": "RBMK流体加热器"
|
||||
},
|
||||
"content": {
|
||||
"en_US": "The RBMK fluid heater provides an alternate way of cooling the [[RBMK]] compared to the [[RBMK steam channel|RBMK Steam Channel]]. Instead of boiling water into turbine-usable steam, it heats up a type of coolant which may be used in different ways. Hot coolant can be used in a [[heat exchanging heater|Heat Exchanging Heater]] to either power certain machines directly, or to boil water in a [[boiler|Boiler]], creating a secondary loop. Do note that the used coolant needs to be heat exchanger compatible, [[PWR]]-exclusive coolants like liquid sodium will not work in an RBMK.<br><br>Just like in a steam channel, the cold coolant normally enters the bottom and the hot coolant exits from the top. Both connections can be on the bottom when using an [[RBMK steam connector|RBMK Steam Connector]].",
|
||||
"en_US": "The RBMK fluid heater provides an alternate way of cooling the [[RBMK]] compared to the [[RBMK steam channel|RBMK Steam Channel]]. Instead of boiling water into turbine-usable steam, it heats up a type of coolant which may be used in different ways. Hot coolant can be used in a [[heat exchanging heater|Heat Exchanging Heater]] to either power certain machines directly, or to boil water in a [[boiler|Boiler]], creating a secondary loop. Do note that the coolant used needs to be compatible with the fluid heater, [[PWR]]-exclusive coolants like liquid sodium will not work in an RBMK.<br><br>Just like in a steam channel, the cold coolant normally enters the bottom and the hot coolant exits from the top. Both connections can be on the bottom when using an [[RBMK steam connector|RBMK Steam Connector]].",
|
||||
"zh_CN": "RBMK流体加热器提供了使用[[RBMK蒸汽管道|RBMK Steam Channel]]以外冷却[[RBMK]] 的另一种方法。其并不直接将水加热为可用于涡轮的蒸汽,而是加热冷却剂, 被加热的冷却剂可以有多种用途。热冷却剂可以在[[换热加热器|Heat Exchanging Heater]]中放出热量, 以直接驱动部分机器,或者在 [[锅炉|Boiler]]中加热水,进而形成二级循环。需要注意的是,使用的冷却液必须可用于流体加热 器,[[PWR]]独占的冷却剂不能在RBMK中使用。<br><br>与蒸汽管道相同,冷却剂通常从底部进入,热冷却剂从顶部输出。使用 [[RBMK蒸汽导出器|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