diff --git a/build.properties b/build.properties index 3f05658fc..ae9ce6668 100644 --- a/build.properties +++ b/build.properties @@ -4,4 +4,4 @@ FMP_version=1.1.2.331 CCLIB_version=1.1.3.136 NEI_version=1.0.4.101 CCC_version=1.0.6.39 -mod_version=9.0.2 +mod_version=9.0.3 diff --git a/src/api/java/ic2/api/Direction.class b/src/api/java/ic2/api/Direction.class index 937799309..15cd477fc 100644 Binary files a/src/api/java/ic2/api/Direction.class and b/src/api/java/ic2/api/Direction.class differ diff --git a/src/api/java/ic2/api/Direction.java b/src/api/java/ic2/api/Direction.java index f0c687bbf..b550ca311 100644 --- a/src/api/java/ic2/api/Direction.java +++ b/src/api/java/ic2/api/Direction.java @@ -1,5 +1,8 @@ package ic2.api; +import java.util.EnumSet; +import java.util.Set; + import net.minecraft.tileentity.TileEntity; import net.minecraft.world.World; @@ -36,6 +39,15 @@ public enum Direction { */ ZP; + private Direction() { + int side = ordinal() / 2; + int sign = getSign(); + + xOffset = side == 0 ? sign : 0; + yOffset = side == 1 ? sign : 0; + zOffset = side == 2 ? sign : 0; + } + public static Direction fromSideValue(int side) { return directions[(side + 2) % 6]; } @@ -83,7 +95,7 @@ public enum Direction { /** * Get the inverse of this direction (XN -> XP, XP -> XN, etc.) - * + * * @return Inverse direction */ public Direction getInverse() { @@ -92,7 +104,7 @@ public enum Direction { /** * Convert this direction to a Minecraft side value. - * + * * @return Minecraft side value */ public int toSideValue() { @@ -112,6 +124,12 @@ public enum Direction { return ForgeDirection.getOrientation(toSideValue()); } + public final int xOffset; + public final int yOffset; + public final int zOffset; + public static final Direction[] directions = Direction.values(); + public static final Set noDirections = EnumSet.noneOf(Direction.class); + public static final Set allDirections = EnumSet.allOf(Direction.class); } diff --git a/src/api/java/ic2/api/crops/CropCard.class b/src/api/java/ic2/api/crops/CropCard.class index e117b0c95..b4c31b252 100644 Binary files a/src/api/java/ic2/api/crops/CropCard.class and b/src/api/java/ic2/api/crops/CropCard.class differ diff --git a/src/api/java/ic2/api/crops/CropCard.java b/src/api/java/ic2/api/crops/CropCard.java index 091b9ad24..1d2b6406a 100644 --- a/src/api/java/ic2/api/crops/CropCard.java +++ b/src/api/java/ic2/api/crops/CropCard.java @@ -37,13 +37,16 @@ public abstract class CropCard { /** * Determine the mod id owning this crop. * - * It's recommended to hard code this to your mod id. + * The owner serves as a name space. With every mod using a different owner, a mod only has to + * make sure it doesn't have conflicts with name() in itself. + * It's recommended to hard code this to your mod id as specified in the @Mod annotation. + * Do not use IC2's mod id here. * * @note changing name or owner will cause existing crops in users' worlds to disappear. * * @return Mod id. */ - public String owner() { + public String owner() { // TODO: make abstract return modId; } @@ -100,7 +103,7 @@ public abstract class CropCard { * @param crop reference to ICropTile * @return roots lengt use in isBlockBelow */ - public int getrootslength(ICropTile crop) { + public int getrootslength(ICropTile crop) { // TODO: camel case return 1; } @@ -126,7 +129,7 @@ public abstract class CropCard { * @param n index of the requested stat * @return The requested value of the stats */ - public abstract int stat(int n); + public abstract int stat(int n); // TODO: change to fixed property object or builder with other attributes like tier /** * Additional attributes of the plant, also influencing breeding. @@ -134,7 +137,7 @@ public abstract class CropCard { * * @return Attributes as an array of strings */ - public abstract String[] attributes(); + public abstract String[] attributes(); // TODO: default to none /** * Determine the max crop size. @@ -212,7 +215,7 @@ public abstract class CropCard { * @return 0-30 */ public int weightInfluences(ICropTile crop, float humidity, float nutrients, float air) { - return (int) (humidity+nutrients+air); + return (int) (humidity + nutrients + air); } /** @@ -247,7 +250,7 @@ public abstract class CropCard { * @return need crop size for best output. */ - public abstract int getOptimalHavestSize(ICropTile crop); + public abstract int getOptimalHavestSize(ICropTile crop); // TODO: default to maxSize /** * Check whether the crop can be harvested. @@ -255,7 +258,7 @@ public abstract class CropCard { * @param crop reference to ICropTile * @return Whether the crop can be harvested in its current state. */ - public abstract boolean canBeHarvested(ICropTile crop); + public abstract boolean canBeHarvested(ICropTile crop); // TODO: default to maxSize check /** * Base chance for dropping the plant's gains, specify values greater than 1 for multiple drops. @@ -263,10 +266,8 @@ public abstract class CropCard { * * @return Chance to drop the gains */ - public float dropGainChance() { - float base = 1F; - for (int i = 0; i < tier(); i++) {base*=0.95;} - return base; + public float dropGainChance() { // TODO: change to double + return (float) Math.pow(0.95, tier()); } /** @@ -284,20 +285,20 @@ public abstract class CropCard { * @param crop reference to ICropTile * @return Plant size after harvesting */ - public byte getSizeAfterHarvest(ICropTile crop) {return 1;} + public byte getSizeAfterHarvest(ICropTile crop) {return 1;} // TODO: change to int /** - * Called when the plant is leftclicked by a player. + * Called when the plant is left clicked by a player. * Default action is picking the plant. * - * Only called Serverside. + * Only called server side. * * @param crop reference to ICropTile - * @param player player leftclicked the crop + * @param player player left clicked the crop * @return Whether the plant has changed */ - public boolean leftclick(ICropTile crop, EntityPlayer player) { + public boolean leftclick(ICropTile crop, EntityPlayer player) { // TODO: camel case return crop.pick(true); } @@ -398,7 +399,7 @@ public abstract class CropCard { */ public boolean isWeed(ICropTile crop) { return crop.getSize() >= 2 && - (crop == Crops.weed || crop.getGrowth() >= 24); + (crop.getCrop() == Crops.weed || crop.getGrowth() >= 24); } @@ -430,4 +431,5 @@ public abstract class CropCard { protected IIcon textures[]; private final String modId; // TODO: make owner abstract, remove modId auto detection + // TODO: add a clean way to obtain world reference and position } diff --git a/src/api/java/ic2/api/crops/ICropTile.class b/src/api/java/ic2/api/crops/ICropTile.class index b359a00f9..aafb6de2c 100644 Binary files a/src/api/java/ic2/api/crops/ICropTile.class and b/src/api/java/ic2/api/crops/ICropTile.class differ diff --git a/src/api/java/ic2/api/crops/ICropTile.java b/src/api/java/ic2/api/crops/ICropTile.java index 6fd887ee0..dadf691d5 100644 --- a/src/api/java/ic2/api/crops/ICropTile.java +++ b/src/api/java/ic2/api/crops/ICropTile.java @@ -260,6 +260,15 @@ public interface ICropTile { */ public boolean isBlockBelow(Block block); + /** + * Check if a block is under the farmland containing the crop. + * Searches up to 2 blocks below the farmland or an air space, whichever appears first. + * + * @param oreDictionaryName blocks to search + * @return Whether the blocks were found + */ + public boolean isBlockBelow(String oreDictionaryName); + /** * Generate plant seeds with the given parameters. * diff --git a/src/api/java/ic2/api/energy/prefab/BasicSink.class b/src/api/java/ic2/api/energy/prefab/BasicSink.class index b0b895ce0..426e0908d 100644 Binary files a/src/api/java/ic2/api/energy/prefab/BasicSink.class and b/src/api/java/ic2/api/energy/prefab/BasicSink.class differ diff --git a/src/api/java/ic2/api/energy/prefab/BasicSource.class b/src/api/java/ic2/api/energy/prefab/BasicSource.class index 164213b2c..afe8e25bc 100644 Binary files a/src/api/java/ic2/api/energy/prefab/BasicSource.class and b/src/api/java/ic2/api/energy/prefab/BasicSource.class differ diff --git a/src/api/java/ic2/api/info/Info.class b/src/api/java/ic2/api/info/Info.class index 7099fae6c..7e50751d5 100644 Binary files a/src/api/java/ic2/api/info/Info.class and b/src/api/java/ic2/api/info/Info.class differ diff --git a/src/api/java/ic2/api/info/Info.java b/src/api/java/ic2/api/info/Info.java index 3b5a54426..f8e30ad25 100644 --- a/src/api/java/ic2/api/info/Info.java +++ b/src/api/java/ic2/api/info/Info.java @@ -1,5 +1,6 @@ package ic2.api.info; +import net.minecraft.potion.Potion; import net.minecraft.util.DamageSource; import cpw.mods.fml.common.Loader; @@ -16,6 +17,12 @@ public class Info { */ public static DamageSource DMG_ELECTRIC, DMG_NUKE_EXPLOSION, DMG_RADIATION; + /** + * Potions used by IC2. + * Getting assigned in preload. + */ + public static Potion POTION_RADIATION; + public static boolean isIc2Available() { if (ic2Available != null) return ic2Available; diff --git a/src/api/java/ic2/api/item/ElectricItem.class b/src/api/java/ic2/api/item/ElectricItem.class index be9260675..ad45f925c 100644 Binary files a/src/api/java/ic2/api/item/ElectricItem.class and b/src/api/java/ic2/api/item/ElectricItem.class differ diff --git a/src/api/java/ic2/api/item/IC2Items.class b/src/api/java/ic2/api/item/IC2Items.class index 267272d0b..609995182 100644 Binary files a/src/api/java/ic2/api/item/IC2Items.class and b/src/api/java/ic2/api/item/IC2Items.class differ diff --git a/src/api/java/ic2/api/item/IElectricItem.java b/src/api/java/ic2/api/item/IElectricItem.java index 5525e00f6..4f546d575 100644 --- a/src/api/java/ic2/api/item/IElectricItem.java +++ b/src/api/java/ic2/api/item/IElectricItem.java @@ -39,7 +39,9 @@ public interface IElectricItem { /** * Get the item's tier, lower tiers can't send energy to higher ones. - * Batteries are Tier 1, Energy Crystals are Tier 2, Lapotron Crystals are Tier 3. + * + * Batteries are Tier 1, Advanced Batteries are Tier 2, Energy Crystals are Tier 3, Lapotron + * Crystals are Tier 4. * * @return Item's tier */ diff --git a/src/api/java/ic2/api/item/IKineticRotor$GearboxType.class b/src/api/java/ic2/api/item/IKineticRotor$GearboxType.class new file mode 100644 index 000000000..4c6ab9db6 Binary files /dev/null and b/src/api/java/ic2/api/item/IKineticRotor$GearboxType.class differ diff --git a/src/api/java/ic2/api/item/IKineticRotor.class b/src/api/java/ic2/api/item/IKineticRotor.class new file mode 100644 index 000000000..4bba1ebde Binary files /dev/null and b/src/api/java/ic2/api/item/IKineticRotor.class differ diff --git a/src/api/java/ic2/api/item/IKineticWindRotor.java b/src/api/java/ic2/api/item/IKineticRotor.java similarity index 68% rename from src/api/java/ic2/api/item/IKineticWindRotor.java rename to src/api/java/ic2/api/item/IKineticRotor.java index de696e381..a61d1622c 100644 --- a/src/api/java/ic2/api/item/IKineticWindRotor.java +++ b/src/api/java/ic2/api/item/IKineticRotor.java @@ -3,7 +3,7 @@ package ic2.api.item; import net.minecraft.item.ItemStack; import net.minecraft.util.ResourceLocation; -public interface IKineticWindRotor { +public interface IKineticRotor { int getDiameter(ItemStack stack); ResourceLocation getRotorRenderTexture(ItemStack stack); @@ -13,4 +13,11 @@ public interface IKineticWindRotor { int getMinWindStrength(ItemStack stack); int getMaxWindStrength(ItemStack stack); + + boolean isAcceptedType(ItemStack stack, GearboxType type); + + public static enum GearboxType { + WATER, + WIND, + } } diff --git a/src/api/java/ic2/api/item/IKineticWindRotor.class b/src/api/java/ic2/api/item/IKineticWindRotor.class deleted file mode 100644 index 00f10fc86..000000000 Binary files a/src/api/java/ic2/api/item/IKineticWindRotor.class and /dev/null differ diff --git a/src/api/java/ic2/api/item/ILatheItem$ILatheTool.class b/src/api/java/ic2/api/item/ILatheItem$ILatheTool.class new file mode 100644 index 000000000..46efc5019 Binary files /dev/null and b/src/api/java/ic2/api/item/ILatheItem$ILatheTool.class differ diff --git a/src/api/java/ic2/api/item/ILatheItem.class b/src/api/java/ic2/api/item/ILatheItem.class index 7bbb877de..b6a25ef0f 100644 Binary files a/src/api/java/ic2/api/item/ILatheItem.class and b/src/api/java/ic2/api/item/ILatheItem.class differ diff --git a/src/api/java/ic2/api/item/ILatheItem.java b/src/api/java/ic2/api/item/ILatheItem.java index 2baffc8f9..45988c42b 100644 --- a/src/api/java/ic2/api/item/ILatheItem.java +++ b/src/api/java/ic2/api/item/ILatheItem.java @@ -6,6 +6,9 @@ import net.minecraft.util.ResourceLocation; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; +/** + * Interface used for Items that can be processed in the Turning Table + */ public interface ILatheItem { /** @@ -44,4 +47,24 @@ public interface ILatheItem { @SideOnly(Side.CLIENT) ResourceLocation getTexture(ItemStack stack); + /** + * This is similar to the Block HarvestLevel. Requires a different tool for a different hardness + * for ex. the Iron Turning Blank has a Hardness of 2 (Like Iron Ore (Harvest Level)). + * In this case however it requires a Tool hardness of one above (3) + */ + int getHardness(ItemStack stack); + + /** + * Interface used for Tools that can be used to modify {@link ILatheItem} + */ + public static interface ILatheTool extends ICustomDamageItem { + + /** + * This is similar to the Tool HarvestLevel. Requires a different tool for a different hardness + * for ex. the Iron Turning Blank has a Hardness of 2 (Like Iron Ore (Harvest Level)). + * The tool requires a hardness of one level above (in this case 3) + */ + int getHardness(ItemStack stack); + } + } diff --git a/src/api/java/ic2/api/item/ItemWrapper.class b/src/api/java/ic2/api/item/ItemWrapper.class index 7c6a6de70..5454f5eff 100644 Binary files a/src/api/java/ic2/api/item/ItemWrapper.class and b/src/api/java/ic2/api/item/ItemWrapper.class differ diff --git a/src/api/java/ic2/api/network/NetworkHelper.class b/src/api/java/ic2/api/network/NetworkHelper.class index 85ff02b47..887d3a387 100644 Binary files a/src/api/java/ic2/api/network/NetworkHelper.class and b/src/api/java/ic2/api/network/NetworkHelper.class differ diff --git a/src/api/java/ic2/api/network/NetworkHelper.java b/src/api/java/ic2/api/network/NetworkHelper.java index 5f9138d30..a91d03a64 100644 --- a/src/api/java/ic2/api/network/NetworkHelper.java +++ b/src/api/java/ic2/api/network/NetworkHelper.java @@ -178,7 +178,7 @@ public final class NetworkHelper { */ private static Object getInstance() { try { - return Class.forName(getPackage() + ".core.IC2").getDeclaredField("network").get(null); + return Class.forName(getPackage() + ".core.util.SideGateway").getMethod("get").invoke(Class.forName(getPackage() + ".core.IC2").getDeclaredField("network").get(null)); } catch (Throwable e) { throw new RuntimeException(e); } diff --git a/src/api/java/ic2/api/recipe/ICannerEnrichRecipeManager$Input.class b/src/api/java/ic2/api/recipe/ICannerEnrichRecipeManager$Input.class index eebdb6bd1..309dd5d11 100644 Binary files a/src/api/java/ic2/api/recipe/ICannerEnrichRecipeManager$Input.class and b/src/api/java/ic2/api/recipe/ICannerEnrichRecipeManager$Input.class differ diff --git a/src/api/java/ic2/api/recipe/ILiquidHeatExchangerManager$HeatExchangeProperty.class b/src/api/java/ic2/api/recipe/ILiquidHeatExchangerManager$HeatExchangeProperty.class new file mode 100644 index 000000000..374f186d7 Binary files /dev/null and b/src/api/java/ic2/api/recipe/ILiquidHeatExchangerManager$HeatExchangeProperty.class differ diff --git a/src/api/java/ic2/api/recipe/ILiquidHeatExchangerManager.class b/src/api/java/ic2/api/recipe/ILiquidHeatExchangerManager.class new file mode 100644 index 000000000..b58008d86 Binary files /dev/null and b/src/api/java/ic2/api/recipe/ILiquidHeatExchangerManager.class differ diff --git a/src/api/java/ic2/api/recipe/ILiquidHeatExchangerManager.java b/src/api/java/ic2/api/recipe/ILiquidHeatExchangerManager.java new file mode 100644 index 000000000..68decbb39 --- /dev/null +++ b/src/api/java/ic2/api/recipe/ILiquidHeatExchangerManager.java @@ -0,0 +1,39 @@ +package ic2.api.recipe; + +import java.util.Map; + +import net.minecraftforge.fluids.Fluid; + +public interface ILiquidHeatExchangerManager extends ILiquidAcceptManager { + + /** + * Add a new fluid heatup/cooldown recipe. + * + * @param fluidName the fluid to heat up/cool down + * @param fluidOutput the fluid the above fluid turns into + * @param huPerMB the Thermal Energy difference in hU for the conversion of one mB fluid + */ + void addFluid(String fluidName, String fluidOutput, int huPerMB); + + HeatExchangeProperty getHeatExchangeProperty(Fluid fluid); + + Map getHeatExchangeProperties(); + + /** + * This returns an ILiquidAcceptManager that only accepts fluids, that can be heated up / cooled down, but not both. + * You can basically use this to check if the liquid resulting from this conversion can be reprocessed into the first one. + * @return Returns the SingleDirectionManager. + */ + ILiquidAcceptManager getSingleDirectionLiquidManager(); + + public static class HeatExchangeProperty { + public HeatExchangeProperty(Fluid outputFluid, int huPerMB) { + this.outputFluid = outputFluid; + this.huPerMB = huPerMB; + } + + public final Fluid outputFluid; + public final int huPerMB; + } + +} diff --git a/src/api/java/ic2/api/recipe/RecipeInputFluidContainer.class b/src/api/java/ic2/api/recipe/RecipeInputFluidContainer.class index 74e0273f8..703455eb6 100644 Binary files a/src/api/java/ic2/api/recipe/RecipeInputFluidContainer.class and b/src/api/java/ic2/api/recipe/RecipeInputFluidContainer.class differ diff --git a/src/api/java/ic2/api/recipe/RecipeInputItemStack.class b/src/api/java/ic2/api/recipe/RecipeInputItemStack.class index 2f3a70ba1..c956c06d8 100644 Binary files a/src/api/java/ic2/api/recipe/RecipeInputItemStack.class and b/src/api/java/ic2/api/recipe/RecipeInputItemStack.class differ diff --git a/src/api/java/ic2/api/recipe/RecipeInputOreDict.class b/src/api/java/ic2/api/recipe/RecipeInputOreDict.class index 5db862212..476e53666 100644 Binary files a/src/api/java/ic2/api/recipe/RecipeInputOreDict.class and b/src/api/java/ic2/api/recipe/RecipeInputOreDict.class differ diff --git a/src/api/java/ic2/api/recipe/RecipeOutput.class b/src/api/java/ic2/api/recipe/RecipeOutput.class index 0dad69cfc..a2a19b3b1 100644 Binary files a/src/api/java/ic2/api/recipe/RecipeOutput.class and b/src/api/java/ic2/api/recipe/RecipeOutput.class differ diff --git a/src/api/java/ic2/api/recipe/RecipeOutput.java b/src/api/java/ic2/api/recipe/RecipeOutput.java index 34c7fe9c3..80ad5fb5c 100644 --- a/src/api/java/ic2/api/recipe/RecipeOutput.java +++ b/src/api/java/ic2/api/recipe/RecipeOutput.java @@ -25,8 +25,7 @@ public final class RecipeOutput { RecipeOutput ro = (RecipeOutput) obj; if (items.size() == ro.items.size() && - (metadata == null && ro.metadata == null || metadata != null && ro.metadata != null) && - metadata.equals(ro.metadata)) { + (metadata == null && ro.metadata == null || metadata != null && ro.metadata != null && metadata.equals(ro.metadata))) { Iterator itA = items.iterator(); Iterator itB = ro.items.iterator(); diff --git a/src/api/java/ic2/api/recipe/Recipes.class b/src/api/java/ic2/api/recipe/Recipes.class index 559ffe865..11854efef 100644 Binary files a/src/api/java/ic2/api/recipe/Recipes.class and b/src/api/java/ic2/api/recipe/Recipes.class differ diff --git a/src/api/java/ic2/api/recipe/Recipes.java b/src/api/java/ic2/api/recipe/Recipes.java index 4c1259768..0aa0b75a5 100644 --- a/src/api/java/ic2/api/recipe/Recipes.java +++ b/src/api/java/ic2/api/recipe/Recipes.java @@ -3,7 +3,7 @@ package ic2.api.recipe; /** * General recipe registry. - * + * * @author Richard */ public class Recipes { @@ -23,12 +23,12 @@ public class Recipes { /** * Reference amplifier values: - * + * * 5000: Scrap * 45000: Scrapbox - * + * * As Parameter for the Amplification Value you have to use the NBTTagCompound - * + * * NBTTagCompound nbt = new NBTTagCompound(); * nbt.setInteger("amplification", aValue); * matterAmplifier.addRecipe(yourStack, nbt); @@ -57,4 +57,12 @@ public class Recipes { public static ISemiFluidFuelManager semiFluidGenerator; public static IFluidHeatManager FluidHeatGenerator; + /** + * Used by the Liquid Heat Exchanger to cool down liquids and determine the amount of hu generated for every mb. + */ + public static ILiquidHeatExchangerManager liquidCooldownManager; + /** + * Opposite of {@link #liquidCooldownManager}. This is for Liquids that can be heated up again. + */ + public static ILiquidHeatExchangerManager liquidHeatupManager; } diff --git a/src/main/java/mekanism/api/MekanismConfig.java b/src/main/java/mekanism/api/MekanismConfig.java index 8eb2870c2..813f845e0 100644 --- a/src/main/java/mekanism/api/MekanismConfig.java +++ b/src/main/java/mekanism/api/MekanismConfig.java @@ -65,6 +65,7 @@ public class MekanismConfig public static double maxEnergyPerSteam = 100; public static double superheatingHeatTransfer = 10000; public static double heatPerFuelTick = 4; + public static boolean allowTransmitterAlloyUpgrade; } public static class client diff --git a/src/main/java/mekanism/client/gui/GuiBoilerStats.java b/src/main/java/mekanism/client/gui/GuiBoilerStats.java index f51ad47c3..b14dab367 100644 --- a/src/main/java/mekanism/client/gui/GuiBoilerStats.java +++ b/src/main/java/mekanism/client/gui/GuiBoilerStats.java @@ -43,7 +43,7 @@ public class GuiBoilerStats extends GuiMekanism public List getInfo() { TemperatureUnit unit = TemperatureUnit.values()[general.tempUnit.ordinal()]; - String environment = UnitDisplayUtils.getDisplayShort(tileEntity.structure.lastEnvironmentLoss*unit.intervalSize, unit); + String environment = UnitDisplayUtils.getDisplayShort(tileEntity.structure.lastEnvironmentLoss*unit.intervalSize, false, unit); return ListUtils.asList(LangUtils.localize("gui.dissipated") + ": " + environment + "/t"); } }, this, MekanismUtils.getResource(ResourceType.GUI, "GuiBoilerStats.png"))); diff --git a/src/main/java/mekanism/client/gui/GuiFuelwoodHeater.java b/src/main/java/mekanism/client/gui/GuiFuelwoodHeater.java index 4f8f1d159..71d1b3050 100644 --- a/src/main/java/mekanism/client/gui/GuiFuelwoodHeater.java +++ b/src/main/java/mekanism/client/gui/GuiFuelwoodHeater.java @@ -40,7 +40,7 @@ public class GuiFuelwoodHeater extends GuiMekanism public List getInfo() { TemperatureUnit unit = TemperatureUnit.values()[general.tempUnit.ordinal()]; - String environment = UnitDisplayUtils.getDisplayShort(tileEntity.lastEnvironmentLoss*unit.intervalSize, unit); + String environment = UnitDisplayUtils.getDisplayShort(tileEntity.lastEnvironmentLoss*unit.intervalSize, false, unit); return ListUtils.asList(LangUtils.localize("gui.dissipated") + ": " + environment + "/t"); } }, this, MekanismUtils.getResource(ResourceType.GUI, "GuiFuelwoodHeater.png"))); diff --git a/src/main/java/mekanism/client/gui/GuiResistiveHeater.java b/src/main/java/mekanism/client/gui/GuiResistiveHeater.java index dfc5f29da..857058ffe 100644 --- a/src/main/java/mekanism/client/gui/GuiResistiveHeater.java +++ b/src/main/java/mekanism/client/gui/GuiResistiveHeater.java @@ -62,7 +62,6 @@ public class GuiResistiveHeater extends GuiMekanism @Override public List getInfo() { - System.out.println(tileEntity.lastEnvironmentLoss); TemperatureUnit unit = TemperatureUnit.values()[general.tempUnit.ordinal()]; String environment = UnitDisplayUtils.getDisplayShort(tileEntity.lastEnvironmentLoss*unit.intervalSize, false, unit); return ListUtils.asList(LangUtils.localize("gui.dissipated") + ": " + environment + "/t"); diff --git a/src/main/java/mekanism/client/gui/GuiThermalEvaporationController.java b/src/main/java/mekanism/client/gui/GuiThermalEvaporationController.java index 5bdec4066..b86467675 100644 --- a/src/main/java/mekanism/client/gui/GuiThermalEvaporationController.java +++ b/src/main/java/mekanism/client/gui/GuiThermalEvaporationController.java @@ -53,7 +53,7 @@ public class GuiThermalEvaporationController extends GuiMekanism public List getInfo() { TemperatureUnit unit = TemperatureUnit.values()[general.tempUnit.ordinal()]; - String environment = UnitDisplayUtils.getDisplayShort(tileEntity.totalLoss*unit.intervalSize, unit); + String environment = UnitDisplayUtils.getDisplayShort(tileEntity.totalLoss*unit.intervalSize, false, unit); return ListUtils.asList(LangUtils.localize("gui.dissipated") + ": " + environment + "/t"); } }, this, MekanismUtils.getResource(ResourceType.GUI, "GuiThermalEvaporationController.png"))); diff --git a/src/main/java/mekanism/client/gui/GuiThermoelectricBoiler.java b/src/main/java/mekanism/client/gui/GuiThermoelectricBoiler.java index 3c0bf5214..31c553e2f 100644 --- a/src/main/java/mekanism/client/gui/GuiThermoelectricBoiler.java +++ b/src/main/java/mekanism/client/gui/GuiThermoelectricBoiler.java @@ -71,7 +71,7 @@ public class GuiThermoelectricBoiler extends GuiMekanism public List getInfo() { TemperatureUnit unit = TemperatureUnit.values()[general.tempUnit.ordinal()]; - String environment = UnitDisplayUtils.getDisplayShort(tileEntity.structure.lastEnvironmentLoss*unit.intervalSize, unit); + String environment = UnitDisplayUtils.getDisplayShort(tileEntity.structure.lastEnvironmentLoss*unit.intervalSize, false, unit); return ListUtils.asList(LangUtils.localize("gui.dissipated") + ": " + environment + "/t"); } }, this, MekanismUtils.getResource(ResourceType.GUI, "GuiThermoelectricBoiler.png"))); diff --git a/src/main/java/mekanism/client/render/RenderPartTransmitter.java b/src/main/java/mekanism/client/render/RenderPartTransmitter.java index 03362b071..b88ed0a98 100644 --- a/src/main/java/mekanism/client/render/RenderPartTransmitter.java +++ b/src/main/java/mekanism/client/render/RenderPartTransmitter.java @@ -630,6 +630,11 @@ public class RenderPartTransmitter implements IIconSelfRegister public void renderTransparency(IIcon icon, CCModel cc, Colour color) { + if(icon == null) + { + return; + } + if(color != null) { cc.render(new IconTransformation(icon), new ColourMultiplier(color.rgba())); diff --git a/src/main/java/mekanism/client/render/tileentity/RenderBin.java b/src/main/java/mekanism/client/render/tileentity/RenderBin.java index 74efa2abb..4b857bcfc 100644 --- a/src/main/java/mekanism/client/render/tileentity/RenderBin.java +++ b/src/main/java/mekanism/client/render/tileentity/RenderBin.java @@ -90,7 +90,7 @@ public class RenderBin extends TileEntitySpecialRenderer if(amount != "") { - renderText(amount, ForgeDirection.getOrientation(tileEntity.facing), 0.02F, x, y - 0.31F, z); + renderText(amount, ForgeDirection.getOrientation(tileEntity.facing), 0.02F, x, y - 0.3725F, z); } MekanismRenderer.glowOff(); diff --git a/src/main/java/mekanism/common/CommonProxy.java b/src/main/java/mekanism/common/CommonProxy.java index f0d6a066a..ece88af77 100644 --- a/src/main/java/mekanism/common/CommonProxy.java +++ b/src/main/java/mekanism/common/CommonProxy.java @@ -281,7 +281,7 @@ public class CommonProxy implements IGuiProvider general.armoredJetpackDamageRatio = Mekanism.configuration.get(Configuration.CATEGORY_GENERAL, "ArmoredJetpackDamageRatio", 0.8).getDouble(); general.armoredJetpackDamageMax = Mekanism.configuration.get(Configuration.CATEGORY_GENERAL, "ArmoredJepackDamageMax", 115).getInt(); general.aestheticWorldDamage = Mekanism.configuration.get(Configuration.CATEGORY_GENERAL, "AestheticWorldDamage", true).getBoolean(); - general.opsBypassRestrictions = Mekanism.configuration.get(Configuration.CATEGORY_GENERAL, "OpsBypassRestrictions", true).getBoolean(); + general.opsBypassRestrictions = Mekanism.configuration.get(Configuration.CATEGORY_GENERAL, "OpsBypassRestrictions", false).getBoolean(); general.thermalEvaporationSpeed = Mekanism.configuration.get(Configuration.CATEGORY_GENERAL, "ThermalEvaporationSpeed", 1.0D).getDouble(); general.maxJetpackGas = Mekanism.configuration.get(Configuration.CATEGORY_GENERAL, "MaxJetpackGas", 24000).getInt(); general.maxScubaGas = Mekanism.configuration.get(Configuration.CATEGORY_GENERAL, "MaxScubaGas", 24000).getInt(); @@ -297,6 +297,7 @@ public class CommonProxy implements IGuiProvider general.maxEnergyPerSteam = Mekanism.configuration.get(Configuration.CATEGORY_GENERAL, "MaxEnergyPerSteam", 100D).getDouble(); general.superheatingHeatTransfer = Mekanism.configuration.get(Configuration.CATEGORY_GENERAL, "SuperheatingHeatTransfer", 10000D).getDouble(); general.heatPerFuelTick = Mekanism.configuration.get(Configuration.CATEGORY_GENERAL, "HeatPerFuelTick", 4D).getDouble(); + general.allowTransmitterAlloyUpgrade = Mekanism.configuration.get(Configuration.CATEGORY_GENERAL, "AllowTransmitterAlloyUpgrade", true).getBoolean(); general.blacklistIC2 = Mekanism.configuration.get(Configuration.CATEGORY_GENERAL, "BlacklistIC2Power", false).getBoolean(); general.blacklistRF = Mekanism.configuration.get(Configuration.CATEGORY_GENERAL, "BlacklistRFPower", false).getBoolean(); diff --git a/src/main/java/mekanism/common/FluidNetwork.java b/src/main/java/mekanism/common/FluidNetwork.java index 82015a8a8..4631893d8 100644 --- a/src/main/java/mekanism/common/FluidNetwork.java +++ b/src/main/java/mekanism/common/FluidNetwork.java @@ -12,6 +12,7 @@ import mekanism.api.Coord4D; import mekanism.api.transmitters.DynamicNetwork; import mekanism.api.transmitters.IGridTransmitter; import mekanism.common.util.LangUtils; +import mekanism.common.util.PipeUtils; import net.minecraft.tileentity.TileEntity; import net.minecraftforge.common.MinecraftForge; import net.minecraftforge.common.util.ForgeDirection; @@ -164,7 +165,7 @@ public class FluidNetwork extends DynamicNetwork if(acceptor != null && fluidToSend != null) { - fluidSent += acceptor.fill(side, new FluidStack(fluidToSend.getFluidID(), currentSending), doTransfer); + fluidSent += acceptor.fill(side, PipeUtils.copy(fluidToSend, currentSending), doTransfer); } if(fluidSent > prev) diff --git a/src/main/java/mekanism/common/Mekanism.java b/src/main/java/mekanism/common/Mekanism.java index 78fae24c2..2b0b823a4 100644 --- a/src/main/java/mekanism/common/Mekanism.java +++ b/src/main/java/mekanism/common/Mekanism.java @@ -142,7 +142,7 @@ import cpw.mods.fml.common.registry.GameRegistry; * @author AidanBrady * */ -@Mod(modid = "Mekanism", name = "Mekanism", version = "9.0.2", guiFactory = "mekanism.client.gui.ConfigGuiFactory", +@Mod(modid = "Mekanism", name = "Mekanism", version = "9.0.3", guiFactory = "mekanism.client.gui.ConfigGuiFactory", dependencies = "after:ForgeMultipart;after:BuildCraft;after:BuildCraftAPI;after:IC2;after:CoFHCore;" + "after:ComputerCraft;after:Galacticraft API;after:MetallurgyCore") public class Mekanism @@ -168,7 +168,7 @@ public class Mekanism public static Configuration configuration; /** Mekanism version number */ - public static Version versionNumber = new Version(9, 0, 2); + public static Version versionNumber = new Version(9, 0, 3); /** MultiblockManagers for various structrures */ public static MultiblockManager tankManager = new MultiblockManager("dynamicTank"); diff --git a/src/main/java/mekanism/common/base/EnergyAcceptorWrapper.java b/src/main/java/mekanism/common/base/EnergyAcceptorWrapper.java index b8059e239..5ead4daa5 100644 --- a/src/main/java/mekanism/common/base/EnergyAcceptorWrapper.java +++ b/src/main/java/mekanism/common/base/EnergyAcceptorWrapper.java @@ -103,8 +103,7 @@ public abstract class EnergyAcceptorWrapper implements IStrictEnergyAcceptor @Override public double transferEnergyToAcceptor(ForgeDirection side, double amount) { - int needed = Math.min(acceptor.getMaxEnergyStored(side)-acceptor.getEnergyStored(side), Integer.MAX_VALUE); - int transferred = acceptor.receiveEnergy(side, Math.min(needed, toRF(amount)), false); + int transferred = acceptor.receiveEnergy(side, Math.min(Integer.MAX_VALUE, toRF(amount)), false); return fromRF(transferred); } @@ -170,7 +169,9 @@ public abstract class EnergyAcceptorWrapper implements IStrictEnergyAcceptor public double transferEnergyToAcceptor(ForgeDirection side, double amount) { double toTransfer = Math.min(Math.min(acceptor.getDemandedEnergy(), toEU(amount)), Integer.MAX_VALUE); - return amount - fromEU(acceptor.injectEnergy(side, toTransfer, 0)); + double rejects = acceptor.injectEnergy(side, toTransfer, 0); + + return fromEU(toTransfer - rejects); } @Override diff --git a/src/main/java/mekanism/common/block/BlockMachine.java b/src/main/java/mekanism/common/block/BlockMachine.java index a40e30e03..d613fd447 100644 --- a/src/main/java/mekanism/common/block/BlockMachine.java +++ b/src/main/java/mekanism/common/block/BlockMachine.java @@ -84,6 +84,7 @@ import mekanism.common.tile.TileEntitySolarNeutronActivator; import mekanism.common.tile.TileEntityTeleporter; import mekanism.common.util.LangUtils; import mekanism.common.util.MekanismUtils; +import mekanism.common.util.PipeUtils; import mekanism.common.util.SecurityUtils; import net.minecraft.block.Block; import net.minecraft.block.BlockContainer; @@ -687,7 +688,7 @@ public class BlockMachine extends BlockContainer implements ISpecialBounds, IBlo { String owner = ((ISecurityTile)tileEntity).getSecurity().getOwner(); - if(owner == null || entityplayer.getCommandSenderName().equals(owner)) + if(MekanismUtils.isOp((EntityPlayerMP)entityplayer) || owner == null || entityplayer.getCommandSenderName().equals(owner)) { entityplayer.openGui(Mekanism.instance, type.guiId, world, x, y, z); } @@ -801,6 +802,25 @@ public class BlockMachine extends BlockContainer implements ISpecialBounds, IBlo return world.setBlockToAir(x, y, z); } + @Override + public boolean hasComparatorInputOverride() + { + return true; + } + + @Override + public int getComparatorInputOverride(World world, int x, int y, int z, int par5) + { + TileEntity tileEntity = world.getTileEntity(x, y, z); + + if(tileEntity instanceof TileEntityFluidTank) + { + return ((TileEntityFluidTank)tileEntity).getRedstoneLevel(); + } + + return 0; + } + private boolean manageInventory(EntityPlayer player, TileEntityFluidTank tileEntity) { ItemStack itemStack = player.getCurrentEquippedItem(); @@ -899,7 +919,7 @@ public class BlockMachine extends BlockContainer implements ISpecialBounds, IBlo if(itemFluid.amount-toFill > 0) { - tileEntity.pushUp(new FluidStack(itemFluid.getFluid(), itemFluid.amount-toFill), true); + tileEntity.pushUp(PipeUtils.copy(itemFluid, itemFluid.amount-toFill), true); } return true; diff --git a/src/main/java/mekanism/common/content/entangloporter/InventoryFrequency.java b/src/main/java/mekanism/common/content/entangloporter/InventoryFrequency.java index c769bd490..9dbf0ec6a 100644 --- a/src/main/java/mekanism/common/content/entangloporter/InventoryFrequency.java +++ b/src/main/java/mekanism/common/content/entangloporter/InventoryFrequency.java @@ -90,7 +90,7 @@ public class InventoryFrequency extends Frequency if(nbtTags.hasKey("storedItem")) { - storedItem.readFromNBT(nbtTags.getCompoundTag("storedItem")); + storedItem = ItemStack.loadItemStackFromNBT(nbtTags.getCompoundTag("storedItem")); } temperature = nbtTags.getDouble("temperature"); diff --git a/src/main/java/mekanism/common/item/ItemAlloy.java b/src/main/java/mekanism/common/item/ItemAlloy.java index ca935aaca..e0aba921b 100644 --- a/src/main/java/mekanism/common/item/ItemAlloy.java +++ b/src/main/java/mekanism/common/item/ItemAlloy.java @@ -1,6 +1,7 @@ package mekanism.common.item; import mekanism.api.IAlloyInteraction; +import mekanism.api.MekanismConfig.general; import mekanism.common.MekanismItems; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.item.ItemStack; @@ -19,7 +20,7 @@ public class ItemAlloy extends ItemMekanism { TileEntity tile = world.getTileEntity(x, y, z); - if(tile instanceof IAlloyInteraction) + if(general.allowTransmitterAlloyUpgrade && tile instanceof IAlloyInteraction) { if(!world.isRemote) { diff --git a/src/main/java/mekanism/common/item/ItemBlockMachine.java b/src/main/java/mekanism/common/item/ItemBlockMachine.java index 922a0cfe3..d56d3be51 100644 --- a/src/main/java/mekanism/common/item/ItemBlockMachine.java +++ b/src/main/java/mekanism/common/item/ItemBlockMachine.java @@ -36,6 +36,7 @@ import mekanism.common.tile.TileEntityFactory; import mekanism.common.tile.TileEntityFluidTank; import mekanism.common.util.LangUtils; import mekanism.common.util.MekanismUtils; +import mekanism.common.util.PipeUtils; import mekanism.common.util.SecurityUtils; import net.minecraft.block.Block; import net.minecraft.block.material.Material; @@ -852,7 +853,7 @@ public class ItemBlockMachine extends ItemBlock implements IEnergizedItem, ISpec if(doFill) { int fillAmount = toFill + (stored == null ? 0 : stored.amount); - setFluidStack(new FluidStack(resource.getFluid(), (stored != null ? stored.amount : 0)+toFill), container); + setFluidStack(PipeUtils.copy(resource, (stored != null ? stored.amount : 0)+toFill), container); } return toFill; @@ -870,7 +871,7 @@ public class ItemBlockMachine extends ItemBlock implements IEnergizedItem, ISpec if(stored != null) { - FluidStack toDrain = new FluidStack(stored.getFluid(), Math.min(stored.amount, maxDrain)); + FluidStack toDrain = PipeUtils.copy(stored, Math.min(stored.amount, maxDrain)); if(doDrain) { diff --git a/src/main/java/mekanism/common/item/ItemGaugeDropper.java b/src/main/java/mekanism/common/item/ItemGaugeDropper.java index 8d2d3dd6f..ac4e83efd 100644 --- a/src/main/java/mekanism/common/item/ItemGaugeDropper.java +++ b/src/main/java/mekanism/common/item/ItemGaugeDropper.java @@ -7,6 +7,7 @@ import mekanism.api.gas.GasStack; import mekanism.api.gas.IGasItem; import mekanism.common.Mekanism; import mekanism.common.util.LangUtils; +import mekanism.common.util.PipeUtils; import net.minecraft.creativetab.CreativeTabs; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.entity.player.EntityPlayerMP; @@ -164,7 +165,7 @@ public class ItemGaugeDropper extends ItemMekanism implements IGasItem, IFluidCo if(doFill) { int fillAmount = toFill + (stored == null ? 0 : stored.amount); - setFluid(container, new FluidStack(resource.getFluid(), (stored != null ? stored.amount : 0)+toFill)); + setFluid(container, PipeUtils.copy(resource, (stored != null ? stored.amount : 0)+toFill)); } return toFill; @@ -177,7 +178,7 @@ public class ItemGaugeDropper extends ItemMekanism implements IGasItem, IFluidCo if(stored != null) { - FluidStack toDrain = new FluidStack(stored.getFluid(), Math.min(stored.amount, maxDrain)); + FluidStack toDrain = PipeUtils.copy(stored, Math.min(stored.amount, maxDrain)); if(doDrain) { diff --git a/src/main/java/mekanism/common/item/ItemUpgrade.java b/src/main/java/mekanism/common/item/ItemUpgrade.java index dcc34c861..0f081d656 100644 --- a/src/main/java/mekanism/common/item/ItemUpgrade.java +++ b/src/main/java/mekanism/common/item/ItemUpgrade.java @@ -5,10 +5,14 @@ import java.util.List; import mekanism.api.EnumColor; import mekanism.common.Upgrade; import mekanism.common.base.IUpgradeItem; +import mekanism.common.base.IUpgradeTile; +import mekanism.common.tile.component.TileComponentUpgrade; import mekanism.common.util.LangUtils; import mekanism.common.util.MekanismUtils; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.item.ItemStack; +import net.minecraft.tileentity.TileEntity; +import net.minecraft.world.World; import org.lwjgl.input.Keyboard; @@ -44,4 +48,37 @@ public class ItemUpgrade extends ItemMekanism implements IUpgradeItem { return upgrade; } + + @Override + public boolean onItemUseFirst(ItemStack stack, EntityPlayer player, World world, int x, int y, int z, int side, float hitX, float hitY, float hitZ) + { + if(world.isRemote) + { + return false; + } + + if(player.isSneaking()) + { + TileEntity tile = world.getTileEntity(x, y, z); + Upgrade type = getUpgradeType(stack); + + if(tile instanceof IUpgradeTile) + { + TileComponentUpgrade component = ((IUpgradeTile)tile).getComponent(); + + if(component.supports(type)) + { + if(component.getUpgrades(type) < type.getMax()) + { + component.addUpgrade(type); + stack.stackSize--; + } + } + + return true; + } + } + + return false; + } } diff --git a/src/main/java/mekanism/common/multipart/PartMechanicalPipe.java b/src/main/java/mekanism/common/multipart/PartMechanicalPipe.java index 15354b4de..1d3a7d284 100644 --- a/src/main/java/mekanism/common/multipart/PartMechanicalPipe.java +++ b/src/main/java/mekanism/common/multipart/PartMechanicalPipe.java @@ -104,7 +104,7 @@ public class PartMechanicalPipe extends PartTransmitter 0) { - pushUp(new FluidStack(ret.getFluid(), rejects), true); + pushUp(PipeUtils.copy(ret, rejects), true); } } } @@ -204,13 +216,13 @@ public class TileEntityFluidTank extends TileEntityContainerBlock implements IAc if(ret != null) { - fluidTank.setFluid(new FluidStack(ret.getFluid(), Math.min(fluidTank.getCapacity(), ret.amount))); + fluidTank.setFluid(PipeUtils.copy(ret, Math.min(fluidTank.getCapacity(), ret.amount))); int rejects = Math.max(0, ret.amount - fluidTank.getCapacity()); if(rejects > 0) { - pushUp(new FluidStack(ret.getFluid(), rejects), true); + pushUp(PipeUtils.copy(ret, rejects), true); } } } @@ -352,6 +364,12 @@ public class TileEntityFluidTank extends TileEntityContainerBlock implements IAc } } + public int getRedstoneLevel() + { + double fractionFull = (float)fluidTank.getFluidAmount()/(float)fluidTank.getCapacity(); + return MathHelper.floor_float((float)(fractionFull * 14.0F)) + (fractionFull > 0 ? 1 : 0); + } + public int getCurrentNeeded() { int needed = fluidTank.getCapacity()-fluidTank.getFluidAmount(); @@ -464,7 +482,7 @@ public class TileEntityFluidTank extends TileEntityContainerBlock implements IAc if(filled < resource.amount && !isActive) { - filled += pushUp(new FluidStack(resource.getFluid(), resource.amount-filled), doFill); + filled += pushUp(PipeUtils.copy(resource, resource.amount-filled), doFill); } if(filled > 0 && from == ForgeDirection.UP) diff --git a/src/main/java/mekanism/common/tile/TileEntityGasTank.java b/src/main/java/mekanism/common/tile/TileEntityGasTank.java index c1c6a4e15..6e14b1494 100644 --- a/src/main/java/mekanism/common/tile/TileEntityGasTank.java +++ b/src/main/java/mekanism/common/tile/TileEntityGasTank.java @@ -52,6 +52,8 @@ public class TileEntityGasTank extends TileEntityContainerBlock implements IGasH public GasMode dumping; public int currentGasAmount; + + public int currentRedstoneLevel; /** This machine's current RedstoneControl type. */ public RedstoneControl controlType; @@ -127,6 +129,14 @@ public class TileEntityGasTank extends TileEntityContainerBlock implements IGasH } currentGasAmount = newGasAmount; + + int newRedstoneLevel = getRedstoneLevel(); + + if(newRedstoneLevel != currentRedstoneLevel) + { + markDirty(); + currentRedstoneLevel = newRedstoneLevel; + } } } diff --git a/src/main/java/mekanism/common/tile/TileEntityLogisticalSorter.java b/src/main/java/mekanism/common/tile/TileEntityLogisticalSorter.java index d77f6757f..ffc377dd9 100644 --- a/src/main/java/mekanism/common/tile/TileEntityLogisticalSorter.java +++ b/src/main/java/mekanism/common/tile/TileEntityLogisticalSorter.java @@ -8,6 +8,7 @@ import java.util.EnumSet; import mekanism.api.Coord4D; import mekanism.api.EnumColor; import mekanism.api.IConfigCardAccess.ISpecialConfigData; +import mekanism.api.MekanismConfig.client; import mekanism.api.Range4D; import mekanism.common.HashList; import mekanism.common.Mekanism; @@ -557,7 +558,7 @@ public class TileEntityLogisticalSorter extends TileEntityElectricBlock implemen { Mekanism.packetHandler.sendToReceivers(new TileEntityMessage(Coord4D.get(this), getNetworkedData(new ArrayList())), new Range4D(Coord4D.get(this))); - if(active) + if(active && client.enableMachineSounds) { worldObj.playSoundEffect(xCoord, yCoord, zCoord, "mekanism:etc.Click", 0.3F, 1); } diff --git a/src/main/java/mekanism/common/tile/TileEntityPRC.java b/src/main/java/mekanism/common/tile/TileEntityPRC.java index c0fea36e5..a220cf3f2 100644 --- a/src/main/java/mekanism/common/tile/TileEntityPRC.java +++ b/src/main/java/mekanism/common/tile/TileEntityPRC.java @@ -76,6 +76,8 @@ public class TileEntityPRC extends TileEntityBasicMachine MAX_HEIGHT) { height = 0; @@ -570,7 +573,7 @@ public class TileEntityThermalEvaporationController extends TileEntityThermalEva startPoint = isLeftOnFace ? startPoint.getFromSide(right) : startPoint; startPoint = startPoint.getFromSide(right.getOpposite()).getFromSide(MekanismUtils.getBack(facing)); - startPoint.translate(0, -(height-2), 0); + startPoint.yCoord = renderY; return startPoint; } @@ -609,6 +612,7 @@ public class TileEntityThermalEvaporationController extends TileEntityThermalEva isLeftOnFace = dataStream.readBoolean(); lastGain = dataStream.readFloat(); totalLoss = dataStream.readFloat(); + renderY = dataStream.readInt(); if(structured != prev) { @@ -665,6 +669,7 @@ public class TileEntityThermalEvaporationController extends TileEntityThermalEva data.add(isLeftOnFace); data.add(lastGain); data.add(totalLoss); + data.add(renderY); return data; } @@ -702,6 +707,12 @@ public class TileEntityThermalEvaporationController extends TileEntityThermalEva { return side != 0 && side != 1; } + + @Override + public TileEntityThermalEvaporationController getController() + { + return structured ? this : null; + } public void clearStructure() { diff --git a/src/main/java/mekanism/common/tile/component/TileComponentEjector.java b/src/main/java/mekanism/common/tile/component/TileComponentEjector.java index 305534e6f..97a597b69 100644 --- a/src/main/java/mekanism/common/tile/component/TileComponentEjector.java +++ b/src/main/java/mekanism/common/tile/component/TileComponentEjector.java @@ -138,7 +138,7 @@ public class TileComponentEjector implements ITileComponent if(tank.getFluidAmount() > 0) { - FluidStack toEmit = new FluidStack(tank.getFluid().getFluid(), Math.min(FLUID_OUTPUT, tank.getFluidAmount())); + FluidStack toEmit = PipeUtils.copy(tank.getFluid(), Math.min(FLUID_OUTPUT, tank.getFluidAmount())); int emit = PipeUtils.emit(outputSides, toEmit, tileEntity); tank.drain(emit, true); } diff --git a/src/main/java/mekanism/common/util/MekanismUtils.java b/src/main/java/mekanism/common/util/MekanismUtils.java index 7540d655c..c1eff4ca5 100644 --- a/src/main/java/mekanism/common/util/MekanismUtils.java +++ b/src/main/java/mekanism/common/util/MekanismUtils.java @@ -1501,8 +1501,15 @@ public final class MekanismUtils * @param player - player to check * @return if the player has operator privileges */ - public static boolean isOp(EntityPlayerMP player) + public static boolean isOp(EntityPlayer p) { + if(!(p instanceof EntityPlayerMP)) + { + return false; + } + + EntityPlayerMP player = (EntityPlayerMP)p; + return general.opsBypassRestrictions && player.mcServer.getConfigurationManager().func_152596_g(player.getGameProfile()); } diff --git a/src/main/java/mekanism/common/util/PipeUtils.java b/src/main/java/mekanism/common/util/PipeUtils.java index 5f241fab8..b77c2de04 100644 --- a/src/main/java/mekanism/common/util/PipeUtils.java +++ b/src/main/java/mekanism/common/util/PipeUtils.java @@ -115,10 +115,18 @@ public final class PipeUtils } ForgeDirection dir = ForgeDirection.getOrientation(Arrays.asList(possibleAcceptors).indexOf(acceptor)).getOpposite(); - toSend -= acceptor.fill(dir, new FluidStack(stack.getFluid(), currentSending), true); + toSend -= acceptor.fill(dir, copy(stack, currentSending), true); } } return prevSending-toSend; } + + public static FluidStack copy(FluidStack fluid, int amount) + { + FluidStack ret = fluid.copy(); + ret.amount = amount; + + return ret; + } } diff --git a/src/main/java/mekanism/common/util/SecurityUtils.java b/src/main/java/mekanism/common/util/SecurityUtils.java index 4ab1ba075..b96d5e60e 100644 --- a/src/main/java/mekanism/common/util/SecurityUtils.java +++ b/src/main/java/mekanism/common/util/SecurityUtils.java @@ -34,6 +34,11 @@ public final class SecurityUtils ISecurityItem security = (ISecurityItem)stack.getItem(); + if(MekanismUtils.isOp(player)) + { + return true; + } + return canAccess(security.getSecurity(stack), player.getCommandSenderName(), security.getOwner(stack)); } @@ -46,6 +51,11 @@ public final class SecurityUtils ISecurityTile security = (ISecurityTile)tile; + if(MekanismUtils.isOp(player)) + { + return true; + } + return canAccess(security.getSecurity().getMode(), player.getCommandSenderName(), security.getSecurity().getOwner()); } diff --git a/src/main/java/mekanism/generators/client/gui/GuiHeatGenerator.java b/src/main/java/mekanism/generators/client/gui/GuiHeatGenerator.java index e7ff30ba6..67382b89e 100644 --- a/src/main/java/mekanism/generators/client/gui/GuiHeatGenerator.java +++ b/src/main/java/mekanism/generators/client/gui/GuiHeatGenerator.java @@ -2,6 +2,7 @@ package mekanism.generators.client.gui; import java.util.List; +import mekanism.api.MekanismConfig.general; import mekanism.api.util.ListUtils; import mekanism.api.util.UnitDisplayUtils; import mekanism.api.util.UnitDisplayUtils.TemperatureUnit; @@ -66,8 +67,9 @@ public class GuiHeatGenerator extends GuiMekanism @Override public List getInfo() { - String transfer = UnitDisplayUtils.getDisplayShort(tileEntity.lastTransferLoss, TemperatureUnit.KELVIN); - String environment = UnitDisplayUtils.getDisplayShort(tileEntity.lastEnvironmentLoss, TemperatureUnit.KELVIN); + TemperatureUnit unit = TemperatureUnit.values()[general.tempUnit.ordinal()]; + String transfer = UnitDisplayUtils.getDisplayShort(tileEntity.lastTransferLoss, false, unit); + String environment = UnitDisplayUtils.getDisplayShort(tileEntity.lastEnvironmentLoss, false, unit); return ListUtils.asList(LangUtils.localize("gui.transferred") + ": " + transfer + "/t", LangUtils.localize("gui.dissipated") + ": " + environment + "/t"); } }, this, MekanismUtils.getResource(ResourceType.GUI, "GuiHeatGenerator.png"))); diff --git a/src/main/java/mekanism/generators/client/gui/GuiIndustrialTurbine.java b/src/main/java/mekanism/generators/client/gui/GuiIndustrialTurbine.java index 7fcef55fb..f13caf4c6 100644 --- a/src/main/java/mekanism/generators/client/gui/GuiIndustrialTurbine.java +++ b/src/main/java/mekanism/generators/client/gui/GuiIndustrialTurbine.java @@ -1,7 +1,9 @@ package mekanism.generators.client.gui; +import java.util.ArrayList; import java.util.List; +import mekanism.api.Coord4D; import mekanism.api.MekanismConfig.general; import mekanism.api.MekanismConfig.generators; import mekanism.api.util.ListUtils; @@ -12,7 +14,11 @@ import mekanism.client.gui.element.GuiPowerBar; import mekanism.client.gui.element.GuiRateBar; import mekanism.client.gui.element.GuiRateBar.IRateInfoHandler; import mekanism.client.render.MekanismRenderer; +import mekanism.client.sound.SoundHandler; +import mekanism.common.Mekanism; import mekanism.common.inventory.container.ContainerFilter; +import mekanism.common.network.PacketTileEntity.TileEntityMessage; +import mekanism.common.tile.TileEntityGasTank; import mekanism.common.util.LangUtils; import mekanism.common.util.MekanismUtils; import mekanism.common.util.MekanismUtils.ResourceType; @@ -53,6 +59,11 @@ public class GuiIndustrialTurbine extends GuiMekanism double rate = tileEntity.structure.lowerVolume*(tileEntity.structure.clientDispersers*generators.turbineDisperserGasFlow); rate = Math.min(rate, tileEntity.structure.vents*generators.turbineVentGasFlow); + if(rate == 0) + { + return 0; + } + return (double)tileEntity.structure.lastSteamInput/rate; } }, MekanismUtils.getResource(ResourceType.GUI, "GuiIndustrialTurbine.png"), 40, 13)); @@ -89,6 +100,9 @@ public class GuiIndustrialTurbine extends GuiMekanism renderScaledText(LangUtils.localize("gui.capacity") + ": " + tileEntity.structure.getFluidCapacity() + " mB", 53, 44, 0x00CD00, 106); renderScaledText(LangUtils.localize("gui.maxFlow") + ": " + rate + " mB/t", 53, 53, 0x00CD00, 106); + String name = chooseByMode(tileEntity.structure.dumpMode, LangUtils.localize("gui.idle"), LangUtils.localize("gui.dumping"), LangUtils.localize("gui.dumping_excess")); + renderScaledText(name, 156-(int)(fontRendererObj.getStringWidth(name)*getNeededScale(name, 66)), 73, 0x404040, 66); + if(xAxis >= 7 && xAxis <= 39 && yAxis >= 14 && yAxis <= 72) { drawCreativeTabHoveringText(tileEntity.structure.fluidStored != null ? LangUtils.localizeFluidStack(tileEntity.structure.fluidStored) + ": " + tileEntity.structure.fluidStored.amount + "mB" : LangUtils.localize("gui.empty"), xAxis, yAxis); @@ -106,6 +120,9 @@ public class GuiIndustrialTurbine extends GuiMekanism int guiHeight = (height - ySize) / 2; drawTexturedModalRect(guiWidth, guiHeight, 0, 0, xSize, ySize); + int displayInt = chooseByMode(tileEntity.structure.dumpMode, 142, 150, 158); + drawTexturedModalRect(guiWidth + 160, guiHeight + 73, 176, displayInt, 8, 8); + if(tileEntity.getScaledFluidLevel(58) > 0) { displayGauge(7, 14, tileEntity.getScaledFluidLevel(58), tileEntity.structure.fluidStored, 0); @@ -154,4 +171,40 @@ public class GuiIndustrialTurbine extends GuiMekanism mc.renderEngine.bindTexture(MekanismUtils.getResource(ResourceType.GUI, "GuiIndustrialTurbine.png")); drawTexturedModalRect(guiWidth + xPos, guiHeight + yPos, 176, side == 0 ? 0 : 54, 16, 54); } + + @Override + protected void mouseClicked(int x, int y, int button) + { + super.mouseClicked(x, y, button); + + int xAxis = (x - (width - xSize) / 2); + int yAxis = (y - (height - ySize) / 2); + + if(xAxis > 160 && xAxis < 169 && yAxis > 73 && yAxis < 82) + { + ArrayList data = new ArrayList(); + data.add((byte)0); + + Mekanism.packetHandler.sendToServer(new TileEntityMessage(Coord4D.get(tileEntity), data)); + SoundHandler.playSound("gui.button.press"); + } + } + + private T chooseByMode(TileEntityGasTank.GasMode dumping, T idleOption, T dumpingOption, T dumpingExcessOption) + { + if(dumping.equals(TileEntityGasTank.GasMode.IDLE)) + { + return idleOption; + } + else if(dumping.equals(TileEntityGasTank.GasMode.DUMPING)) + { + return dumpingOption; + } + else if(dumping.equals(TileEntityGasTank.GasMode.DUMPING_EXCESS)) + { + return dumpingExcessOption; + } + + return idleOption; //should not happen; + } } diff --git a/src/main/java/mekanism/generators/common/MekanismGenerators.java b/src/main/java/mekanism/generators/common/MekanismGenerators.java index a283661a3..137d5766f 100644 --- a/src/main/java/mekanism/generators/common/MekanismGenerators.java +++ b/src/main/java/mekanism/generators/common/MekanismGenerators.java @@ -43,7 +43,7 @@ import cpw.mods.fml.common.event.FMLPreInitializationEvent; import cpw.mods.fml.common.eventhandler.SubscribeEvent; import cpw.mods.fml.common.network.NetworkRegistry; -@Mod(modid = "MekanismGenerators", name = "MekanismGenerators", version = "9.0.2", dependencies = "required-after:Mekanism", guiFactory = "mekanism.generators.client.gui.GeneratorsGuiFactory") +@Mod(modid = "MekanismGenerators", name = "MekanismGenerators", version = "9.0.3", dependencies = "required-after:Mekanism", guiFactory = "mekanism.generators.client.gui.GeneratorsGuiFactory") public class MekanismGenerators implements IModule { @SidedProxy(clientSide = "mekanism.generators.client.GeneratorsClientProxy", serverSide = "mekanism.generators.common.GeneratorsCommonProxy") @@ -53,7 +53,7 @@ public class MekanismGenerators implements IModule public static MekanismGenerators instance; /** MekanismGenerators version number */ - public static Version versionNumber = new Version(9, 0, 2); + public static Version versionNumber = new Version(9, 0, 3); public static MultiblockManager turbineManager = new MultiblockManager("industrialTurbine"); diff --git a/src/main/java/mekanism/generators/common/content/turbine/SynchronizedTurbineData.java b/src/main/java/mekanism/generators/common/content/turbine/SynchronizedTurbineData.java index 667324ddf..f8795fe52 100644 --- a/src/main/java/mekanism/generators/common/content/turbine/SynchronizedTurbineData.java +++ b/src/main/java/mekanism/generators/common/content/turbine/SynchronizedTurbineData.java @@ -5,6 +5,7 @@ import java.util.Map; import mekanism.api.Coord4D; import mekanism.common.multiblock.SynchronizedData; +import mekanism.common.tile.TileEntityGasTank.GasMode; import net.minecraftforge.fluids.FluidStack; public class SynchronizedTurbineData extends SynchronizedData @@ -19,6 +20,8 @@ public class SynchronizedTurbineData extends SynchronizedData { public FluidStack fluid; public double electricity; + public GasMode dumpMode = GasMode.IDLE; @Override public void apply(SynchronizedTurbineData data) { data.fluidStored = fluid; data.electricityStored = electricity; + data.dumpMode = dumpMode; } @Override @@ -21,6 +24,7 @@ public class TurbineCache extends MultiblockCache { fluid = data.fluidStored; electricity = data.electricityStored; + dumpMode = data.dumpMode; } @Override @@ -32,6 +36,7 @@ public class TurbineCache extends MultiblockCache } electricity = nbtTags.getDouble("electricity"); + dumpMode = GasMode.values()[nbtTags.getInteger("dumpMode")]; } @Override @@ -43,5 +48,6 @@ public class TurbineCache extends MultiblockCache } nbtTags.setDouble("electricity", electricity); + nbtTags.setInteger("dumpMode", dumpMode.ordinal()); } } diff --git a/src/main/java/mekanism/generators/common/content/turbine/TurbineUpdateProtocol.java b/src/main/java/mekanism/generators/common/content/turbine/TurbineUpdateProtocol.java index 85910ea3f..005310d6c 100644 --- a/src/main/java/mekanism/generators/common/content/turbine/TurbineUpdateProtocol.java +++ b/src/main/java/mekanism/generators/common/content/turbine/TurbineUpdateProtocol.java @@ -243,6 +243,7 @@ public class TurbineUpdateProtocol extends UpdateProtocol 0) + { + IFluidTank tank = getReactor().getSteamTank(); + + for(ForgeDirection side : ForgeDirection.VALID_DIRECTIONS) + { + TileEntity tile = Coord4D.get(this).getFromSide(side).getTileEntity(worldObj); + + if(tile instanceof IFluidHandler && !(tile instanceof TileEntityBoilerValve)) + { + if(((IFluidHandler)tile).canFill(side.getOpposite(), tank.getFluid().getFluid())) + { + tank.drain(((IFluidHandler)tile).fill(side.getOpposite(), tank.getFluid(), true), true); + } + } + } + } + } } @Override public int fill(ForgeDirection from, FluidStack resource, boolean doFill) { - if(resource.getFluid() == FluidRegistry.WATER && getReactor() != null) + if(resource.getFluid() == FluidRegistry.WATER && getReactor() != null && !fluidEject) { return getReactor().getWaterTank().fill(resource, doFill); } @@ -87,13 +138,13 @@ public class TileEntityReactorPort extends TileEntityReactorBlock implements IFl @Override public boolean canFill(ForgeDirection from, Fluid fluid) { - return (getReactor() != null && fluid == FluidRegistry.WATER); + return (getReactor() != null && fluid == FluidRegistry.WATER && !fluidEject); } @Override public boolean canDrain(ForgeDirection from, Fluid fluid) { - return (getReactor() != null && fluid == FluidRegistry.WATER); + return (getReactor() != null && fluid == FluidRegistry.getFluid("steam")); } @Override @@ -363,4 +414,26 @@ public class TileEntityReactorPort extends TileEntityReactorBlock implements IFl return false; } + + @Override + public boolean onSneakRightClick(EntityPlayer player, int side) + { + if(!worldObj.isRemote) + { + fluidEject = !fluidEject; + String modeText = " " + (fluidEject ? EnumColor.DARK_RED : EnumColor.DARK_GREEN) + LangUtils.transOutputInput(fluidEject) + "."; + player.addChatMessage(new ChatComponentText(EnumColor.DARK_BLUE + "[Mekanism] " + EnumColor.GREY + LangUtils.localize("tooltip.configurator.reactorPortEject") + modeText)); + + Mekanism.packetHandler.sendToReceivers(new TileEntityMessage(Coord4D.get(this), getNetworkedData(new ArrayList())), new Range4D(Coord4D.get(this))); + markDirty(); + } + + return true; + } + + @Override + public boolean onRightClick(EntityPlayer player, int side) + { + return false; + } } \ No newline at end of file diff --git a/src/main/java/mekanism/generators/common/tile/turbine/TileEntityTurbineCasing.java b/src/main/java/mekanism/generators/common/tile/turbine/TileEntityTurbineCasing.java index 7dbb56939..74b03fa1c 100644 --- a/src/main/java/mekanism/generators/common/tile/turbine/TileEntityTurbineCasing.java +++ b/src/main/java/mekanism/generators/common/tile/turbine/TileEntityTurbineCasing.java @@ -14,6 +14,7 @@ import mekanism.common.multiblock.MultiblockCache; import mekanism.common.multiblock.MultiblockManager; import mekanism.common.multiblock.UpdateProtocol; import mekanism.common.network.PacketTileEntity.TileEntityMessage; +import mekanism.common.tile.TileEntityGasTank.GasMode; import mekanism.common.tile.TileEntityMultiblock; import mekanism.common.util.LangUtils; import mekanism.common.util.MekanismUtils; @@ -86,6 +87,16 @@ public class TileEntityTurbineCasing extends TileEntityMultiblock 2 +gui.teleporter.needsEnergy=Potřebuje energii +gui.teleporter.noAccess=Nemáš přístup k tomuto Teleportéru. +gui.teleporter.noFreq=Žádná frekvence + +gui.entangloporter.noAccess=Nemáš přístup k tomuto Vztahoportači. + +gui.digitalMinerConfig=Konfig Digitální Těžičky + +gui.digitalMiner.autoPull=Auto-výtah +gui.digitalMiner.replaceBlock=Nahrazovací blok +gui.digitalMiner.reset=Resetovat +gui.digitalMiner.silkTouch=Něžný dotek +gui.digitalMiner.pull=Výtah +gui.digitalMiner.silk=Něžně +gui.digitalMiner.toMine=K těžbě +gui.digitalMiner.running=Běží +gui.digitalMiner.inverse=Opečný mód +gui.digitalMiner.requireReplace=Vyžaduje nahrazení +gui.digitalMiner.fuzzyMode=Nejasný mód +gui.digitalMiner.missingBlock=Chybějící blok + +//Recipe names +recipe.mekanismShaped=Tvarovaný +recipe.mekanismShapeless=Beztvarý + +//Security types +security.public=Veřejný +security.private=Privátní +security.trusted=Důvěřivý + +//Item and block tooltip text +tooltip.configurator.configurate=Konfigurovat +tooltip.configurator.empty=Prázdný +tooltip.configurator.rotate=Otočit +tooltip.configurator.wrench=Klíč +tooltip.configurator.pumpReset=Resetovat kalkulace Elektrické Pumpy +tooltip.configurator.toggleDiverter=Mód rozdělovače změněn na +tooltip.configurator.toggleMode=Chování %s změněno na +tooltip.configurator.viewMode=Aktuální chování %s +tooltip.configurator.noLink=Žádný spoj +tooltip.configurator.linkMsg=Svázat s +tooltip.configurator.dim=dimenze +tooltip.configurator.setLink=Nastavit spojení s blokem +tooltip.configurator.plenisherReset=Resetovat kalkulace Obohacovače Kapalin +tooltip.configurator.inductionPortMode=Mód vysílání Indukčního Portu nastaven na +tooltip.configurator.toggleColor=Barva nastavena na +tooltip.configurator.viewColor=Aktuální barva + +tooltip.upgrade.speed=Rychlost +tooltip.upgrade.energy=Energie + +tooltip.inventory=Inventář +tooltip.storedEnergy=Uskladněná energie +tooltip.auth=Autorizován +tooltip.locked=Uzamčeno +tooltip.recipeType=Typ receptu +tooltip.hold=Drž +tooltip.forDesc=pro popis +tooltip.forDetails=pro detaily +tooltip.fireMode=Ohnivý Mód +tooltip.capacity=Kapacita +tooltip.pumpRate=Rychlost Pumpy +tooltip.items=Předměty +tooltip.blocks=Bloky +tooltip.universal=univerzální +tooltip.fluids=Kapaliny +tooltip.gasses=Plyny +tooltip.capableTrans=Schopný přenášet +tooltip.restrictiveDesc=Využit pouze když není jiná cesta +tooltip.diversionDesc=Ovladatelný ruditem +tooltip.noGas=Neuložen žádný plyn +tooltip.stored=Uloženo +tooltip.channel=Kanál +tooltip.mode=Mód +tooltip.efficiency=Efektivita +tooltip.modeToggle=Mód nastaven na +tooltip.flowing=Tekoucí +tooltip.yes=ano +tooltip.no=ne +tooltip.name=Název +tooltip.blockData=Data bloku +tooltip.block=Blok +tooltip.meta=Metadata +tooltip.tile=Dlaždice +tooltip.keysFound=Klíč(e) nalezen(y) +tooltip.noKey=Žádný klíč +tooltip.hp=HP +tooltip.configureState=Konfigurovat Stav +tooltip.outputRate=Rychlost Výstupu +tooltip.insufficientFuel=Nedostatek Paliva +tooltip.readyForReaction=Připraven na Reakci +tooltip.speed=Rychlost +tooltip.and=a +tooltip.heat=Teplota +tooltip.itemAmount=Množství položek +tooltip.invalid=Neplatný +tooltip.encoded=Zakódovaný +tooltip.ingredients=Ingredience + +tooltip.portableTank.bucketMode=Kyblíkový Mód +//totally legit and not funny sounding :D +tooltip.disassembler.normal=normální +tooltip.disassembler.slow=pomalý +tooltip.disassembler.fast=rychlý +tooltip.disassembler.vein=žilný +tooltip.disassembler.off=vyplý + +tooltip.configurationCard.got=Získaná konfigurační data z %s +tooltip.configurationCard.set=Vložená konfigurační data typu %s +tooltip.configurationCard.unequal=Nerovné formáty konfiguračních dat + +tooltip.balloon=Balón + +tooltip.jetpack.regular=Normální +tooltip.jetpack.hover=Vznášecí +tooltip.jetpack.disabled=Deaktivovaný + +tooltip.flamethrower.combat=Souboj +tooltip.flamethrower.heat=Teplo +tooltip.flamethrower.inferno=Peklo +tooltip.flamethrower.modeBump=Mód plamenometu změněn na + +tooltip.seismicReader.needsEnergy=Nedostatek energie na interpretaci vibrací +tooltip.seismicReader.noVibrations=Nenalezeny žádné vibrace + +tooltip.Bin=Blok schopný skladovat velká kvanta jednoho typu předmětu. +tooltip.TeleporterFrame=Rám využívaný k postavení Teleportačního multibloku, umožnující portálu se vygenerovat uvnitř struktury. +tooltip.SteelCasing=Solidní, ocelově založený plášť využívaný jako základ strojírenství. +tooltip.DynamicTank=Plášť využívaný v multibloku Dynamická Nádrž, struktuře schopné skladovat enormní množství kapaliny. +tooltip.StructuralGlass=Pokročilý, tvrzený materiál skla který se dropuje a může být využit v každém multibloku. +tooltip.DynamicValve=Ventil, který lze umístit na multiblok Dynamická Nádrž, umožnujíc kapalinám být extrahovány a vkládány externím systémem trubek. +tooltip.ThermalEvaporationController=Ovladač multibloku Teplotní Výparovna fungující jako srdce systému. Pouze jeden může být na multibloku. +tooltip.ThermalEvaporationValve=Ventil, který lze umístit na multiblok Teplotní Výparovna, umožnujíc kapalinám být extrahovány a vkládány externím systémem trubek. +tooltip.ThermalEvaporationBlock=Měděný plášť použitý v multibloku Teplotní Výparovna, využívající svůj materiál k přenosu tepla potřebného pro výrobu. +tooltip.InductionCasing=Type energeticky odolného pláště využívaného k výrobě multibloku Energizovaná Indukční Matice. +tooltip.InductionPort=Port který může být umístěn na multiblok Energizovaná Indukční Matice, umožnujíc energii být vložená či vytažená externí kabeláží. +tooltip.InductionCell=Velmi vodivý energetický kapacitor schopný skladovat masivní množství energie v jednom bloku. Pro expanzi využijte multiblok Energizovaná Indukční Matice. +tooltip.InductionProvider=Pokročilý komplex chladících systémů, vodičů a transformerů umožnujících zvyšovat maximální výstupní frekvenci energie multibloku Energizovaná Indukční Matice. +tooltip.SuperheatingElement=Modulární, nějak nebezpečnýradiátor schopný vysílat obrovská množství tepla do svého okolí. +tooltip.PressureDisperser=Blok používaný k rozptýlení páry v multibloku. Měli by tvořit bezmezerovou horizontální plošinu pro optimální ovládání toku páry. +tooltip.BoilerCasing=Tlakuvzdorný hustý plášť využitý při stavbě multibloku Termoelektrický Bojler. +tooltip.BoilerValve=Ventil který lze umístit na multiblok Termoelektrický Bojler, umožnující vstup vody a energie a výstup páry. +tooltip.SecurityDesk=Centrální ovládací pult na kontrolu bezpečnosti všech vašich strojů. + +tooltip.EnrichmentChamber=Jednoduchý stroj obohacující rudy do jejich práškových protějšků a zároveň dělající mnoho dalších operací. +tooltip.OsmiumCompressor=Poměrně pokročilý stroj kompresující osmium do různorodých prášků za účelem výroby jejich ingotových protějšků. +tooltip.Combiner=Stroj kombinující prášky a cobblestone na zformování jejich rudných protějšků. +tooltip.Crusher=Stroj drtící ingoty do jejich práškových protějšků a zároveň dělající mnoho dalších operací. +tooltip.DigitalMiner=Velmi pokročilý, založený na filtrech, automatický těžič který dokáže vytěžit jakýkoli blok zadáš do max 32 bloků X, Y. +tooltip.MetallurgicInfuser=Stroj infúzující různorodé materiály do (v podstatě) kovů pro výrobu slitin a dalších složek. +tooltip.PurificationChamber=Pokročilý stroj drtící rudy do třech kupek, slouží jako počáteční stupeň 300% zpracování rud. +tooltip.EnergizedSmelter=Jednoduchý stroj - pec na energii. +tooltip.Teleporter=Stroj teleportující hráče na různorodé lokace definované jiným Teleportérem. +tooltip.ElectricPump=Pokročilá, vylepšitelná pumpa, schopná extrahovat každý druh kapaliny. +tooltip.PersonalChest=54 slotová truhla, která jde otevřít odkudkoli (dokonce i z inventáře) +tooltip.Chargepad=Univerzální nabíječka která dokáže nabít jakýkoli energetický předmět z jakéhokoli módu. +tooltip.LogisticalSorter=Pokročilý stroj založený na filtrech, dokáže vyhazovat věci z přilehlých inventářů do přilehlých inventářů a Přepravních Transportérů. +tooltip.RotaryCondensentrator=Stroj konvertující plyny do jejich kapalinových protějšků a zpět. +tooltip.ChemicalInjectionChamber=Elitní stroj drtící rudy do čtyř úlomků, slouží jako počáteční fáze 400% zpracování rud. +tooltip.ElectrolyticSeparator=Stroj elektrolyzující kapalinu a rozdělující ji na dva plyny. +tooltip.PrecisionSawmill=Stroj zpracovávající kmeny a jiné dřevěné věci efektivněji a zároveň zdroj pilin. +tooltip.ChemicalDissolutionChamber=Ultimátní stroj chemicky rozkládající všechny nečistoty z rud a zanechávající je jako břečku. +tooltip.ChemicalWasher=Ultimátní stroj čistící břečku a připravující ji na krystalizaci. +tooltip.ChemicalCrystallizer=Ultimátní stroj krystalizující purifikovanou břečku do rudných krystalů. +tooltip.ChemicalOxidizer=Stroj oxidující pevné materiály do jejich plynné fáze. +tooltip.ChemicalInfuser=Stroj tvořící nový plyn ze dvou starých. +tooltip.SeismicVibrator=Stroj využívající seismické otřesy k poskytnutí informací o rozdílném složení vrstev ve světě. +tooltip.PressurizedReactionChamber=Pokročilý stroj, který vezme pevnou, tekutou i plynnou složku a vytvoří jak plynný, tak pevný produkt. +tooltip.FluidTank=Užitečná přenosná nádrž umožňující vzít více kyblíků kapaliny kamkoli chcete. +tooltip.FluidicPlenisher=Stroj schopný tvorby celých jezer zaplavováním místa pod sebou. +tooltip.Laser=Pokročilá forma lineárního přenosu energie která zprostředkovává extrémně zhuštěný paprsek světla. +tooltip.LaserAmplifier=Blok schopný slučovat a přesměrovávat laserové paprsky s kompletní kontrolou, kdy vystřelit. +tooltip.LaserTractorBeam=Blok schopný slučovat a přesměrovávat laserové paprsky. Sbírá dropy z bloků které zničil. +tooltip.SolarNeutronActivator=Stroj směřující neutronovou radiaci ze Slunce do svého zásobiště, umožňující pomalou tvorbu různorodých izotopů. +tooltip.Oredictionificator=Stroj sjednocující různé předměty a rudy pomoci Rudo-Slovníku. +tooltip.Factory=Stroj sloužící jako vylepšení k běžným strojům, umožňuje více operací najednou. +tooltip.ResistiveHeater=Kondenzovaný, vinutý rezistor schopný převádět elektrickou energii přímo do tepelné energie. +tooltip.FormulaicAssemblicator=Stroj využívající energii pro rychlou výrobu předmětů či bloků z Výrobních Formulí. +tooltip.FuelwoodHeater=Stroj schopný generovat hodně energie spalováním hořlavých předmětů. +tooltip.QuantumEntangloporter=Velmi pokročilý blok schopný přenášet jakýkoli zdroj napříč velkými vzdálenostmi a dimenzemi. + +tooltip.HeatGenerator=Generátor využívající teplo lávy nebo jiného spalovatelného zdroje k výrobě energie. +tooltip.SolarGenerator=Generátor využívající energie Slunce k výrobě energie. +tooltip.GasGenerator=Generátor využívající různorodost plynů k výrobě energie. +tooltip.BioGenerator=Generátor spalující organické materiály ze světa k výrobě energie. +tooltip.AdvancedSolarGenerator=Pokročilý generátor který přímo pohlcuje sluneční paprsky s minimální ztrátou k výrobě energie. +tooltip.WindGenerator=Generátor využívající sílu větru k výrobě energie. Efektivita se zvyšuje úměrně s výškou. +tooltip.TurbineRotor=Ocelová tyč použitá k udržení Turbínových Lopatek v Průmyslové Turbíně. +tooltip.RotationalComplex=Konektor který je položen na nejvyšší Turbínový Rotor Průmyslové Turbíny pro přenášení kinetické energie do jeho Elektromagnetických Cívek. +tooltip.ElectromagneticCoil=Blok konvertující energii z Rotačního Komplexu do využitelné energie. Tyto mohou být položeny do jakéhokoli uspořádání nad Rotačním Komplexem, pakliže se stále dotýkají jeden druhého a samotného komplexu. +tooltip.TurbineCasing=Tlakuvzdorný plášť využitý k výrobě Průmyslové Turbíny. +tooltip.TurbineValve=Typ Turbínového Pláště zahrnující port na přenos energie a páry. +tooltip.TurbineVent=Typ Turbínového Pláště s integrovaným ventilem pro vypouštění páry. Tyto by měly být umístěny na úrovni nebo výše Turbínového Rotačního Komplexu. + +tooltip.ReactorGlass=Tvrzené sklo které může být použito v multibloku Fúzní Reaktor. +tooltip.ReactorLaserFocusMatrix=Panel Reaktorového Skla který je schopný absorbovat optickou energii a tím zahřívat Fúzní Reaktor. +tooltip.ReactorController=Kontrolní blok pro celou strukturu Fúzního Reaktoru. +tooltip.ReactorFrame=Tvrzený rám který může být využit v multibloku Fúzní Reaktor. +tooltip.ReactorNeutronCapturePlate=Blok který může být využit jak k zablokování radiace Fúzního Reaktoru tak k asistenci u produkce Trinia. +tooltip.ReactorPort=Blok tvrzeného rámu který je schopen zpracovávat zároveň plyn i energii z a do Fúzního Reaktoru. +tooltip.ReactorLogicAdapter=Blok který umožňuje základní sledování stavu reaktoru pomocí ruditu. + +tooltip.OsmiumOre=Silný minerál který lze nalézt v jakékoli hloubce. Je znám pro své využití v konstrukci strojů. +tooltip.CopperOre=Běžný, vodivý materiál který se využívá k výrobě kabelů. Jeho schopnost vydržet velké teploty ho činí podstatným pro pokročilé stroje. +tooltip.TinOre=Lehký, ale tvrdý, vodivý materiál který je o trochu vzácnější než Měď. + +//Side data +sideData.None=Nic +sideData.Input=Vstup +sideData.Output=Výstup +sideData.Energy=Energie +sideData.Gas=Plyn +sideData.Extra=Extra +sideData.Infuse=Infúze +sideData.Fluid=Kapalina +sideData.Fill=Náplň +sideData.Empty=Prázdný +sideData.Charge=Náboj +sideData.Discharge=Výboj + +//Redstone control +control.disabled=Vyplý +control.high=Silný +control.low=Slabý +control.pulse=Pulz +control.disabled.desc=Vždy aktivní +control.high.desc=Vždy se signálem +control.low.desc=Vždy bez signálu +control.pulse.desc=Pouze aktivní s prvním příchozím signálem + +//Container edit modes +fluidedit.both=Oboje +fluidedit.fill=Plný +fluidedit.empty=Prázdný + +//Colors +color.black=Černá +color.darkBlue=Tmavě Modrá +color.darkGreen=Tmavě Zelená +color.darkAqua=Tmavá Aqua +color.darkRed=Tmavě Červená +color.purple=Fialová +color.orange=Oranžová +color.grey=Šedá +color.darkGrey=Tmavě Šedá +color.indigo=Indigo +color.brightGreen=Světle Zelená +color.aqua=Aqua +color.red=Červená +color.pink=Růžová +color.yellow=Žlutá +color.white=Bílá +color.brown=Hnědá +color.brightPink=Světle Růžová + +//Dyes +dye.black=Černá +dye.darkBlue=Modrá +dye.brown=Hnědá +dye.darkGreen=Zelená +dye.darkAqua=Tyrkysová +dye.darkRed=Tmavě Červená +dye.purple=Nachová +dye.orange=Oranžová +dye.grey=Světle Šedá +dye.darkGrey=Šedá +dye.indigo=Světle Modrá +dye.brightGreen=Limetka +dye.aqua=Aqua +dye.red=Červená +dye.brightPink=Růžová +dye.pink=Magenta +dye.yellow=Žlutá +dye.white=Bílá + +//Reactor Logic modes +reactor.disabled=Deaktivovaný +reactor.disabled.desc=Nebude vysílat ruditový signál +reactor.ready=Připraven na Zážeh +reactor.ready.desc=Reaktor dosáhl potřebné teploty pro zážeh +reactor.capacity=Dosažena Tepelná Kapacita +reactor.capacity.desc=Tepelná kapacita jádra reaktoru byla dosažena +reactor.depleted=Nedostatek Paliva +reactor.depleted.desc=Reaktor má nedostatek paliva k udržení reakce + +//Creative tab +itemGroup.tabMekanism=Mekanism + +//NEI stuff +nei.chemicalInjectionChamber=Ch. Vstřikovací Komora +nei.rotaryCondensentrator=R. Kondenzátor + +//**********// +//GENERATORS// +//**********// + +//Items +item.SolarPanel.name=Solární Panel +item.Hohlraum.name=Hohlraum +item.TurbineBlade.name=Turbínová Lopatka + +//Generators +tile.Generator.HeatGenerator.name=Tepelný Generátor +tile.Generator.SolarGenerator.name=Solární Generátor +tile.Generator.GasGenerator.name=Plyno-Spalovací Generátor +tile.Generator.BioGenerator.name=Bio-Generátor +tile.Generator.AdvancedSolarGenerator.name=Pokročilý Solární Generátor +tile.Generator.WindGenerator.name=Větrný Generátor +tile.Generator.TurbineRotor.name=Turbínový Rotor +tile.Generator.RotationalComplex.name=Rotační Komplex +tile.Generator.ElectromagneticCoil.name=Elektromagnetická Cívka +tile.Generator.TurbineCasing.name=Plášť Turbíny +tile.Generator.TurbineValve.name=Turbínový Ventil +tile.Generator.TurbineVent.name=Turbínový Průduch + +tile.Reactor.ReactorController.name=Kontroler Reaktoru +tile.Reactor.ReactorFrame.name=Rám Reaktoru +tile.Reactor.ReactorNeutronCapturePlate.name=Neutronový Zachytávací Plát +tile.Reactor.ReactorPort.name=Port Reaktoru +tile.Reactor.ReactorLogicAdapter.name=Logický Adaptér Reaktoru + +tile.ReactorGlass.ReactorGlass.name=Sklo Reaktoru +tile.ReactorGlass.ReactorLaserFocusMatrix.name=Laserová Zaměřovací Matice + +//Gui text +gui.heatGenerator.fuel=Palivo +gui.solarGenerator.sun=Slunce +gui.bioGenerator.bioFuel=Bio Palivo +gui.electrolyticSeparator.dump=Vyhodit + +gui.passive=Chlazen vzduchem +gui.active=Chalzen vodou + +gui.minInject=Min. Rychlost Vstřikování +gui.ignition=Zážehová Teplota +gui.maxPlasma=Max. Teplota Plasmy +gui.maxCasing=Max. Teplota Pláště +gui.passiveGeneration=Pasivní Generace +gui.steamProduction=Produkce Páry + +//*****// +//TOOLS// +//*****// + +//Vanilla Paxels +item.WoodPaxel.name=Dřevěný Sekrumpáč +item.StonePaxel.name=Kamenný Sekrumpáč +item.IronPaxel.name=Železný Sekrumpáč +item.DiamondPaxel.name=Diamantový Sekrumpáč +item.GoldPaxel.name=Zlatý Sekrumpáč + +//Obsidian +item.ObsidianHelmet.name=Obsidiánová Helma +item.ObsidianChestplate.name=Obsidiánové Brnění +item.ObsidianLeggings.name=Obsidiánové Kalhoty +item.ObsidianBoots.name=Obsidiánové Boty +item.ObsidianPaxel.name=Obsidiánový Sekrumpáč +item.ObsidianPickaxe.name=Obsidiánový Krumpáč +item.ObsidianAxe.name=Obsidiánová Sekyra +item.ObsidianShovel.name=Obsidiánová Lopata +item.ObsidianHoe.name=Obsidiánová Motyka +item.ObsidianSword.name=Obsidiánový Meč + +//Lapis Lazuli +item.LazuliHelmet.name=Lapis Lazuli Helma +item.LazuliChestplate.name=Lapis Lazuli Brnění +item.LazuliLeggings.name=Lapis Lazuli Kalhoty +item.LazuliBoots.name=Lapis Lazuli Boty +item.LazuliPaxel.name=Lapis Lazuli Sekrumpáč +item.LazuliPickaxe.name=Lapis Lazuli Krumpáč +item.LazuliAxe.name=Lapis Lazuli Sekyra +item.LazuliShovel.name=Lapis Lazuli Lopata +item.LazuliHoe.name=Lapis Lazuli Motyka +item.LazuliSword.name=Lapis Lazuli Meč + +//Osmium +item.OsmiumHelmet.name=Osmiová Helma +item.OsmiumChestplate.name=Osmiové Brnění +item.OsmiumLeggings.name=Osmiové Kalhoty +item.OsmiumBoots.name=Osmiové Boty +item.OsmiumPaxel.name=Osmiový Sekrumpáč +item.OsmiumPickaxe.name=Osmiový Krumpáč +item.OsmiumAxe.name=Osmiová Sekyra +item.OsmiumShovel.name=Osmiová Lopata +item.OsmiumHoe.name=Osmiová Motyka +item.OsmiumSword.name=Osmiový Meč + +//Bronze +item.BronzeHelmet.name=Bronzová Helma +item.BronzeChestplate.name=Bronzové Brnění +item.BronzeLeggings.name=Bronzové Kalhoty +item.BronzeBoots.name=Bronzové Boty +item.BronzePaxel.name=Bronzový Sekrumpáč +item.BronzePickaxe.name=Bronzový Krumpáč +item.BronzeAxe.name=Bronzová Sekyra +item.BronzeShovel.name=Bronzová Lopata +item.BronzeHoe.name=Bronzová Motyka +item.BronzeSword.name=Bronzový Meč + +//Glow +item.GlowstoneHelmet.name=Světlitová Helma +item.GlowstoneChestplate.name=Světlitové Brnění +item.GlowstoneLeggings.name=Světlitové Kalhoty +item.GlowstoneBoots.name=Světlitové Boty +item.GlowstonePaxel.name=Světlitový Sekrumpáč +item.GlowstonePickaxe.name=Světlitový Krumpáč +item.GlowstoneAxe.name=Světlitová Sekyra +item.GlowstoneShovel.name=Světlitová Lopata +item.GlowstoneHoe.name=Světlitová Motyka +item.GlowstoneSword.name=Světlitový Meč + +//Steel +item.SteelHelmet.name=Ocelová Helma +item.SteelChestplate.name=Ocelové Brnění +item.SteelLeggings.name=Ocelové Kalhoty +item.SteelBoots.name=Ocelové Boty +item.SteelPaxel.name=Ocelový Sekrumpáč +item.SteelPickaxe.name=Ocelový Krumpáč +item.SteelAxe.name=Ocelová Sekyra +item.SteelShovel.name=Ocelová Lopata +item.SteelHoe.name=Ocelová Motyka +item.SteelSword.name=Ocelové Meč + +//Config Gui +mekanism.configgui.ctgy.tools.general=Základní +mekanism.configgui.ctgy.tools.armor=Vyvážení Brnění +mekanism.configgui.ctgy.tools.tools=Vyvážení Nástrojů + +//Config Tooltips +mekanism.configgui.ctgy.tools.general.tooltip=Nastavení týkající se základní konfigurace MekanismTools +mekanism.configgui.ctgy.tools.armor.tooltip=Nastavení týkající se protekčních hodnot a vyvážení setů brnění MekanismTools +mekanism.configgui.ctgy.tools.tools.tooltip=Nastavení týkající se efektivních hodnot a vyvážení setů nástrojů MekanismTools \ No newline at end of file diff --git a/src/main/resources/assets/mekanism/lang/en_US.lang b/src/main/resources/assets/mekanism/lang/en_US.lang index e0917cd4d..10fbe6816 100644 --- a/src/main/resources/assets/mekanism/lang/en_US.lang +++ b/src/main/resources/assets/mekanism/lang/en_US.lang @@ -698,6 +698,7 @@ tooltip.configurator.plenisherReset=Reset Fluidic Plenisher calculation tooltip.configurator.inductionPortMode=Toggled Induction Port transfer mode to tooltip.configurator.toggleColor=Color bumped to tooltip.configurator.viewColor=Current color +tooltip.configurator.reactorPortEject=Toggled Reactor Port eject mode to tooltip.upgrade.speed=Speed tooltip.upgrade.energy=Energy diff --git a/src/main/resources/assets/mekanism/lang/ja_JP.lang b/src/main/resources/assets/mekanism/lang/ja_JP.lang index dc84c4a6c..632aad3d7 100644 --- a/src/main/resources/assets/mekanism/lang/ja_JP.lang +++ b/src/main/resources/assets/mekanism/lang/ja_JP.lang @@ -95,11 +95,11 @@ tile.BasicBlock.StructuralGlass.name=構造用ガラス tile.BasicBlock.DynamicValve.name=ダイナミックバルブ tile.BasicBlock.CopperBlock.name=銅ブロック tile.BasicBlock.TinBlock.name=錫ブロック -tile.BasicBlock.ThermalEvaporationController.name=加温採鹹コントローラ -tile.BasicBlock.ThermalEvaporationValve.name=加温採鹹バルブ +tile.BasicBlock.ThermalEvaporationController.name=加温蒸発濃縮コントローラ +tile.BasicBlock.ThermalEvaporationValve.name=加温蒸発濃縮バルブ //Basic Block 2 (second ID iteration) -tile.BasicBlock2.ThermalEvaporationBlock.name=加温採鹹ブロック +tile.BasicBlock2.ThermalEvaporationBlock.name=加温蒸発濃縮ブロック tile.BasicBlock2.InductionCasing.name=インダクションケーシング tile.BasicBlock2.InductionPort.name=インダクションポート tile.BasicBlock2.InductionCellBasic.name=ベーシックインダクションセル @@ -522,7 +522,7 @@ gui.coils=コイル数 gui.dispersers=圧力分散器 gui.vents=蒸気排出口 gui.maxProduction=最大発電量 -gui.limiting=限界 +gui.limiting=限定的 gui.steamInput=蒸気搬入量 gui.capacity=容量 gui.unit=単位 @@ -782,13 +782,13 @@ tooltip.SteelCasing=頑丈な鋼鉄製の筐体です。マシンの作成に使 tooltip.DynamicTank=ダイナミックタンクの組み立てに使います。沢山の液体を貯蔵します。 tooltip.StructuralGlass=強化されたガラスで破壊してもアイテム化します。マルチブロックの窓として使用することが出来ます。 tooltip.DynamicValve=ダイナミックタンクの組み立てに使います。パイプからの液体の搬入出をサポートします。 -tooltip.ThermalEvaporationController=加温採鹹装置の根幹となるブロックです。加温採鹹装置に一つだけ置くことが出来ます。 -tooltip.ThermalEvaporationValve=加温採鹹装置のバルブです。パイプからの液体の搬入出をサポートします。 -tooltip.ThermalEvaporationBlock=加温採鹹装置の組み立てに使う銅合金製の筐体です。処理に必要な沢山の熱を素材が伝導します。 -tooltip.InductionCasing=大きなエネルギーに耐えられる筐体です。インダクションマトリックスの組み立てに使います。 -tooltip.InductionPort=インダクションマトリックスの組み立てに使い、インダクションマトリックスのエネルギーの搬入出を担います。 -tooltip.InductionCell=多大なエネルギーを蓄えることが出来る、高伝導性のキャパシタです。 インダクションマトリックスの内部に組み込んで、蓄電容量を増大するのに使用します。 -tooltip.InductionProvider=先進的な冷却システム、伝導体と変圧器の統合体です。 インダクションマトリックスの内部に組み込み、エネルギーの入出力上限を増強するのに使います。 +tooltip.ThermalEvaporationController=加温蒸発濃縮装置の根幹となるブロックです。加温蒸発濃縮装置につき一つだけ置くことが出来ます。 +tooltip.ThermalEvaporationValve=加温蒸発濃縮装置のバルブです。サーモダイナミックコンダクターからの導熱、パイプからの液体の搬入出をサポートします。 +tooltip.ThermalEvaporationBlock=加温蒸発濃縮装置の組み立てに使う銅合金製の筐体です。処理に必要な沢山の熱を素材が伝導します。 +tooltip.InductionCasing=莫大なエネルギーに耐えられる筐体です。インダクションマトリックスの組み立てに使います。 +tooltip.InductionPort=インダクションマトリックスの組み立てに用い、インダクションマトリックスにおけるエネルギーの搬入出を担います。 +tooltip.InductionCell=甚大なエネルギーを蓄えることが出来る、高伝導性のキャパシタです。 インダクションマトリックスの内部に組み込み、蓄電容量を増やします。 +tooltip.InductionProvider=先進的な、冷却システム、伝導体と変圧器の統合体です。 インダクションマトリックスの内部に組み込み、エネルギーの入出力上限を増やします。 tooltip.SuperheatingElement=周囲に高熱を放出する、何だか危ない部品です。 tooltip.PressureDisperser=蒸気を分散させるためのマルチブロックの部品です。 蒸気の流れを適切に制御するために、隙間なく水平に置く必要があります。 tooltip.BoilerCasing=耐圧性の高密な筐体です。ボイラー室の組み立てに使います。 diff --git a/src/main/resources/assets/mekanism/sounds.json b/src/main/resources/assets/mekanism/sounds.json index 88b8ee63a..3a6e2e3e9 100644 --- a/src/main/resources/assets/mekanism/sounds.json +++ b/src/main/resources/assets/mekanism/sounds.json @@ -49,7 +49,7 @@ "tile.gen.gas": {"category": "block", "sounds": [{"name": "GasGenerator", "stream": false}]}, "tile.gen.heat": {"category": "block", "sounds": [{"name": "HeatGenerator", "stream": false}]}, "tile.gen.solar": {"category": "block", "sounds": [{"name": "SolarGenerator", "stream": false}]}, - "tile.gen.wind": {"category": "block", "sounds": [{"name": "WindTurbine", "stream": false}]}, + "tile.gen.wind": {"category": "weather", "sounds": [{"name": "WindTurbine", "stream": false}]}, "item.flamethrower.idle": {"category": "player", "sounds": [{"name": "FlamethrowerIdle", "stream": false}]}, "item.flamethrower.active": {"category": "player", "sounds": [{"name": "FlamethrowerActive", "stream": false}]},