i had to switch gears on em, fish-tail in the rear view mirr-on em

skrttt!
This commit is contained in:
Vaern 2024-04-22 22:49:03 -07:00
parent 0edf9a42fa
commit 0e72180e41
12 changed files with 515 additions and 0 deletions

View File

@ -796,6 +796,7 @@ public class ModBlocks {
public static Block radio_torch_sender;
public static Block radio_torch_receiver;
public static Block radio_torch_counter;
public static Block radio_torch_logic;
public static Block radio_telex;
public static Block conveyor;
@ -1950,6 +1951,7 @@ public class ModBlocks {
radio_torch_sender = new RadioTorchSender().setBlockName("radio_torch_sender").setHardness(0.1F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab);
radio_torch_receiver = new RadioTorchReceiver().setBlockName("radio_torch_receiver").setHardness(0.1F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab);
radio_torch_counter = new RadioTorchCounter().setBlockName("radio_torch_counter").setHardness(0.1F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":rtty_counter");
radio_torch_logic = new RadioTorchLogic().setBlockName("radio_torch_logic").setHardness(0.1F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab);
radio_telex = new RadioTelex().setBlockName("radio_telex").setHardness(3F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":radio_telex");
conveyor = new BlockConveyor().setBlockName("conveyor").setHardness(2.0F).setResistance(2.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":conveyor");
@ -3230,6 +3232,7 @@ public class ModBlocks {
register(radio_torch_sender);
register(radio_torch_receiver);
register(radio_torch_counter);
register(radio_torch_logic);
register(radio_telex);
register(crane_extractor);

View File

@ -0,0 +1,86 @@
package com.hbm.blocks.network;
import java.util.ArrayList;
import java.util.List;
import com.hbm.blocks.ILookOverlay;
import com.hbm.inventory.gui.GUIScreenRadioTorchLogic;
import com.hbm.lib.RefStrings;
import com.hbm.tileentity.network.TileEntityRadioTorchBase;
import com.hbm.tileentity.network.TileEntityRadioTorchLogic;
import com.hbm.util.I18nUtil;
import cpw.mods.fml.relauncher.Side;
import cpw.mods.fml.relauncher.SideOnly;
import net.minecraft.client.gui.GuiScreen;
import net.minecraft.client.renderer.texture.IIconRegister;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.tileentity.TileEntity;
import net.minecraft.util.EnumChatFormatting;
import net.minecraft.world.IBlockAccess;
import net.minecraft.world.World;
import net.minecraftforge.client.event.RenderGameOverlayEvent.Pre;
public class RadioTorchLogic extends RadioTorchRWBase {
public RadioTorchLogic() {
super();
}
@Override
@SideOnly(Side.CLIENT)
public void registerBlockIcons(IIconRegister iconRegister) {
this.blockIcon = iconRegister.registerIcon(RefStrings.MODID + ":rtty_logic_off");
this.iconOn = iconRegister.registerIcon(RefStrings.MODID + ":rtty_logic_on");
}
@Override
public TileEntity createNewTileEntity(World world, int meta) {
TileEntityRadioTorchLogic tile = new TileEntityRadioTorchLogic();
tile.lastUpdate = world.getTotalWorldTime();
return tile;
}
@Override
public boolean canProvidePower() {
return true;
}
@Override
public int isProvidingWeakPower(IBlockAccess world, int x, int y, int z, int side) {
TileEntity tile = world.getTileEntity(x, y, z);
if(tile instanceof TileEntityRadioTorchLogic) {
int state = ((TileEntityRadioTorchLogic) tile).lastState;
return state;
}
return 0;
}
@Override
@SideOnly(Side.CLIENT)
public void printHook(Pre event, World world, int x, int y, int z) {
TileEntity te = world.getTileEntity(x, y, z);
if(te instanceof TileEntityRadioTorchLogic) {
TileEntityRadioTorchLogic radio = (TileEntityRadioTorchLogic) te;
List<String> text = new ArrayList();
if(radio.channel != null && !radio.channel.isEmpty()) text.add(EnumChatFormatting.AQUA + "Freq: " + radio.channel);
text.add(EnumChatFormatting.RED + "Signal: " + radio.lastState);
ILookOverlay.printGeneric(event, I18nUtil.resolveKey(getUnlocalizedName() + ".name"), 0xffff00, 0x404000, text);
}
}
@Override
@SideOnly(Side.CLIENT)
public GuiScreen provideGUI(int ID, EntityPlayer player, World world, int x, int y, int z) {
TileEntity te = world.getTileEntity(x, y, z);
if(te instanceof TileEntityRadioTorchLogic)
return new GUIScreenRadioTorchLogic((TileEntityRadioTorchLogic) te);
return null;
}
}

View File

@ -0,0 +1,204 @@
package com.hbm.inventory.gui;
import java.util.Arrays;
import org.lwjgl.input.Keyboard;
import org.lwjgl.input.Mouse;
import org.lwjgl.opengl.GL11;
import com.hbm.inventory.container.ContainerCounterTorch;
import com.hbm.lib.RefStrings;
import com.hbm.packet.NBTControlPacket;
import com.hbm.packet.PacketDispatcher;
import com.hbm.tileentity.network.TileEntityRadioTorchCounter;
import com.hbm.tileentity.network.TileEntityRadioTorchLogic;
import com.hbm.tileentity.network.TileEntityRadioTorchSender;
import com.hbm.util.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.entity.player.InventoryPlayer;
import net.minecraft.nbt.NBTTagCompound;
import net.minecraft.util.ResourceLocation;
public class GUIScreenRadioTorchLogic extends GuiScreen {
protected static final ResourceLocation texture = new ResourceLocation(RefStrings.MODID + ":textures/gui/machine/gui_rtty_logic_receiver.png");
protected TileEntityRadioTorchLogic logic;
protected GuiTextField frequency;
protected GuiTextField[] map;
protected int[] conditions; //so the 'save settings' paradigm applies to the conditions, too
protected static final int xSize = 256;
protected static final int ySize = 204;
protected int guiLeft;
protected int guiTop;
public GUIScreenRadioTorchLogic(TileEntityRadioTorchLogic logic) {
this.logic = logic;
}
@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;
this.frequency = new GuiTextField(this.fontRendererObj, guiLeft + 25 + oX, guiTop + 17 + oY, 90 - oX * 2, 14);
this.frequency.setTextColor(0x00ff00);
this.frequency.setDisabledTextColour(0x00ff00);
this.frequency.setEnableBackgroundDrawing(false);
this.frequency.setMaxStringLength(10);
this.frequency.setText(logic.channel == null ? "" : logic.channel);
this.map = new GuiTextField[16];
this.conditions = new int[16];
for(int i = 0; i < 16; i++) {
this.map[i] = new GuiTextField(this.fontRendererObj, guiLeft + 7 + (130 * (i / 8)) + oX + 18, guiTop + 53 + (18 * (i % 8)) + oY, 54 - oX * 2, 14);
this.map[i].setTextColor(0x00ff00);
this.map[i].setDisabledTextColour(0x00ff00);
this.map[i].setEnableBackgroundDrawing(false);
this.map[i].setMaxStringLength(15);
this.map[i].setText(logic.mapping[i] == null ? "" : logic.mapping[i]);
this.conditions[i] = logic.conditions[i];
}
}
@Override
public void drawScreen(int x, int y, float f) {
this.drawDefaultBackground();
this.drawGuiContainerBackgroundLayer(f, x, y);
GL11.glDisable(GL11.GL_LIGHTING);
this.drawGuiContainerForegroundLayer(x, y);
GL11.glEnable(GL11.GL_LIGHTING);
//easy selection
if(guiLeft > x && guiLeft + xSize <= x && guiTop > y && guiTop + ySize <= y) return;
if(!Mouse.isButtonDown(0) && !Mouse.isButtonDown(1) && Mouse.next()) {
for(int j = 0; j < 16; j++) {
if(guiLeft + 7 + (130 * (j / 8)) <= x && guiLeft + 7 + 18 + (130 * (j / 8)) > x && guiTop + 53 + (18 * (j % 8)) <= y && guiTop + 53 + 18 + (18 * (j % 8)) > y) {
int scroll = Mouse.getEventDWheel();
if(scroll > 0) this.conditions[j] = (this.conditions[j] + 1) % 10;
if(scroll < 0) this.conditions[j] = (this.conditions[j] + 9) % 10;
return;
}
}
}
}
private void drawGuiContainerForegroundLayer(int x, int y) {
String name = I18nUtil.resolveKey("container.rttyLogic");
this.fontRendererObj.drawString(name, this.guiLeft + this.xSize / 2 - this.fontRendererObj.getStringWidth(name) / 2, this.guiTop + 6, 4210752);
//TODO add localization for *every* RTTY
if(guiLeft + 137 <= x && guiLeft + 137 + 18 > x && guiTop + 17 < y && guiTop + 17 + 18 >= y) {
func_146283_a(Arrays.asList(new String[] { logic.descending ? "Descending Order" : "Ascending Order" }), x, y);
}
if(guiLeft + 173 <= x && guiLeft + 173 + 18 > x && guiTop + 17 < y && guiTop + 17 + 18 >= y) {
func_146283_a(Arrays.asList(new String[] { logic.polling ? "Polling" : "State Change" }), x, y);
}
if(guiLeft + 209 <= x && guiLeft + 209 + 18 > x && guiTop + 17 < y && guiTop + 17 + 18 >= y) {
func_146283_a(Arrays.asList(new String[] { "Save Settings" }), x, y);
}
for(int j = 0; j < 16; j++) {
if(guiLeft + 7 + (130 * (j / 8)) <= x && guiLeft + 7 + 18 + (130 * (j / 8)) > x && guiTop + 53 + (18 * (j % 8)) <= y && guiTop + 53 + 18 + (18 * (j % 8)) > y) {
func_146283_a(Arrays.asList(new String[] { I18nUtil.resolveKey("desc.gui.rttyLogic.cond" + this.conditions[j]) }), x, y);
break;
}
}
}
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);
if(logic.descending) drawTexturedModalRect(guiLeft + 137, guiTop + 17, 0, 204, 18, 18);
if(logic.polling) drawTexturedModalRect(guiLeft + 173, guiTop + 17, 0, 222, 18, 18);
for(int i = 0; i < 16; i++) {
if(logic.mapping[i].isEmpty()) {
if(this.conditions[i] != 0)
drawTexturedModalRect(guiLeft + 7 + (130 * (i / 8)), guiTop + 53 + (18 * (i % 8)), 18 + this.conditions[i] * 18, 222, 18, 18);
} else {
drawTexturedModalRect(guiLeft + 7 + (130 * (i / 8)), guiTop + 53 + (18 * (i % 8)), 18 + this.conditions[i] * 18, 204, 18, 18);
drawTexturedModalRect(guiLeft + 85 + (130 * (i / 8)), guiTop + 57 + (18 * (i % 8)), 198, 204, 14, 10);
}
}
for(int i = 0; i < 16; i++) this.map[i].drawTextBox();
this.frequency.drawTextBox();
}
@Override
protected void mouseClicked(int x, int y, int i) {
super.mouseClicked(x, y, i);
this.frequency.mouseClicked(x, y, i);
for(int j = 0; j < 16; j++) this.map[j].mouseClicked(x, y, i);
if(guiLeft + 137 <= x && guiLeft + 137 + 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();
data.setBoolean("d", !logic.descending);
PacketDispatcher.wrapper.sendToServer(new NBTControlPacket(data, logic.xCoord, logic.yCoord, logic.zCoord));
}
if(guiLeft + 173 <= x && guiLeft + 173 + 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();
data.setBoolean("p", !logic.polling);
PacketDispatcher.wrapper.sendToServer(new NBTControlPacket(data, logic.xCoord, logic.yCoord, logic.zCoord));
}
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();
data.setString("c", this.frequency.getText());
for(int j = 0; j < 16; j++) data.setString("m" + j, this.map[j].getText().isEmpty() ? "" : this.map[j].getText());
for(int j = 0; j < 16; j++) data.setInteger("c" + j, this.conditions[j]);
PacketDispatcher.wrapper.sendToServer(new NBTControlPacket(data, logic.xCoord, logic.yCoord, logic.zCoord));
}
for(int j = 0; j < 16; j++) {
if(guiLeft + 7 + (130 * (j / 8)) <= x && guiLeft + 7 + 18 + (130 * (j / 8)) > x && guiTop + 53 + (18 * (j % 8)) <= y && guiTop + 53 + 18 + (18 * (j % 8)) > y) {
mc.getSoundHandler().playSound(PositionedSoundRecord.func_147674_a(new ResourceLocation("gui.button.press"), 1.0F));
this.conditions[j] = (this.conditions[j] + 1) % 10;
}
}
}
@Override
protected void keyTyped(char c, int i) {
if(this.frequency.textboxKeyTyped(c, i))
return;
for(int j = 0; j < 16; j++) if(this.map[j].textboxKeyTyped(c, i)) return;
if(i == 1 || i == 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;
}
}

View File

@ -248,6 +248,7 @@ public class CraftingManager {
addRecipeAuto(new ItemStack(ModBlocks.radio_torch_sender, 4), new Object[] { "G", "R", "I", 'G', "dustGlowstone", 'R', Blocks.redstone_torch, 'I', NETHERQUARTZ.gem() });
addRecipeAuto(new ItemStack(ModBlocks.radio_torch_receiver, 4), new Object[] { "G", "R", "I", 'G', "dustGlowstone", 'R', Blocks.redstone_torch, 'I', IRON.ingot() });
addRecipeAuto(new ItemStack(ModBlocks.radio_torch_logic, 4), new Object[] { "G", "R", "I", 'G', "dustGlowstone", 'R', Blocks.redstone_torch, 'I', ModItems.circuit_copper });
addRecipeAuto(new ItemStack(ModBlocks.radio_torch_counter, 4), new Object[] { "G", "R", "I", 'G', "dustGlowstone", 'R', Blocks.redstone_torch, 'I', ModItems.circuit_aluminium });
addRecipeAuto(new ItemStack(ModBlocks.radio_telex, 2), new Object[] { "SCR", "W#W", "WWW", 'S', ModBlocks.radio_torch_sender, 'C', ModItems.crt_display, 'R', ModBlocks.radio_torch_receiver, 'W', KEY_PLANKS, '#', ModItems.circuit_aluminium });

View File

@ -4,6 +4,7 @@ import com.hbm.blocks.network.RadioTorchBase;
import com.hbm.main.ResourceManager;
import com.hbm.render.util.ObjUtil;
import com.hbm.tileentity.network.TileEntityRadioTorchBase;
import com.hbm.tileentity.network.TileEntityRadioTorchLogic;
import cpw.mods.fml.client.registry.ISimpleBlockRenderingHandler;
import net.minecraft.block.Block;
@ -39,6 +40,14 @@ public class RenderRTTY implements ISimpleBlockRenderingHandler {
icon = block.getIcon(1, 0);
}
}
//consequences of my actions
if(tile instanceof TileEntityRadioTorchLogic) {
TileEntityRadioTorchLogic rtty = (TileEntityRadioTorchLogic) tile;
if(rtty.lastState > 0) {
icon = block.getIcon(1, 0);
}
}
float flip = 0;
float rotation = 0;

View File

@ -399,6 +399,7 @@ public class TileMappings {
put(TileEntityRadioTorchSender.class, "tileentity_rtty_sender");
put(TileEntityRadioTorchReceiver.class, "tileentity_rtty_rec");
put(TileEntityRadioTorchCounter.class, "tileentity_rtty_counter");
put(TileEntityRadioTorchLogic.class, "tileentity_rtty_logic");
put(TileEntityRadioTelex.class, "tileentity_rtty_telex");
put(TileEntityDroneWaypoint.class, "tileentity_drone_waypoint");

View File

@ -0,0 +1,193 @@
package com.hbm.tileentity.network;
import com.hbm.interfaces.IControlReceiver;
import com.hbm.tileentity.INBTPacketReceiver;
import com.hbm.tileentity.network.RTTYSystem.RTTYChannel;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.nbt.NBTTagCompound;
import net.minecraft.network.NetworkManager;
import net.minecraft.network.Packet;
import net.minecraft.network.play.server.S35PacketUpdateTileEntity;
import net.minecraft.tileentity.TileEntity;
import net.minecraft.util.MathHelper;
public class TileEntityRadioTorchLogic extends TileEntity implements INBTPacketReceiver, IControlReceiver {
/** channel we're broadcasting on/listening to */
public String channel = "";
/** previous redstone state for input/output, needed for state change detection */
public int lastState = 0;
/** last update tick, needed for receivers listening for changes */
public long lastUpdate;
/** switches state change mode to tick-based polling */
public boolean polling = false;
/** switches evaluation of conditions from ascending to descending */
public boolean descending = false;
/** mapping for constants to compare against */
public String[] mapping;
/** mapping for conditions through [1, 10], being (<, <=, >=, >, ==, !=, equals, !equals, contains, !contains) */
public int[] conditions;
public TileEntityRadioTorchLogic() {
this.mapping = new String[16];
for(int i = 0; i < 16; i++) this.mapping[i] = "";
this.conditions = new int[16];
for(int i = 0; i < 16; i++) this.conditions[i] = 0;
}
@Override
public void updateEntity() {
if(!worldObj.isRemote) {
if(!this.channel.isEmpty()) {
RTTYChannel chan = RTTYSystem.listen(worldObj, this.channel);
if(chan != null && (this.polling || (chan.timeStamp > this.lastUpdate - 1 && chan.timeStamp != -1))) { // if we're either polling or a new message has come in
String msg = "" + chan.signal;
this.lastUpdate = worldObj.getTotalWorldTime();
int nextState = 0; //if no remap apply, default to 0
if(chan.timeStamp < this.lastUpdate - 2 && this.polling) {
/* the vast majority use-case for this is going to be inequalities, NOT parsing, and the input is undefined - not the output
* if no signal => 0 for polling, advanced users parsing strings can easily accommodate this fact instead of breaking numerical torches */
msg = "0";
}
if(descending) {
for(int i = 15; i >= 0; i--) {
if(!mapping[i].equals("") && parseSignal(msg, i)) {
nextState = i;
break;
}
}
} else {
for(int i = 0; i <= 15; i++) {
if(!mapping[i].equals("") && parseSignal(msg, i)) {
nextState = i;
break;
}
}
}
if(this.lastState != nextState) {
this.lastState = nextState;
worldObj.markBlockForUpdate(xCoord, yCoord, zCoord);
worldObj.notifyBlocksOfNeighborChange(xCoord, yCoord, zCoord, this.getBlockType());
this.markDirty();
}
}
}
NBTTagCompound data = new NBTTagCompound();
data.setBoolean("p", polling);
data.setBoolean("d", descending);
if(channel != null) data.setString("c", channel);
for(int i = 0; i < 16; i++) if(!mapping[i].equals("")) data.setString("m" + i, mapping[i]);
for(int i = 0; i < 16; i++) if(conditions[i] > 0) data.setInteger("c" + i, conditions[i]);
INBTPacketReceiver.networkPack(this, data, 50);
}
}
public boolean parseSignal(String signal, int index) {
if(conditions[index] <= 5) { //if a non-string operator
int sig = 0;
int map = 0;
try { sig = Integer.parseInt(signal); map = Integer.parseInt(mapping[index]); } catch(Exception x) {
return false; //not a valid input; skip! slightly annoying about the mapping but we'll restrict input anyway
};
switch(conditions[index]) {
default:
return sig < map;
case 1:
return sig <= map;
case 2:
return sig >= map;
case 3:
return sig > map;
case 4:
return sig == map;
case 5:
return sig != map;
}
}
switch(conditions[index]) {
default:
return signal.equals(mapping[index]);
case 7:
return !signal.equals(mapping[index]);
case 8:
return signal.contains(mapping[index]);
case 9:
return !signal.contains(mapping[index]);
}
}
@Override
public void readFromNBT(NBTTagCompound nbt) {
super.readFromNBT(nbt);
this.polling = nbt.getBoolean("p");
this.descending = nbt.getBoolean("d");
this.lastState = nbt.getInteger("l");
this.lastUpdate = nbt.getLong("u");
this.channel = nbt.getString("c");
for(int i = 0; i < 16; i++) this.mapping[i] = nbt.getString("m" + i);
for(int i = 0; i < 16; i++) this.conditions[i] = nbt.getInteger("c" + i);
}
@Override
public void writeToNBT(NBTTagCompound nbt) {
super.writeToNBT(nbt);
nbt.setBoolean("p", polling);
nbt.setBoolean("d", descending);
nbt.setInteger("l", lastState);
nbt.setLong("u", lastUpdate);
if(channel != null) nbt.setString("c", channel);
for(int i = 0; i < 16; i++) if(!mapping[i].equals("")) nbt.setString("m" + i, mapping[i]);
for(int i = 0; i < 16; i++) if(conditions[i] > 0) nbt.setInteger("c" + i, conditions[i]);
}
public void networkUnpack(NBTTagCompound nbt) {
this.polling = nbt.getBoolean("p");
this.channel = nbt.getString("c");
this.descending = nbt.getBoolean("d");
for(int i = 0; i < 16; i++) this.mapping[i] = nbt.getString("m" + i);
for(int i = 0; i < 16; i++) this.conditions[i] = nbt.getInteger("c" + i);
}
@Override
public Packet getDescriptionPacket() {
NBTTagCompound nbt = new NBTTagCompound();
nbt.setByte("l", (byte) this.lastState);
return new S35PacketUpdateTileEntity(this.xCoord, this.yCoord, this.zCoord, 0, nbt);
}
@Override
public void onDataPacket(NetworkManager net, S35PacketUpdateTileEntity pkt) {
int last = this.lastState;
this.lastState = pkt.func_148857_g().getByte("l");
if(this.lastState != last) {
worldObj.markBlockForUpdate(xCoord, yCoord, zCoord);
}
}
@Override
public boolean hasPermission(EntityPlayer player) {
return player.getDistance(xCoord + 0.5, yCoord + 0.5, zCoord + 0.5) < 16D;
}
@Override
public void receiveControl(NBTTagCompound data) {
if(data.hasKey("p")) this.polling = data.getBoolean("p");
if(data.hasKey("c")) this.channel = data.getString("c");
if(data.hasKey("d")) this.descending = data.getBoolean("d");
for(int i = 0; i < 16; i++) if(data.hasKey("m" + i)) this.mapping[i] = data.getString("m" + i);
for(int i = 0; i < 16; i++) if(data.hasKey("c" + i)) this.conditions[i] = data.getInteger("c" + i);
this.markDirty();
}
}

View File

@ -814,6 +814,7 @@ container.reix=Rei-X Mainframe
container.rtg=RT Generator
container.rtgFurnace=RTG Furnace
container.rttyCounter=Redstone-over-Radio Item Counter
container.rttyLogic=Redstone-over-Radio Logic Receiver
container.rttyReceiver=Redstone-over-Radio Receiver
container.rttySender=Redstone-over-Radio Transmitter
container.safe=Safe
@ -926,6 +927,16 @@ desc.gui.nukeGadget.desc=§1Requires:§r$ * 4 Arrays of First-Generation$ High
desc.gui.nukeMan.desc=§1Requires:§r$ * 4 Arrays of First-Generation$ High-Explosive Lenses$ * Plutonium Core$ * Bomb Firing Unit
desc.gui.nukeMike.desc=§1Requires:§r$ * 4 Arrays of High-Explosive Lenses$ * Plutonium Core$ * Deuterium Cooling Unit$ * Uranium Coated Deuterium Tank$ * Deuterium Tank
desc.gui.nukeTsar.desc=§1Requires:§r$ * 4 Arrays of High-Explosive Lenses$ * Plutonium Core$§9Optional:§r$ * Tsar Bomba Core
desc.gui.rttyLogic.cond0=Signal §6LESS THAN§r Constant
desc.gui.rttyLogic.cond1=Signal §6LESS THAN OR EQUAL TO§r Constant
desc.gui.rttyLogic.cond2=Signal §6GREATER THAN OR EQUAL TO§r Constant
desc.gui.rttyLogic.cond3=Signal §6GREATER THAN§r Constant
desc.gui.rttyLogic.cond4=Signal §6EQUAL TO§r Constant
desc.gui.rttyLogic.cond5=Signal §6NOT EQUAL TO§r Constant
desc.gui.rttyLogic.cond6=Signal §6MATCHES§r String
desc.gui.rttyLogic.cond7=Signal §6DOES NOT MATCH§r String
desc.gui.rttyLogic.cond8=Signal §6CONTAINS§r String
desc.gui.rttyLogic.cond9=Signal §6DOES NOT CONTAIN§r String
desc.gui.radiolysis.desc=§9Description§r$This RTG is more efficient then others, and$comes equipped with a radiolysis chamber for$cracking and sterilization.
desc.gui.rtgBFurnace.desc=Requires at least 15 heat to process$The more heat on top of that, the faster it runs$Heat going over maximum speed will have no effect$Short-lived pellets may decay
desc.gui.rtg.heat=§eCurrent heat level: %s
@ -5489,6 +5500,8 @@ tile.radar_screen.name=Radar Screen
tile.radio_telex.name=Telex Machine
tile.radio_torch_counter.name=Redstone-over-Radio Item Counter
tile.radio_torch_counter.desc=Placable on flat surfaces or comparator-compatible blocks$Bases signal on the amount of matching items
tile.radio_torch_logic.name=Redstone-over-Radio Logic Receiver
tile.radio_torch_logic.desc=Placable on flat surfaces or comparator-compatible blocks$Maps redstone signals to conditions evaluated in a set order$Numerical or string inputs are compared against a constant
tile.radio_torch_receiver.name=Redstone-over-Radio Receiver
tile.radio_torch_receiver.desc=Placable on flat surfaces or comparator-compatible blocks
tile.radio_torch_sender.name=Redstone-over-Radio Transmitter

Binary file not shown.

After

Width:  |  Height:  |  Size: 225 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 277 B

View File

@ -0,0 +1,5 @@
{
"animation": {
"frametime": 10
}
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.1 KiB