diff --git a/src/main/java/cr0s/warpdrive/WarpDrive.java b/src/main/java/cr0s/warpdrive/WarpDrive.java index 62276519..947c2e01 100644 --- a/src/main/java/cr0s/warpdrive/WarpDrive.java +++ b/src/main/java/cr0s/warpdrive/WarpDrive.java @@ -9,20 +9,15 @@ import cr0s.warpdrive.block.*; import cr0s.warpdrive.block.detection.*; import cr0s.warpdrive.block.forcefield.*; import cr0s.warpdrive.block.hull.BlockHullStairs; -import cr0s.warpdrive.compat.CompatMekanism; import cr0s.warpdrive.item.*; -import ic2.api.item.IC2Items; import net.minecraft.block.Block; import net.minecraft.block.BlockColored; import net.minecraft.client.Minecraft; import net.minecraft.command.ICommandSender; import net.minecraft.creativetab.CreativeTabs; -import net.minecraft.init.Blocks; -import net.minecraft.init.Items; import net.minecraft.item.Item; import net.minecraft.item.ItemArmor.ArmorMaterial; import net.minecraft.item.ItemDye; -import net.minecraft.item.ItemStack; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.tileentity.TileEntity; import net.minecraft.util.ChatComponentText; @@ -123,11 +118,6 @@ public class WarpDrive implements LoadingCallback { public static final boolean isDev = VERSION.equals("@" + "version" + "@") || VERSION.contains("-dev"); public static GameProfile gameProfile = new GameProfile(UUID.nameUUIDFromBytes("[WarpDrive]".getBytes()), "[WarpDrive]"); - public static Block blockSirenIndustrial; - public static Block blockSirenRaidBasic; - public static Block blockSirenRaidAdvanced; - public static Block blockSirenRaidSuperior; - public static Block blockShipCore; public static Block blockShipController; public static Block blockRadar; @@ -164,6 +154,7 @@ public class WarpDrive implements LoadingCallback { public static Block[] blockHulls_glass; public static Block[][] blockHulls_stairs; public static Block[][] blockHulls_slab; + public static Block blockSiren; public static Item itemIC2reactorLaserFocus; public static ItemComponent itemComponent; @@ -237,20 +228,7 @@ public class WarpDrive implements LoadingCallback { // open access to Block.blockHardness fieldBlockHardness = WarpDrive.getField(Block.class, "blockHardness", "field_149782_v"); - - // SIRENS - blockSirenIndustrial = new BlockSiren("siren_industrial", false, 32.0F); - blockSirenRaidBasic = new BlockSiren("siren_raid_basic", true, 32.0F); - blockSirenRaidAdvanced = new BlockSiren("siren_raid_advanced", true, 64.0F); - blockSirenRaidSuperior = new BlockSiren("siren_raid_superior", true, 128.0F); - - GameRegistry.registerBlock(blockSirenIndustrial, "siren_industrial"); - GameRegistry.registerBlock(blockSirenRaidBasic, "siren_raid_basic"); - GameRegistry.registerBlock(blockSirenRaidAdvanced, "siren_raid_advanced"); - GameRegistry.registerBlock(blockSirenRaidSuperior, "siren_raid_superior"); - - GameRegistry.registerTileEntity(TileEntitySiren.class, MODID + ":tileEntitySiren"); - + // CORE CONTROLLER blockShipController = new BlockShipController(); @@ -457,6 +435,12 @@ public class WarpDrive implements LoadingCallback { } } + // SIRENS + blockSiren = new BlockSiren(); + + GameRegistry.registerBlock(blockSiren, ItemBlockAbstractBase.class, "siren"); + GameRegistry.registerTileEntity(TileEntitySiren.class, MODID + ":tileEntitySiren"); + // REACTOR LASER FOCUS if (WarpDriveConfig.isIndustrialCraft2Loaded) { itemIC2reactorLaserFocus = new ItemIC2reactorLaserFocus(); diff --git a/src/main/java/cr0s/warpdrive/block/ItemBlockAbstractBase.java b/src/main/java/cr0s/warpdrive/block/ItemBlockAbstractBase.java index 2da1766d..03a377fd 100644 --- a/src/main/java/cr0s/warpdrive/block/ItemBlockAbstractBase.java +++ b/src/main/java/cr0s/warpdrive/block/ItemBlockAbstractBase.java @@ -19,6 +19,9 @@ public class ItemBlockAbstractBase extends ItemBlock { public ItemBlockAbstractBase(Block block) { super(block); // sets field_150939_a to block + if (block instanceof BlockAbstractContainer) { + setHasSubtypes(((BlockAbstractContainer) block).hasSubBlocks); + } } @Override diff --git a/src/main/java/cr0s/warpdrive/block/detection/BlockSiren.java b/src/main/java/cr0s/warpdrive/block/detection/BlockSiren.java index 883904f8..fafc6e51 100644 --- a/src/main/java/cr0s/warpdrive/block/detection/BlockSiren.java +++ b/src/main/java/cr0s/warpdrive/block/detection/BlockSiren.java @@ -1,49 +1,114 @@ package cr0s.warpdrive.block.detection; +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; import cr0s.warpdrive.WarpDrive; -import net.minecraft.block.Block; -import net.minecraft.block.ITileEntityProvider; +import cr0s.warpdrive.block.BlockAbstractContainer; import net.minecraft.block.material.Material; +import net.minecraft.client.renderer.texture.IIconRegister; +import net.minecraft.creativetab.CreativeTabs; +import net.minecraft.item.Item; +import net.minecraft.item.ItemStack; import net.minecraft.tileentity.TileEntity; +import net.minecraft.util.IIcon; import net.minecraft.world.World; -public class BlockSiren extends Block implements ITileEntityProvider { - private boolean isRaidSiren; - private float range; +import java.util.List; - public BlockSiren(String name, boolean isRaidSiren, float range) { - super(Material.iron); - - this.setBlockName(name); - this.isRaidSiren = isRaidSiren; - this.range = range; - - this.setCreativeTab(WarpDrive.creativeTabWarpDrive); - this.setBlockTextureName("warpdrive:detection/" + name); - } - - @Override - public TileEntity createNewTileEntity(World world, int metadata) { - return new TileEntitySiren(this.unlocalizedName, isRaidSiren, range); - } - - //Silences the siren if the block is destroyed. - //If this fails, the siren will still be stopped when it's invalidated. - @Override - public void onBlockPreDestroy(World world, int x, int y, int z, int meta) { - if (!world.isRemote) { - super.onBlockPreDestroy(world, x, y, z, meta); - return; - } - - TileEntity te = world.getTileEntity(x, y, z); - - if(te != null && te instanceof TileEntitySiren) { - TileEntitySiren siren = (TileEntitySiren) te; - - if (siren.isPlaying()) { - siren.stopSound(); - } - } - } +public class BlockSiren extends BlockAbstractContainer { + + @SideOnly(Side.CLIENT) + private IIcon[] iconBuffer; + + public static final int METADATA_TYPE_INDUSTRIAL = 0; + public static final int METADATA_TYPE_RAID = 4; + public static final int METADATA_RANGE_BASIC = 0; + public static final int METADATA_RANGE_ADVANCED = 1; + public static final int METADATA_RANGE_SUPERIOR = 2; + + private static final int ICON_INDUSTRIAL = 0; + private static final int ICON_RAID_BASIC = 1; + private static final int ICON_RAID_ADVANCED = 2; + private static final int ICON_RAID_SUPERIOR = 3; + + public BlockSiren() { + super(Material.iron); + hasSubBlocks = true; + setCreativeTab(WarpDrive.creativeTabWarpDrive); + setBlockName("warpdrive.detection.Siren"); + } + + @Override + @SideOnly(Side.CLIENT) + public void registerBlockIcons(IIconRegister iconRegister) { + iconBuffer = new IIcon[4]; + // Solid textures + iconBuffer[ICON_INDUSTRIAL] = iconRegister.registerIcon("warpdrive:detection/siren_industrial"); + iconBuffer[ICON_RAID_BASIC] = iconRegister.registerIcon("warpdrive:detection/siren_raid_basic"); + iconBuffer[ICON_RAID_ADVANCED] = iconRegister.registerIcon("warpdrive:detection/siren_raid_advanced"); + iconBuffer[ICON_RAID_SUPERIOR] = iconRegister.registerIcon("warpdrive:detection/siren_raid_superior"); + } + + @Override + public IIcon getIcon(int side, int metadata) { + if (!getIsRaid(metadata)) { + return iconBuffer[ICON_INDUSTRIAL]; + } + switch (metadata & 0x3) { + case METADATA_RANGE_BASIC : return iconBuffer[ICON_RAID_BASIC]; + case METADATA_RANGE_ADVANCED: return iconBuffer[ICON_RAID_ADVANCED]; + case METADATA_RANGE_SUPERIOR: return iconBuffer[ICON_RAID_SUPERIOR]; + default: return iconBuffer[ICON_RAID_BASIC]; + } + } + + @Override + @SideOnly(Side.CLIENT) + public void getSubBlocks(Item item, CreativeTabs creativeTab, List list) { + list.add(new ItemStack(item, 1, BlockSiren.METADATA_TYPE_INDUSTRIAL)); + list.add(new ItemStack(item, 1, BlockSiren.METADATA_TYPE_RAID + BlockSiren.METADATA_RANGE_BASIC)); + list.add(new ItemStack(item, 1, BlockSiren.METADATA_TYPE_RAID + BlockSiren.METADATA_RANGE_ADVANCED)); + list.add(new ItemStack(item, 1, BlockSiren.METADATA_TYPE_RAID + BlockSiren.METADATA_RANGE_SUPERIOR)); + } + + @Override + public TileEntity createNewTileEntity(World world, int metadata) { + return new TileEntitySiren(); + } + + static boolean getIsRaid(final int metadata) { + switch (metadata & 0x4) { + case METADATA_TYPE_INDUSTRIAL: return false; + case METADATA_TYPE_RAID : return true; + default: return false; + } + } + + static float getRange(final int metadata) { + switch (metadata & 0x3) { + case METADATA_RANGE_BASIC : return 32.0F; + case METADATA_RANGE_ADVANCED: return 64.0F; + case METADATA_RANGE_SUPERIOR: return 128.0F; + default: return 0.0F; + } + } + + // Silences the siren if the block is destroyed. + // If this fails, the siren will still be stopped when it's invalidated. + @Override + public void onBlockPreDestroy(World world, int x, int y, int z, int meta) { + if (!world.isRemote) { + super.onBlockPreDestroy(world, x, y, z, meta); + return; + } + + TileEntity tileEntity = world.getTileEntity(x, y, z); + if (tileEntity instanceof TileEntitySiren) { + TileEntitySiren tileEntitySiren = (TileEntitySiren) tileEntity; + + if (tileEntitySiren.isPlaying()) { + tileEntitySiren.stopSound(); + } + } + } } diff --git a/src/main/java/cr0s/warpdrive/block/detection/TileEntitySiren.java b/src/main/java/cr0s/warpdrive/block/detection/TileEntitySiren.java index 8b0f5701..5f5e7f3d 100644 --- a/src/main/java/cr0s/warpdrive/block/detection/TileEntitySiren.java +++ b/src/main/java/cr0s/warpdrive/block/detection/TileEntitySiren.java @@ -4,148 +4,156 @@ import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; import cr0s.warpdrive.SirenSound; import cr0s.warpdrive.WarpDrive; +import cr0s.warpdrive.block.TileEntityAbstractBase; import net.minecraft.client.Minecraft; -import net.minecraft.tileentity.TileEntity; import net.minecraft.util.ResourceLocation; -public class TileEntitySiren extends TileEntity { - public enum SirenState { - STARTING, STARTED, STOPPING, STOPPED; - } - - private SirenState state = SirenState.STOPPED; - private boolean isRaidSiren; - private String name; - private float range; - private int timeToLastUpdate = 0; - - @SideOnly(Side.CLIENT) - private SirenSound sound; - - public TileEntitySiren(String name, boolean isRaidSiren, float range) { - super(); - - this.name = name; - this.range = range; - this.isRaidSiren = isRaidSiren; - } - - @Override - public void updateEntity() { - super.updateEntity(); - - /*Updating the sound to quickly breaks Minecraft's sounds handler. - * Therefor, we only update our sound once every 0.5 seconds. - * It's less responsive like this, but doesn't completely freak out when - * spamming the redstone on and off.*/ - - if (this.timeToLastUpdate <= 0) { - this.timeToLastUpdate = 10; - } else { - this.timeToLastUpdate--; - return; +public class TileEntitySiren extends TileEntityAbstractBase { + public enum SirenState { + STARTING, STARTED, STOPPING, STOPPED + } + + private SirenState state = SirenState.STOPPED; + private boolean isRaidSiren = false; + private float range = 0.0F; + private int timeToLastUpdate = 0; + + @SideOnly(Side.CLIENT) + private SirenSound sound; + + public TileEntitySiren() { + super(); + } + + @Override + protected void onFirstUpdateTick() { + super.onFirstUpdateTick(); + range = BlockSiren.getRange(getBlockMetadata()); + isRaidSiren = BlockSiren.getIsRaid(getBlockMetadata()); + } + + @Override + public void updateEntity() { + super.updateEntity(); + + /* Updating the sound too quickly breaks Minecraft's sounds handler. + * Therefore, we only update our sound once every 0.5 seconds. + * It's less responsive like this, but doesn't completely freak out when + * spamming the redstone on and off. */ + + if (this.timeToLastUpdate <= 0) { + this.timeToLastUpdate = 10; + } else { + this.timeToLastUpdate--; + return; + } + + if (!hasWorldObj() || !worldObj.isRemote) { + return; + } + if (sound == null) { + setSound(); } - if (!this.hasWorldObj() || !worldObj.isRemote) return; - if (this.sound == null) this.setSound(); - - //Siren sound logic. - switch (this.state) { - case STOPPED: - if (this.isPlaying()) { - this.state = SirenState.STOPPING; - } - - if (this.isPowered()) { - this.state = SirenState.STARTING; - } - - break; - case STARTING: - if (this.startSound()) { - this.state = SirenState.STARTED; - } else { - this.state = SirenState.STOPPING; - } - - break; - case STARTED: - if (!this.isPowered()) { - this.state = SirenState.STOPPING; - } else if (!this.isPlaying()) { - this.state = SirenState.STARTING; - } - - break; - case STOPPING: - if (this.isPlaying()) { - this.stopSound(); - } else { - this.state = SirenState.STOPPED; - } - - break; - default: - if (this.isPlaying()) { - this.state = SirenState.STOPPING; - } else { - this.state = SirenState.STOPPED; - } - - break; + // Siren sound logic. + switch (this.state) { + case STOPPED: + if (this.isPlaying()) { + this.state = SirenState.STOPPING; + } + if (this.isPowered()) { + this.state = SirenState.STARTING; + } + break; + + case STARTING: + if (this.startSound()) { + this.state = SirenState.STARTED; + } else { + this.state = SirenState.STOPPING; + } + break; + + case STARTED: + if (!this.isPowered()) { + this.state = SirenState.STOPPING; + } else if (!this.isPlaying()) { + this.state = SirenState.STARTING; + } + break; + + case STOPPING: + if (this.isPlaying()) { + this.stopSound(); + } else { + this.state = SirenState.STOPPED; + } + break; + + default: + if (this.isPlaying()) { + this.state = SirenState.STOPPING; + } else { + this.state = SirenState.STOPPED; + } + break; + } + } + + // Stops the siren when the chunk is unloaded. + @Override + public void onChunkUnload() { + if (worldObj.isRemote && this.isPlaying()) { + stopSound(); } - } - - //Stops the siren when the chunk is unloaded. - @Override - public void onChunkUnload() { - if (worldObj.isRemote && this.isPlaying()) this.stopSound(); - super.onChunkUnload(); - } - - //Stops the siren when the TileEntity object is invalidated. - @Override - public void invalidate() { - if (worldObj.isRemote && this.isPlaying()) this.stopSound(); - super.invalidate(); - } - - //Create a new SirenSound object that the siren will use. - @SideOnly(Side.CLIENT) - private void setSound() { - String resource = WarpDrive.MODID + ":siren_" + (isRaidSiren ? "raid" : "industrial"); - this.sound = new SirenSound(new ResourceLocation(resource), this.range, this.xCoord, this.yCoord, this.zCoord); - } - - //Forces the siren to start playing its sound; - @SideOnly(Side.CLIENT) - public boolean startSound() { - if (!isPlaying()) { - try { - Minecraft.getMinecraft().getSoundHandler().playSound(sound); - return true; - } catch (IllegalArgumentException e) { - return false; - } - } else { - return true; + super.onChunkUnload(); + } + + // Stops the siren when the TileEntity object is invalidated. + @Override + public void invalidate() { + if (worldObj.isRemote && isPlaying()) { + stopSound(); } - } - - //Forces the siren to stop playing its sound. - @SideOnly(Side.CLIENT) - public void stopSound() { - Minecraft.getMinecraft().getSoundHandler().stopSound(sound); - } - - //Checks if the siren is currently playing its sound. - @SideOnly(Side.CLIENT) - public boolean isPlaying() { - return Minecraft.getMinecraft().getSoundHandler().isSoundPlaying(sound); - } - - //Checks if the siren is being powered by redstone. - public boolean isPowered() { - return worldObj.isBlockIndirectlyGettingPowered(this.xCoord, this.yCoord, this.zCoord); - } + super.invalidate(); + } + + // Create a new SirenSound object that the siren will use. + @SideOnly(Side.CLIENT) + private void setSound() { + String resource = WarpDrive.MODID + ":siren_" + (isRaidSiren ? "raid" : "industrial"); + sound = new SirenSound(new ResourceLocation(resource), range, xCoord, yCoord, zCoord); + } + + // Forces the siren to start playing its sound; + @SideOnly(Side.CLIENT) + private boolean startSound() { + if (!isPlaying()) { + try { + Minecraft.getMinecraft().getSoundHandler().playSound(sound); + return true; + } catch (IllegalArgumentException e) { + return false; + } + } else { + return true; + } + } + + // Forces the siren to stop playing its sound. + @SideOnly(Side.CLIENT) + void stopSound() { + Minecraft.getMinecraft().getSoundHandler().stopSound(sound); + } + + // Checks if the siren is currently playing its sound. + @SideOnly(Side.CLIENT) + boolean isPlaying() { + return Minecraft.getMinecraft().getSoundHandler().isSoundPlaying(sound); + } + + // Checks if the siren is being powered by redstone. + private boolean isPowered() { + return worldObj.isBlockIndirectlyGettingPowered(xCoord, yCoord, zCoord); + } } diff --git a/src/main/java/cr0s/warpdrive/config/Recipes.java b/src/main/java/cr0s/warpdrive/config/Recipes.java index 077acab0..27bef4a1 100644 --- a/src/main/java/cr0s/warpdrive/config/Recipes.java +++ b/src/main/java/cr0s/warpdrive/config/Recipes.java @@ -4,6 +4,7 @@ import java.util.ArrayList; import cpw.mods.fml.common.registry.GameRegistry; import cr0s.warpdrive.WarpDrive; +import cr0s.warpdrive.block.detection.BlockSiren; import cr0s.warpdrive.block.passive.BlockDecorative; import cr0s.warpdrive.data.*; import cr0s.warpdrive.item.ItemComponent; @@ -1413,21 +1414,21 @@ public class Recipes { // HULL blocks and variations initDynamicHull(); - //Sirens - GameRegistry.addRecipe(new ShapedOreRecipe(new ItemStack(WarpDrive.blockSirenIndustrial, 1), "ICI", "ICI", "NRN", - Character.valueOf('I'), "plankWood", - Character.valueOf('C'), "ingotIron", - Character.valueOf('N'), new ItemStack(Blocks.noteblock, 1), - Character.valueOf('R'), "dustRedstone")); - GameRegistry.addRecipe(new ShapedOreRecipe(new ItemStack(WarpDrive.blockSirenRaidBasic, 1), " I ", "ISI", " I ", - Character.valueOf('I'), "ingotIron", - Character.valueOf('S'), new ItemStack(WarpDrive.blockSirenIndustrial, 1))); - GameRegistry.addRecipe(new ShapedOreRecipe(new ItemStack(WarpDrive.blockSirenRaidAdvanced, 1), " I ", "ISI", " I ", - Character.valueOf('I'), "ingotGold", - Character.valueOf('S'), new ItemStack(WarpDrive.blockSirenRaidBasic, 1))); - GameRegistry.addRecipe(new ShapedOreRecipe(new ItemStack(WarpDrive.blockSirenRaidSuperior, 1), " I ", "ISI", " I ", - Character.valueOf('I'), "gemDiamond", - Character.valueOf('S'), new ItemStack(WarpDrive.blockSirenRaidAdvanced, 1))); + // Sirens + GameRegistry.addRecipe(new ShapedOreRecipe(new ItemStack(WarpDrive.blockSiren, 1, BlockSiren.METADATA_TYPE_INDUSTRIAL), "ICI", "ICI", "NRN", + 'I', "plankWood", + 'C', "ingotIron", + 'N', new ItemStack(Blocks.noteblock, 1), + 'R', "dustRedstone")); + GameRegistry.addRecipe(new ShapedOreRecipe(new ItemStack(WarpDrive.blockSiren, 1, BlockSiren.METADATA_TYPE_RAID + BlockSiren.METADATA_RANGE_BASIC), " I ", "ISI", " I ", + 'I', "ingotIron", + 'S', new ItemStack(WarpDrive.blockSiren, 1, BlockSiren.METADATA_TYPE_INDUSTRIAL))); + GameRegistry.addRecipe(new ShapedOreRecipe(new ItemStack(WarpDrive.blockSiren, 1, BlockSiren.METADATA_TYPE_RAID + BlockSiren.METADATA_RANGE_ADVANCED), " I ", "ISI", " I ", + 'I', "ingotGold", + 'S', new ItemStack(WarpDrive.blockSiren, 1, BlockSiren.METADATA_TYPE_RAID + BlockSiren.METADATA_RANGE_BASIC))); + GameRegistry.addRecipe(new ShapedOreRecipe(new ItemStack(WarpDrive.blockSiren, 1, BlockSiren.METADATA_TYPE_RAID + BlockSiren.METADATA_RANGE_SUPERIOR), " I ", "ISI", " I ", + 'I', "gemDiamond", + 'S', new ItemStack(WarpDrive.blockSiren, 1, BlockSiren.METADATA_TYPE_RAID + BlockSiren.METADATA_RANGE_ADVANCED))); } private static void initDynamicHull() { diff --git a/src/main/resources/assets/warpdrive/lang/de_DE.lang b/src/main/resources/assets/warpdrive/lang/de_DE.lang index c28cae6b..f14dd84f 100644 --- a/src/main/resources/assets/warpdrive/lang/de_DE.lang +++ b/src/main/resources/assets/warpdrive/lang/de_DE.lang @@ -168,6 +168,16 @@ tile.warpdrive.detection.Monitor.name=Monitor tile.warpdrive.detection.Radar.name=Radar tile.warpdrive.detection.WarpIsolation.name=Warp-Feld Isolations Block +tile.warpdrive.detection.Siren.tooltip=Triggered by redstone !!! +tile.warpdrive.detection.Siren0.name=Industrial Siren !!! +tile.warpdrive.detection.Siren0.tooltip=Sounds an Industrial alarm up to 32 m away. !!! +tile.warpdrive.detection.Siren4.name=Basic Air Raid Siren +tile.warpdrive.detection.Siren4.tooltip=Sounds an Air raid alarm up to 32 m away. !!! +tile.warpdrive.detection.Siren5.name=Advanced Air Raid Siren +tile.warpdrive.detection.Siren5.tooltip=Sounds an Air raid alarm up to 64 m away. !!! +tile.warpdrive.detection.Siren6.name=Superior Air Raid Siren !!! +tile.warpdrive.detection.Siren6.tooltip=Sounds an Air raid alarm up to 128 m away. !!! + tile.warpdrive.energy.EnanReactorCore.name=Enantiomorpher Reaktorkern tile.warpdrive.energy.EnanReactorLaser.name=Enantiomorper Reaktor Stabilisierungs Laser tile.warpdrive.energy.EnergyBank.0.name=Zero-Point-Modul diff --git a/src/main/resources/assets/warpdrive/lang/en_US.lang b/src/main/resources/assets/warpdrive/lang/en_US.lang index 2a313dd8..a9fa7218 100644 --- a/src/main/resources/assets/warpdrive/lang/en_US.lang +++ b/src/main/resources/assets/warpdrive/lang/en_US.lang @@ -161,11 +161,6 @@ tile.warpdrive.building.ShipScanner.name=Ship Scanner tile.warpdrive.collection.LaserTreeFarm.name=Laser Tree Farm tile.warpdrive.collection.MiningLaser.name=Mining Laser -tile.siren_industrial.name=Industrial Siren -tile.siren_raid_basic.name=Basic Air Raid Siren -tile.siren_raid_advanced.name=Advanced Air Raid Siren -tile.siren_raid_superior.name=Superior Air Raid Siren - tile.warpdrive.detection.Camera.name=Camera tile.warpdrive.detection.CloakingCoil.name=Cloaking Coil tile.warpdrive.detection.CloakingCore.name=Cloaking Core @@ -173,6 +168,16 @@ tile.warpdrive.detection.Monitor.name=Monitor tile.warpdrive.detection.Radar.name=Radar tile.warpdrive.detection.WarpIsolation.name=Warp-field Isolation Block +tile.warpdrive.detection.Siren.tooltip=Triggered by redstone +tile.warpdrive.detection.Siren0.name=Industrial Siren +tile.warpdrive.detection.Siren0.tooltip=Sounds an Industrial alarm up to 32 m away. +tile.warpdrive.detection.Siren4.name=Basic Air Raid Siren +tile.warpdrive.detection.Siren4.tooltip=Sounds an Air raid alarm up to 32 m away. +tile.warpdrive.detection.Siren5.name=Advanced Air Raid Siren +tile.warpdrive.detection.Siren5.tooltip=Sounds an Air raid alarm up to 64 m away. +tile.warpdrive.detection.Siren6.name=Superior Air Raid Siren +tile.warpdrive.detection.Siren6.tooltip=Sounds an Air raid alarm up to 128 m away. + tile.warpdrive.energy.EnanReactorCore.name=Enantiomorphic Reactor Core tile.warpdrive.energy.EnanReactorLaser.name=Enantiomorphic Reactor Stabilization Laser tile.warpdrive.energy.EnergyBank.0.name=Zero-Point Module diff --git a/src/main/resources/assets/warpdrive/lang/fr_FR.lang b/src/main/resources/assets/warpdrive/lang/fr_FR.lang index 1dd50552..aa00343f 100644 --- a/src/main/resources/assets/warpdrive/lang/fr_FR.lang +++ b/src/main/resources/assets/warpdrive/lang/fr_FR.lang @@ -168,6 +168,16 @@ tile.warpdrive.detection.Monitor.name=Moniteur tile.warpdrive.detection.Radar.name=Radar tile.warpdrive.detection.WarpIsolation.name=Bloc d'isolation de champ de Warp +tile.warpdrive.detection.Siren.tooltip=Déclenchement par redstone +tile.warpdrive.detection.Siren0.name=Sirène industrielle +tile.warpdrive.detection.Siren0.tooltip=Emet une alarme industrielle audible à 32 m. +tile.warpdrive.detection.Siren4.name=Sirène de raid aérien basique +tile.warpdrive.detection.Siren4.tooltip=Sonne l'alerte de raid aérien audible à 32 m. +tile.warpdrive.detection.Siren5.name=Sirène de raid aérien avancée +tile.warpdrive.detection.Siren5.tooltip=Sonne l'alerte de raid aérien audible à 64 m. +tile.warpdrive.detection.Siren6.name=Sirène de raid aérien supérieure +tile.warpdrive.detection.Siren6.tooltip=Sonne l'alerte de raid aérien audible à 128 m. + tile.warpdrive.energy.EnanReactorCore.name=Noyau de réacteur Enantiomorphic tile.warpdrive.energy.EnanReactorLaser.name=Laser de stabilisation pour réacteur Enantiomorphic tile.warpdrive.energy.EnergyBank.0.name=Extracteur du potentiel de point zéro diff --git a/src/main/resources/assets/warpdrive/lang/ru_RU.lang b/src/main/resources/assets/warpdrive/lang/ru_RU.lang index 0a1566d0..321b1346 100644 --- a/src/main/resources/assets/warpdrive/lang/ru_RU.lang +++ b/src/main/resources/assets/warpdrive/lang/ru_RU.lang @@ -168,6 +168,16 @@ tile.warpdrive.detection.Monitor.name=Монитор tile.warpdrive.detection.Radar.name=Варп-радар tile.warpdrive.detection.WarpIsolation.name=Блок изоляции варп-поля +tile.warpdrive.detection.Siren.tooltip=Triggered by redstone +tile.warpdrive.detection.Siren0.name=Industrial Siren +tile.warpdrive.detection.Siren0.tooltip=Sounds an Industrial alarm up to 32 m away. +tile.warpdrive.detection.Siren4.name=Basic Air Raid Siren +tile.warpdrive.detection.Siren4.tooltip=Sounds an Air raid alarm up to 32 m away. +tile.warpdrive.detection.Siren5.name=Advanced Air Raid Siren +tile.warpdrive.detection.Siren5.tooltip=Sounds an Air raid alarm up to 64 m away. +tile.warpdrive.detection.Siren6.name=Superior Air Raid Siren +tile.warpdrive.detection.Siren6.tooltip=Sounds an Air raid alarm up to 128 m away. + tile.warpdrive.energy.EnanReactorCore.name=Ядро энантиоморфного реактора tile.warpdrive.energy.EnanReactorLaser.name=Лазер стабилизации энантиоморфного реактора tile.warpdrive.energy.EnergyBank.0.name=Zero-Point Module