diff --git a/bin/minecraft/mods/mekanism/gui/GuiMetallurgicInfuser.png b/bin/minecraft/mods/mekanism/gui/GuiMetallurgicInfuser.png index 1786db6f9..eef0bf162 100755 Binary files a/bin/minecraft/mods/mekanism/gui/GuiMetallurgicInfuser.png and b/bin/minecraft/mods/mekanism/gui/GuiMetallurgicInfuser.png differ diff --git a/bin/minecraft/mods/mekanism/sound/SolarGenerator.ogg b/bin/minecraft/mods/mekanism/sound/SolarGenerator.ogg new file mode 100644 index 000000000..179ea43cc Binary files /dev/null and b/bin/minecraft/mods/mekanism/sound/SolarGenerator.ogg differ diff --git a/src/minecraft/mekanism/client/IHasSound.java b/src/minecraft/mekanism/client/IHasSound.java index a4dc8b3c2..5d68b77b1 100644 --- a/src/minecraft/mekanism/client/IHasSound.java +++ b/src/minecraft/mekanism/client/IHasSound.java @@ -16,4 +16,10 @@ public interface IHasSound * @return sound path */ public String getSoundPath(); + + /** + * Gets the multiplier to play this sound by. + * @return sound multiplier + */ + public float getVolumeMultiplier(); } diff --git a/src/minecraft/mekanism/client/ItemRenderingHandler.java b/src/minecraft/mekanism/client/ItemRenderingHandler.java index 026e2301d..4b124aa11 100644 --- a/src/minecraft/mekanism/client/ItemRenderingHandler.java +++ b/src/minecraft/mekanism/client/ItemRenderingHandler.java @@ -6,7 +6,9 @@ import mekanism.common.Mekanism; import mekanism.common.BlockMachine.MachineType; import mekanism.common.Tier.EnergyCubeTier; import net.minecraft.block.Block; +import net.minecraft.client.Minecraft; import net.minecraft.client.model.ModelChest; +import net.minecraft.client.renderer.EntityRenderer; import net.minecraft.client.renderer.RenderBlocks; import net.minecraft.client.renderer.Tessellator; import net.minecraft.item.ItemStack; @@ -50,6 +52,9 @@ public class ItemRenderingHandler implements IItemRenderer } else if(item.getItemDamage() == MachineType.ELECTRIC_CHEST.meta) { + int performanceToFps = EntityRenderer.performanceToFps(Minecraft.getMinecraft().gameSettings.limitFramerate); + float partialTick = System.nanoTime() + (long)(1000000000 / performanceToFps); + IElectricChest chest = (IElectricChest)item.getItem(); ModelChest electricChest = new ModelChest(); @@ -59,7 +64,7 @@ public class ItemRenderingHandler implements IItemRenderer GL11.glScalef(1.0F, -1F, -1F); GL11.glBindTexture(3553, FMLClientHandler.instance().getClient().renderEngine.getTexture("/mods/mekanism/render/ElectricChest.png")); - float lidangle = chest.getPrevLidAngle(item) + (chest.getLidAngle(item) - chest.getPrevLidAngle(item)) * 1F;//partialTick; + float lidangle = chest.getPrevLidAngle(item) + (chest.getLidAngle(item) - chest.getPrevLidAngle(item)) * 1F; lidangle = 1.0F - lidangle; lidangle = 1.0F - lidangle * lidangle * lidangle; electricChest.chestLid.rotateAngleX = -((lidangle * 3.141593F) / 2.0F); diff --git a/src/minecraft/mekanism/client/RenderDynamicTank.java b/src/minecraft/mekanism/client/RenderDynamicTank.java index 28a954fca..ae627dd09 100644 --- a/src/minecraft/mekanism/client/RenderDynamicTank.java +++ b/src/minecraft/mekanism/client/RenderDynamicTank.java @@ -255,7 +255,7 @@ public class RenderDynamicTank extends TileEntitySpecialRenderer private int getStages(int height) { - return (height-2)*100; + return (height-2)*1600; } private double getX(int x) diff --git a/src/minecraft/mekanism/client/Sound.java b/src/minecraft/mekanism/client/Sound.java index 17e147e05..2ac5fa38e 100644 --- a/src/minecraft/mekanism/client/Sound.java +++ b/src/minecraft/mekanism/client/Sound.java @@ -137,10 +137,12 @@ public class Sound { if(entityplayer != null && tileEntity != null && entityplayer.worldObj == tileEntity.worldObj) { + float multiplier = ((IHasSound)tileEntity).getVolumeMultiplier(); float volume = 0; + float masterVolume = Mekanism.audioHandler.masterVolume; - double distanceVolume = (entityplayer.getDistanceSq(tileEntity.xCoord, tileEntity.yCoord, tileEntity.zCoord)*0.008); - volume = (float)(Math.max(Mekanism.audioHandler.masterVolume-distanceVolume, 0))*0.05F; + double distance = entityplayer.getDistance(tileEntity.xCoord, tileEntity.yCoord, tileEntity.zCoord); + volume = (float)Math.min(Math.max(masterVolume-((distance*.08F)*masterVolume), 0)*multiplier, 1); if(Mekanism.audioHandler.soundSystem != null) { diff --git a/src/minecraft/mekanism/common/BlockBasic.java b/src/minecraft/mekanism/common/BlockBasic.java index 8b709cfaf..5106af728 100644 --- a/src/minecraft/mekanism/common/BlockBasic.java +++ b/src/minecraft/mekanism/common/BlockBasic.java @@ -1,5 +1,6 @@ package mekanism.common; +import java.util.ArrayList; import java.util.List; import mekanism.client.ClientProxy; @@ -177,6 +178,7 @@ public class BlockBasic extends Block if(!manageInventory(entityplayer, tileEntity)) { + PacketHandler.sendTileEntityPacketToClients(tileEntity, 0, tileEntity.getNetworkedData(new ArrayList())); entityplayer.openGui(Mekanism.instance, 18, world, x, y, z); } else { diff --git a/src/minecraft/mekanism/common/TileEntityBasicMachine.java b/src/minecraft/mekanism/common/TileEntityBasicMachine.java index 6d2f6451c..4fe91e701 100644 --- a/src/minecraft/mekanism/common/TileEntityBasicMachine.java +++ b/src/minecraft/mekanism/common/TileEntityBasicMachine.java @@ -377,4 +377,10 @@ public abstract class TileEntityBasicMachine extends TileEntityElectricBlock imp { return soundURL; } + + @Override + public float getVolumeMultiplier() + { + return 1; + } } diff --git a/src/minecraft/mekanism/common/TileEntityDynamicTank.java b/src/minecraft/mekanism/common/TileEntityDynamicTank.java index e7cd54b12..c83a7d868 100644 --- a/src/minecraft/mekanism/common/TileEntityDynamicTank.java +++ b/src/minecraft/mekanism/common/TileEntityDynamicTank.java @@ -2,9 +2,7 @@ package mekanism.common; import java.util.ArrayList; import java.util.HashMap; -import java.util.HashSet; import java.util.Map; -import java.util.Set; import mekanism.api.Object3D; import mekanism.common.SynchronizedTankData.ValveData; @@ -12,6 +10,7 @@ import net.minecraft.entity.player.EntityPlayer; import net.minecraft.item.Item; import net.minecraft.item.ItemStack; import net.minecraft.nbt.NBTTagCompound; +import net.minecraft.tileentity.TileEntity; import net.minecraft.util.AxisAlignedBB; import net.minecraftforge.common.ForgeDirection; import net.minecraftforge.liquids.LiquidContainerRegistry; @@ -98,6 +97,16 @@ public class TileEntityDynamicTank extends TileEntityContainerBlock if(!clientHasStructure || !isRendering) { + for(ValveData data : valveViewing.keySet()) + { + TileEntityDynamicTank tileEntity = (TileEntityDynamicTank)data.location.getTileEntity(worldObj); + + if(tileEntity != null) + { + tileEntity.clientHasStructure = false; + } + } + valveViewing.clear(); } } @@ -127,6 +136,12 @@ public class TileEntityDynamicTank extends TileEntityContainerBlock update(); } + if(structure != null && isRendering && packetTick % 20 == 0) + { + sendStructure = true; + PacketHandler.sendTileEntityPacketToClients(this, 0, getNetworkedData(new ArrayList())); + } + if(prevStructure != (structure != null)) { if(structure != null && !structure.hasRenderer) @@ -203,7 +218,7 @@ public class TileEntityDynamicTank extends TileEntityContainerBlock structure.liquidStored = null; } - PacketHandler.sendTileEntityPacketToClients(this, 50, getNetworkedData(new ArrayList())); + PacketHandler.sendTileEntityPacketToClients(this, 0, getNetworkedData(new ArrayList())); } } } @@ -262,7 +277,7 @@ public class TileEntityDynamicTank extends TileEntityContainerBlock } } - PacketHandler.sendTileEntityPacketToClients(this, 50, getNetworkedData(new ArrayList())); + PacketHandler.sendTileEntityPacketToClients(this, 0, getNetworkedData(new ArrayList())); } } } @@ -379,6 +394,13 @@ public class TileEntityDynamicTank extends TileEntityContainerBlock } valveViewing.put(data, viewingTicks); + + TileEntityDynamicTank tileEntity = (TileEntityDynamicTank)data.location.getTileEntity(worldObj); + + if(tileEntity != null) + { + tileEntity.clientHasStructure = true; + } } } } @@ -393,7 +415,7 @@ public class TileEntityDynamicTank extends TileEntityContainerBlock if(tileEntity != null && tileEntity.isRendering) { - PacketHandler.sendTileEntityPacketToClients(tileEntity, 50, tileEntity.getNetworkedData(new ArrayList())); + PacketHandler.sendTileEntityPacketToClients(tileEntity, 0, tileEntity.getNetworkedData(new ArrayList())); } } } diff --git a/src/minecraft/mekanism/common/TileEntityEnrichmentChamber.java b/src/minecraft/mekanism/common/TileEntityEnrichmentChamber.java index 19688d56c..310407820 100644 --- a/src/minecraft/mekanism/common/TileEntityEnrichmentChamber.java +++ b/src/minecraft/mekanism/common/TileEntityEnrichmentChamber.java @@ -16,4 +16,10 @@ public class TileEntityEnrichmentChamber extends TileEntityElectricMachine { return Recipe.ENRICHMENT_CHAMBER.get(); } + + @Override + public float getVolumeMultiplier() + { + return 0.3F; + } } diff --git a/src/minecraft/mekanism/common/TileEntityFactory.java b/src/minecraft/mekanism/common/TileEntityFactory.java index f102ebae9..383931de9 100644 --- a/src/minecraft/mekanism/common/TileEntityFactory.java +++ b/src/minecraft/mekanism/common/TileEntityFactory.java @@ -777,4 +777,10 @@ public class TileEntityFactory extends TileEntityElectricBlock implements IEnerg { return RecipeType.values()[recipeType].getSound(); } + + @Override + public float getVolumeMultiplier() + { + return 1; + } } diff --git a/src/minecraft/mekanism/common/TileEntityMetallurgicInfuser.java b/src/minecraft/mekanism/common/TileEntityMetallurgicInfuser.java index 5c2b8ee08..c7d7bcf84 100644 --- a/src/minecraft/mekanism/common/TileEntityMetallurgicInfuser.java +++ b/src/minecraft/mekanism/common/TileEntityMetallurgicInfuser.java @@ -650,4 +650,10 @@ public class TileEntityMetallurgicInfuser extends TileEntityElectricBlock implem { return "MetallurgicInfuser.ogg"; } + + @Override + public float getVolumeMultiplier() + { + return 1; + } } diff --git a/src/minecraft/mekanism/generators/client/GuiWindTurbine.java b/src/minecraft/mekanism/generators/client/GuiWindTurbine.java index e05d90546..784e89669 100644 --- a/src/minecraft/mekanism/generators/client/GuiWindTurbine.java +++ b/src/minecraft/mekanism/generators/client/GuiWindTurbine.java @@ -34,7 +34,7 @@ public class GuiWindTurbine extends GuiContainer fontRenderer.drawString(tileEntity.fullName, 45, 6, 0x404040); fontRenderer.drawString("Inventory", 8, (ySize - 96) + 2, 0x404040); fontRenderer.drawString(ElectricityDisplay.getDisplayShort(tileEntity.electricityStored, ElectricUnit.JOULES), 51, 26, 0x00CD00); - fontRenderer.drawString("Power: " + tileEntity.GENERATION_RATE*tileEntity.getMultiplier(), 51, 35, 0x00CD00); + fontRenderer.drawString("Power: " + tileEntity.GENERATION_RATE*tileEntity.getVolumeMultiplier(), 51, 35, 0x00CD00); fontRenderer.drawString(tileEntity.getVoltage() + "v", 51, 44, 0x00CD00); int size = 44; @@ -65,6 +65,6 @@ public class GuiWindTurbine extends GuiContainer displayInt = tileEntity.getScaledEnergyLevel(52); drawTexturedModalRect(guiWidth + 165, guiHeight + 17 + 52 - displayInt, 176, 52 - displayInt, 4, displayInt); - drawTexturedModalRect(guiWidth + 20, guiHeight + 37, 176, (tileEntity.getMultiplier() > 0 ? 52 : 64), 12, 12); + drawTexturedModalRect(guiWidth + 20, guiHeight + 37, 176, (tileEntity.getVolumeMultiplier() > 0 ? 52 : 64), 12, 12); } } diff --git a/src/minecraft/mekanism/generators/common/TileEntityGenerator.java b/src/minecraft/mekanism/generators/common/TileEntityGenerator.java index 2b7ed2dcf..cc698498d 100644 --- a/src/minecraft/mekanism/generators/common/TileEntityGenerator.java +++ b/src/minecraft/mekanism/generators/common/TileEntityGenerator.java @@ -77,10 +77,7 @@ public abstract class TileEntityGenerator extends TileEntityElectricBlock implem if(worldObj.isRemote) { - if(!(this instanceof TileEntitySolarGenerator)) - { - Mekanism.proxy.registerSound(this); - } + Mekanism.proxy.registerSound(this); } if(!worldObj.isRemote) @@ -349,6 +346,12 @@ public abstract class TileEntityGenerator extends TileEntityElectricBlock implem @Override public String getSoundPath() { - return fullName.replace(" ", "").replace("-","") + ".ogg"; + return fullName.replace(" ", "").replace("-","").replace("Advanced", "") + ".ogg"; + } + + @Override + public float getVolumeMultiplier() + { + return 1; } } diff --git a/src/minecraft/mekanism/generators/common/TileEntitySolarGenerator.java b/src/minecraft/mekanism/generators/common/TileEntitySolarGenerator.java index 2ba71d7a5..afa20a1ef 100644 --- a/src/minecraft/mekanism/generators/common/TileEntitySolarGenerator.java +++ b/src/minecraft/mekanism/generators/common/TileEntitySolarGenerator.java @@ -4,9 +4,11 @@ import ic2.api.item.IElectricItem; import java.util.ArrayList; +import mekanism.api.Object3D; import mekanism.common.ChargeUtils; import mekanism.generators.common.BlockGenerator.GeneratorType; import micdoodle8.mods.galacticraft.API.ISolarLevel; +import net.minecraft.block.Block; import net.minecraft.item.ItemStack; import net.minecraftforge.common.ForgeDirection; import universalelectricity.core.item.IItemElectric; @@ -43,6 +45,12 @@ public class TileEntitySolarGenerator extends TileEntityGenerator return new int[] {0}; } + @Override + public float getVolumeMultiplier() + { + return 0.05F; + } + @Override public int getSizeInventorySide(ForgeDirection side) { @@ -72,15 +80,29 @@ public class TileEntitySolarGenerator extends TileEntityGenerator seesSun = false; } - if(worldObj.getBlockId(xCoord, yCoord+1, zCoord) == MekanismGenerators.generatorID && worldObj.getBlockMetadata(xCoord, yCoord+1, zCoord) == GeneratorType.SOLAR_GENERATOR.meta) + for(int y = yCoord+1; y < 256; y++) { - seesSun = false; + Object3D obj = new Object3D(xCoord, y, zCoord); + Block block = Block.blocksList[obj.getBlockId(worldObj)]; + + if(block != null) + { + if(block.isOpaqueCube() || block.blockID == MekanismGenerators.generatorID && obj.getMetadata(worldObj) == GeneratorType.SOLAR_GENERATOR.meta) + { + seesSun = false; + break; + } + } + } + + if(canOperate()) + { + setActive(true); + setEnergy(electricityStored + getEnvironmentBoost()); + } + else { + setActive(false); } - } - - if(canOperate()) - { - setEnergy(electricityStored + getEnvironmentBoost()); } } diff --git a/src/minecraft/mekanism/generators/common/TileEntityWindTurbine.java b/src/minecraft/mekanism/generators/common/TileEntityWindTurbine.java index 4b636739e..9e688b7f0 100644 --- a/src/minecraft/mekanism/generators/common/TileEntityWindTurbine.java +++ b/src/minecraft/mekanism/generators/common/TileEntityWindTurbine.java @@ -47,6 +47,12 @@ public class TileEntityWindTurbine extends TileEntityGenerator implements IBound { return worldObj.canBlockSeeTheSky(xCoord, yCoord+4, zCoord) ? (((float)yCoord+4)/(float)256)*8 : 0; } + + @Override + public float getVolumeMultiplier() + { + return 1.5F; + } @Override public String[] getMethodNames()