diff --git a/README.md b/README.md index 2506c1a64..54734a685 100644 --- a/README.md +++ b/README.md @@ -94,6 +94,18 @@ If you want to make some changes to the mod, follow this guide: ## Compatibility notice NTM has certain behaviors intended to fix vanilla code or to increase compatibility in certain cases where it otherwise would not be possible. These behaviors have the potential of not playing well with other mods, and while no such cases are currently known, here's a list of them. +### Thermos +Thermos servers (along with its forks such as Crucible) have a "performance" feature that causes all tile entity ticking to slow down if there's no player present in the same chunk. For obvious reasons, this will heavily impact machines and cause phantom issues that, not having knowledge of this "performance" feature, are near impossible to diagnose. By default, NTM will crash on servers running the Thermos base code and print a lengthy message informing server owners about this "performance" feature as well as how to fix the issues it causes. The error message is printed in plain English on the top of the crash log, failure to read (as well as understand) it will leave the server inoperable. + +### Optifine +One of the most common "performance" mods on 1.7.10, Optifine, achieves an increase in performance by breaking small things in spots that are usually hard to notice, although this can cause severe issues with NTM. A short list of problems, along with some solutions, follows: +* Get rid of Optifine and use one of the many [other, less intrusive performance mods](https://gist.github.com/makamys/7cb74cd71d93a4332d2891db2624e17c). +* Blocks with connected textures may become invisible. This can be fixed by toggling triangulation (I do not know what or where this setting is, I just have been told that it exists and that it can fix the problem) or multicore chunk rendering (same here). +* Entity "optimization" has a tendency to break chunkloading, this is especially noticeable with missiles which rely heavily on chunkloading to work, causing them to freeze mid-air. It's unclear what setting might fix this, and analysis of Optifine's source code (or rather, lack thereof) has not proven useful either. + +### Angelica +In older versions, Angelica caused issues regarding model rendering, often times making 3D models transparent. Ever since the switch to VBOs, models work fine. Another issue was blocks with connected textures not rendering at all, but this too was fixed, meaning as of time of writing there are no major incompatibilities known with Angelica. + ### Skybox chainloader NTM adds a few small things to the skybox using a custom skybox renderer. Minecraft can only have a single skybox renderer loaded, so setting the skybox to the NTM custom one would break compatibility with other mods' skyboxes. To mend this, NTM employs a **chainloader**. This chainloader will detect if a different skybox is loaded, save a reference to that skybox and then use NTM's skybox, which when used will also make sure to run the previous modded skybox renderer. In the event that NTM's skybox were to cause trouble, it can be disabled with the config option `1.31_enableSkyboxes`. @@ -106,5 +118,14 @@ An often overlooked aspect of Minecraft is its stats, the game keeps track of ho ### Keybind overlap An often annoying aspect of modded Minecraft is its keybinds. Even though multiple binds can be assigned the same key, all but one will show up as "conflicting" and only the non-conflicting one will work. Which one this is is usually arbitrary, and there is no reason to have such limitation. Often times keybinds are only applicable in certain scenarios, and a commonly found degree of overlap is within reason. Therefore, NTM will run its own key handling code which allows conflicting keybinds to work. If there should be any issues with this behavior, it can be disabled with the config option `1.34_enableKeybindOverlap`. +### Render distance capping +There is a common crash caused by Minecraft's render distance slider going out of bounds, this usually happens when uninstalling a mod that extends the render distance (like Optifine) or when downgrading the Minecraft version (newer versions have higher render distance caps). To prevent crashes, the mod will attempt to decrease the render distance if it's above 16 unless Optifine is installed. If this behavior is not desired (for example, because another mod that allows higher render distance is being used), it can be disabled with the config option `1.25_enableRenderDistCheck`. + +### Log spam caused by ComparableStack +In some modpacks (exact mods needed to replicate this are unknown), it's possible that invalid registered items may cause problems for NEI handlers. To prevent crashes, the ComparableStack class used to represent stacks will default to a safe registered item, and print a log message. In certain situations, this may cause dozens of errors to be printed at once, potentially even lagging the game. If that happens, the log message (but not the error handling) can be disabled with the config option `1.28_enableSilentCompStackErrors`. + +### Sound system limit +By default, the sound system only allows a limited amount of sounds to run at once (28 regular sounds and 4 streaming sounds), this causes issues when there's many machines running at once, since their looped sounds will constantly interrupt each other, causing them to immediately restart, which in some isolated cases has proven to cause massive lagspikes. To prevent this, NTM will increase the sound limit to 1000 regular sounds and 50 streaming sounds, this can be disabled with the config option `1.39_enableSoundExtension`. + # License This software is licensed under the GNU Lesser General Public License version 3. In short: This software is free, you may run the software freely, create modified versions, distribute this software and distribute modified versions, as long as the modified software too has a free software license (with an exception for linking to this software, as stated by the "Lesser" part of the LGPL, where this may not be required). You win this round, Stallman. The full license can be found in the `LICENSE` and `LICENSE.LESSER` files. diff --git a/changelog b/changelog index db178b44d..324262095 100644 --- a/changelog +++ b/changelog @@ -1,32 +1,13 @@ ## Added -* PWR Heatsink - * Increases the core heat capacity by 5% per block - * Makes cooling channels and heat exchangers slightly less effective (each heatsink counts as one quarter of a fuel rod in the heat calculation) +* Bismuth bronze and arsenic bronze + * Kind of self-explanatory + * Can be made into anvils, allows for an alternative that doesn't involve 10 entire ingots of bismuth for a single anvil ## Changed -* All launch pad blocks can now accept items, not just ports -* Removed the old watz pellets and titanium filter -* Removed copper panels, cast copper plates now take its place in most use-cases -* Removed generator bodies and rotors, recipes use 6 dense gold wires per generator instead -* Removed reinforced turbine shafts, most turbines now use HSS pipes instead -* Removed the steam batteries (why did we even have those?) -* Removed some old remap items (from back when the ZIRNOX rods got remapped) -* Large and small shells have been merged into a single item which uses material autogen - * A copper variant for shells has been added which is used for artillery shells - * Shells are now only directly craftable via anvil, however they can be cast using the crucible as well -* Most instances of the expensive steel pipes as well as the decorative pipes which need tons of microcrafting have been replaced with a new pipe item - * The new pipes also use autogen, being available in different materials - * Some of the recipes that used the small shells now use pipes instead -* Tenfolded the throughout of powered condensers -* Regular and combo filters now work for blistering agents (like mustard gas or air pollution) -* Wires now render two faces instead of one, making them appear equally thick from any viewed angle -* Slag taps can now be toggled and filtered -* Foundry channels now have twice the throughput (2 ingots) -* RBMK ReaSim and steam connectors now have tooltips explaining how they work, as there is no other ingame documentation on them +* Arsenic is now made from only 16 oils scrap (instead of 256) in an ore acidizer using high-performance solvent (instead of chemical plant using sulfuric acid) +* Meteorite and starmetal anvils have been replaced with desh and saturnite ones ## Fixed -* Fixed crash caused by invalid default loot pool configuration -* Fixed enchantment glint not rendering on upscaled items like certain swords or tier 2 pickaxes -* Fixed wire connections becoming invisible when pointing straight down, wires should now rotate correctly -* Fixed connection issue allowing channels to output into slag taps sideways -* Fixed the strand caster sometimes voiding small amounts of material +* Limited assembler input to up to 10 attempts per ingredient, fixing a rare issue where the assembler freezes the server when pulling items +* Fixed fallout effects not loading chunks +* Fixed RBMK steam channel recycling recipe \ No newline at end of file diff --git a/gradle.properties b/gradle.properties index 305737cdc..8892f2442 100644 --- a/gradle.properties +++ b/gradle.properties @@ -1,21 +1,48 @@ mod_version=1.0.27 # Empty build number makes a release type -mod_build_number=4921 +mod_build_number=4939 -credits=HbMinecraft, rodolphito (explosion algorithms), grangerave (explosion algorithms),\ - \ Hoboy (textures, models), Doctor17 (russian localization), Drillgon200 (effects, models,\ - \ porting), UFFR (RTGs, guns, casings, euphemium capacitor), Pu-238 (Tom impact effects), Bismarck\ - \ (chinese localization), Frooz (models), Minecreep (models), VT-6/24 (models, textures), Pheo (textures,\ - \ various machines, models, weapons), Vr (gas centrifuges, better worldgen, ZIRNOX, CP-1 parts, starter guide),\ - \ Adam29 (liquid petroleum, ethanol, electric furnace), Pashtet (russian localization), MartinTheDragon\ - \ (calculator, chunk-based fallout, bendable cranes, pipe improvements), haru315 (spiral point algorithm),\ - \ Sten89 (models), Pixelguru26 (textures), TheBlueHat (textures), Alcater (GUI textures, porting), impbk2002\ - \ (project settings), Nos (models), Burningwater202 (laminate glass), OvermindDL1 (project settings), TehTemmie\ - \ (reacher radiation function), Toshayo (satellite loot system, project settings, gradle curse task), Silly541\ - \ (config for safe ME drives), Voxelstice (OpenComputers integration, turbine spinup), BallOfEnergy1\ - \ (OpenComputers integration), martemen (project settings), Pvndols (thorium fuel recipe, gas turbine),\ - \ JamesH2 (blood mechanics, nitric acid, particle emitter), sdddddf80 (recipe configs, chinese localization,\ - \ custom machine holograms, I18n improvements), SuperCraftAlex (tooltips) LePeep (coilgun model, BDCL QC),\ - \ 70k (textures, glyphid AI, strand caster), Maksymisio (polish localization) Ice-Arrow (research reactor tweaks),\ - \ 245tt (anvil GUI improvements), MellowArpeggiation (new animation system, turbine sounds, sound fixes,\ - \ industrial lights, better particle diodes), FOlkvangrField (custom machine parts) +credits=HbMinecraft,\ + \ rodolphito (explosion algorithms),\ + \ grangerave (explosion algorithms),\ + \ Hoboy (textures, models),\ + \ Drillgon200 (effects, models, porting),\ + \ MartinTheDragon (calculator, chunk-based fallout, bendable cranes, pipe improvements, PWR sounds),\ + \ Alcater (GUI textures, porting),\ + \ MellowArpeggiation (new animation system, turbine sounds, sound fixes, industrial lights, better particle diodes),\ + \ Pheo (textures, various machines, models, weapons),\ + \ Vr (gas centrifuges, better worldgen, ZIRNOX, CP-1 parts, starter guide),\ + \ LePeep (coilgun model, BDCL QC),\ + \ Adam29 (liquid petroleum, ethanol, electric furnace),\ + \ Pvndols (thorium fuel recipe, gas turbine),\ + \ JamesH2 (blood mechanics, nitric acid, particle emitter),\ + \ Doctor17 (russian localization)),\ + \ Pashtet (russian localization),\ + \ Bismarck (chinese localization),\ + \ Maksymisio (polish localization)\ + \ Pu-238 (Tom impact effects),\ + \ UFFR (RTGs, guns, casings, euphemium capacitor),\ + \ Frooz (models),\ + \ VT-6/24 (models, textures),\ + \ Nos (models),\ + \ Minecreep (models),\ + \ 70k (textures, glyphid AI, strand caster),\ + \ haru315 (spiral point algorithm),\ + \ Sten89 (models),\ + \ Pixelguru26 (textures),\ + \ TheBlueHat (textures),\ + \ Burningwater202 (laminate glass),\ + \ TehTemmie (reacher radiation function),\ + \ Silly541 (config for safe ME drives),\ + \ Voxelstice (OpenComputers integration, turbine spinup),\ + \ BallOfEnergy1 (OpenComputers integration),\ + \ martemen (project settings),\ + \ sdddddf80 (recipe configs, chinese localization, custom machine holograms),\ + \ SuperCraftAlex (tooltips)\ + \ Ice-Arrow (research reactor tweaks),\ + \ 245tt (anvil GUI improvements),\ + \ KoblizekXD (doors),\ + \ FOlkvangrField (custom machine parts),\ + \ Toshayo (satellite loot system, project settings, gradle curse task),\ + \ OvermindDL1 (project settings),\ + \ impbk2002 (project settings),\ diff --git a/src/main/java/api/hbm/energy/IEnergyConductor.java b/src/main/java/api/hbm/energy/IEnergyConductor.java deleted file mode 100644 index e6195acb8..000000000 --- a/src/main/java/api/hbm/energy/IEnergyConductor.java +++ /dev/null @@ -1,160 +0,0 @@ -package api.hbm.energy; - -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; - -import net.minecraft.tileentity.TileEntity; -import net.minecraftforge.common.util.ForgeDirection; - -/** - * For compatible cables with no buffer, using the IPowertNet. You can make your own cables with IEnergyConnector as well, but they won't join their power network. - * @author hbm - */ -public interface IEnergyConductor extends IEnergyConnector { - - public IPowerNet getPowerNet(); - - public void setPowerNet(IPowerNet network); - - /** - * A unique identifier for every conductor tile. Used to prevent duplicates when loading previously persistent unloaded tiles. - * @return - */ - public default int getIdentity() { - return getIdentityFromTile((TileEntity) this); - } - - public static int getIdentityFromTile(TileEntity te) { - return getIdentityFromPos(te.xCoord, te.yCoord, te.zCoord); - } - - public static int getIdentityFromPos(int x, int y, int z) { - final int prime = 27644437; // must be this large to minimize localized collisions - int result = 1; - result = prime * result + x; - result = prime * result + y; - result = prime * result + z; - return result; - } - - /** - * Whether the link should be part of reeval when the network is changed. - * I.e. if this link should join any of the new networks (FALSE for switches that are turned off for example) - * @return - */ - public default boolean canReevaluate() { - return !((TileEntity) this).isInvalid(); - } - - /** - * When a link leaves the network, the net has to manually calculate the resulting networks. - * Each link has to decide what other links will join the same net. - * @param copy - */ - public default void reevaluate(HashMap copy, HashMap proxies) { - - for(int[] pos : getConnectionPoints()) { - int newX = pos[0]; - int newY = pos[1]; - int newZ = pos[2]; - int id = IEnergyConductor.getIdentityFromPos(newX, newY, newZ); - - IEnergyConductor neighbor = copy.get(id); - - if(neighbor == null) { - Integer newId = proxies.get(id); - - if(newId != null) { - neighbor = copy.get(newId); - } - } - - if(neighbor != null && this.canReevaluate() && neighbor.canReevaluate()) { - - if(neighbor.getPowerNet() != null) { - - //neighbor net and no self net - if(this.getPowerNet() == null) { - neighbor.getPowerNet().joinLink(this); - //neighbor net and self net - } else { - this.getPowerNet().joinNetworks(neighbor.getPowerNet()); - } - - //bidirectional re-eval, experimental and technically optional, only useful as a fallback - } /*else { - - //no neighbor net and no self net - if(this.getPowerNet() == null) { - this.setPowerNet(new PowerNet().joinLink(this)); - neighbor.setPowerNet(this.getPowerNet().joinLink(neighbor)); - //no neighbor net and self net - } else { - neighbor.setPowerNet(this.getPowerNet().joinLink(neighbor)); - } - }*/ - - //extensive debugging has shown that bidirectional re-eval is complete shit - } - } - } - - /** - * Creates a list of positions for the re-eval process. In short - what positions should be considered as connected. - * Also used by pylons to quickly figure out what positions to connect to. - * DEFAULT: Connects to all six neighboring blocks. - * @return - */ - public default List getConnectionPoints() { - - List pos = new ArrayList(); - TileEntity tile = (TileEntity) this; - - for(ForgeDirection dir : ForgeDirection.VALID_DIRECTIONS) { - int newX = tile.xCoord + dir.offsetX; - int newY = tile.yCoord + dir.offsetY; - int newZ = tile.zCoord + dir.offsetZ; - - pos.add(new int[] {newX, newY, newZ}); - } - - return pos; - } - - /** - * Since isLoaded is only currently used for weeding out unwanted subscribers, and cables shouldn't (although technically can) be - * subscribers, we just default to true because I don't feel like wasting time implementing things that we don't actually need. - * Perhaps this indicates a minor flaw in the new API, but I physically lack the ability to worry about it. - */ - @Override - public default boolean isLoaded() { - return true; - } - - //TODO: check if this standard implementation doesn't break anything (it shouldn't but right now it's a bit redundant) also: remove duplicate implementations - @Override - public default long transferPower(long power) { - - if(this.getPowerNet() == null) - return power; - - return this.getPowerNet().transferPower(power); - } - - /** - * Returns whether the conductor has mutliblock proxies which need to be taken into consideration for re-eval. - * @return - */ - public default boolean hasProxies() { - return false; - } - - /** - * Returns the identities (position-based) of proxies which resolve into the conductor's own identity. - * @return - */ - public default List getProxies() { - return new ArrayList(); - } -} diff --git a/src/main/java/api/hbm/energy/IEnergyConnector.java b/src/main/java/api/hbm/energy/IEnergyConnector.java deleted file mode 100644 index 311a09ff8..000000000 --- a/src/main/java/api/hbm/energy/IEnergyConnector.java +++ /dev/null @@ -1,128 +0,0 @@ -package api.hbm.energy; - -import com.hbm.packet.AuxParticlePacketNT; -import com.hbm.packet.PacketDispatcher; -import com.hbm.util.CompatEnergyControl; - -import cpw.mods.fml.common.network.NetworkRegistry.TargetPoint; -import net.minecraft.nbt.NBTTagCompound; -import net.minecraft.tileentity.TileEntity; -import net.minecraft.util.Vec3; -import net.minecraft.world.World; -import net.minecraftforge.common.util.ForgeDirection; - -/** - * For anything that connects to power and can be transferred power to, the bottom-level interface. - * This is mean for TILE ENTITIES - * @author hbm - */ -public interface IEnergyConnector extends ILoadedTile { - - /** - * Returns the amount of power that remains in the source after transfer - * @param power - * @return - */ - public long transferPower(long power); - - /** - * Whether the given side can be connected to - * dir refers to the side of this block, not the connecting block doing the check - * @param dir - * @return - */ - public default boolean canConnect(ForgeDirection dir) { - return dir != ForgeDirection.UNKNOWN; - } - - /** - * The current power of either the machine or an entire network - * @return - */ - public long getPower(); - - /** - * The capacity of either the machine or an entire network - * @return - */ - public long getMaxPower(); - - public default long getTransferWeight() { - return Math.max(getMaxPower() - getPower(), 0); - } - - /** - * Basic implementation of subscribing to a nearby power grid - * @param world - * @param x - * @param y - * @param z - */ - public default void trySubscribe(World world, int x, int y, int z, ForgeDirection dir) { - - TileEntity te = world.getTileEntity(x, y, z); - boolean red = false; - - if(te instanceof IEnergyConductor) { - IEnergyConductor con = (IEnergyConductor) te; - - if(!con.canConnect(dir.getOpposite())) - return; - - if(con.getPowerNet() != null && !con.getPowerNet().isSubscribed(this)) - con.getPowerNet().subscribe(this); - - if(con.getPowerNet() != null) - red = true; - } - - if(particleDebug) { - NBTTagCompound data = new NBTTagCompound(); - data.setString("type", "network"); - data.setString("mode", "power"); - double posX = x + 0.5 + dir.offsetX * 0.5 + world.rand.nextDouble() * 0.5 - 0.25; - double posY = y + 0.5 + dir.offsetY * 0.5 + world.rand.nextDouble() * 0.5 - 0.25; - double posZ = z + 0.5 + dir.offsetZ * 0.5 + world.rand.nextDouble() * 0.5 - 0.25; - data.setDouble("mX", -dir.offsetX * (red ? 0.025 : 0.1)); - data.setDouble("mY", -dir.offsetY * (red ? 0.025 : 0.1)); - data.setDouble("mZ", -dir.offsetZ * (red ? 0.025 : 0.1)); - PacketDispatcher.wrapper.sendToAllAround(new AuxParticlePacketNT(data, posX, posY, posZ), new TargetPoint(world.provider.dimensionId, posX, posY, posZ, 25)); - } - } - - public default void tryUnsubscribe(World world, int x, int y, int z) { - - TileEntity te = world.getTileEntity(x, y, z); - - if(te instanceof IEnergyConductor) { - IEnergyConductor con = (IEnergyConductor) te; - - if(con.getPowerNet() != null && con.getPowerNet().isSubscribed(this)) - con.getPowerNet().unsubscribe(this); - } - } - - public static final boolean particleDebug = false; - - public default Vec3 getDebugParticlePos() { - TileEntity te = (TileEntity) this; - Vec3 vec = Vec3.createVectorHelper(te.xCoord + 0.5, te.yCoord + 1, te.zCoord + 0.5); - return vec; - } - - /** Shortcut for adding energy data to tiles that implement IInfoProviderEC, should NOT be used externally for compat! Use IInfoProviderEC.provideInfo() instead! */ - public default void provideInfoForEC(NBTTagCompound data) { - data.setLong(CompatEnergyControl.L_ENERGY_HE, this.getPower()); - data.setLong(CompatEnergyControl.L_CAPACITY_HE, this.getMaxPower()); - } - - public default ConnectionPriority getPriority() { - return ConnectionPriority.NORMAL; - } - - public enum ConnectionPriority { - LOW, - NORMAL, - HIGH - } -} diff --git a/src/main/java/api/hbm/energy/IEnergyGenerator.java b/src/main/java/api/hbm/energy/IEnergyGenerator.java deleted file mode 100644 index 37db6370d..000000000 --- a/src/main/java/api/hbm/energy/IEnergyGenerator.java +++ /dev/null @@ -1,19 +0,0 @@ -package api.hbm.energy; - -public interface IEnergyGenerator extends IEnergyUser { - - /** - * Standard implementation for machines that can only send energy but never receive it. - * @param power - */ - @Override - public default long transferPower(long power) { - return power; - } - - /* should stop making non-receivers from interfering by applying their weight which doesn't even matter */ - @Override - public default long getTransferWeight() { - return 0; - } -} diff --git a/src/main/java/api/hbm/energy/IEnergyUser.java b/src/main/java/api/hbm/energy/IEnergyUser.java deleted file mode 100644 index 4ca8e369a..000000000 --- a/src/main/java/api/hbm/energy/IEnergyUser.java +++ /dev/null @@ -1,114 +0,0 @@ -package api.hbm.energy; - -import com.hbm.packet.AuxParticlePacketNT; -import com.hbm.packet.PacketDispatcher; - -import cpw.mods.fml.common.network.NetworkRegistry.TargetPoint; -import net.minecraft.nbt.NBTTagCompound; -import net.minecraft.tileentity.TileEntity; -import net.minecraft.world.World; -import net.minecraftforge.common.util.ForgeDirection; - -/** - * For machines and things that have an energy buffer and are affected by EMPs - * @author hbm - */ -public interface IEnergyUser extends IEnergyConnector { - - /** - * Not to be used for actual energy transfer, rather special external things like EMPs and sync packets - */ - public void setPower(long power); - - /** - * Standard implementation for power transfer. - * Turns out you can override interfaces to provide a default implementation. Neat. - * @param long power - */ - @Override - public default long transferPower(long power) { - - if(this.getPower() + power > this.getMaxPower()) { - - long overshoot = this.getPower() + power - this.getMaxPower(); - this.setPower(this.getMaxPower()); - return overshoot; - } - - if(this.getPower() + power < 0) return 0; //safeguard for negative energy or overflows - - this.setPower(this.getPower() + power); - - return 0; - } - - /** - * Standard implementation of sending power - * @param world - * @param x - * @param y - * @param z - * @param dir - */ - public default void sendPower(World world, int x, int y, int z, ForgeDirection dir) { - - TileEntity te = world.getTileEntity(x, y, z); - boolean wasSubscribed = false; - boolean red = false; - - // first we make sure we're not subscribed to the network that we'll be supplying - if(te instanceof IEnergyConductor) { - IEnergyConductor con = (IEnergyConductor) te; - - if(con.canConnect(dir.getOpposite()) && con.getPowerNet() != null && con.getPowerNet().isSubscribed(this)) { - con.getPowerNet().unsubscribe(this); - wasSubscribed = true; - } - } - - //then we add energy - if(te instanceof IEnergyConnector) { - IEnergyConnector con = (IEnergyConnector) te; - - if(con.canConnect(dir.getOpposite())) { - long oldPower = this.getPower(); - long transfer = oldPower - con.transferPower(oldPower); - this.setPower(oldPower - transfer); - red = true; - } - } - - //then we subscribe if possible - if(wasSubscribed && te instanceof IEnergyConductor) { - IEnergyConductor con = (IEnergyConductor) te; - - if(con.getPowerNet() != null && !con.getPowerNet().isSubscribed(this)) { - con.getPowerNet().subscribe(this); - } - } - - if(particleDebug) { - NBTTagCompound data = new NBTTagCompound(); - data.setString("type", "network"); - data.setString("mode", "power"); - double posX = x + 0.5 - dir.offsetX * 0.5 + world.rand.nextDouble() * 0.5 - 0.25; - double posY = y + 0.5 - dir.offsetY * 0.5 + world.rand.nextDouble() * 0.5 - 0.25; - double posZ = z + 0.5 - dir.offsetZ * 0.5 + world.rand.nextDouble() * 0.5 - 0.25; - data.setDouble("mX", dir.offsetX * (red ? 0.025 : 0.1)); - data.setDouble("mY", dir.offsetY * (red ? 0.025 : 0.1)); - data.setDouble("mZ", dir.offsetZ * (red ? 0.025 : 0.1)); - PacketDispatcher.wrapper.sendToAllAround(new AuxParticlePacketNT(data, posX, posY, posZ), new TargetPoint(world.provider.dimensionId, posX, posY, posZ, 25)); - } - } - - public default void updateStandardConnections(World world, TileEntity te) { - updateStandardConnections(world, te.xCoord, te.yCoord, te.zCoord); - } - - public default void updateStandardConnections(World world, int x, int y, int z) { - - for(ForgeDirection dir : ForgeDirection.VALID_DIRECTIONS) { - this.trySubscribe(world, x + dir.offsetX, y + dir.offsetY, z + dir.offsetZ, dir); - } - } -} diff --git a/src/main/java/api/hbm/energy/IPowerNet.java b/src/main/java/api/hbm/energy/IPowerNet.java deleted file mode 100644 index eb9848226..000000000 --- a/src/main/java/api/hbm/energy/IPowerNet.java +++ /dev/null @@ -1,37 +0,0 @@ -package api.hbm.energy; - -import java.math.BigInteger; -import java.util.List; - -/** - * Not mandatory to use, but making your cables IPowerNet-compliant will allow them to connect to NTM cables. - * Cables will still work without it as long as they implement IEnergyConductor (or even IEnergyConnector) + self-built network code - * @author hbm - */ -public interface IPowerNet { - - public void joinNetworks(IPowerNet network); - - public IPowerNet joinLink(IEnergyConductor conductor); - public void leaveLink(IEnergyConductor conductor); - - public void subscribe(IEnergyConnector connector); - public void unsubscribe(IEnergyConnector connector); - public boolean isSubscribed(IEnergyConnector connector); - - public void destroy(); - - /** - * When a link is removed, instead of destroying the network, causing it to be recreated from currently loaded conductors, - * we re-evaluate it, creating new nets based on the previous links. - */ - public void reevaluate(); - - public boolean isValid(); - - public List getLinks(); - public List getSubscribers(); - - public long transferPower(long power); - public BigInteger getTotalTransfer(); -} diff --git a/src/main/java/api/hbm/energy/PowerNet.java b/src/main/java/api/hbm/energy/PowerNet.java deleted file mode 100644 index 6d55c2f0c..000000000 --- a/src/main/java/api/hbm/energy/PowerNet.java +++ /dev/null @@ -1,257 +0,0 @@ -package api.hbm.energy; - -import java.math.BigInteger; -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; - -import com.hbm.config.GeneralConfig; - -import api.hbm.energy.IEnergyConnector.ConnectionPriority; -import net.minecraft.tileentity.TileEntity; - -/** - * Basic IPowerNet implementation. The behavior of this demo might change inbetween releases, but the API remains the same. - * For more consistency please implement your own IPowerNet. - * @author hbm - */ -public class PowerNet implements IPowerNet { - - private boolean valid = true; - private HashMap links = new HashMap(); - private HashMap proxies = new HashMap(); - private List subscribers = new ArrayList(); - - public static List trackingInstances = null; - protected BigInteger totalTransfer = BigInteger.ZERO; - - @Override - public void joinNetworks(IPowerNet network) { - - if(network == this) - return; //wtf?! - - for(IEnergyConductor conductor : network.getLinks()) { - joinLink(conductor); - } - network.getLinks().clear(); - - for(IEnergyConnector connector : network.getSubscribers()) { - this.subscribe(connector); - } - - network.destroy(); - } - - @Override - public IPowerNet joinLink(IEnergyConductor conductor) { - - if(conductor.getPowerNet() != null) - conductor.getPowerNet().leaveLink(conductor); - - conductor.setPowerNet(this); - int identity = conductor.getIdentity(); - this.links.put(identity, conductor); - - if(conductor.hasProxies()) { - for(Integer i : conductor.getProxies()) { - this.proxies.put(i, identity); - } - } - - return this; - } - - @Override - public void leaveLink(IEnergyConductor conductor) { - conductor.setPowerNet(null); - int identity = conductor.getIdentity(); - this.links.remove(identity); - - if(conductor.hasProxies()) { - for(Integer i : conductor.getProxies()) { - this.proxies.remove(i); - } - } - } - - @Override - public void subscribe(IEnergyConnector connector) { - this.subscribers.add(connector); - } - - @Override - public void unsubscribe(IEnergyConnector connector) { - this.subscribers.remove(connector); - } - - @Override - public boolean isSubscribed(IEnergyConnector connector) { - return this.subscribers.contains(connector); - } - - @Override - public List getLinks() { - List linkList = new ArrayList(); - linkList.addAll(this.links.values()); - return linkList; - } - - public HashMap getProxies() { - HashMap proxyCopy = new HashMap(proxies); - return proxyCopy; - } - - @Override - public List getSubscribers() { - return this.subscribers; - } - - @Override - public void destroy() { - this.valid = false; - this.subscribers.clear(); - - for(IEnergyConductor link : this.links.values()) { - link.setPowerNet(null); - } - - this.links.clear(); - } - - @Override - public boolean isValid() { - return this.valid; - } - - @Override - public BigInteger getTotalTransfer() { - return this.totalTransfer; - } - - public long lastCleanup = System.currentTimeMillis(); - - @Override - public long transferPower(long power) { - - /*if(lastCleanup + 45 < System.currentTimeMillis()) { - cleanup(this.subscribers); - lastCleanup = System.currentTimeMillis(); - }*/ - - List cache = new ArrayList(); - if(trackingInstances != null && !trackingInstances.isEmpty()) { - cache.addAll(trackingInstances); - } - - trackingInstances = new ArrayList(); - trackingInstances.add(this); - long result = fairTransfer(this.subscribers, power); - trackingInstances.addAll(cache); - return result; - } - - public static void cleanup(List subscribers) { - - subscribers.removeIf(x -> - x == null || !(x instanceof TileEntity) || ((TileEntity)x).isInvalid() || !x.isLoaded() - ); - } - - public static long fairTransfer(List subscribers, long power) { - - if(power <= 0) return 0; - - if(subscribers.isEmpty()) - return power; - - cleanup(subscribers); - - ConnectionPriority[] priorities = new ConnectionPriority[] {ConnectionPriority.HIGH, ConnectionPriority.NORMAL, ConnectionPriority.LOW}; - - long totalTransfer = 0; - - for(ConnectionPriority p : priorities) { - - List subList = new ArrayList(); - subscribers.forEach(x -> { - if(x.getPriority() == p) { - subList.add(x); - } - }); - - if(subList.isEmpty()) - continue; - - List weight = new ArrayList(); - long totalReq = 0; - - for(IEnergyConnector con : subList) { - long req = con.getTransferWeight(); - weight.add(req); - totalReq += req; - } - - if(totalReq == 0) - continue; - - long totalGiven = 0; - - for(int i = 0; i < subList.size(); i++) { - IEnergyConnector con = subList.get(i); - long req = weight.get(i); - double fraction = (double)req / (double)totalReq; - - long given = (long) Math.floor(fraction * power); - - totalGiven += (given - con.transferPower(given)); - - if(con instanceof TileEntity) { - TileEntity tile = (TileEntity) con; - tile.getWorldObj().markTileEntityChunkModified(tile.xCoord, tile.yCoord, tile.zCoord, tile); - } - } - - power -= totalGiven; - totalTransfer += totalGiven; - } - - if(trackingInstances != null) { - - for(int i = 0; i < trackingInstances.size(); i++) { - PowerNet net = trackingInstances.get(i); - net.totalTransfer = net.totalTransfer.add(BigInteger.valueOf(totalTransfer)); - } - - trackingInstances.clear(); - } - - return power; - } - - @Override - public void reevaluate() { - - if(!GeneralConfig.enableReEval) { - this.destroy(); - return; - } - - HashMap copy = new HashMap(links); - HashMap proxyCopy = new HashMap(proxies); - - for(IEnergyConductor link : copy.values()) { - this.leaveLink(link); - } - - for(IEnergyConductor link : copy.values()) { - - link.setPowerNet(null); - link.reevaluate(copy, proxyCopy); - - if(link.getPowerNet() == null) { - link.setPowerNet(new PowerNet().joinLink(link)); - } - } - } -} diff --git a/src/main/java/api/hbm/energy/IBatteryItem.java b/src/main/java/api/hbm/energymk2/IBatteryItem.java similarity index 98% rename from src/main/java/api/hbm/energy/IBatteryItem.java rename to src/main/java/api/hbm/energymk2/IBatteryItem.java index 827f88a8e..19202cfa1 100644 --- a/src/main/java/api/hbm/energy/IBatteryItem.java +++ b/src/main/java/api/hbm/energymk2/IBatteryItem.java @@ -1,4 +1,4 @@ -package api.hbm.energy; +package api.hbm.energymk2; import net.minecraft.item.Item; import net.minecraft.item.ItemStack; diff --git a/src/main/java/api/hbm/energymk2/IEnergyConductorMK2.java b/src/main/java/api/hbm/energymk2/IEnergyConductorMK2.java new file mode 100644 index 000000000..96a90bcfd --- /dev/null +++ b/src/main/java/api/hbm/energymk2/IEnergyConductorMK2.java @@ -0,0 +1,23 @@ +package api.hbm.energymk2; + +import com.hbm.lib.Library; +import com.hbm.util.fauxpointtwelve.BlockPos; +import com.hbm.util.fauxpointtwelve.DirPos; + +import api.hbm.energymk2.Nodespace.PowerNode; +import net.minecraft.tileentity.TileEntity; + +public interface IEnergyConductorMK2 extends IEnergyConnectorMK2 { + + public default PowerNode createNode() { + TileEntity tile = (TileEntity) this; + return new PowerNode(new BlockPos(tile.xCoord, tile.yCoord, tile.zCoord)).setConnections( + new DirPos(tile.xCoord + 1, tile.yCoord, tile.zCoord, Library.POS_X), + new DirPos(tile.xCoord - 1, tile.yCoord, tile.zCoord, Library.NEG_X), + new DirPos(tile.xCoord, tile.yCoord + 1, tile.zCoord, Library.POS_Y), + new DirPos(tile.xCoord, tile.yCoord - 1, tile.zCoord, Library.NEG_Y), + new DirPos(tile.xCoord, tile.yCoord, tile.zCoord + 1, Library.POS_Z), + new DirPos(tile.xCoord, tile.yCoord, tile.zCoord - 1, Library.NEG_Z) + ); + } +} diff --git a/src/main/java/api/hbm/energy/IEnergyConnectorBlock.java b/src/main/java/api/hbm/energymk2/IEnergyConnectorBlock.java similarity index 95% rename from src/main/java/api/hbm/energy/IEnergyConnectorBlock.java rename to src/main/java/api/hbm/energymk2/IEnergyConnectorBlock.java index 8583dcc52..d8de0c379 100644 --- a/src/main/java/api/hbm/energy/IEnergyConnectorBlock.java +++ b/src/main/java/api/hbm/energymk2/IEnergyConnectorBlock.java @@ -1,4 +1,4 @@ -package api.hbm.energy; +package api.hbm.energymk2; import net.minecraft.world.IBlockAccess; import net.minecraftforge.common.util.ForgeDirection; diff --git a/src/main/java/api/hbm/energymk2/IEnergyConnectorMK2.java b/src/main/java/api/hbm/energymk2/IEnergyConnectorMK2.java new file mode 100644 index 000000000..4c2246ee5 --- /dev/null +++ b/src/main/java/api/hbm/energymk2/IEnergyConnectorMK2.java @@ -0,0 +1,16 @@ +package api.hbm.energymk2; + +import net.minecraftforge.common.util.ForgeDirection; + +public interface IEnergyConnectorMK2 { + + /** + * Whether the given side can be connected to + * dir refers to the side of this block, not the connecting block doing the check + * @param dir + * @return + */ + public default boolean canConnect(ForgeDirection dir) { + return dir != ForgeDirection.UNKNOWN; + } +} diff --git a/src/main/java/api/hbm/energymk2/IEnergyHandlerMK2.java b/src/main/java/api/hbm/energymk2/IEnergyHandlerMK2.java new file mode 100644 index 000000000..c79bf3405 --- /dev/null +++ b/src/main/java/api/hbm/energymk2/IEnergyHandlerMK2.java @@ -0,0 +1,29 @@ +package api.hbm.energymk2; + +import com.hbm.util.CompatEnergyControl; + +import api.hbm.tile.ILoadedTile; +import net.minecraft.nbt.NBTTagCompound; +import net.minecraft.tileentity.TileEntity; +import net.minecraft.util.Vec3; + +/** DO NOT USE DIRECTLY! This is simply the common ancestor to providers and receivers, because all this behavior has to be excluded from conductors! */ +public interface IEnergyHandlerMK2 extends IEnergyConnectorMK2, ILoadedTile { + + public long getPower(); + public void setPower(long power); + public long getMaxPower(); + + public static final boolean particleDebug = false; + + public default Vec3 getDebugParticlePosMK2() { + TileEntity te = (TileEntity) this; + Vec3 vec = Vec3.createVectorHelper(te.xCoord + 0.5, te.yCoord + 1, te.zCoord + 0.5); + return vec; + } + + public default void provideInfoForECMK2(NBTTagCompound data) { + data.setLong(CompatEnergyControl.L_ENERGY_HE, this.getPower()); + data.setLong(CompatEnergyControl.L_CAPACITY_HE, this.getMaxPower()); + } +} diff --git a/src/main/java/api/hbm/energymk2/IEnergyProviderMK2.java b/src/main/java/api/hbm/energymk2/IEnergyProviderMK2.java new file mode 100644 index 000000000..6464995a0 --- /dev/null +++ b/src/main/java/api/hbm/energymk2/IEnergyProviderMK2.java @@ -0,0 +1,67 @@ +package api.hbm.energymk2; + +import com.hbm.packet.AuxParticlePacketNT; +import com.hbm.packet.PacketDispatcher; + +import api.hbm.energymk2.Nodespace.PowerNode; +import cpw.mods.fml.common.network.NetworkRegistry.TargetPoint; +import net.minecraft.nbt.NBTTagCompound; +import net.minecraft.tileentity.TileEntity; +import net.minecraft.world.World; +import net.minecraftforge.common.util.ForgeDirection; + +/** If it sends energy, use this */ +public interface IEnergyProviderMK2 extends IEnergyHandlerMK2 { + + /** Uses up available power, default implementation has no sanity checking, make sure that the requested power is lequal to the current power */ + public default void usePower(long power) { + this.setPower(this.getPower() - power); + } + + public default long getProviderSpeed() { + return this.getMaxPower(); + } + + public default void tryProvide(World world, int x, int y, int z, ForgeDirection dir) { + + TileEntity te = world.getTileEntity(x, y, z); + boolean red = false; + + if(te instanceof IEnergyConductorMK2) { + IEnergyConductorMK2 con = (IEnergyConductorMK2) te; + if(con.canConnect(dir.getOpposite())) { + + PowerNode node = Nodespace.getNode(world, x, y, z); + + if(node != null && node.net != null) { + node.net.addProvider(this); + red = true; + } + } + } + + if(te instanceof IEnergyReceiverMK2 && te != this) { + IEnergyReceiverMK2 rec = (IEnergyReceiverMK2) te; + if(rec.canConnect(dir.getOpposite())) { + long provides = Math.min(this.getPower(), this.getProviderSpeed()); + long receives = Math.min(rec.getMaxPower() - rec.getPower(), rec.getReceiverSpeed()); + long toTransfer = Math.min(provides, receives); + toTransfer -= rec.transferPower(toTransfer); + this.usePower(toTransfer); + } + } + + if(particleDebug) { + NBTTagCompound data = new NBTTagCompound(); + data.setString("type", "network"); + data.setString("mode", "power"); + double posX = x + 0.5 - dir.offsetX * 0.5 + world.rand.nextDouble() * 0.5 - 0.25; + double posY = y + 0.5 - dir.offsetY * 0.5 + world.rand.nextDouble() * 0.5 - 0.25; + double posZ = z + 0.5 - dir.offsetZ * 0.5 + world.rand.nextDouble() * 0.5 - 0.25; + data.setDouble("mX", dir.offsetX * (red ? 0.025 : 0.1)); + data.setDouble("mY", dir.offsetY * (red ? 0.025 : 0.1)); + data.setDouble("mZ", dir.offsetZ * (red ? 0.025 : 0.1)); + PacketDispatcher.wrapper.sendToAllAround(new AuxParticlePacketNT(data, posX, posY, posZ), new TargetPoint(world.provider.dimensionId, posX, posY, posZ, 25)); + } + } +} diff --git a/src/main/java/api/hbm/energymk2/IEnergyReceiverMK2.java b/src/main/java/api/hbm/energymk2/IEnergyReceiverMK2.java new file mode 100644 index 000000000..11e55bedc --- /dev/null +++ b/src/main/java/api/hbm/energymk2/IEnergyReceiverMK2.java @@ -0,0 +1,108 @@ +package api.hbm.energymk2; + +import com.hbm.packet.AuxParticlePacketNT; +import com.hbm.packet.PacketDispatcher; + +import api.hbm.energymk2.Nodespace.PowerNode; +import cpw.mods.fml.common.network.NetworkRegistry.TargetPoint; +import net.minecraft.nbt.NBTTagCompound; +import net.minecraft.tileentity.TileEntity; +import net.minecraft.world.World; +import net.minecraftforge.common.util.ForgeDirection; + +/** If it receives energy, use this */ +public interface IEnergyReceiverMK2 extends IEnergyHandlerMK2 { + + public default long transferPower(long power) { + if(power + this.getPower() <= this.getMaxPower()) { + this.setPower(power + this.getPower()); + return 0; + } + long capacity = this.getMaxPower() - this.getPower(); + long overshoot = power - capacity; + this.setPower(this.getMaxPower()); + return overshoot; + } + + public default long getReceiverSpeed() { + return this.getMaxPower(); + } + + public default void trySubscribe(World world, int x, int y, int z, ForgeDirection dir) { + + TileEntity te = world.getTileEntity(x, y, z); + boolean red = false; + + if(te instanceof IEnergyConductorMK2) { + IEnergyConductorMK2 con = (IEnergyConductorMK2) te; + if(!con.canConnect(dir.getOpposite())) return; + + PowerNode node = Nodespace.getNode(world, x, y, z); + + if(node != null && node.net != null) { + node.net.addReceiver(this); + red = true; + } + } + + if(particleDebug) { + NBTTagCompound data = new NBTTagCompound(); + data.setString("type", "network"); + data.setString("mode", "power"); + double posX = x + 0.5 + dir.offsetX * 0.5 + world.rand.nextDouble() * 0.5 - 0.25; + double posY = y + 0.5 + dir.offsetY * 0.5 + world.rand.nextDouble() * 0.5 - 0.25; + double posZ = z + 0.5 + dir.offsetZ * 0.5 + world.rand.nextDouble() * 0.5 - 0.25; + data.setDouble("mX", -dir.offsetX * (red ? 0.025 : 0.1)); + data.setDouble("mY", -dir.offsetY * (red ? 0.025 : 0.1)); + data.setDouble("mZ", -dir.offsetZ * (red ? 0.025 : 0.1)); + PacketDispatcher.wrapper.sendToAllAround(new AuxParticlePacketNT(data, posX, posY, posZ), new TargetPoint(world.provider.dimensionId, posX, posY, posZ, 25)); + } + } + + public default void tryUnsubscribe(World world, int x, int y, int z) { + + TileEntity te = world.getTileEntity(x, y, z); + + if(te instanceof IEnergyConductorMK2) { + IEnergyConductorMK2 con = (IEnergyConductorMK2) te; + PowerNode node = con.createNode(); + + if(node != null && node.net != null) { + node.net.removeReceiver(this); + } + } + } + + /** + * Project MKUltra was an illegal human experiments program designed and undertaken by the U.S. Central Intelligence Agency (CIA) + * to develop procedures and identify drugs that could be used during interrogations to weaken people and force confessions through + * brainwashing and psychological torture. It began in 1953 and was halted in 1973. MKUltra used numerous methods to manipulate + * its subjects' mental states and brain functions, such as the covert administration of high doses of psychoactive drugs (especially LSD) + * and other chemicals without the subjects' consent, electroshocks, hypnosis, sensory deprivation, isolation, verbal and sexual + * abuse, and other forms of torture. + * MKUltra was preceded by Project Artichoke. It was organized through the CIA's Office of Scientific Intelligence and coordinated + * with the United States Army Biological Warfare Laboratories. The program engaged in illegal activities, including the + * use of U.S. and Canadian citizens as unwitting test subjects. MKUltra's scope was broad, with activities carried + * out under the guise of research at more than 80 institutions aside from the military, including colleges and universities, + * hospitals, prisons, and pharmaceutical companies. The CIA operated using front organizations, although some top officials at these + * institutions were aware of the CIA's involvement. + * MKUltra was revealed to the public in 1975 by the Church Committee of the United States Congress and Gerald Ford's United States + * President's Commission on CIA activities within the United States (the Rockefeller Commission). Investigative efforts were hampered + * by CIA Director Richard Helms's order that all MKUltra files be destroyed in 1973; the Church Committee and Rockefeller Commission + * investigations relied on the sworn testimony of direct participants and on the small number of documents that survived Helms's order. + * In 1977, a Freedom of Information Act request uncovered a cache of 20,000 documents relating to MKUltra, which led to Senate hearings. + * Some surviving information about MKUltra was declassified in 2001. + * */ + public default ConnectionPriority getPriority() { + return ConnectionPriority.NORMAL; + } + + /** More is better-er */ + public enum ConnectionPriority { + LOWEST, + LOW, + NORMAL, + HIGH, + HIGHEST + } +} diff --git a/src/main/java/api/hbm/energymk2/Nodespace.java b/src/main/java/api/hbm/energymk2/Nodespace.java new file mode 100644 index 000000000..3f0888859 --- /dev/null +++ b/src/main/java/api/hbm/energymk2/Nodespace.java @@ -0,0 +1,193 @@ +package api.hbm.energymk2; + +import java.util.HashMap; +import java.util.HashSet; +import java.util.Map.Entry; +import java.util.Set; + +import com.hbm.util.fauxpointtwelve.BlockPos; +import com.hbm.util.fauxpointtwelve.DirPos; + +import net.minecraft.server.MinecraftServer; +import net.minecraft.world.World; + +/** + * The "Nodespace" is an intermediate, "ethereal" layer of abstraction that tracks nodes (i.e. cables) even when they are no longer loaded, allowing continued operation even when unloaded + * @author hbm + * + */ +public class Nodespace { + + /** Contains all "NodeWorld" instances, i.e. lists of nodes existing per world */ + public static HashMap worlds = new HashMap(); + public static Set activePowerNets = new HashSet(); + + public static PowerNode getNode(World world, int x, int y, int z) { + NodeWorld nodeWorld = worlds.get(world); + if(nodeWorld != null) return nodeWorld.nodes.get(new BlockPos(x, y, z)); + return null; + } + + public static void createNode(World world, PowerNode node) { + NodeWorld nodeWorld = worlds.get(world); + if(nodeWorld == null) { + nodeWorld = new NodeWorld(); + worlds.put(world, nodeWorld); + } + nodeWorld.pushNode(node); + } + + public static void destroyNode(World world, int x, int y, int z) { + PowerNode node = getNode(world, x, y, z); + if(node != null) { + worlds.get(world).popNode(node); + } + } + + /** Goes over each node and manages connections */ + public static void updateNodespace() { + + for(World world : MinecraftServer.getServer().worldServers) { + NodeWorld nodes = worlds.get(world); + + for(Entry entry : nodes.nodes.entrySet()) { + PowerNode node = entry.getValue(); + if(!node.hasValidNet() || node.recentlyChanged) { + checkNodeConnection(world, node); + node.recentlyChanged = false; + } + } + } + + updatePowerNets(); + } + + private static void updatePowerNets() { + + for(PowerNetMK2 net : activePowerNets) net.resetEnergyTracker(); //reset has to be done before everything else + for(PowerNetMK2 net : activePowerNets) net.transferPower(); + } + + /** Goes over each connection point of the given node, tries to find neighbor nodes and to join networks with them */ + private static void checkNodeConnection(World world, PowerNode node) { + + for(DirPos con : node.connections) { + + PowerNode conNode = getNode(world, con.getX(), con.getY(), con.getZ()); // get whatever neighbor node intersects with that connection + + if(conNode != null) { // if there is a node at that place + + if(conNode.hasValidNet() && conNode.net == node.net) continue; // if the net is valid and both nodes have the same net, skip + + if(checkConnection(conNode, con, false)) { + connectToNode(node, conNode); + } + } + } + + if(node.net == null || !node.net.isValid()) new PowerNetMK2().joinLink(node); + } + + public static boolean checkConnection(PowerNode connectsTo, DirPos connectFrom, boolean skipSideCheck) { + + for(DirPos revCon : connectsTo.connections) { + + if(revCon.getX() - revCon.getDir().offsetX == connectFrom.getX() && revCon.getY() - revCon.getDir().offsetY == connectFrom.getY() && revCon.getZ() - revCon.getDir().offsetZ == connectFrom.getZ() && (revCon.getDir() == connectFrom.getDir().getOpposite() || skipSideCheck)) { + return true; + } + } + + return false; + } + + /** Links two nodes with different or potentially no networks */ + private static void connectToNode(PowerNode origin, PowerNode connection) { + + if(origin.hasValidNet() && connection.hasValidNet()) { // both nodes have nets, but the nets are different (previous assumption), join networks + if(origin.net.links.size() > connection.net.links.size()) { + origin.net.joinNetworks(connection.net); + } else { + connection.net.joinNetworks(origin.net); + } + } else if(!origin.hasValidNet() && connection.hasValidNet()) { // origin has no net, connection does, have origin join connection's net + connection.net.joinLink(origin); + } else if(origin.hasValidNet() && !connection.hasValidNet()) { // ...and vice versa + origin.net.joinLink(connection); + } + } + + public static class NodeWorld { + + /** Contains a map showing where each node is, a node is every spot that a cable exists at. + * Instead of the old proxy system, things like substation now create multiple nodes at their connection points */ + public static HashMap nodes = new HashMap(); + + /** Adds a node at all its positions to the nodespace */ + public void pushNode(PowerNode node) { + for(BlockPos pos : node.positions) { + nodes.put(pos, node); + } + } + + /** Removes the specified node from all positions from nodespace */ + public void popNode(PowerNode node) { + if(node.net != null) node.net.destroy(); + for(BlockPos pos : node.positions) { + nodes.remove(pos); + node.expired = true; + } + } + + /** Grabs the node at one position, then removes it from all positions it occupies */ + public void popNode(BlockPos pos) { + PowerNode node = nodes.get(pos); + if(node != null) popNode(node); + } + } + + public static class PowerNode { + + public BlockPos[] positions; + public DirPos[] connections; + public PowerNetMK2 net; + public boolean expired = false; + /** + * Okay so here's the deal: The code has shit idiot brain fungus. I don't know why. I re-tested every part involved several times. + * I don't know why. But for some reason, during neighbor checks, on certain arbitrary fucking places, the joining operation just fails. + * Disallowing nodes to create new networks fixed the problem completely, which is hardly surprising since they wouldn't be able to make + * a new net anyway and they will re-check neighbors until a net is found, so the solution is tautological in nature. So I tried limiting + * creation of new networks. Didn't work. So what's there left to do? Hand out a mark to any node that has changed networks, and let those + * recently modified nodes do another re-check. This creates a second layer of redundant operations, and in theory doubles (in practice, + * it might be an extra 20% due to break-off section sizes) the amount of CPU time needed for re-building the networks after joining or + * breaking, but it seems to allow those parts to connect back to their neighbor nets as they are supposed to. I am not proud of this solution, + * this issue shouldn't exist to begin with and I am going fucking insane but it is what it is. + */ + public boolean recentlyChanged = true; + + public PowerNode(BlockPos... positions) { + this.positions = positions; + } + + public PowerNode setConnections(DirPos... connections) { + this.connections = connections; + return this; + } + + public PowerNode addConnection(DirPos connection) { + DirPos[] newCons = new DirPos[this.connections.length + 1]; + for(int i = 0; i < this.connections.length; i++) newCons[i] = this.connections[i]; + newCons[newCons.length - 1] = connection; + this.connections = newCons; + return this; + } + + public boolean hasValidNet() { + return this.net != null && this.net.isValid(); + } + + public void setNet(PowerNetMK2 net) { + this.net = net; + this.recentlyChanged = true; + } + } +} diff --git a/src/main/java/api/hbm/energymk2/PowerNetMK2.java b/src/main/java/api/hbm/energymk2/PowerNetMK2.java new file mode 100644 index 000000000..b10c928d6 --- /dev/null +++ b/src/main/java/api/hbm/energymk2/PowerNetMK2.java @@ -0,0 +1,345 @@ +package api.hbm.energymk2; + +import java.util.ArrayList; +import java.util.Comparator; +import java.util.HashMap; +import java.util.HashSet; +import java.util.Iterator; +import java.util.List; +import java.util.Set; + +import com.hbm.util.Tuple.Pair; + +import java.util.Map.Entry; + +import api.hbm.energymk2.IEnergyReceiverMK2.ConnectionPriority; +import api.hbm.energymk2.Nodespace.PowerNode; + +public class PowerNetMK2 { + + public boolean valid = true; + public Set links = new HashSet(); + + /** Maps all active subscribers to a timestamp, handy for handling timeouts. In a good system this shouldn't be necessary, but the previous system taught me to be cautious anyway */ + public HashMap receiverEntries = new HashMap(); + public HashMap providerEntries = new HashMap(); + + public long energyTracker = 0L; + + public PowerNetMK2() { + Nodespace.activePowerNets.add(this); + } + + /// SUBSCRIBER HANDLING /// + public boolean isSubscribed(IEnergyReceiverMK2 receiver) { + return this.receiverEntries.containsKey(receiver); + } + + public void addReceiver(IEnergyReceiverMK2 receiver) { + this.receiverEntries.put(receiver, System.currentTimeMillis()); + } + + public void removeReceiver(IEnergyReceiverMK2 receiver) { + this.receiverEntries.remove(receiver); + } + + /// PROVIDER HANDLING /// + public boolean isProvider(IEnergyProviderMK2 provider) { + return this.providerEntries.containsKey(provider); + } + + public void addProvider(IEnergyProviderMK2 provider) { + this.providerEntries.put(provider, System.currentTimeMillis()); + } + + public void removeProvider(IEnergyProviderMK2 provider) { + this.providerEntries.remove(provider); + } + + /// LINK JOINING /// + + /** Combines two networks into one */ + public void joinNetworks(PowerNetMK2 network) { + + if(network == this) return; //wtf?! + + List oldNodes = new ArrayList(network.links.size()); + oldNodes.addAll(network.links); // might prevent oddities related to joining - nvm it does nothing + + for(PowerNode conductor : oldNodes) forceJoinLink(conductor); + network.links.clear(); + + for(IEnergyReceiverMK2 connector : network.receiverEntries.keySet()) this.addReceiver(connector); + for(IEnergyProviderMK2 connector : network.providerEntries.keySet()) this.addProvider(connector); + network.destroy(); + } + + /** Adds the power node as part of this network's links */ + public PowerNetMK2 joinLink(PowerNode node) { + if(node.net != null) node.net.leaveLink(node); + return forceJoinLink(node); + } + + /** Adds the power node as part of this network's links, skips the part about removing it from existing networks */ + public PowerNetMK2 forceJoinLink(PowerNode node) { + this.links.add(node); + node.setNet(this); + return this; + } + + /** Removes the specified power node */ + public void leaveLink(PowerNode node) { + node.setNet(null); + this.links.remove(node); + } + + /// GENERAL POWER NET CONTROL /// + public void invalidate() { + this.valid = false; + Nodespace.activePowerNets.remove(this); + } + + public boolean isValid() { + return this.valid; + } + + public void destroy() { + this.invalidate(); + for(PowerNode link : this.links) if(link.net == this) link.setNet(null); + this.links.clear(); + this.receiverEntries.clear(); + this.providerEntries.clear(); + } + + public void resetEnergyTracker() { + this.energyTracker = 0; + } + + protected static int timeout = 3_000; + + public void transferPower() { + + if(providerEntries.isEmpty()) return; + if(receiverEntries.isEmpty()) return; + + long timestamp = System.currentTimeMillis(); + long transferCap = 100_000_000_000_000_00L; + + List> providers = new ArrayList(); + long powerAvailable = 0; + + Iterator> provIt = providerEntries.entrySet().iterator(); + while(provIt.hasNext()) { + Entry entry = provIt.next(); + if(timestamp - entry.getValue() > timeout) { provIt.remove(); continue; } + long src = Math.min(entry.getKey().getPower(), entry.getKey().getProviderSpeed()); + providers.add(new Pair(entry.getKey(), src)); + if(powerAvailable < transferCap) powerAvailable += src; + } + + powerAvailable = Math.min(powerAvailable, transferCap); + + List>[] receivers = new ArrayList[ConnectionPriority.values().length]; + for(int i = 0; i < receivers.length; i++) receivers[i] = new ArrayList(); + long[] demand = new long[ConnectionPriority.values().length]; + long totalDemand = 0; + + Iterator> recIt = receiverEntries.entrySet().iterator(); + + while(recIt.hasNext()) { + Entry entry = recIt.next(); + if(timestamp - entry.getValue() > timeout) { recIt.remove(); continue; } + long rec = Math.min(entry.getKey().getMaxPower() - entry.getKey().getPower(), entry.getKey().getReceiverSpeed()); + int p = entry.getKey().getPriority().ordinal(); + receivers[p].add(new Pair(entry.getKey(), rec)); + demand[p] += rec; + totalDemand += rec; + } + + long toTransfer = Math.min(powerAvailable, totalDemand); + long energyUsed = 0; + + for(int i = ConnectionPriority.values().length - 1; i >= 0; i--) { + List> list = receivers[i]; + long priorityDemand = demand[i]; + + for(Pair entry : list) { + double weight = (double) entry.getValue() / (double) (priorityDemand); + long toSend = (long) Math.max(toTransfer * weight, 0D); + energyUsed += (toSend - entry.getKey().transferPower(toSend)); //leftovers are subtracted from the intended amount to use up + } + + toTransfer -= energyUsed; + } + + for(Pair entry : providers) { + double weight = (double) entry.getValue() / (double) powerAvailable; + long toUse = (long) Math.max(energyUsed * weight, 0D); + entry.getKey().usePower(toUse); + } + } + + @Deprecated public void transferPowerOld() { + + if(providerEntries.isEmpty()) return; + if(receiverEntries.isEmpty()) return; + + long timestamp = System.currentTimeMillis(); + long transferCap = 100_000_000_000_000_00L; // that ought to be enough + + long supply = 0; + long demand = 0; + long[] priorityDemand = new long[ConnectionPriority.values().length]; + + Iterator> provIt = providerEntries.entrySet().iterator(); + while(provIt.hasNext()) { + Entry entry = provIt.next(); + if(timestamp - entry.getValue() > timeout) { provIt.remove(); continue; } + supply += Math.min(entry.getKey().getPower(), entry.getKey().getProviderSpeed()); + } + + if(supply <= 0) return; + + Iterator> recIt = receiverEntries.entrySet().iterator(); + while(recIt.hasNext()) { + Entry entry = recIt.next(); + if(timestamp - entry.getValue() > timeout) { recIt.remove(); continue; } + long rec = Math.min(entry.getKey().getMaxPower() - entry.getKey().getPower(), entry.getKey().getReceiverSpeed()); + demand += rec; + for(int i = 0; i <= entry.getKey().getPriority().ordinal(); i++) priorityDemand[i] += rec; + } + + if(demand <= 0) return; + + long toTransfer = Math.min(supply, demand); + if(toTransfer > transferCap) toTransfer = transferCap; + if(toTransfer <= 0) return; + + List buffers = new ArrayList(); + List providers = new ArrayList(); + Set receiverSet = receiverEntries.keySet(); + for(IEnergyProviderMK2 provider : providerEntries.keySet()) { + if(receiverSet.contains(provider)) { + buffers.add(provider); + } else { + providers.add(provider); + } + } + providers.addAll(buffers); //makes buffers go last + List receivers = new ArrayList() {{ addAll(receiverSet); }}; + + receivers.sort(COMP); + + int maxIteration = 1000; + + //how much the current sender/receiver have already sent/received + long prevSrc = 0; + long prevDest = 0; + + while(!receivers.isEmpty() && !providers.isEmpty() && maxIteration > 0) { + maxIteration--; + + IEnergyProviderMK2 src = providers.get(0); + IEnergyReceiverMK2 dest = receivers.get(0); + + if(src.getPower() <= 0) { providers.remove(0); prevSrc = 0; continue; } + + if(src == dest) { // STALEMATE DETECTED + //if this happens, a buffer will waste both its share of transfer and receiving potential and do effectively nothing, essentially breaking + + //try if placing the conflicting provider at the end of the list does anything + //we do this first because providers have no priority, so we may shuffle those around as much as we want + if(providers.size() > 1) { + providers.add(providers.get(0)); + providers.remove(0); + prevSrc = 0; //this might cause slight issues due to the tracking being effectively lost while there still might be pending operations + continue; + } + //if that didn't work, try shifting the receiver by one place (to minimize priority breakage) + if(receivers.size() > 1) { + receivers.add(2, receivers.get(0)); + receivers.remove(0); + prevDest = 0; //ditto + continue; + } + + //if neither option could be performed, the only conclusion is that this buffer mode battery is alone in the power net, in which case: not my provlem + } + + long pd = priorityDemand[dest.getPriority().ordinal()]; + + long receiverShare = Math.min((long) Math.ceil((double) Math.min(dest.getMaxPower() - dest.getPower(), dest.getReceiverSpeed()) * (double) supply / (double) pd), dest.getReceiverSpeed()) - prevDest; + long providerShare = Math.min((long) Math.ceil((double) Math.min(src.getPower(), src.getProviderSpeed()) * (double) demand / (double) supply), src.getProviderSpeed()) - prevSrc; + + long toDrain = Math.min((long) (src.getPower()), providerShare); + long toFill = Math.min(dest.getMaxPower() - dest.getPower(), receiverShare); + + long finalTransfer = Math.min(toDrain, toFill); + if(toFill <= 0) { receivers.remove(0); prevDest = 0; continue; } + + finalTransfer -= dest.transferPower(finalTransfer); + src.usePower(finalTransfer); + + prevSrc += finalTransfer; + prevDest += finalTransfer; + + if(prevSrc >= src.getProviderSpeed()) { providers.remove(0); prevSrc = 0; continue; } + if(prevDest >= dest.getReceiverSpeed()) { receivers.remove(0); prevDest = 0; continue; } + + toTransfer -= finalTransfer; + this.energyTracker += finalTransfer; + } + } + + public long sendPowerDiode(long power) { + + if(receiverEntries.isEmpty()) return power; + + long timestamp = System.currentTimeMillis(); + + List>[] receivers = new ArrayList[ConnectionPriority.values().length]; + for(int i = 0; i < receivers.length; i++) receivers[i] = new ArrayList(); + long[] demand = new long[ConnectionPriority.values().length]; + long totalDemand = 0; + + Iterator> recIt = receiverEntries.entrySet().iterator(); + + while(recIt.hasNext()) { + Entry entry = recIt.next(); + if(timestamp - entry.getValue() > timeout) { recIt.remove(); continue; } + long rec = Math.min(entry.getKey().getMaxPower() - entry.getKey().getPower(), entry.getKey().getReceiverSpeed()); + int p = entry.getKey().getPriority().ordinal(); + receivers[p].add(new Pair(entry.getKey(), rec)); + demand[p] += rec; + totalDemand += rec; + } + + long toTransfer = Math.min(power, totalDemand); + long energyUsed = 0; + + for(int i = ConnectionPriority.values().length - 1; i >= 0; i--) { + List> list = receivers[i]; + long priorityDemand = demand[i]; + + for(Pair entry : list) { + double weight = (double) entry.getValue() / (double) (priorityDemand); + long toSend = (long) Math.max(toTransfer * weight, 0D); + energyUsed += (toSend - entry.getKey().transferPower(toSend)); //leftovers are subtracted from the intended amount to use up + } + + toTransfer -= energyUsed; + } + + return power - energyUsed; + } + + public static final ReceiverComparator COMP = new ReceiverComparator(); + + public static class ReceiverComparator implements Comparator { + + @Override + public int compare(IEnergyReceiverMK2 o1, IEnergyReceiverMK2 o2) { + return o2.getPriority().ordinal() - o1.getPriority().ordinal(); + } + } +} diff --git a/src/main/java/api/hbm/energymk2/package-info.java b/src/main/java/api/hbm/energymk2/package-info.java new file mode 100644 index 000000000..8bb153735 --- /dev/null +++ b/src/main/java/api/hbm/energymk2/package-info.java @@ -0,0 +1,33 @@ +/** + * + */ +/** + * @author hbm + * + */ +package api.hbm.energymk2; + +// i have snorted two lines of pure caffeine and taken one large paracetamol laced with even more caffine, let's fucking go + +//most of the new classes are just copy pasted mashed up shit from yesteryear, what a productive segment that was + +/* + +before my caffine high ends entirely and i black out, here's the gist: +* diodes are handled like energy receiver and simply chain-load the power net they output into in a recursive function, this might be a bit laggy compared to the rest of the system, but it's still way less laggy than the old one +* instead of power nets being bound to tile entities directly, tiles spawn ethereal "nodes" similar to the drone waypoints which can be saved using world data, meaning that breaking cables will delete nodes, but unloading them will keep them alive in "node space" which is what's actually used to check for connections +* power nets may cache some positional info in order to limit the amount of nodes, this should prevent horrific freezes in the unlikely event that some retard makes a superflat world out of cables +* general energy transmission will work in a similar fashion as martin explained his, but somewhat simplified; the system will determine supply and demand and then split those evenly if possible, retrying within one operation is only necessary for minor restrictions like priority, any leftovers from rounding don't have to be re-tried because the next tick will already take care of that +* invest funds in more coal mare nudes +* battery "fair share" transfer will most likely no longer work, but that's not really as relevant these days considering there's capacitors and because batteries have transfer speed limits anyway +* most of the machine's functions will be repurposed, the "sendPower" method will no longer send power directly but register the machine to the network as a power source +* if all else fails and martin still hasn't surrendered his code, i will beg greg for his wisdom (but without loss or tiering because fuck that) +* +* | | || +* ____|____ +* | +* || | |_ +* +* ...i said WITHOUT loss + +*/ \ No newline at end of file diff --git a/src/main/java/api/hbm/fluid/IFluidConnector.java b/src/main/java/api/hbm/fluid/IFluidConnector.java index a51bcdeb2..a9c900635 100644 --- a/src/main/java/api/hbm/fluid/IFluidConnector.java +++ b/src/main/java/api/hbm/fluid/IFluidConnector.java @@ -4,7 +4,7 @@ import com.hbm.inventory.fluid.FluidType; import com.hbm.packet.AuxParticlePacketNT; import com.hbm.packet.PacketDispatcher; -import api.hbm.energy.ILoadedTile; +import api.hbm.tile.ILoadedTile; import cpw.mods.fml.common.network.NetworkRegistry.TargetPoint; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.tileentity.TileEntity; diff --git a/src/main/java/api/hbm/energy/ILoadedTile.java b/src/main/java/api/hbm/tile/ILoadedTile.java similarity index 72% rename from src/main/java/api/hbm/energy/ILoadedTile.java rename to src/main/java/api/hbm/tile/ILoadedTile.java index 1f6d0f88b..65ad9d14c 100644 --- a/src/main/java/api/hbm/energy/ILoadedTile.java +++ b/src/main/java/api/hbm/tile/ILoadedTile.java @@ -1,4 +1,4 @@ -package api.hbm.energy; +package api.hbm.tile; public interface ILoadedTile { diff --git a/src/main/java/com/hbm/blocks/ModBlocks.java b/src/main/java/com/hbm/blocks/ModBlocks.java index bbd2bff36..899843fef 100644 --- a/src/main/java/com/hbm/blocks/ModBlocks.java +++ b/src/main/java/com/hbm/blocks/ModBlocks.java @@ -773,6 +773,10 @@ public class ModBlocks { public static Block red_cable_gauge; public static Block red_connector; public static Block red_pylon; + public static Block red_pylon_medium_wood; + public static Block red_pylon_medium_wood_transformer; + public static Block red_pylon_medium_steel; + public static Block red_pylon_medium_steel_transformer; public static Block red_pylon_large; public static Block substation; public static Block cable_switch; @@ -1075,10 +1079,11 @@ public class ModBlocks { public static Block anvil_iron; public static Block anvil_lead; public static Block anvil_steel; - public static Block anvil_meteorite; - public static Block anvil_starmetal; + public static Block anvil_desh; + public static Block anvil_saturnite; public static Block anvil_ferrouranium; - public static Block anvil_bismuth; + public static Block anvil_bismuth_bronze; + public static Block anvil_arsenic_bronze; public static Block anvil_schrabidate; public static Block anvil_dnt; public static Block anvil_osmiridium; @@ -1922,6 +1927,10 @@ public class ModBlocks { red_cable_gauge = new BlockCableGauge().setBlockName("red_cable_gauge").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab); red_connector = new ConnectorRedWire(Material.iron).setBlockName("red_connector").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":red_connector"); red_pylon = new PylonRedWire(Material.iron).setBlockName("red_pylon").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":red_pylon"); + red_pylon_medium_wood = new PylonMedium(Material.wood).setBlockName("red_pylon_medium_wood").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":red_pylon"); + red_pylon_medium_wood_transformer = new PylonMedium(Material.wood).setBlockName("red_pylon_medium_wood_transformer").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":red_pylon"); + red_pylon_medium_steel = new PylonMedium(Material.iron).setBlockName("red_pylon_medium_steel").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":red_pylon"); + red_pylon_medium_steel_transformer = new PylonMedium(Material.iron).setBlockName("red_pylon_medium_steel_transformer").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":red_pylon"); red_pylon_large = new PylonLarge(Material.iron).setBlockName("red_pylon_large").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":red_pylon_large"); substation = new Substation(Material.iron).setBlockName("substation").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":substation"); cable_switch = new CableSwitch(Material.iron).setBlockName("cable_switch").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab); @@ -2119,7 +2128,7 @@ public class ModBlocks { tesla = new MachineTesla(Material.iron).setBlockName("tesla").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.blockTab).setBlockTextureName(RefStrings.MODID + ":tesla"); launch_pad = new LaunchPad(Material.iron).setBlockName("launch_pad").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.missileTab).setBlockTextureName(RefStrings.MODID + ":launch_pad"); - launch_pad_rusted = new LaunchPadRusted(Material.iron).setBlockName("launch_pad_rusted").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.missileTab).setBlockTextureName(RefStrings.MODID + ":launch_pad_rusted"); + launch_pad_rusted = new LaunchPadRusted(Material.iron).setBlockName("launch_pad_rusted").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.missileTab).setBlockTextureName(RefStrings.MODID + ":block_rust"); launch_pad_large = new LaunchPadLarge(Material.iron).setBlockName("launch_pad_large").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.missileTab).setBlockTextureName(RefStrings.MODID + ":block_steel"); machine_radar = new MachineRadar(Material.iron).setBlockName("machine_radar").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.missileTab).setBlockTextureName(RefStrings.MODID + ":machine_radar"); machine_radar_large = new MachineRadarLarge(Material.iron).setBlockName("machine_radar_large").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.missileTab).setBlockTextureName(RefStrings.MODID + ":block_steel"); @@ -2285,16 +2294,17 @@ public class ModBlocks { machine_autocrafter = new MachineAutocrafter().setBlockName("machine_autocrafter").setHardness(10.0F).setResistance(20.0F).setCreativeTab(MainRegistry.machineTab); machine_funnel = new MachineFunnel().setBlockName("machine_funnel").setHardness(10.0F).setResistance(20.0F).setCreativeTab(MainRegistry.machineTab); - anvil_iron = new NTMAnvil(Material.iron, 1).setBlockName("anvil_iron").setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":anvil_iron"); - anvil_lead = new NTMAnvil(Material.iron, 1).setBlockName("anvil_lead").setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":anvil_lead"); - anvil_steel = new NTMAnvil(Material.iron, 2).setBlockName("anvil_steel").setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":anvil_steel"); - anvil_meteorite = new NTMAnvil(Material.iron, 3).setBlockName("anvil_meteorite").setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":anvil_meteorite"); - anvil_starmetal = new NTMAnvil(Material.iron, 3).setBlockName("anvil_starmetal").setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":anvil_starmetal"); - anvil_ferrouranium = new NTMAnvil(Material.iron, 4).setBlockName("anvil_ferrouranium").setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":anvil_ferrouranium"); - anvil_bismuth = new NTMAnvil(Material.iron, 5).setBlockName("anvil_bismuth").setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":anvil_bismuth"); - anvil_schrabidate = new NTMAnvil(Material.iron, 6).setBlockName("anvil_schrabidate").setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":anvil_schrabidate"); - anvil_dnt = new NTMAnvil(Material.iron, 7).setBlockName("anvil_dnt").setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":anvil_dnt"); - anvil_osmiridium = new NTMAnvil(Material.iron, 8).setBlockName("anvil_osmiridium").setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":anvil_osmiridium"); + anvil_iron = new NTMAnvil(Material.iron, NTMAnvil.TIER_IRON).setBlockName("anvil_iron").setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":anvil_iron"); + anvil_lead = new NTMAnvil(Material.iron, NTMAnvil.TIER_IRON).setBlockName("anvil_lead").setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":anvil_lead"); + anvil_steel = new NTMAnvil(Material.iron, NTMAnvil.TIER_STEEL).setBlockName("anvil_steel").setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":anvil_steel"); + anvil_desh = new NTMAnvil(Material.iron, NTMAnvil.TIER_OIL).setBlockName("anvil_desh").setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":anvil_desh"); + anvil_saturnite = new NTMAnvil(Material.iron, NTMAnvil.TIER_OIL).setBlockName("anvil_saturnite").setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":anvil_saturnite"); + anvil_ferrouranium = new NTMAnvil(Material.iron, NTMAnvil.TIER_NUCLEAR).setBlockName("anvil_ferrouranium").setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":anvil_ferrouranium"); + anvil_bismuth_bronze = new NTMAnvil(Material.iron, NTMAnvil.TIER_RBMK).setBlockName("anvil_bismuth_bronze").setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":anvil_bismuth_bronze"); + anvil_arsenic_bronze = new NTMAnvil(Material.iron, NTMAnvil.TIER_RBMK).setBlockName("anvil_arsenic_bronze").setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":anvil_arsenic_bronze"); + anvil_schrabidate = new NTMAnvil(Material.iron, NTMAnvil.TIER_FUSION).setBlockName("anvil_schrabidate").setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":anvil_schrabidate"); + anvil_dnt = new NTMAnvil(Material.iron, NTMAnvil.TIER_PARTICLE).setBlockName("anvil_dnt").setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":anvil_dnt"); + anvil_osmiridium = new NTMAnvil(Material.iron, NTMAnvil.TIER_GERALD).setBlockName("anvil_osmiridium").setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":anvil_osmiridium"); anvil_murky = new NTMAnvil(Material.iron, 1916169).setBlockName("anvil_murky").setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":anvil_steel"); machine_waste_drum = new WasteDrum(Material.iron).setBlockName("machine_waste_drum").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":waste_drum"); @@ -3050,17 +3060,18 @@ public class ModBlocks { register(machine_autocrafter); register(machine_funnel); - GameRegistry.registerBlock(anvil_iron, ItemBlockBase.class, anvil_iron.getUnlocalizedName()); - GameRegistry.registerBlock(anvil_lead, ItemBlockBase.class, anvil_lead.getUnlocalizedName()); - GameRegistry.registerBlock(anvil_steel, ItemBlockBase.class, anvil_steel.getUnlocalizedName()); - GameRegistry.registerBlock(anvil_meteorite, ItemBlockBase.class, anvil_meteorite.getUnlocalizedName()); - GameRegistry.registerBlock(anvil_starmetal, ItemBlockBase.class, anvil_starmetal.getUnlocalizedName()); - GameRegistry.registerBlock(anvil_ferrouranium, ItemBlockBase.class, anvil_ferrouranium.getUnlocalizedName()); - GameRegistry.registerBlock(anvil_bismuth, ItemBlockBase.class, anvil_bismuth.getUnlocalizedName()); - GameRegistry.registerBlock(anvil_schrabidate, ItemBlockBase.class, anvil_schrabidate.getUnlocalizedName()); - GameRegistry.registerBlock(anvil_dnt, ItemBlockBase.class, anvil_dnt.getUnlocalizedName()); - GameRegistry.registerBlock(anvil_osmiridium, ItemBlockBase.class, anvil_osmiridium.getUnlocalizedName()); - GameRegistry.registerBlock(anvil_murky, ItemBlockBase.class, anvil_murky.getUnlocalizedName()); + register(anvil_iron); + register(anvil_lead); + register(anvil_steel); + register(anvil_desh); + register(anvil_saturnite); + register(anvil_ferrouranium); + register(anvil_bismuth_bronze); + register(anvil_arsenic_bronze); + register(anvil_schrabidate); + register(anvil_dnt); + register(anvil_osmiridium); + register(anvil_murky); GameRegistry.registerBlock(press_preheater, press_preheater.getUnlocalizedName()); GameRegistry.registerBlock(machine_press, machine_press.getUnlocalizedName()); @@ -3196,6 +3207,10 @@ public class ModBlocks { GameRegistry.registerBlock(red_wire_coated, red_wire_coated.getUnlocalizedName()); GameRegistry.registerBlock(red_connector, ItemBlockBase.class, red_connector.getUnlocalizedName()); GameRegistry.registerBlock(red_pylon, ItemBlockBase.class, red_pylon.getUnlocalizedName()); + register(red_pylon_medium_wood); + register(red_pylon_medium_wood_transformer); + register(red_pylon_medium_steel); + register(red_pylon_medium_steel_transformer); GameRegistry.registerBlock(red_pylon_large, ItemBlockBase.class, red_pylon_large.getUnlocalizedName()); GameRegistry.registerBlock(substation, ItemBlockBase.class, substation.getUnlocalizedName()); GameRegistry.registerBlock(cable_switch, cable_switch.getUnlocalizedName()); diff --git a/src/main/java/com/hbm/blocks/bomb/Balefire.java b/src/main/java/com/hbm/blocks/bomb/Balefire.java index ecf7f579f..4a282e861 100644 --- a/src/main/java/com/hbm/blocks/bomb/Balefire.java +++ b/src/main/java/com/hbm/blocks/bomb/Balefire.java @@ -7,8 +7,10 @@ import static net.minecraftforge.common.util.ForgeDirection.SOUTH; import static net.minecraftforge.common.util.ForgeDirection.UP; import static net.minecraftforge.common.util.ForgeDirection.WEST; +import java.awt.Color; import java.util.Random; +import com.hbm.blocks.ModBlocks; import com.hbm.potion.HbmPotion; import cpw.mods.fml.relauncher.Side; @@ -47,9 +49,9 @@ public class Balefire extends BlockFire { return icon; } + @Override public void updateTick(World world, int x, int y, int z, Random rand) { if(world.getGameRules().getGameRuleBooleanValue("doFireTick")) { - boolean onNetherrack = world.getBlock(x, y - 1, z).isFireSource(world, x, y - 1, z, UP); if(!this.canPlaceBlockAt(world, x, y, z)) { world.setBlockToAir(x, y, z); @@ -57,12 +59,10 @@ public class Balefire extends BlockFire { int meta = world.getBlockMetadata(x, y, z); - world.scheduleBlockUpdate(x, y, z, this, this.tickRate(world) + rand.nextInt(10)); + if(meta < 15) world.scheduleBlockUpdate(x, y, z, this, this.tickRate(world) + rand.nextInt(10)); - if(!onNetherrack && !this.canNeighborBurn(world, x, y, z)) { - if(!World.doesBlockHaveSolidTopSurface(world, x, y - 1, z)) { - world.setBlockToAir(x, y, z); - } + if(!this.canNeighborBurn(world, x, y, z) && !World.doesBlockHaveSolidTopSurface(world, x, y - 1, z)) { + world.setBlockToAir(x, y, z); } else { if(meta < 15) { this.tryCatchFire(world, x + 1, y, z, 500, rand, meta, WEST); @@ -71,31 +71,33 @@ public class Balefire extends BlockFire { this.tryCatchFire(world, x, y + 1, z, 300, rand, meta, DOWN); this.tryCatchFire(world, x, y, z - 1, 500, rand, meta, SOUTH); this.tryCatchFire(world, x, y, z + 1, 500, rand, meta, NORTH); - } + + int h = 3; - for(int i1 = x - 1; i1 <= x + 1; ++i1) { - for(int j1 = z - 1; j1 <= z + 1; ++j1) { - for(int k1 = y - 1; k1 <= y + 4; ++k1) { - if(i1 != x || k1 != y || j1 != z) { - int l1 = 100; + for(int ix = x - h; ix <= x + h; ++ix) { + for(int iz = z - h; iz <= z + h; ++iz) { + for(int iy = y - 1; iy <= y + 4; ++iy) { + + if(ix != x || iy != y || iz != z) { + int fireLimit = 100; - if(k1 > y + 1) { - l1 += (k1 - (y + 1)) * 100; - } + if(iy > y + 1) { + fireLimit += (iy - (y + 1)) * 100; + } + + if(world.getBlock(ix, iy, iz) == ModBlocks.balefire && world.getBlockMetadata(ix, iy, iz) > meta + 1) { + world.setBlock(ix, iy, iz, this, meta + 1, 3); + continue; + } - int i2 = this.getChanceOfNeighborsEncouragingFire(world, i1, k1, j1); + int neighborFireChance = this.getChanceOfNeighborsEncouragingFire(world, ix, iy, iz); - if(i2 > 0) { - int j2 = (i2 + 40 + world.difficultySetting.getDifficultyId() * 7) / (meta + 30); + if(neighborFireChance > 0) { + int adjustedFireChance = (neighborFireChance + 40 + world.difficultySetting.getDifficultyId() * 7) / (meta + 30); - if(j2 > 0 && rand.nextInt(l1) <= j2) { - int k2 = meta + rand.nextInt(5) / 4; - - if(k2 > 15) { - k2 = 15; + if(adjustedFireChance > 0 && rand.nextInt(fireLimit) <= adjustedFireChance) { + world.setBlock(ix, iy, iz, this, meta + 1, 3); } - - world.setBlock(i1, k1, j1, this, k2, 3); } } } @@ -156,5 +158,15 @@ public class Balefire extends BlockFire { if(entity instanceof EntityLivingBase) ((EntityLivingBase) entity).addPotionEffect(new PotionEffect(HbmPotion.radiation.id, 5 * 20, 9)); } + + @SideOnly(Side.CLIENT) + public int colorMultiplier(IBlockAccess world, int x, int y, int z) { + int meta = world.getBlockMetadata(x, y, z); + return Color.HSBtoRGB(0F, 0F, 1F - meta / 30F); + } + @Override + public int getRenderType() { + return 1; + } } diff --git a/src/main/java/com/hbm/blocks/bomb/BlockCrashedBomb.java b/src/main/java/com/hbm/blocks/bomb/BlockCrashedBomb.java index 730cac10b..93683f0d2 100644 --- a/src/main/java/com/hbm/blocks/bomb/BlockCrashedBomb.java +++ b/src/main/java/com/hbm/blocks/bomb/BlockCrashedBomb.java @@ -98,7 +98,7 @@ public class BlockCrashedBomb extends BlockContainer implements IBomb { if(!world.isRemote) { world.setBlockToAir(x, y, z); - EntityBalefire bf = new EntityBalefire(world).mute(); + EntityBalefire bf = new EntityBalefire(world); bf.posX = x; bf.posY = y; bf.posZ = z; diff --git a/src/main/java/com/hbm/blocks/generic/BlockCableConnect.java b/src/main/java/com/hbm/blocks/generic/BlockCableConnect.java index c4215befa..c7999fda1 100644 --- a/src/main/java/com/hbm/blocks/generic/BlockCableConnect.java +++ b/src/main/java/com/hbm/blocks/generic/BlockCableConnect.java @@ -2,7 +2,7 @@ package com.hbm.blocks.generic; import com.hbm.blocks.BlockBase; -import api.hbm.energy.IEnergyConnectorBlock; +import api.hbm.energymk2.IEnergyConnectorBlock; import net.minecraft.block.material.Material; import net.minecraft.world.IBlockAccess; import net.minecraftforge.common.util.ForgeDirection; diff --git a/src/main/java/com/hbm/blocks/generic/HEVBattery.java b/src/main/java/com/hbm/blocks/generic/HEVBattery.java index dbaa4f89d..e65f03038 100644 --- a/src/main/java/com/hbm/blocks/generic/HEVBattery.java +++ b/src/main/java/com/hbm/blocks/generic/HEVBattery.java @@ -3,7 +3,7 @@ package com.hbm.blocks.generic; import com.hbm.items.armor.ArmorFSB; import com.hbm.items.armor.ArmorFSBPowered; -import api.hbm.energy.IBatteryItem; +import api.hbm.energymk2.IBatteryItem; import cpw.mods.fml.client.registry.RenderingRegistry; import net.minecraft.block.Block; import net.minecraft.block.material.Material; diff --git a/src/main/java/com/hbm/blocks/machine/DummyOldBase.java b/src/main/java/com/hbm/blocks/machine/DummyOldBase.java index 4d5c183fd..da688e90f 100644 --- a/src/main/java/com/hbm/blocks/machine/DummyOldBase.java +++ b/src/main/java/com/hbm/blocks/machine/DummyOldBase.java @@ -7,7 +7,7 @@ import com.hbm.interfaces.IMultiblock; import com.hbm.inventory.fluid.FluidType; import com.hbm.tileentity.machine.TileEntityDummy; -import api.hbm.energy.IEnergyConnectorBlock; +import api.hbm.energymk2.IEnergyConnectorBlock; import api.hbm.fluid.IFluidConnectorBlock; import net.minecraft.block.Block; import net.minecraft.block.BlockContainer; diff --git a/src/main/java/com/hbm/blocks/machine/FWatzHatch.java b/src/main/java/com/hbm/blocks/machine/FWatzHatch.java index 69a7e5871..d93735c53 100644 --- a/src/main/java/com/hbm/blocks/machine/FWatzHatch.java +++ b/src/main/java/com/hbm/blocks/machine/FWatzHatch.java @@ -8,7 +8,7 @@ import com.hbm.lib.RefStrings; import com.hbm.main.MainRegistry; import com.hbm.tileentity.machine.TileEntityFWatzCore; -import api.hbm.energy.IEnergyConnectorBlock; +import api.hbm.energymk2.IEnergyConnectorBlock; import api.hbm.fluid.IFluidConnectorBlock; import cpw.mods.fml.common.network.internal.FMLNetworkHandler; import cpw.mods.fml.relauncher.Side; diff --git a/src/main/java/com/hbm/blocks/machine/FoundrySlagtap.java b/src/main/java/com/hbm/blocks/machine/FoundrySlagtap.java index da54714cf..e2543deaf 100644 --- a/src/main/java/com/hbm/blocks/machine/FoundrySlagtap.java +++ b/src/main/java/com/hbm/blocks/machine/FoundrySlagtap.java @@ -6,10 +6,8 @@ import com.hbm.tileentity.machine.TileEntityFoundrySlagtap; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; import net.minecraft.client.renderer.texture.IIconRegister; -import net.minecraft.entity.player.EntityPlayer; import net.minecraft.tileentity.TileEntity; import net.minecraft.world.World; -import net.minecraftforge.client.event.RenderGameOverlayEvent.Pre; public class FoundrySlagtap extends FoundryOutlet { diff --git a/src/main/java/com/hbm/blocks/machine/MachineCapacitor.java b/src/main/java/com/hbm/blocks/machine/MachineCapacitor.java index be083f6e3..5abb1e502 100644 --- a/src/main/java/com/hbm/blocks/machine/MachineCapacitor.java +++ b/src/main/java/com/hbm/blocks/machine/MachineCapacitor.java @@ -17,7 +17,8 @@ import com.hbm.util.BobMathUtil; import com.hbm.util.I18nUtil; import com.hbm.util.fauxpointtwelve.BlockPos; -import api.hbm.energy.IEnergyUser; +import api.hbm.energymk2.IEnergyProviderMK2; +import api.hbm.energymk2.IEnergyReceiverMK2; import cpw.mods.fml.client.registry.RenderingRegistry; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; @@ -145,11 +146,10 @@ public class MachineCapacitor extends BlockContainer implements ILookOverlay, IP player.addExhaustion(0.025F); } - public static class TileEntityCapacitor extends TileEntityLoadedBase implements IEnergyUser, INBTPacketReceiver, IPersistentNBT { + public static class TileEntityCapacitor extends TileEntityLoadedBase implements IEnergyProviderMK2, IEnergyReceiverMK2, INBTPacketReceiver, IPersistentNBT { public long power; protected long maxPower; - public long prevPower; public long powerReceived; public long powerSent; @@ -164,8 +164,6 @@ public class MachineCapacitor extends BlockContainer implements ILookOverlay, IP if(!worldObj.isRemote) { - long gain = power - prevPower; - ForgeDirection opp = ForgeDirection.getOrientation(this.getBlockMetadata()); ForgeDirection dir = opp.getOpposite(); @@ -187,26 +185,45 @@ public class MachineCapacitor extends BlockContainer implements ILookOverlay, IP pos = pos.offset(current); } - long preSend = power; if(pos != null && last != null) { this.tryUnsubscribe(worldObj, pos.getX(), pos.getY(), pos.getZ()); - this.sendPower(worldObj, pos.getX(), pos.getY(), pos.getZ(), last); + this.tryProvide(worldObj, pos.getX(), pos.getY(), pos.getZ(), last); } - long sent = preSend - power; this.trySubscribe(worldObj, xCoord + opp.offsetX, yCoord+ opp.offsetY, zCoord + opp.offsetZ, opp); NBTTagCompound data = new NBTTagCompound(); data.setLong("power", power); data.setLong("maxPower", maxPower); - data.setLong("rec", gain); - data.setLong("sent", sent); + data.setLong("rec", powerReceived); + data.setLong("sent", powerSent); INBTPacketReceiver.networkPack(this, data, 15); - this.prevPower = power; + this.powerSent = 0; + this.powerReceived = 0; } } + @Override + public long transferPower(long power) { + if(power + this.getPower() <= this.getMaxPower()) { + this.setPower(power + this.getPower()); + this.powerReceived += power; + return 0; + } + long capacity = this.getMaxPower() - this.getPower(); + long overshoot = power - capacity; + this.powerReceived += (this.getMaxPower() - this.getPower()); + this.setPower(this.getMaxPower()); + return overshoot; + } + + @Override + public void usePower(long power) { + this.powerSent += Math.min(this.getPower(), power); + this.setPower(this.getPower() - power); + } + @Override public void networkUnpack(NBTTagCompound nbt) { this.power = nbt.getLong("power"); diff --git a/src/main/java/com/hbm/blocks/machine/MachineCapacitorBus.java b/src/main/java/com/hbm/blocks/machine/MachineCapacitorBus.java index fa7aa8dbe..dade916fa 100644 --- a/src/main/java/com/hbm/blocks/machine/MachineCapacitorBus.java +++ b/src/main/java/com/hbm/blocks/machine/MachineCapacitorBus.java @@ -5,7 +5,7 @@ import java.util.List; import com.hbm.blocks.ITooltipProvider; import com.hbm.lib.RefStrings; -import api.hbm.energy.IEnergyConnectorBlock; +import api.hbm.energymk2.IEnergyConnectorBlock; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; import net.minecraft.block.Block; diff --git a/src/main/java/com/hbm/blocks/machine/MachineSeleniumEngine.java b/src/main/java/com/hbm/blocks/machine/MachineSeleniumEngine.java index d1d598932..933514087 100644 --- a/src/main/java/com/hbm/blocks/machine/MachineSeleniumEngine.java +++ b/src/main/java/com/hbm/blocks/machine/MachineSeleniumEngine.java @@ -1,10 +1,7 @@ package com.hbm.blocks.machine; -import java.util.List; import java.util.Random; -import com.hbm.blocks.ITooltipProvider; -import com.hbm.inventory.fluid.trait.FT_Combustible.FuelGrade; import com.hbm.main.MainRegistry; import com.hbm.tileentity.machine.TileEntityMachineSeleniumEngine; @@ -18,11 +15,10 @@ import net.minecraft.entity.player.EntityPlayer; import net.minecraft.item.ItemStack; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.tileentity.TileEntity; -import net.minecraft.util.EnumChatFormatting; import net.minecraft.util.MathHelper; import net.minecraft.world.World; -public class MachineSeleniumEngine extends BlockContainer implements ITooltipProvider { +public class MachineSeleniumEngine extends BlockContainer { private final Random field_149933_a = new Random(); private static boolean keepInventory; @@ -127,18 +123,4 @@ public class MachineSeleniumEngine extends BlockContainer implements ITooltipPro return false; } } - - @Override - public void addInformation(ItemStack stack, EntityPlayer player, List list, boolean ext) { - - list.add(EnumChatFormatting.YELLOW + "Fuel efficiency:"); - for(FuelGrade grade : FuelGrade.values()) { - Double efficiency = TileEntityMachineSeleniumEngine.fuelEfficiency.get(grade); - - if(efficiency != null) { - int eff = (int) (efficiency * 100); - list.add(EnumChatFormatting.YELLOW + "-" + grade.getGrade() + ": " + EnumChatFormatting.RED + "" + eff + "%"); - } - } - } } diff --git a/src/main/java/com/hbm/blocks/machine/MachineStrandCaster.java b/src/main/java/com/hbm/blocks/machine/MachineStrandCaster.java index 84adc2375..89435b761 100644 --- a/src/main/java/com/hbm/blocks/machine/MachineStrandCaster.java +++ b/src/main/java/com/hbm/blocks/machine/MachineStrandCaster.java @@ -7,7 +7,6 @@ import com.hbm.blocks.ILookOverlay; import com.hbm.handler.MultiblockHandlerXR; import com.hbm.inventory.material.Mats; import com.hbm.items.ModItems; -import com.hbm.items.machine.ItemMold; import com.hbm.items.machine.ItemScraps; import com.hbm.tileentity.TileEntityProxyCombo; import com.hbm.tileentity.machine.TileEntityMachineStrandCaster; diff --git a/src/main/java/com/hbm/blocks/machine/NTMAnvil.java b/src/main/java/com/hbm/blocks/machine/NTMAnvil.java index c71865430..16623e7b1 100644 --- a/src/main/java/com/hbm/blocks/machine/NTMAnvil.java +++ b/src/main/java/com/hbm/blocks/machine/NTMAnvil.java @@ -39,6 +39,15 @@ import net.minecraft.world.World; import net.minecraftforge.client.model.obj.WavefrontObject; public class NTMAnvil extends BlockFallingNT implements ITooltipProvider, IGUIProvider { + + public static final int TIER_IRON = 1; + public static final int TIER_STEEL = 2; + public static final int TIER_OIL = 3; + public static final int TIER_NUCLEAR = 4; + public static final int TIER_RBMK = 5; + public static final int TIER_FUSION = 6; + public static final int TIER_PARTICLE = 7; + public static final int TIER_GERALD = 8; public final int tier; diff --git a/src/main/java/com/hbm/blocks/machine/pile/BlockGraphiteFuel.java b/src/main/java/com/hbm/blocks/machine/pile/BlockGraphiteFuel.java index 3e827f3a3..7b3b892ca 100644 --- a/src/main/java/com/hbm/blocks/machine/pile/BlockGraphiteFuel.java +++ b/src/main/java/com/hbm/blocks/machine/pile/BlockGraphiteFuel.java @@ -47,7 +47,7 @@ public class BlockGraphiteFuel extends BlockGraphiteDrilledTE implements IToolab @Override public int getComparatorInputOverride(World world, int x, int y, int z, int side) { TileEntityPileFuel pile = (TileEntityPileFuel)world.getTileEntity(x, y, z); - return MathHelper.clamp_int((pile.progress * 16) / (pile.maxProgress - 1000), 0, 15); //potentially wip + return MathHelper.clamp_int((pile.progress * 15) / (pile.maxProgress - 1000), 0, 15); } @Override diff --git a/src/main/java/com/hbm/blocks/network/BlockCableGauge.java b/src/main/java/com/hbm/blocks/network/BlockCableGauge.java index 54921d0c7..980bdfb32 100644 --- a/src/main/java/com/hbm/blocks/network/BlockCableGauge.java +++ b/src/main/java/com/hbm/blocks/network/BlockCableGauge.java @@ -1,6 +1,5 @@ package com.hbm.blocks.network; -import java.math.BigInteger; import java.util.ArrayList; import java.util.List; @@ -14,6 +13,7 @@ import com.hbm.tileentity.network.TileEntityCableBaseNT; import com.hbm.util.BobMathUtil; import com.hbm.util.I18nUtil; +import api.hbm.energymk2.PowerNetMK2; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; import net.minecraft.block.BlockContainer; @@ -100,7 +100,6 @@ public class BlockCableGauge extends BlockContainer implements IBlockMultiPass, public static class TileEntityCableGauge extends TileEntityCableBaseNT implements INBTPacketReceiver { - private BigInteger lastMeasurement = BigInteger.valueOf(10); private long deltaTick = 0; private long deltaSecond = 0; private long deltaLastSecond = 0; @@ -111,20 +110,16 @@ public class BlockCableGauge extends BlockContainer implements IBlockMultiPass, if(!worldObj.isRemote) { - if(network != null) { - BigInteger total = network.getTotalTransfer(); - BigInteger delta = total.subtract(this.lastMeasurement); - this.lastMeasurement = total; + if(this.node != null && this.node.net != null) { - try { - this.deltaTick = delta.longValueExact(); - if(worldObj.getTotalWorldTime() % 20 == 0) { - this.deltaLastSecond = this.deltaSecond; - this.deltaSecond = 0; - } - this.deltaSecond += deltaTick; - - } catch(Exception ex) { } + PowerNetMK2 net = this.node.net; + + this.deltaTick = net.energyTracker; + if(worldObj.getTotalWorldTime() % 20 == 0) { + this.deltaLastSecond = this.deltaSecond; + this.deltaSecond = 0; + } + this.deltaSecond += deltaTick; } NBTTagCompound data = new NBTTagCompound(); diff --git a/src/main/java/com/hbm/blocks/network/CableDiode.java b/src/main/java/com/hbm/blocks/network/CableDiode.java index 6771ccf2d..246094666 100644 --- a/src/main/java/com/hbm/blocks/network/CableDiode.java +++ b/src/main/java/com/hbm/blocks/network/CableDiode.java @@ -7,12 +7,16 @@ import com.hbm.blocks.ILookOverlay; import com.hbm.blocks.ITooltipProvider; import com.hbm.tileentity.TileEntityLoadedBase; import com.hbm.util.BobMathUtil; +import com.hbm.util.Compat; import com.hbm.util.I18nUtil; import api.hbm.block.IToolable; -import api.hbm.energy.IEnergyUser; -import api.hbm.energy.IEnergyConnector.ConnectionPriority; -import api.hbm.energy.IEnergyConnectorBlock; +import api.hbm.energymk2.IEnergyConnectorBlock; +import api.hbm.energymk2.IEnergyConnectorMK2; +import api.hbm.energymk2.IEnergyReceiverMK2; +import api.hbm.energymk2.Nodespace; +import api.hbm.energymk2.Nodespace.PowerNode; +import api.hbm.energymk2.IEnergyReceiverMK2.ConnectionPriority; import cpw.mods.fml.client.registry.RenderingRegistry; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; @@ -98,7 +102,7 @@ public class CableDiode extends BlockContainer implements IEnergyConnectorBlock, if(tool == ToolType.DEFUSER) { int p = te.priority.ordinal() + 1; - if(p > 2) p = 0; + if(p > 4) p = 0; te.priority = ConnectionPriority.values()[p]; te.markDirty(); world.markBlockForUpdate(x, y, z); @@ -138,7 +142,7 @@ public class CableDiode extends BlockContainer implements IEnergyConnectorBlock, return new TileEntityDiode(); } - public static class TileEntityDiode extends TileEntityLoadedBase implements IEnergyUser { + public static class TileEntityDiode extends TileEntityLoadedBase implements IEnergyReceiverMK2 { @Override public void readFromNBT(NBTTagCompound nbt) { @@ -183,6 +187,9 @@ public class CableDiode extends BlockContainer implements IEnergyConnectorBlock, this.trySubscribe(worldObj, xCoord + dir.offsetX, yCoord + dir.offsetY, zCoord + dir.offsetZ, dir); } + + pulses = 0; + this.setPower(0); //tick is over, reset our allowed transfe } } @@ -191,10 +198,9 @@ public class CableDiode extends BlockContainer implements IEnergyConnectorBlock, return dir != getDir(); } + /** Used as an intra-tick tracker for how much energy has been transmitted, resets to 0 each tick and maxes out based on transfer */ + private long power; private boolean recursionBrake = false; - private long subBuffer; - private long contingent = 0; - private long lastTransfer = 0; private int pulses = 0; public ConnectionPriority priority = ConnectionPriority.NORMAL; @@ -205,36 +211,40 @@ public class CableDiode extends BlockContainer implements IEnergyConnectorBlock, return power; pulses++; - - if(lastTransfer != worldObj.getTotalWorldTime()) { - lastTransfer = worldObj.getTotalWorldTime(); - contingent = getMaxPower(); - pulses = 0; - } - - if(contingent <= 0 || pulses > 10) - return power; - - //this part turns "maxPower" from a glorified transfer weight into an actual transfer cap - long overShoot = Math.max(0, power - contingent); - power = Math.min(power, contingent); + if(this.getPower() >= this.getMaxPower() || pulses > 10) return power; //if we have already maxed out transfer or max pulses, abort recursionBrake = true; - this.subBuffer = power; ForgeDirection dir = getDir(); - this.sendPower(worldObj, xCoord + dir.offsetX, yCoord + dir.offsetY, zCoord + dir.offsetZ, dir); - long ret = this.subBuffer; + PowerNode node = Nodespace.getNode(worldObj, xCoord + dir.offsetX, yCoord + dir.offsetY, zCoord + dir.offsetZ); + TileEntity te = Compat.getTileStandard(worldObj, xCoord + dir.offsetX, yCoord + dir.offsetY, zCoord + dir.offsetZ); - long sent = power - ret; - contingent -= sent; + if(node != null && !node.expired && node.hasValidNet() && te instanceof IEnergyConnectorMK2 && ((IEnergyConnectorMK2) te).canConnect(dir.getOpposite())) { + long toTransfer = Math.min(power, this.getReceiverSpeed()); + long remainder = node.net.sendPowerDiode(toTransfer); + long transferred = (toTransfer - remainder); + this.power += transferred; + power -= transferred; + + } else if(te instanceof IEnergyReceiverMK2 && te != this) { + IEnergyReceiverMK2 rec = (IEnergyReceiverMK2) te; + if(rec.canConnect(dir.getOpposite())) { + long toTransfer = Math.min(power, rec.getReceiverSpeed()); + long remainder = rec.transferPower(toTransfer); + power -= (toTransfer - remainder); + recursionBrake = false; + return power; + } + } - this.subBuffer = 0; recursionBrake = false; - - return ret + overShoot; + return power; } + @Override + public long getReceiverSpeed() { + return this.getMaxPower() - this.getPower(); + } @Override public long getMaxPower() { @@ -243,12 +253,12 @@ public class CableDiode extends BlockContainer implements IEnergyConnectorBlock, @Override public long getPower() { - return subBuffer; + return Math.min(power, this.getMaxPower()); } @Override public void setPower(long power) { - this.subBuffer = power; + this.power = power; } @Override diff --git a/src/main/java/com/hbm/blocks/network/PylonBase.java b/src/main/java/com/hbm/blocks/network/PylonBase.java index f2bf0c675..bf35c9fbe 100644 --- a/src/main/java/com/hbm/blocks/network/PylonBase.java +++ b/src/main/java/com/hbm/blocks/network/PylonBase.java @@ -6,6 +6,7 @@ import com.hbm.tileentity.network.TileEntityPylonBase; import net.minecraft.block.Block; import net.minecraft.block.BlockContainer; import net.minecraft.block.material.Material; +import net.minecraft.entity.player.EntityPlayer; import net.minecraft.tileentity.TileEntity; import net.minecraft.world.World; @@ -41,4 +42,16 @@ public abstract class PylonBase extends BlockContainer implements ITooltipProvid public boolean renderAsNormalBlock() { return false; } + + @Override + public boolean onBlockActivated(World world, int x, int y, int z, EntityPlayer player, int side, float hitX, float hitY, float hitZ) { + if(world.isRemote) { + return true; + } else if(!player.isSneaking()) { + TileEntityPylonBase te = (TileEntityPylonBase) world.getTileEntity(x, y, z); + return te.setColor(player.getHeldItem()); + } else { + return false; + } + } } diff --git a/src/main/java/com/hbm/blocks/network/PylonLarge.java b/src/main/java/com/hbm/blocks/network/PylonLarge.java index 395b27dd1..6333a6e28 100644 --- a/src/main/java/com/hbm/blocks/network/PylonLarge.java +++ b/src/main/java/com/hbm/blocks/network/PylonLarge.java @@ -82,4 +82,17 @@ public class PylonLarge extends BlockDummyable implements ITooltipProvider { return dir.ordinal() + offset; } + + @Override + public boolean onBlockActivated(World world, int x, int y, int z, EntityPlayer player, int side, float hitX, float hitY, float hitZ) { + if(world.isRemote) { + return true; + } else if(!player.isSneaking()) { + int[] pos = this.findCore(world, x, y, z); + TileEntityPylonBase te = (TileEntityPylonBase) world.getTileEntity(pos[0], pos[1], pos[2]); + return te.setColor(player.getHeldItem()); + } else { + return false; + } + } } diff --git a/src/main/java/com/hbm/blocks/network/PylonMedium.java b/src/main/java/com/hbm/blocks/network/PylonMedium.java new file mode 100644 index 000000000..7a29f4614 --- /dev/null +++ b/src/main/java/com/hbm/blocks/network/PylonMedium.java @@ -0,0 +1,66 @@ +package com.hbm.blocks.network; + +import java.util.List; + +import com.hbm.blocks.BlockDummyable; +import com.hbm.blocks.ITooltipProvider; +import com.hbm.tileentity.network.TileEntityPylonBase; +import com.hbm.tileentity.network.TileEntityPylonMedium; + +import net.minecraft.block.Block; +import net.minecraft.block.material.Material; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.item.ItemStack; +import net.minecraft.tileentity.TileEntity; +import net.minecraft.util.EnumChatFormatting; +import net.minecraft.world.World; + +public class PylonMedium extends BlockDummyable implements ITooltipProvider { + + public PylonMedium(Material mat) { + super(mat); + } + + @Override + public TileEntity createNewTileEntity(World world, int meta) { + + if(meta >= 12) return new TileEntityPylonMedium(); + return null; + } + + @Override + public void addInformation(ItemStack stack, EntityPlayer player, List list, boolean ext) { + list.add(EnumChatFormatting.GOLD + "Connection Type: " + EnumChatFormatting.YELLOW + "Triple"); + list.add(EnumChatFormatting.GOLD + "Connection Range: " + EnumChatFormatting.YELLOW + "45m"); + } + + @Override + public int[] getDimensions() { + return new int[] {6, 0, 0, 0, 0, 0}; + } + + @Override + public int getOffset() { + return 0; + } + + @Override + public void breakBlock(World world, int x, int y, int z, Block b, int m) { + TileEntity te = world.getTileEntity(x, y, z); + if(te instanceof TileEntityPylonBase) ((TileEntityPylonBase)te).disconnectAll(); + super.breakBlock(world, x, y, z, b, m); + } + + @Override + public boolean onBlockActivated(World world, int x, int y, int z, EntityPlayer player, int side, float hitX, float hitY, float hitZ) { + if(world.isRemote) { + return true; + } else if(!player.isSneaking()) { + int[] pos = this.findCore(world, x, y, z); + TileEntityPylonBase te = (TileEntityPylonBase) world.getTileEntity(pos[0], pos[1], pos[2]); + return te.setColor(player.getHeldItem()); + } else { + return false; + } + } +} diff --git a/src/main/java/com/hbm/blocks/network/Substation.java b/src/main/java/com/hbm/blocks/network/Substation.java index 7499992fd..6c8e3cb34 100644 --- a/src/main/java/com/hbm/blocks/network/Substation.java +++ b/src/main/java/com/hbm/blocks/network/Substation.java @@ -72,4 +72,17 @@ public class Substation extends BlockDummyable implements ITooltipProvider { this.makeExtra(world, x + dir.offsetX * o - 1, y, z + dir.offsetZ * o + 1); this.makeExtra(world, x + dir.offsetX * o - 1, y, z + dir.offsetZ * o - 1); } + + @Override + public boolean onBlockActivated(World world, int x, int y, int z, EntityPlayer player, int side, float hitX, float hitY, float hitZ) { + if(world.isRemote) { + return true; + } else if(!player.isSneaking()) { + int[] pos = this.findCore(world, x, y, z); + TileEntityPylonBase te = (TileEntityPylonBase) world.getTileEntity(pos[0], pos[1], pos[2]); + return te.setColor(player.getHeldItem()); + } else { + return false; + } + } } diff --git a/src/main/java/com/hbm/config/CommonConfig.java b/src/main/java/com/hbm/config/CommonConfig.java index 46acd791a..7fce253e8 100644 --- a/src/main/java/com/hbm/config/CommonConfig.java +++ b/src/main/java/com/hbm/config/CommonConfig.java @@ -87,4 +87,21 @@ public class CommonConfig { return prop.getStringList(); } + public static int parseStructureFlag(String flag) { + if(flag == null) flag = ""; + + switch(flag.toLowerCase(Locale.US)) { + case "true": + case "on": + case "yes": + return 1; + case "false": + case "off": + case "no": + return 0; + default: + return 2; + } + } + } diff --git a/src/main/java/com/hbm/config/GeneralConfig.java b/src/main/java/com/hbm/config/GeneralConfig.java index 99eb1fed8..75c61aed1 100644 --- a/src/main/java/com/hbm/config/GeneralConfig.java +++ b/src/main/java/com/hbm/config/GeneralConfig.java @@ -9,7 +9,7 @@ public class GeneralConfig { public static boolean enableDebugMode = true; public static boolean enableMycelium = false; public static boolean enablePlutoniumOre = false; - public static boolean enableDungeons = true; + public static int enableDungeons = 2; public static boolean enableMDOres = true; public static boolean enableMines = true; public static boolean enableRad = true; @@ -26,7 +26,6 @@ public class GeneralConfig { public static boolean enableRenderDistCheck = true; public static boolean enableReEval = true; public static boolean enableSilentCompStackErrors = true; - public static boolean enableChunkyNEIHandler = true; public static boolean enableSkyboxes = true; public static boolean enableImpactWorldProvider = true; public static boolean enableStatReRegistering = true; @@ -35,6 +34,7 @@ public class GeneralConfig { public static boolean enableMOTD = true; public static boolean enableGuideBook = true; public static boolean enableSteamParticles = true; + public static boolean enableSoundExtension = true; public static int hintPos = 0; public static boolean enableExpensiveMode = false; @@ -73,7 +73,10 @@ public class GeneralConfig { enableDebugMode = config.get(CATEGORY_GENERAL, "1.00_enableDebugMode", false, "Enable debugging mode").getBoolean(false); enableMycelium = config.get(CATEGORY_GENERAL, "1.01_enableMyceliumSpread", false, "Allows glowing mycelium to spread").getBoolean(false); enablePlutoniumOre = config.get(CATEGORY_GENERAL, "1.02_enablePlutoniumNetherOre", false, "Enables plutonium ore generation in the nether").getBoolean(false); - enableDungeons = config.get(CATEGORY_GENERAL, "1.03_enableDungeonSpawn", true, "Allows structures and dungeons to spawn").getBoolean(true); + + String unparsedDungeonFlag = config.get(CATEGORY_GENERAL, "1.03_enableDungeonSpawn", "flag", "Allows structures and dungeons to spawn. Valid values are true|false|flag - flag will respect the \"Generate Structures\" world flag.").getString(); + enableDungeons = CommonConfig.parseStructureFlag(unparsedDungeonFlag); + enableMDOres = config.get(CATEGORY_GENERAL, "1.04_enableOresInModdedDimensions", true, "Allows NTM ores to generate in modded dimensions").getBoolean(true); enableMines = config.get(CATEGORY_GENERAL, "1.05_enableLandmineSpawn", true, "Allows landmines to generate").getBoolean(true); enableRad = config.get(CATEGORY_GENERAL, "1.06_enableRadHotspotSpawn", true, "Allows radiation hotspots to generate").getBoolean(true); @@ -91,7 +94,6 @@ public class GeneralConfig { enableReEval = config.get(CATEGORY_GENERAL, "1.27_enableReEval", true, "Allows re-evaluating power networks on link remove instead of destroying and recreating").getBoolean(true); enableSilentCompStackErrors = config.get(CATEGORY_GENERAL, "1.28_enableSilentCompStackErrors", false, "Enabling this will disable log spam created by unregistered items in ComparableStack instances.").getBoolean(false); hintPos = CommonConfig.createConfigInt(config, CATEGORY_GENERAL, "1.29_hudOverlayPosition", "0: Top left\n1: Top right\n2: Center right\n3: Center Left", 0); - enableChunkyNEIHandler = config.get(CATEGORY_GENERAL, "1.30_enableChunkyNEIHandler", true, "If enabled, registers a NEI handler that will show the chosen item in a larger view.").getBoolean(true); enableSkyboxes = config.get(CATEGORY_GENERAL, "1.31_enableSkyboxes", true, "If enabled, will try to use NTM's custom skyboxes.").getBoolean(true); enableImpactWorldProvider = config.get(CATEGORY_GENERAL, "1.32_enableImpactWorldProvider", true, "If enabled, registers custom world provider which modifies lighting and sky colors for post impact effects.").getBoolean(true); enableStatReRegistering = config.get(CATEGORY_GENERAL, "1.33_enableStatReRegistering", true, "If enabled, will re-register item crafting/breaking/usage stats in order to fix a forge bug where modded items just won't show up.").getBoolean(true); @@ -100,6 +102,7 @@ public class GeneralConfig { enableMOTD = config.get(CATEGORY_GENERAL, "1.36_enableMOTD", true, "If enabled, shows the 'Loaded mod!' chat message as well as update notifications when joining a world").getBoolean(true); enableGuideBook = config.get(CATEGORY_GENERAL, "1.37_enableGuideBook", true, "If enabled, gives players the guide book when joining the world for the first time").getBoolean(true); enableSteamParticles = config.get(CATEGORY_GENERAL, "1.38_enableSteamParticles",true, "If disabled, auxiliary cooling towers and large cooling towers will not emit steam particles when in use.").getBoolean(true); + enableSoundExtension = config.get(CATEGORY_GENERAL, "1.39_enableSoundExtension",true, "If enabled, will change the limit for how many sounds can play at once.").getBoolean(true); enableExpensiveMode = config.get(CATEGORY_GENERAL, "1.99_enableExpensiveMode", false, "It does what the name implies.").getBoolean(false); diff --git a/src/main/java/com/hbm/config/StructureConfig.java b/src/main/java/com/hbm/config/StructureConfig.java index 9d6ad3cc0..944a7cbb0 100644 --- a/src/main/java/com/hbm/config/StructureConfig.java +++ b/src/main/java/com/hbm/config/StructureConfig.java @@ -8,7 +8,7 @@ import net.minecraftforge.common.config.Configuration; public class StructureConfig { - public static boolean enableStructures = true; + public static int enableStructures = 2; public static int structureMinChunks = 8; public static int structureMaxChunks = 24; @@ -18,7 +18,10 @@ public class StructureConfig { public static void loadFromConfig(Configuration config) { final String CATEGORY_STRUCTURES = CommonConfig.CATEGORY_STRUCTURES; - enableStructures = CommonConfig.createConfigBool(config, CATEGORY_STRUCTURES, "5.00_enableStructures", "Switch for whether structures using the MapGenStructure system spawn.", true); + + String unparsedStructureFlag = CommonConfig.createConfigString(config, CATEGORY_STRUCTURES, "5.00_enableStructures", "Flag for whether modern NTM structures will spawn. Valid values are true|false|flag - flag will respect the \"Generate Structures\" world flag.", "flag"); + + enableStructures = CommonConfig.parseStructureFlag(unparsedStructureFlag); structureMinChunks = CommonConfig.createConfigInt(config, CATEGORY_STRUCTURES, "5.01_structureMinChunks", "Minimum non-zero distance between structures in chunks (Settings lower than 8 may be problematic).", 8); structureMaxChunks = CommonConfig.createConfigInt(config, CATEGORY_STRUCTURES, "5.02_structureMaxChunks", "Maximum non-zero distance between structures in chunks.", 24); diff --git a/src/main/java/com/hbm/config/WorldConfig.java b/src/main/java/com/hbm/config/WorldConfig.java index d8c9b2e9a..f3f3e51c9 100644 --- a/src/main/java/com/hbm/config/WorldConfig.java +++ b/src/main/java/com/hbm/config/WorldConfig.java @@ -51,6 +51,7 @@ public class WorldConfig { public static int bedrockRedstoneSpawn = 50; public static int bedrockRareEarthSpawn = 50; public static int bedrockBauxiteSpawn = 100; + public static int bedrockEmeraldSpawn = 50; public static int bedrockGlowstoneSpawn = 100; public static int bedrockPhosphorusSpawn = 50; public static int bedrockQuartzSpawn = 100; @@ -171,6 +172,7 @@ public class WorldConfig { bedrockNeodymiumSpawn = CommonConfig.createConfigInt(config, CATEGORY_OREGEN, "2.B15_bedrockNeodymiumWeight", "Spawn weight for neodymium bedrock ore", 50); bedrockRareEarthSpawn = CommonConfig.createConfigInt(config, CATEGORY_OREGEN, "2.B16_bedrockRareEarthWeight", "Spawn weight for rare earth bedrock ore", 50); bedrockBauxiteSpawn = CommonConfig.createConfigInt(config, CATEGORY_OREGEN, "2.B17_bedrockBauxiteWeight", "Spawn weight for bauxite bedrock ore", 100); + bedrockEmeraldSpawn = CommonConfig.createConfigInt(config, CATEGORY_OREGEN, "2.B18_bedrockEmeraldWeight", "Spawn weight for emerald bedrock ore", 50); bedrockGlowstoneSpawn = CommonConfig.createConfigInt(config, CATEGORY_OREGEN, "2.BN00_bedrockGlowstoneWeight", "Spawn weight for glowstone bedrock ore", 100); bedrockPhosphorusSpawn = CommonConfig.createConfigInt(config, CATEGORY_OREGEN, "2.BN01_bedrockPhosphorusWeight", "Spawn weight for phosphorus bedrock ore", 50); diff --git a/src/main/java/com/hbm/entity/effect/EntityFalloutRain.java b/src/main/java/com/hbm/entity/effect/EntityFalloutRain.java index df36d3276..519e21fa1 100644 --- a/src/main/java/com/hbm/entity/effect/EntityFalloutRain.java +++ b/src/main/java/com/hbm/entity/effect/EntityFalloutRain.java @@ -6,13 +6,13 @@ import com.hbm.config.FalloutConfigJSON; import com.hbm.config.FalloutConfigJSON.FalloutEntry; import com.hbm.config.WorldConfig; import com.hbm.entity.item.EntityFallingBlockNT; +import com.hbm.entity.logic.EntityExplosionChunkloading; import com.hbm.saveddata.AuxSavedData; import com.hbm.world.WorldUtil; import com.hbm.world.biome.BiomeGenCraterBase; import net.minecraft.block.Block; import net.minecraft.block.material.Material; -import net.minecraft.entity.Entity; import net.minecraft.init.Blocks; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.util.Vec3; @@ -24,7 +24,8 @@ import net.minecraftforge.common.util.ForgeDirection; import java.util.*; -public class EntityFalloutRain extends Entity { +public class EntityFalloutRain extends EntityExplosionChunkloading { + private boolean firstTick = true; // Of course Vanilla has it private in Entity... public EntityFalloutRain(World p_i1582_1_) { @@ -98,7 +99,8 @@ public class EntityFalloutRain extends Entity { if(biomeModified) WorldUtil.syncBiomeChange(worldObj, chunkPosX << 4, chunkPosZ << 4); } else { - setDead(); + this.clearChunkLoader(); + this.setDead(); break; } } @@ -169,7 +171,7 @@ public class EntityFalloutRain extends Entity { Block b = worldObj.getBlock(x, y, z); - if(b.getMaterial() == Material.air) continue; + if(b.getMaterial() == Material.air || b == ModBlocks.fallout) continue; if(b == Blocks.bedrock) return; if(b == ModBlocks.volcano_core) { @@ -240,6 +242,7 @@ public class EntityFalloutRain extends Entity { @Override protected void entityInit() { + super.entityInit(); this.dataWatcher.addObject(16, 0); } diff --git a/src/main/java/com/hbm/entity/effect/EntityNukeTorex.java b/src/main/java/com/hbm/entity/effect/EntityNukeTorex.java index 2995732e3..bc6eafaec 100644 --- a/src/main/java/com/hbm/entity/effect/EntityNukeTorex.java +++ b/src/main/java/com/hbm/entity/effect/EntityNukeTorex.java @@ -3,6 +3,7 @@ package com.hbm.entity.effect; import java.awt.Color; import java.util.ArrayList; +import com.hbm.main.MainRegistry; import com.hbm.util.BobMathUtil; import com.hbm.util.TrackerUtil; @@ -29,6 +30,9 @@ public class EntityNukeTorex extends Entity { public ArrayList cloudlets = new ArrayList(); //public static int cloudletLife = 200; + public boolean didPlaySound = false; + public boolean didShake = false; + public EntityNukeTorex(World world) { super(world); this.ignoreFrustumCheck = true; @@ -104,6 +108,13 @@ public class EntityNukeTorex extends Entity { .setScale(7F, 2F) .setMotion(ticksExisted > 15 ? 0.75 : 0)); } + + if(!didPlaySound) { + if(MainRegistry.proxy.me() != null && MainRegistry.proxy.me().getDistanceToEntity(this) < (ticksExisted * 1.5 + 1) * 1.5) { + MainRegistry.proxy.playSoundClient(posX, posY, posZ, "hbm:weapon.nuclearExplosion", 10_000F, 1F); + didPlaySound = true; + } + } } // spawn ring clouds diff --git a/src/main/java/com/hbm/entity/logic/EntityBalefire.java b/src/main/java/com/hbm/entity/logic/EntityBalefire.java index 73c8e51b2..b368e171d 100644 --- a/src/main/java/com/hbm/entity/logic/EntityBalefire.java +++ b/src/main/java/com/hbm/entity/logic/EntityBalefire.java @@ -17,7 +17,6 @@ public class EntityBalefire extends EntityExplosionChunkloading { public ExplosionBalefire exp; public int speed = 1; public boolean did = false; - public boolean mute = false; @Override protected void readEntityFromNBT(NBTTagCompound nbt) { @@ -25,7 +24,6 @@ public class EntityBalefire extends EntityExplosionChunkloading { destructionRange = nbt.getInteger("destructionRange"); speed = nbt.getInteger("speed"); did = nbt.getBoolean("did"); - mute = nbt.getBoolean("mute"); exp = new ExplosionBalefire((int)this.posX, (int)this.posY, (int)this.posZ, this.worldObj, this.destructionRange); @@ -41,7 +39,6 @@ public class EntityBalefire extends EntityExplosionChunkloading { nbt.setInteger("destructionRange", destructionRange); nbt.setInteger("speed", speed); nbt.setBoolean("did", did); - nbt.setBoolean("mute", mute); if(exp != null) exp.saveToNbt(nbt, "exp_"); @@ -79,22 +76,10 @@ public class EntityBalefire extends EntityExplosionChunkloading { } } - if(!mute && rand.nextInt(5) == 0) - this.worldObj.playSoundEffect(this.posX, this.posY, this.posZ, "random.explode", 10000.0F, 0.8F + this.rand.nextFloat() * 0.2F); - if(!flag) { - - if(!mute) - this.worldObj.playSoundEffect(this.posX, this.posY, this.posZ, "ambient.weather.thunder", 10000.0F, 0.8F + this.rand.nextFloat() * 0.2F); - ExplosionNukeGeneric.dealDamage(this.worldObj, this.posX, this.posY, this.posZ, this.destructionRange * 2); } age++; } - - public EntityBalefire mute() { - this.mute = true; - return this; - } } diff --git a/src/main/java/com/hbm/entity/logic/EntityDeathBlast.java b/src/main/java/com/hbm/entity/logic/EntityDeathBlast.java index c4ffd67f3..75fea35f7 100644 --- a/src/main/java/com/hbm/entity/logic/EntityDeathBlast.java +++ b/src/main/java/com/hbm/entity/logic/EntityDeathBlast.java @@ -37,7 +37,7 @@ public class EntityDeathBlast extends Entity { if(this.ticksExisted >= maxAge && !worldObj.isRemote) { this.setDead(); - worldObj.spawnEntityInWorld(EntityNukeExplosionMK5.statFacNoRad(worldObj, 40, posX, posY, posZ).mute()); + worldObj.spawnEntityInWorld(EntityNukeExplosionMK5.statFacNoRad(worldObj, 40, posX, posY, posZ)); int count = 100; for(int i = 0; i < count; i++) { diff --git a/src/main/java/com/hbm/entity/logic/EntityEMP.java b/src/main/java/com/hbm/entity/logic/EntityEMP.java index 94a9b7d07..3ba75fc54 100644 --- a/src/main/java/com/hbm/entity/logic/EntityEMP.java +++ b/src/main/java/com/hbm/entity/logic/EntityEMP.java @@ -6,7 +6,7 @@ import java.util.List; import com.hbm.packet.PacketDispatcher; import com.hbm.packet.ParticleBurstPacket; -import api.hbm.energy.IEnergyUser; +import api.hbm.energymk2.IEnergyHandlerMK2; import cofh.api.energy.IEnergyProvider; import cpw.mods.fml.common.network.NetworkRegistry.TargetPoint; import net.minecraft.block.Block; @@ -44,19 +44,15 @@ public class EntityEMP extends Entity { private void allocate() { machines = new ArrayList(); - int radius = 100; for(int x = -radius; x <= radius; x++) { - int x2 = (int) Math.pow(x, 2); for(int y = -radius; y <= radius; y++) { - int y2 = (int) Math.pow(y, 2); for(int z = -radius; z <= radius; z++) { - int z2 = (int) Math.pow(z, 2); if(Math.sqrt(x2 + y2 + z2) <= radius) { @@ -81,7 +77,7 @@ public class EntityEMP extends Entity { private void add(int x, int y, int z) { TileEntity te = worldObj.getTileEntity(x, y, z); - if (te != null && te instanceof IEnergyUser) { + if (te != null && te instanceof IEnergyHandlerMK2) { machines.add(new int[] { x, y, z }); } else if (te != null && te instanceof IEnergyProvider) { machines.add(new int[] { x, y, z }); @@ -94,9 +90,9 @@ public class EntityEMP extends Entity { boolean flag = false; - if (te != null && te instanceof IEnergyUser) { + if (te != null && te instanceof IEnergyHandlerMK2) { - ((IEnergyUser)te).setPower(0); + ((IEnergyHandlerMK2)te).setPower(0); flag = true; } if (te != null && te instanceof IEnergyProvider) { diff --git a/src/main/java/com/hbm/entity/logic/EntityNukeExplosionMK5.java b/src/main/java/com/hbm/entity/logic/EntityNukeExplosionMK5.java index 90596a9af..dee4a3d91 100644 --- a/src/main/java/com/hbm/entity/logic/EntityNukeExplosionMK5.java +++ b/src/main/java/com/hbm/entity/logic/EntityNukeExplosionMK5.java @@ -29,8 +29,6 @@ public class EntityNukeExplosionMK5 extends EntityExplosionChunkloading { public int speed; public int length; - public boolean mute = false; - public boolean fallout = true; private int falloutAdd = 0; @@ -66,12 +64,6 @@ public class EntityNukeExplosionMK5 extends EntityExplosionChunkloading { radiate(2_500_000F / (this.ticksExisted * 5 + 1), this.length * 2); } - if(!mute) { - this.worldObj.playSoundEffect(this.posX, this.posY, this.posZ, "ambient.weather.thunder", 10000.0F, 0.8F + this.rand.nextFloat() * 0.2F); - if(rand.nextInt(5) == 0) - this.worldObj.playSoundEffect(this.posX, this.posY, this.posZ, "random.explode", 10000.0F, 0.8F + this.rand.nextFloat() * 0.2F); - } - ExplosionNukeGeneric.dealDamage(this.worldObj, this.posX, this.posY, this.posZ, this.length * 2); if(explosion == null) { @@ -135,9 +127,6 @@ public class EntityNukeExplosionMK5 extends EntityExplosionChunkloading { } } - @Override - protected void entityInit() { } - @Override protected void readEntityFromNBT(NBTTagCompound nbt) { this.ticksExisted = nbt.getInteger("ticksExisted"); @@ -177,9 +166,4 @@ public class EntityNukeExplosionMK5 extends EntityExplosionChunkloading { falloutAdd = fallout; return this; } - - public EntityNukeExplosionMK5 mute() { - this.mute = true; - return this; - } } diff --git a/src/main/java/com/hbm/entity/mob/EntityCreeperNuclear.java b/src/main/java/com/hbm/entity/mob/EntityCreeperNuclear.java index 3be14d073..1051c9222 100644 --- a/src/main/java/com/hbm/entity/mob/EntityCreeperNuclear.java +++ b/src/main/java/com/hbm/entity/mob/EntityCreeperNuclear.java @@ -120,7 +120,7 @@ public class EntityCreeperNuclear extends EntityCreeper { worldObj.playSoundEffect(posX, posY + 0.5, posZ, "hbm:weapon.mukeExplosion", 15.0F, 1.0F); if(flag) { - worldObj.spawnEntityInWorld(EntityNukeExplosionMK5.statFac(worldObj, 50, posX, posY, posZ).mute()); + worldObj.spawnEntityInWorld(EntityNukeExplosionMK5.statFac(worldObj, 50, posX, posY, posZ)); } else { ExplosionNukeGeneric.dealDamage(worldObj, posX, posY + 0.5, posZ, 100); } diff --git a/src/main/java/com/hbm/entity/mob/glyphid/EntityGlyphidBehemoth.java b/src/main/java/com/hbm/entity/mob/glyphid/EntityGlyphidBehemoth.java index 28bc49068..22a53e3d2 100644 --- a/src/main/java/com/hbm/entity/mob/glyphid/EntityGlyphidBehemoth.java +++ b/src/main/java/com/hbm/entity/mob/glyphid/EntityGlyphidBehemoth.java @@ -74,7 +74,7 @@ public class EntityGlyphidBehemoth extends EntityGlyphid { super.onDeath(source); if (!worldObj.isRemote) { EntityMist mist = new EntityMist(worldObj); - mist.setType(Fluids.ACID); + mist.setType(Fluids.SULFURIC_ACID); mist.setPosition(posX, posY, posZ); mist.setArea(10, 4); mist.setDuration(120); @@ -88,7 +88,7 @@ public class EntityGlyphidBehemoth extends EntityGlyphid { this.addPotionEffect(new PotionEffect(Potion.moveSlowdown.id, 2 * 20, 6)); EntityChemical chem = new EntityChemical(worldObj, this); - chem.setFluid(Fluids.ACID); + chem.setFluid(Fluids.SULFURIC_ACID); worldObj.spawnEntityInWorld(chem); } } diff --git a/src/main/java/com/hbm/entity/mob/glyphid/EntityGlyphidBrawler.java b/src/main/java/com/hbm/entity/mob/glyphid/EntityGlyphidBrawler.java index 134f66ca7..7799040e2 100644 --- a/src/main/java/com/hbm/entity/mob/glyphid/EntityGlyphidBrawler.java +++ b/src/main/java/com/hbm/entity/mob/glyphid/EntityGlyphidBrawler.java @@ -1,18 +1,104 @@ package com.hbm.entity.mob.glyphid; + import com.hbm.main.ResourceManager; + +import net.minecraft.entity.Entity; +import net.minecraft.entity.EntityLivingBase; import net.minecraft.entity.SharedMonsterAttributes; +import net.minecraft.util.DamageSource; +import net.minecraft.util.MathHelper; import net.minecraft.util.ResourceLocation; +import net.minecraft.util.Vec3; import net.minecraft.world.World; + public class EntityGlyphidBrawler extends EntityGlyphid { public EntityGlyphidBrawler(World world) { super(world); this.setSize(2F, 1.125F); } - + + public int timer = 0; + protected Entity lastTarget; + protected double lastX; + protected double lastY; + protected double lastZ; + + @Override + public void onUpdate(){ + super.onUpdate(); + Entity e = this.getEntityToAttack(); + if (e != null && this.isEntityAlive()) { + + this.lastX = e.posX; + this.lastY = e.posY; + this.lastZ = e.posZ; + + if (--timer <= 0) { + leap(); + timer = 80 + worldObj.rand.nextInt(30); + } + } + } + + /** Mainly composed of repurposed bombardier code**/ + public void leap() { + if (!worldObj.isRemote && entityToAttack instanceof EntityLivingBase && this.getDistanceToEntity(entityToAttack) < 20) { + Entity e = this.getEntityToAttack(); + + double velX = e.posX - lastX; + double velY = e.posY - lastY; + double velZ = e.posZ - lastZ; + + if (this.lastTarget != e) { + velX = velY = velZ = 0; + } + + int prediction = 60; + Vec3 delta = Vec3.createVectorHelper(e.posX - posX + velX * prediction, (e.posY + e.height / 2) - (posY + 1) + velY * prediction, e.posZ - posZ + velZ * prediction); + double len = delta.lengthVector(); + if (len < 3) return; + double targetYaw = -Math.atan2(delta.xCoord, delta.zCoord); + + double x = Math.sqrt(delta.xCoord * delta.xCoord + delta.zCoord * delta.zCoord); + double y = delta.yCoord; + double v0 = 1.5; + double v02 = v0 * v0; + double g = 0.01; + double targetPitch = Math.atan((v02 + Math.sqrt(v02 * v02 - g * (g * x * x + 2 * y * v02)) * 1) / (g * x)); + Vec3 fireVec = null; + if (!Double.isNaN(targetPitch)) { + + fireVec = Vec3.createVectorHelper(v0, 0, 0); + fireVec.rotateAroundZ((float) (-targetPitch / 3.5)); + fireVec.rotateAroundY((float) -(targetYaw + Math.PI * 0.5)); + } + if (fireVec != null) + this.setThrowableHeading(fireVec.xCoord, fireVec.yCoord, fireVec.zCoord, (float) v0, rand.nextFloat()); + } + } + //yeag this is now a motherfucking projectile + public void setThrowableHeading(double motionX, double motionY, double motionZ, float velocity, float inaccuracy) { + float throwLen = MathHelper.sqrt_double(motionX * motionX + motionY * motionY + motionZ * motionZ); + motionX /= (double) throwLen; + motionY /= (double) throwLen; + motionZ /= (double) throwLen; + motionX += this.rand.nextGaussian() * 0.0075D * (double) inaccuracy; + motionY += this.rand.nextGaussian() * 0.0075D * (double) inaccuracy; + motionZ += this.rand.nextGaussian() * 0.0075D * (double) inaccuracy; + motionX *= (double) velocity; + motionY *= (double) velocity; + motionZ *= (double) velocity; + this.motionX = motionX; + this.motionY = motionY; + this.motionZ = motionZ; + float hyp = MathHelper.sqrt_double(motionX * motionX + motionZ * motionZ); + this.prevRotationYaw = this.rotationYaw = (float) (Math.atan2(motionX, motionZ) * 180.0D / Math.PI); + this.prevRotationPitch = this.rotationPitch = (float) (Math.atan2(motionY, (double) hyp) * 180.0D / Math.PI); + } @Override public ResourceLocation getSkin() { return ResourceManager.glyphid_brawler_tex; @@ -33,7 +119,19 @@ public class EntityGlyphidBrawler extends EntityGlyphid { @Override public float getDivisorPerArmorPoint() { return GlyphidStats.getStats().getBrawler().divisor; } @Override public float getDamageThreshold() { return GlyphidStats.getStats().getBrawler().damageThreshold; } + @Override + public boolean attackEntityFrom(DamageSource source, float amount) { + /*NBTTagCompound data = new NBTTagCompound(); + data.setString("type", "debug"); + data.setInteger("color", 0x0000ff); + data.setFloat("scale", 2.5F); + data.setString("text", "" + (int) amount); + PacketDispatcher.wrapper.sendToAllAround(new AuxParticlePacketNT(data, posX, posY + 2, posZ), new TargetPoint(dimension, posX, posY + 2, posZ, 50));*/ + //allows brawlers to get no damage on short leaps, but still affected by fall damage on big drops + if(source == DamageSource.fall && amount <= 10) return false; + return super.attackEntityFrom(source, amount); + } @Override public boolean isArmorBroken(float amount) { return this.rand.nextInt(100) <= Math.min(Math.pow(amount * 0.25, 2), 100); diff --git a/src/main/java/com/hbm/entity/mob/glyphid/EntityGlyphidScout.java b/src/main/java/com/hbm/entity/mob/glyphid/EntityGlyphidScout.java index 251bd23d9..ece0ee982 100644 --- a/src/main/java/com/hbm/entity/mob/glyphid/EntityGlyphidScout.java +++ b/src/main/java/com/hbm/entity/mob/glyphid/EntityGlyphidScout.java @@ -73,7 +73,10 @@ public class EntityGlyphidScout extends EntityGlyphid { @Override public void onUpdate() { super.onUpdate(); - + //Updates to check whether the player still exists, important to make sure it wont stop doing work + if(entityToAttack != null && ticksExisted % 60 == 0){ + entityToAttack = findPlayerToAttack(); + } if((getCurrentTask() != TASK_BUILD_HIVE || getCurrentTask() != TASK_TERRAFORM) && taskWaypoint == null) { if(MobConfig.rampantGlyphidGuidance && PollutionHandler.targetCoords != null){ @@ -336,15 +339,13 @@ public class EntityGlyphidScout extends EntityGlyphid { int y = MathHelper.floor_double(this.boundingBox.minY); int z = MathHelper.floor_double(this.posZ); - int light = this.worldObj.getBlockLightValue(x, y, z); + int skylightSubtracted = this.worldObj.skylightSubtracted; - if(this.worldObj.isThundering()) { - int skylightSubtracted = this.worldObj.skylightSubtracted; - this.worldObj.skylightSubtracted = 10; - light = this.worldObj.getBlockLightValue(x, y, z); - this.worldObj.skylightSubtracted = skylightSubtracted; - } - + if(this.worldObj.isThundering()) this.worldObj.skylightSubtracted = 10; + int light = worldObj.getChunkFromChunkCoords(x >> 4, z >> 4).getBlockLightValue(x & 15, y, z & 15, worldObj.skylightSubtracted); + + this.worldObj.skylightSubtracted = skylightSubtracted; return light <= 7; + } } diff --git a/src/main/java/com/hbm/entity/projectile/EntityBombletZeta.java b/src/main/java/com/hbm/entity/projectile/EntityBombletZeta.java index 1571ff841..1a21d96c2 100644 --- a/src/main/java/com/hbm/entity/projectile/EntityBombletZeta.java +++ b/src/main/java/com/hbm/entity/projectile/EntityBombletZeta.java @@ -63,7 +63,7 @@ public class EntityBombletZeta extends EntityThrowable { ExplosionChaos.spawnChlorine(worldObj, this.posX + 0.5F - motionX, this.posY + 0.5F - motionY, this.posZ + 0.5F - motionZ, 75, 2, 0); } if(type == 4) { - worldObj.spawnEntityInWorld(EntityNukeExplosionMK5.statFac(worldObj, (int) (BombConfig.fatmanRadius * 1.5), posX, posY, posZ).mute()); + worldObj.spawnEntityInWorld(EntityNukeExplosionMK5.statFac(worldObj, (int) (BombConfig.fatmanRadius * 1.5), posX, posY, posZ)); NBTTagCompound data = new NBTTagCompound(); data.setString("type", "muke"); diff --git a/src/main/java/com/hbm/entity/projectile/EntityBulletBaseNT.java b/src/main/java/com/hbm/entity/projectile/EntityBulletBaseNT.java index f7a9f5758..20bff21ba 100644 --- a/src/main/java/com/hbm/entity/projectile/EntityBulletBaseNT.java +++ b/src/main/java/com/hbm/entity/projectile/EntityBulletBaseNT.java @@ -465,7 +465,7 @@ public class EntityBulletBaseNT extends EntityThrowableInterp implements IBullet } if(config.nuke > 0 && !worldObj.isRemote) { - worldObj.spawnEntityInWorld(EntityNukeExplosionMK5.statFac(worldObj, config.nuke, posX, posY, posZ).mute()); + worldObj.spawnEntityInWorld(EntityNukeExplosionMK5.statFac(worldObj, config.nuke, posX, posY, posZ)); NBTTagCompound data = new NBTTagCompound(); data.setString("type", "muke"); if(MainRegistry.polaroidID == 11 || rand.nextInt(100) == 0) data.setBoolean("balefire", true); diff --git a/src/main/java/com/hbm/entity/train/EntityRailCarElectric.java b/src/main/java/com/hbm/entity/train/EntityRailCarElectric.java index 46643b029..bf794147c 100644 --- a/src/main/java/com/hbm/entity/train/EntityRailCarElectric.java +++ b/src/main/java/com/hbm/entity/train/EntityRailCarElectric.java @@ -2,7 +2,7 @@ package com.hbm.entity.train; import com.hbm.items.ModItems; -import api.hbm.energy.IBatteryItem; +import api.hbm.energymk2.IBatteryItem; import net.minecraft.item.ItemStack; import net.minecraft.world.World; diff --git a/src/main/java/com/hbm/entity/train/TrainCargoTram.java b/src/main/java/com/hbm/entity/train/TrainCargoTram.java index 3b64d7679..99f2c5c05 100644 --- a/src/main/java/com/hbm/entity/train/TrainCargoTram.java +++ b/src/main/java/com/hbm/entity/train/TrainCargoTram.java @@ -7,7 +7,7 @@ import com.hbm.inventory.gui.GuiInfoContainer; import com.hbm.lib.RefStrings; import com.hbm.tileentity.IGUIProvider; -import api.hbm.energy.IBatteryItem; +import api.hbm.energymk2.IBatteryItem; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; import net.minecraft.client.Minecraft; diff --git a/src/main/java/com/hbm/explosion/ExplosionNukeGeneric.java b/src/main/java/com/hbm/explosion/ExplosionNukeGeneric.java index 1a62d8865..7d1f82a35 100644 --- a/src/main/java/com/hbm/explosion/ExplosionNukeGeneric.java +++ b/src/main/java/com/hbm/explosion/ExplosionNukeGeneric.java @@ -31,7 +31,7 @@ import com.hbm.lib.Library; import com.hbm.lib.ModDamageSource; import com.hbm.util.ArmorUtil; -import api.hbm.energy.IEnergyUser; +import api.hbm.energymk2.IEnergyHandlerMK2; import cofh.api.energy.IEnergyProvider; public class ExplosionNukeGeneric { @@ -425,12 +425,9 @@ public class ExplosionNukeGeneric { Block b = world.getBlock(x,y,z); TileEntity te = world.getTileEntity(x, y, z); - if (te != null && te instanceof IEnergyUser) { - - ((IEnergyUser)te).setPower(0); - - if(random.nextInt(5) < 1) - world.setBlock(x, y, z, ModBlocks.block_electrical_scrap); + if (te != null && te instanceof IEnergyHandlerMK2) { + ((IEnergyHandlerMK2)te).setPower(0); + if(random.nextInt(5) < 1) world.setBlock(x, y, z, ModBlocks.block_electrical_scrap); } if (te != null && te instanceof IEnergyProvider) { diff --git a/src/main/java/com/hbm/explosion/ExplosionNukeSmall.java b/src/main/java/com/hbm/explosion/ExplosionNukeSmall.java index f9cbfec62..0734db2e5 100644 --- a/src/main/java/com/hbm/explosion/ExplosionNukeSmall.java +++ b/src/main/java/com/hbm/explosion/ExplosionNukeSmall.java @@ -32,7 +32,7 @@ public class ExplosionNukeSmall { if(params.shrapnelCount > 0) ExplosionLarge.spawnShrapnels(world, posX, posY, posZ, params.shrapnelCount); if(params.miniNuke && !params.safe) new ExplosionNT(world, null, posX, posY, posZ, params.blastRadius).addAllAttrib(params.explosionAttribs).overrideResolution(params.resolution).explode(); if(params.killRadius > 0) ExplosionNukeGeneric.dealDamage(world, posX, posY, posZ, params.killRadius); - if(!params.miniNuke) world.spawnEntityInWorld(EntityNukeExplosionMK5.statFac(world, (int) params.blastRadius, posX, posY, posZ).mute()); + if(!params.miniNuke) world.spawnEntityInWorld(EntityNukeExplosionMK5.statFac(world, (int) params.blastRadius, posX, posY, posZ)); if(params.miniNuke) { float radMod = params.radiationLevel / 3F; diff --git a/src/main/java/com/hbm/handler/imc/ICompatNHNEI.java b/src/main/java/com/hbm/handler/imc/ICompatNHNEI.java deleted file mode 100644 index 37952c867..000000000 --- a/src/main/java/com/hbm/handler/imc/ICompatNHNEI.java +++ /dev/null @@ -1,14 +0,0 @@ -package com.hbm.handler.imc; - -import net.minecraft.item.ItemStack; - -import java.util.ArrayList; - -public interface ICompatNHNEI { - /**First item on the list is the icon for the recipe in the NEI GUI, the rest are displayed on the sidebar - * as other items that can be used for the same purpose**/ - ItemStack[] getMachinesForRecipe(); - - String getRecipeID(); - -} diff --git a/src/main/java/com/hbm/handler/nei/AlloyFurnaceRecipeHandler.java b/src/main/java/com/hbm/handler/nei/AlloyFurnaceRecipeHandler.java index ee1d09a5b..8b76d904b 100644 --- a/src/main/java/com/hbm/handler/nei/AlloyFurnaceRecipeHandler.java +++ b/src/main/java/com/hbm/handler/nei/AlloyFurnaceRecipeHandler.java @@ -7,8 +7,6 @@ import java.util.List; import java.util.Map; import java.util.Map.Entry; -import com.hbm.blocks.ModBlocks; -import com.hbm.handler.imc.ICompatNHNEI; import com.hbm.inventory.gui.GUIDiFurnace; import com.hbm.inventory.recipes.BlastFurnaceRecipes; import com.hbm.inventory.recipes.MachineRecipes; @@ -19,22 +17,10 @@ import codechicken.nei.recipe.TemplateRecipeHandler; import net.minecraft.client.gui.inventory.GuiContainer; import net.minecraft.item.ItemStack; -public class AlloyFurnaceRecipeHandler extends TemplateRecipeHandler implements ICompatNHNEI { +public class AlloyFurnaceRecipeHandler extends TemplateRecipeHandler { public static ArrayList fuels; - @Override - public ItemStack[] getMachinesForRecipe() { - return new ItemStack[]{ - new ItemStack(ModBlocks.machine_difurnace_off), - new ItemStack(ModBlocks.machine_difurnace_rtg_off)}; - } - - @Override - public String getRecipeID() { - return "alloysmelting"; - } - public class SmeltingSet extends TemplateRecipeHandler.CachedRecipe { PositionedStack input1; PositionedStack input2; diff --git a/src/main/java/com/hbm/handler/nei/AnvilRecipeHandler.java b/src/main/java/com/hbm/handler/nei/AnvilRecipeHandler.java index 3c01db05a..4df799a33 100644 --- a/src/main/java/com/hbm/handler/nei/AnvilRecipeHandler.java +++ b/src/main/java/com/hbm/handler/nei/AnvilRecipeHandler.java @@ -7,9 +7,7 @@ import java.util.ArrayList; import java.util.LinkedList; import java.util.List; -import com.hbm.blocks.ModBlocks; import com.hbm.blocks.machine.NTMAnvil; -import com.hbm.handler.imc.ICompatNHNEI; import com.hbm.inventory.RecipesCommon.AStack; import com.hbm.inventory.gui.GUIAnvil; import com.hbm.inventory.recipes.anvil.AnvilRecipes; @@ -26,28 +24,7 @@ import net.minecraft.client.gui.inventory.GuiContainer; import net.minecraft.item.ItemStack; import net.minecraft.util.EnumChatFormatting; -public class AnvilRecipeHandler extends TemplateRecipeHandler implements ICompatNHNEI { - - @Override - public ItemStack[] getMachinesForRecipe() { - return new ItemStack[]{ - new ItemStack(ModBlocks.anvil_iron), - new ItemStack(ModBlocks.anvil_lead), - new ItemStack(ModBlocks.anvil_steel), - new ItemStack(ModBlocks.anvil_starmetal), - new ItemStack(ModBlocks.anvil_meteorite), - new ItemStack(ModBlocks.anvil_ferrouranium), - new ItemStack(ModBlocks.anvil_bismuth), - new ItemStack(ModBlocks.anvil_schrabidate), - new ItemStack(ModBlocks.anvil_dnt), - new ItemStack(ModBlocks.anvil_osmiridium), - new ItemStack(ModBlocks.anvil_murky)}; - } - - @Override - public String getRecipeID() { - return "ntmAnvil"; - } +public class AnvilRecipeHandler extends TemplateRecipeHandler { public LinkedList transferRectsRec = new LinkedList(); public LinkedList transferRectsGui = new LinkedList(); diff --git a/src/main/java/com/hbm/handler/nei/AssemblerRecipeHandler.java b/src/main/java/com/hbm/handler/nei/AssemblerRecipeHandler.java index d3ddb9df0..f533fc02c 100644 --- a/src/main/java/com/hbm/handler/nei/AssemblerRecipeHandler.java +++ b/src/main/java/com/hbm/handler/nei/AssemblerRecipeHandler.java @@ -6,8 +6,6 @@ import java.util.LinkedList; import java.util.List; import java.util.Map; -import com.hbm.blocks.ModBlocks; -import com.hbm.handler.imc.ICompatNHNEI; import com.hbm.inventory.RecipesCommon.ComparableStack; import com.hbm.inventory.gui.GUIMachineAssembler; import com.hbm.inventory.recipes.AssemblerRecipes; @@ -21,25 +19,13 @@ import codechicken.nei.recipe.TemplateRecipeHandler; import net.minecraft.client.gui.inventory.GuiContainer; import net.minecraft.item.ItemStack; -public class AssemblerRecipeHandler extends TemplateRecipeHandler implements ICompatNHNEI { +public class AssemblerRecipeHandler extends TemplateRecipeHandler { public LinkedList transferRectsRec = new LinkedList(); public LinkedList transferRectsGui = new LinkedList(); public LinkedList> guiRec = new LinkedList>(); public LinkedList> guiGui = new LinkedList>(); - @Override - public ItemStack[] getMachinesForRecipe() { - return new ItemStack[]{ - new ItemStack(ModBlocks.machine_assembler), - new ItemStack(ModBlocks.machine_assemfac)}; - } - - @Override - public String getRecipeID() { - return "assembly"; - } - public class SmeltingSet extends TemplateRecipeHandler.CachedRecipe { List input; diff --git a/src/main/java/com/hbm/handler/nei/BookRecipeHandler.java b/src/main/java/com/hbm/handler/nei/BookRecipeHandler.java index 3b18cd6f6..44e6c7ded 100644 --- a/src/main/java/com/hbm/handler/nei/BookRecipeHandler.java +++ b/src/main/java/com/hbm/handler/nei/BookRecipeHandler.java @@ -4,8 +4,6 @@ import java.awt.Rectangle; import java.util.ArrayList; import java.util.List; -import com.hbm.blocks.ModBlocks; -import com.hbm.handler.imc.ICompatNHNEI; import com.hbm.inventory.RecipesCommon.AStack; import com.hbm.inventory.RecipesCommon.ComparableStack; import com.hbm.inventory.RecipesCommon.OreDictStack; @@ -16,22 +14,12 @@ import com.hbm.inventory.recipes.MagicRecipes.MagicRecipe; import codechicken.nei.NEIServerUtils; import codechicken.nei.PositionedStack; import codechicken.nei.recipe.TemplateRecipeHandler; -import com.hbm.items.ModItems; import net.minecraft.client.gui.inventory.GuiContainer; import net.minecraft.item.ItemStack; -public class BookRecipeHandler extends TemplateRecipeHandler implements ICompatNHNEI { - @Override - public ItemStack[] getMachinesForRecipe() { - return new ItemStack[]{ - new ItemStack(ModItems.book_of_)}; - } +public class BookRecipeHandler extends TemplateRecipeHandler { - @Override - public String getRecipeID() { - return "book_of_boxcars"; - } - public class RecipeSet extends TemplateRecipeHandler.CachedRecipe { + public class RecipeSet extends TemplateRecipeHandler.CachedRecipe { List input; PositionedStack result; diff --git a/src/main/java/com/hbm/handler/nei/BreederRecipeHandler.java b/src/main/java/com/hbm/handler/nei/BreederRecipeHandler.java index 0fc3f70d2..8f91f8d75 100644 --- a/src/main/java/com/hbm/handler/nei/BreederRecipeHandler.java +++ b/src/main/java/com/hbm/handler/nei/BreederRecipeHandler.java @@ -5,8 +5,6 @@ import java.util.Arrays; import java.util.List; import java.util.Map; -import com.hbm.blocks.ModBlocks; -import com.hbm.handler.imc.ICompatNHNEI; import com.hbm.inventory.gui.GUIMachineReactorBreeding; import com.hbm.inventory.recipes.BreederRecipes; import com.hbm.inventory.recipes.BreederRecipes.BreederRecipe; @@ -18,18 +16,8 @@ import codechicken.nei.recipe.TemplateRecipeHandler; import net.minecraft.client.gui.inventory.GuiContainer; import net.minecraft.item.ItemStack; -public class BreederRecipeHandler extends TemplateRecipeHandler implements ICompatNHNEI { +public class BreederRecipeHandler extends TemplateRecipeHandler { - @Override - public ItemStack[] getMachinesForRecipe() { - return new ItemStack[]{ - new ItemStack(ModBlocks.machine_reactor_breeding)}; - } - - @Override - public String getRecipeID() { - return "breeding"; - } public class BreedingSet extends TemplateRecipeHandler.CachedRecipe { PositionedStack input; diff --git a/src/main/java/com/hbm/handler/nei/ChemplantRecipeHandler.java b/src/main/java/com/hbm/handler/nei/ChemplantRecipeHandler.java index b0b5e19a4..9ef27b9a9 100644 --- a/src/main/java/com/hbm/handler/nei/ChemplantRecipeHandler.java +++ b/src/main/java/com/hbm/handler/nei/ChemplantRecipeHandler.java @@ -5,8 +5,6 @@ import java.util.ArrayList; import java.util.LinkedList; import java.util.List; -import com.hbm.blocks.ModBlocks; -import com.hbm.handler.imc.ICompatNHNEI; import com.hbm.inventory.FluidStack; import com.hbm.inventory.RecipesCommon.AStack; import com.hbm.inventory.gui.GUIMachineChemplant; @@ -22,26 +20,14 @@ import codechicken.nei.recipe.TemplateRecipeHandler; import net.minecraft.client.gui.inventory.GuiContainer; import net.minecraft.item.ItemStack; -public class ChemplantRecipeHandler extends TemplateRecipeHandler implements ICompatNHNEI { +public class ChemplantRecipeHandler extends TemplateRecipeHandler { public LinkedList transferRectsRec = new LinkedList(); public LinkedList transferRectsGui = new LinkedList(); public LinkedList> guiRec = new LinkedList>(); public LinkedList> guiGui = new LinkedList>(); - @Override - public ItemStack[] getMachinesForRecipe() { - return new ItemStack[]{ - new ItemStack(ModBlocks.machine_chemplant), - new ItemStack(ModBlocks.machine_chemfac)}; - } - - @Override - public String getRecipeID() { - return "chemistry"; - } public class RecipeSet extends TemplateRecipeHandler.CachedRecipe { - PositionedStack[] itemIn = new PositionedStack[4]; PositionedStack[] fluidIn = new PositionedStack[2]; PositionedStack[] itemOut = new PositionedStack[4]; diff --git a/src/main/java/com/hbm/handler/nei/ChunkyHandler.java b/src/main/java/com/hbm/handler/nei/ChunkyHandler.java deleted file mode 100644 index 02ff171c1..000000000 --- a/src/main/java/com/hbm/handler/nei/ChunkyHandler.java +++ /dev/null @@ -1,79 +0,0 @@ -package com.hbm.handler.nei; - -import static codechicken.lib.gui.GuiDraw.drawTexturedModalRect; - -import org.lwjgl.opengl.GL11; - -import com.hbm.config.GeneralConfig; -import com.hbm.lib.RefStrings; - -import codechicken.nei.PositionedStack; -import codechicken.nei.guihook.GuiContainerManager; -import codechicken.nei.recipe.TemplateRecipeHandler; -import net.minecraft.client.Minecraft; -import net.minecraft.client.gui.FontRenderer; -import net.minecraft.client.renderer.RenderHelper; -import net.minecraft.item.ItemStack; - -public class ChunkyHandler extends TemplateRecipeHandler { - - public class RecipeSet extends TemplateRecipeHandler.CachedRecipe { - - ItemStack stack; - - public RecipeSet(ItemStack stack) { - this.stack = stack.copy(); - this.stack.stackSize = 1; - } - - @Override - public PositionedStack getResult() { - return null; - } - } - - @Override - public String getRecipeName() { - return ""; - } - - @Override - public String getGuiTexture() { - return RefStrings.MODID + ":textures/gui/nei/gui_nei.png"; - } - - @Override - public void loadCraftingRecipes(ItemStack result) { - if(GeneralConfig.enableChunkyNEIHandler) - this.arecipes.add(new RecipeSet(result)); - } - - @Override - public void loadUsageRecipes(ItemStack ingredient) { - if(GeneralConfig.enableChunkyNEIHandler) - this.arecipes.add(new RecipeSet(ingredient)); - } - - @Override - public void drawExtras(int recipe) { - RecipeSet rec = (RecipeSet) this.arecipes.get(recipe); - drawTexturedModalRect(145, 0, 20, 20, 20, 20); - GL11.glPushMatrix(); - GL11.glTranslated(83, 50, 0); - double scale = 5D; - GL11.glScaled(scale, scale, scale); - RenderHelper.enableGUIStandardItemLighting(); - GL11.glTranslated(-8, -8, 0); - GuiContainerManager.drawItem(0, 0, rec.stack); - GL11.glPopMatrix(); - RenderHelper.enableGUIStandardItemLighting(); - - FontRenderer font = Minecraft.getMinecraft().fontRenderer; - - int w = 83; - String top = "The same thing but in big"; - String bottom = "so you can really stare at it"; - font.drawString(top, w - font.getStringWidth(top) / 2, 100, 0x404040); - font.drawString(bottom, w - font.getStringWidth(bottom) / 2, 110, 0x404040); - } -} diff --git a/src/main/java/com/hbm/handler/nei/ConstructionHandler.java b/src/main/java/com/hbm/handler/nei/ConstructionHandler.java index baf61bfc1..91f46bd1d 100644 --- a/src/main/java/com/hbm/handler/nei/ConstructionHandler.java +++ b/src/main/java/com/hbm/handler/nei/ConstructionHandler.java @@ -16,14 +16,6 @@ public class ConstructionHandler extends NEIUniversalHandler { super("Construction", getRecipes(true), getRecipes(false)); } - @Override - public ItemStack[] getMachinesForRecipe() { - return new ItemStack[]{ - new ItemStack(ModItems.acetylene_torch), - new ItemStack(ModItems.blowtorch), - new ItemStack(ModItems.boltgun)}; - } - @Override public String getKey() { return "ntmConstruction"; diff --git a/src/main/java/com/hbm/handler/nei/CrucibleAlloyingHandler.java b/src/main/java/com/hbm/handler/nei/CrucibleAlloyingHandler.java index 4cdca10fe..80ccd314b 100644 --- a/src/main/java/com/hbm/handler/nei/CrucibleAlloyingHandler.java +++ b/src/main/java/com/hbm/handler/nei/CrucibleAlloyingHandler.java @@ -6,7 +6,6 @@ import java.util.LinkedList; import java.util.List; import com.hbm.blocks.ModBlocks; -import com.hbm.handler.imc.ICompatNHNEI; import com.hbm.inventory.material.Mats; import com.hbm.inventory.material.Mats.MaterialStack; import com.hbm.inventory.material.NTMMaterial; @@ -21,16 +20,7 @@ import codechicken.nei.recipe.TemplateRecipeHandler; import net.minecraft.client.gui.inventory.GuiContainer; import net.minecraft.item.ItemStack; -public class CrucibleAlloyingHandler extends TemplateRecipeHandler implements ICompatNHNEI { - @Override - public ItemStack[] getMachinesForRecipe() { - return new ItemStack[]{ - new ItemStack(ModBlocks.machine_crucible)}; - } - @Override - public String getRecipeID() { - return "ntmCrucibleAlloying"; - } +public class CrucibleAlloyingHandler extends TemplateRecipeHandler { public LinkedList transferRectsRec = new LinkedList(); public LinkedList> guiRec = new LinkedList>(); diff --git a/src/main/java/com/hbm/handler/nei/CrucibleCastingHandler.java b/src/main/java/com/hbm/handler/nei/CrucibleCastingHandler.java index eff865fb4..1befff001 100644 --- a/src/main/java/com/hbm/handler/nei/CrucibleCastingHandler.java +++ b/src/main/java/com/hbm/handler/nei/CrucibleCastingHandler.java @@ -6,8 +6,6 @@ import java.util.Arrays; import java.util.LinkedList; import java.util.List; -import com.hbm.blocks.ModBlocks; -import com.hbm.handler.imc.ICompatNHNEI; import com.hbm.inventory.material.Mats; import com.hbm.inventory.recipes.CrucibleRecipes; import com.hbm.items.machine.ItemMold; @@ -19,19 +17,7 @@ import codechicken.nei.recipe.TemplateRecipeHandler; import net.minecraft.client.gui.inventory.GuiContainer; import net.minecraft.item.ItemStack; -public class CrucibleCastingHandler extends TemplateRecipeHandler implements ICompatNHNEI { - - @Override - public ItemStack[] getMachinesForRecipe() { - return new ItemStack[]{ - new ItemStack(ModBlocks.foundry_basin), - new ItemStack(ModBlocks.foundry_mold), - new ItemStack(ModBlocks.machine_strand_caster)}; - } - @Override - public String getRecipeID() { - return "ntmCrucibleFoundry"; - } +public class CrucibleCastingHandler extends TemplateRecipeHandler { public LinkedList transferRectsRec = new LinkedList(); public LinkedList> guiRec = new LinkedList>(); diff --git a/src/main/java/com/hbm/handler/nei/CrucibleSmeltingHandler.java b/src/main/java/com/hbm/handler/nei/CrucibleSmeltingHandler.java index 63bbc26e7..b6af31dc1 100644 --- a/src/main/java/com/hbm/handler/nei/CrucibleSmeltingHandler.java +++ b/src/main/java/com/hbm/handler/nei/CrucibleSmeltingHandler.java @@ -9,7 +9,6 @@ import java.util.List; import java.util.Map.Entry; import com.hbm.blocks.ModBlocks; -import com.hbm.handler.imc.ICompatNHNEI; import com.hbm.inventory.RecipesCommon.AStack; import com.hbm.inventory.recipes.CrucibleRecipes; import com.hbm.lib.RefStrings; @@ -20,17 +19,8 @@ import codechicken.nei.recipe.TemplateRecipeHandler; import net.minecraft.client.gui.inventory.GuiContainer; import net.minecraft.item.ItemStack; -public class CrucibleSmeltingHandler extends TemplateRecipeHandler implements ICompatNHNEI { - - @Override - public ItemStack[] getMachinesForRecipe() { - return new ItemStack[]{ - new ItemStack(ModBlocks.machine_crucible)}; - } - @Override - public String getRecipeID() { - return "ntmCrucibleSmelting"; - } +public class CrucibleSmeltingHandler extends TemplateRecipeHandler { + public LinkedList transferRectsRec = new LinkedList(); public LinkedList> guiRec = new LinkedList>(); diff --git a/src/main/java/com/hbm/handler/nei/CyclotronRecipeHandler.java b/src/main/java/com/hbm/handler/nei/CyclotronRecipeHandler.java index 51b0a6b6f..b4f9221f2 100644 --- a/src/main/java/com/hbm/handler/nei/CyclotronRecipeHandler.java +++ b/src/main/java/com/hbm/handler/nei/CyclotronRecipeHandler.java @@ -6,8 +6,6 @@ import java.util.LinkedList; import java.util.List; import java.util.Map; -import com.hbm.blocks.ModBlocks; -import com.hbm.handler.imc.ICompatNHNEI; import com.hbm.inventory.gui.GUIMachineCyclotron; import com.hbm.inventory.recipes.CyclotronRecipes; import com.hbm.lib.RefStrings; @@ -18,17 +16,8 @@ import codechicken.nei.recipe.TemplateRecipeHandler; import net.minecraft.client.gui.inventory.GuiContainer; import net.minecraft.item.ItemStack; -public class CyclotronRecipeHandler extends TemplateRecipeHandler implements ICompatNHNEI { - @Override - public ItemStack[] getMachinesForRecipe() { - return new ItemStack[]{ - new ItemStack(ModBlocks.machine_cyclotron)}; - } - - @Override - public String getRecipeID() { - return "cyclotronProcessing"; - } +public class CyclotronRecipeHandler extends TemplateRecipeHandler { + public LinkedList transferRectsRec = new LinkedList(); public LinkedList transferRectsGui = new LinkedList(); public LinkedList> guiRec = new LinkedList>(); diff --git a/src/main/java/com/hbm/handler/nei/FluidRecipeHandler.java b/src/main/java/com/hbm/handler/nei/FluidRecipeHandler.java index a575f867f..792f4465f 100644 --- a/src/main/java/com/hbm/handler/nei/FluidRecipeHandler.java +++ b/src/main/java/com/hbm/handler/nei/FluidRecipeHandler.java @@ -5,10 +5,7 @@ import java.util.Arrays; import java.util.List; import java.util.Map; -import com.hbm.blocks.ModBlocks; -import com.hbm.handler.imc.ICompatNHNEI; import com.hbm.inventory.recipes.MachineRecipes; -import com.hbm.items.ModItems; import com.hbm.lib.RefStrings; import codechicken.nei.NEIServerUtils; @@ -17,23 +14,7 @@ import codechicken.nei.recipe.TemplateRecipeHandler; import net.minecraft.client.gui.inventory.GuiContainer; import net.minecraft.item.ItemStack; -public class FluidRecipeHandler extends TemplateRecipeHandler implements ICompatNHNEI { - @Override - public ItemStack[] getMachinesForRecipe() { - return new ItemStack[]{ - new ItemStack(ModItems.fluid_barrel_empty), - new ItemStack(ModItems.fluid_tank_empty), - new ItemStack(ModItems.fluid_tank_lead_empty), - new ItemStack(ModItems.canister_empty), - new ItemStack(ModItems.gas_empty), - new ItemStack(ModItems.cell_empty), - new ItemStack(ModItems.disperser_canister_empty), - new ItemStack(ModItems.glyphid_gland_empty)}; - } - @Override - public String getRecipeID() { - return "fluidcons"; - } +public class FluidRecipeHandler extends TemplateRecipeHandler { public class SmeltingSet extends TemplateRecipeHandler.CachedRecipe { diff --git a/src/main/java/com/hbm/handler/nei/FusionRecipeHandler.java b/src/main/java/com/hbm/handler/nei/FusionRecipeHandler.java index f5a69a4ec..ff6624e23 100644 --- a/src/main/java/com/hbm/handler/nei/FusionRecipeHandler.java +++ b/src/main/java/com/hbm/handler/nei/FusionRecipeHandler.java @@ -6,8 +6,6 @@ import java.util.LinkedList; import java.util.List; import java.util.Map; -import com.hbm.blocks.ModBlocks; -import com.hbm.handler.imc.ICompatNHNEI; import com.hbm.inventory.gui.GUIITER; import com.hbm.inventory.recipes.FusionRecipes; import com.hbm.lib.RefStrings; @@ -18,17 +16,8 @@ import codechicken.nei.recipe.TemplateRecipeHandler; import net.minecraft.client.gui.inventory.GuiContainer; import net.minecraft.item.ItemStack; -public class FusionRecipeHandler extends TemplateRecipeHandler implements ICompatNHNEI { - - @Override - public ItemStack[] getMachinesForRecipe() { - return new ItemStack[]{ - new ItemStack(ModBlocks.iter)}; - } - @Override - public String getRecipeID() { - return "fusion"; - } +public class FusionRecipeHandler extends TemplateRecipeHandler { + public LinkedList transferRectsRec = new LinkedList(); public LinkedList transferRectsGui = new LinkedList(); public LinkedList> guiRec = new LinkedList>(); diff --git a/src/main/java/com/hbm/handler/nei/GasCentrifugeRecipeHandler.java b/src/main/java/com/hbm/handler/nei/GasCentrifugeRecipeHandler.java index 085ec8b7a..add9dcf95 100644 --- a/src/main/java/com/hbm/handler/nei/GasCentrifugeRecipeHandler.java +++ b/src/main/java/com/hbm/handler/nei/GasCentrifugeRecipeHandler.java @@ -9,8 +9,6 @@ import java.util.LinkedList; import java.util.List; import java.util.Map; -import com.hbm.blocks.ModBlocks; -import com.hbm.handler.imc.ICompatNHNEI; import com.hbm.inventory.gui.GUIMachineGasCent; import com.hbm.inventory.recipes.GasCentrifugeRecipes; import com.hbm.inventory.recipes.MachineRecipes; @@ -24,16 +22,8 @@ import net.minecraft.client.gui.FontRenderer; import net.minecraft.client.gui.inventory.GuiContainer; import net.minecraft.item.ItemStack; -public class GasCentrifugeRecipeHandler extends TemplateRecipeHandler implements ICompatNHNEI { - @Override - public ItemStack[] getMachinesForRecipe() { - return new ItemStack[]{ - new ItemStack(ModBlocks.machine_gascent)}; - } - @Override - public String getRecipeID() { - return "gascentprocessing"; - } +public class GasCentrifugeRecipeHandler extends TemplateRecipeHandler { + public static ArrayList fuels; public class SmeltingSet extends TemplateRecipeHandler.CachedRecipe { diff --git a/src/main/java/com/hbm/handler/nei/HadronRecipeHandler.java b/src/main/java/com/hbm/handler/nei/HadronRecipeHandler.java index b9325cd9c..cbd520858 100644 --- a/src/main/java/com/hbm/handler/nei/HadronRecipeHandler.java +++ b/src/main/java/com/hbm/handler/nei/HadronRecipeHandler.java @@ -8,8 +8,6 @@ import java.util.LinkedList; import java.util.List; import java.util.Locale; -import com.hbm.blocks.ModBlocks; -import com.hbm.handler.imc.ICompatNHNEI; import com.hbm.inventory.gui.GUIHadron; import com.hbm.inventory.recipes.HadronRecipes; import com.hbm.inventory.recipes.HadronRecipes.HadronRecipe; @@ -23,17 +21,8 @@ import net.minecraft.client.gui.FontRenderer; import net.minecraft.client.gui.inventory.GuiContainer; import net.minecraft.item.ItemStack; -public class HadronRecipeHandler extends TemplateRecipeHandler implements ICompatNHNEI { +public class HadronRecipeHandler extends TemplateRecipeHandler { - @Override - public ItemStack[] getMachinesForRecipe() { - return new ItemStack[]{ - new ItemStack(ModBlocks.hadron_core)}; - } - @Override - public String getRecipeID() { - return "hadron"; - } public LinkedList transferRectsRec = new LinkedList(); public LinkedList transferRectsGui = new LinkedList(); public LinkedList> guiRec = new LinkedList>(); diff --git a/src/main/java/com/hbm/handler/nei/NEIUniversalHandler.java b/src/main/java/com/hbm/handler/nei/NEIUniversalHandler.java index 06ad8caaf..0bb53100a 100644 --- a/src/main/java/com/hbm/handler/nei/NEIUniversalHandler.java +++ b/src/main/java/com/hbm/handler/nei/NEIUniversalHandler.java @@ -10,8 +10,6 @@ import java.util.LinkedList; import java.util.List; import java.util.Map.Entry; -import com.hbm.blocks.ModBlocks; -import com.hbm.handler.imc.ICompatNHNEI; import com.hbm.lib.RefStrings; import com.hbm.util.InventoryUtil; @@ -23,13 +21,8 @@ import net.minecraft.client.gui.inventory.GuiContainer; import net.minecraft.item.Item; import net.minecraft.item.ItemStack; -public abstract class NEIUniversalHandler extends TemplateRecipeHandler implements ICompatNHNEI { - - @Override - public ItemStack[] getMachinesForRecipe() { - return machine; - } - +public abstract class NEIUniversalHandler extends TemplateRecipeHandler { + public LinkedList transferRectsRec = new LinkedList(); public LinkedList transferRectsGui = new LinkedList(); public LinkedList> guiRec = new LinkedList>(); @@ -41,6 +34,7 @@ public abstract class NEIUniversalHandler extends TemplateRecipeHandler implemen public final HashMap recipes; public HashMap machineOverrides; /// SETUP /// + public NEIUniversalHandler(String display, ItemStack machine[], HashMap recipes) { this.display = display; this.machine = machine; @@ -311,9 +305,4 @@ public abstract class NEIUniversalHandler extends TemplateRecipeHandler implemen } public abstract String getKey(); - - @Override - public String getRecipeID() { - return getKey(); - } } diff --git a/src/main/java/com/hbm/handler/nei/PressRecipeHandler.java b/src/main/java/com/hbm/handler/nei/PressRecipeHandler.java index f0b2adefb..fbc14c5cd 100644 --- a/src/main/java/com/hbm/handler/nei/PressRecipeHandler.java +++ b/src/main/java/com/hbm/handler/nei/PressRecipeHandler.java @@ -7,8 +7,6 @@ import java.util.LinkedList; import java.util.List; import java.util.Map; -import com.hbm.blocks.ModBlocks; -import com.hbm.handler.imc.ICompatNHNEI; import com.hbm.interfaces.Untested; import com.hbm.inventory.RecipesCommon.AStack; import com.hbm.inventory.RecipesCommon.ComparableStack; @@ -27,19 +25,8 @@ import net.minecraft.client.gui.inventory.GuiContainer; import net.minecraft.item.ItemStack; @Untested -public class PressRecipeHandler extends TemplateRecipeHandler implements ICompatNHNEI { +public class PressRecipeHandler extends TemplateRecipeHandler { - @Override - public ItemStack[] getMachinesForRecipe() { - return new ItemStack[]{ - new ItemStack(ModBlocks.machine_press), - new ItemStack(ModBlocks.machine_epress), - new ItemStack(ModBlocks.machine_conveyor_press)}; - } - @Override - public String getRecipeID() { - return "pressing"; - } public LinkedList transferRectsRec = new LinkedList(); public LinkedList transferRectsGui = new LinkedList(); public LinkedList> guiRec = new LinkedList>(); diff --git a/src/main/java/com/hbm/handler/nei/RadiolysisRecipeHandler.java b/src/main/java/com/hbm/handler/nei/RadiolysisRecipeHandler.java index 84cd78979..9d5d619d4 100644 --- a/src/main/java/com/hbm/handler/nei/RadiolysisRecipeHandler.java +++ b/src/main/java/com/hbm/handler/nei/RadiolysisRecipeHandler.java @@ -8,8 +8,6 @@ import java.util.LinkedList; import java.util.List; import java.util.Map.Entry; -import com.hbm.blocks.ModBlocks; -import com.hbm.handler.imc.ICompatNHNEI; import com.hbm.inventory.gui.GUIRadiolysis; import com.hbm.inventory.recipes.RadiolysisRecipes; import com.hbm.lib.RefStrings; @@ -20,17 +18,8 @@ import codechicken.nei.recipe.TemplateRecipeHandler; import net.minecraft.client.gui.inventory.GuiContainer; import net.minecraft.item.ItemStack; -public class RadiolysisRecipeHandler extends TemplateRecipeHandler implements ICompatNHNEI { - - @Override - public ItemStack[] getMachinesForRecipe() { - return new ItemStack[]{ - new ItemStack(ModBlocks.machine_radiolysis)}; - } - @Override - public String getRecipeID() { - return "ntmRadiolysis"; - } +public class RadiolysisRecipeHandler extends TemplateRecipeHandler { + public LinkedList transferRectsRec = new LinkedList(); public LinkedList transferRectsGui = new LinkedList(); public LinkedList> guiRec = new LinkedList>(); diff --git a/src/main/java/com/hbm/handler/nei/RefineryRecipeHandler.java b/src/main/java/com/hbm/handler/nei/RefineryRecipeHandler.java index f085e4ebe..f3068bf17 100644 --- a/src/main/java/com/hbm/handler/nei/RefineryRecipeHandler.java +++ b/src/main/java/com/hbm/handler/nei/RefineryRecipeHandler.java @@ -7,8 +7,6 @@ import java.util.LinkedList; import java.util.List; import java.util.Map; -import com.hbm.blocks.ModBlocks; -import com.hbm.handler.imc.ICompatNHNEI; import com.hbm.inventory.gui.GUIMachineRefinery; import com.hbm.inventory.recipes.RefineryRecipes; import com.hbm.lib.RefStrings; @@ -18,17 +16,8 @@ import codechicken.nei.recipe.TemplateRecipeHandler; import net.minecraft.client.gui.inventory.GuiContainer; import net.minecraft.item.ItemStack; -public class RefineryRecipeHandler extends TemplateRecipeHandler implements ICompatNHNEI { +public class RefineryRecipeHandler extends TemplateRecipeHandler { - @Override - public ItemStack[] getMachinesForRecipe() { - return new ItemStack[]{ - new ItemStack(ModBlocks.machine_refinery)}; - } - @Override - public String getRecipeID() { - return "refinery"; - } public LinkedList transferRectsRec = new LinkedList(); public LinkedList transferRectsGui = new LinkedList(); public LinkedList> guiRec = new LinkedList>(); diff --git a/src/main/java/com/hbm/handler/nei/SILEXRecipeHandler.java b/src/main/java/com/hbm/handler/nei/SILEXRecipeHandler.java index bc1363383..444489abc 100644 --- a/src/main/java/com/hbm/handler/nei/SILEXRecipeHandler.java +++ b/src/main/java/com/hbm/handler/nei/SILEXRecipeHandler.java @@ -7,8 +7,6 @@ import java.util.LinkedList; import java.util.List; import java.util.Map; -import com.hbm.blocks.ModBlocks; -import com.hbm.handler.imc.ICompatNHNEI; import com.hbm.inventory.gui.GUISILEX; import com.hbm.inventory.recipes.SILEXRecipes; import com.hbm.inventory.recipes.SILEXRecipes.SILEXRecipe; @@ -26,17 +24,8 @@ import net.minecraft.client.gui.inventory.GuiContainer; import net.minecraft.item.ItemStack; import net.minecraft.util.EnumChatFormatting; -public class SILEXRecipeHandler extends TemplateRecipeHandler implements ICompatNHNEI { +public class SILEXRecipeHandler extends TemplateRecipeHandler { - @Override - public ItemStack[] getMachinesForRecipe() { - return new ItemStack[]{ - new ItemStack(ModBlocks.machine_silex)}; - } - @Override - public String getRecipeID() { - return "silex"; - } public LinkedList transferRectsRec = new LinkedList(); public LinkedList transferRectsGui = new LinkedList(); public LinkedList> guiRec = new LinkedList>(); diff --git a/src/main/java/com/hbm/handler/nei/ShredderRecipeHandler.java b/src/main/java/com/hbm/handler/nei/ShredderRecipeHandler.java index 7524f5091..396109047 100644 --- a/src/main/java/com/hbm/handler/nei/ShredderRecipeHandler.java +++ b/src/main/java/com/hbm/handler/nei/ShredderRecipeHandler.java @@ -7,8 +7,6 @@ import java.util.LinkedList; import java.util.List; import java.util.Map; -import com.hbm.blocks.ModBlocks; -import com.hbm.handler.imc.ICompatNHNEI; import com.hbm.inventory.RecipesCommon.ComparableStack; import com.hbm.inventory.gui.GUIMachineShredder; import com.hbm.inventory.recipes.MachineRecipes; @@ -21,17 +19,8 @@ import codechicken.nei.recipe.TemplateRecipeHandler; import net.minecraft.client.gui.inventory.GuiContainer; import net.minecraft.item.ItemStack; -public class ShredderRecipeHandler extends TemplateRecipeHandler implements ICompatNHNEI { +public class ShredderRecipeHandler extends TemplateRecipeHandler { - @Override - public ItemStack[] getMachinesForRecipe() { - return new ItemStack[]{ - new ItemStack(ModBlocks.machine_shredder)}; - } - @Override - public String getRecipeID() { - return "ntmRadiolysis"; - } public static ArrayList fuels; public LinkedList transferRectsRec = new LinkedList(); diff --git a/src/main/java/com/hbm/handler/nei/SmithingRecipeHandler.java b/src/main/java/com/hbm/handler/nei/SmithingRecipeHandler.java index fc03dd060..35e698422 100644 --- a/src/main/java/com/hbm/handler/nei/SmithingRecipeHandler.java +++ b/src/main/java/com/hbm/handler/nei/SmithingRecipeHandler.java @@ -5,8 +5,6 @@ import java.util.Arrays; import java.util.LinkedList; import java.util.List; -import com.hbm.blocks.ModBlocks; -import com.hbm.handler.imc.ICompatNHNEI; import com.hbm.inventory.gui.GUIAnvil; import com.hbm.inventory.recipes.anvil.AnvilRecipes; import com.hbm.inventory.recipes.anvil.AnvilSmithingRecipe; @@ -20,27 +18,8 @@ import net.minecraft.client.gui.FontRenderer; import net.minecraft.client.gui.inventory.GuiContainer; import net.minecraft.item.ItemStack; -public class SmithingRecipeHandler extends TemplateRecipeHandler implements ICompatNHNEI { +public class SmithingRecipeHandler extends TemplateRecipeHandler { - @Override - public ItemStack[] getMachinesForRecipe() { - return new ItemStack[]{ - new ItemStack(ModBlocks.anvil_lead), - new ItemStack(ModBlocks.anvil_iron), - new ItemStack(ModBlocks.anvil_steel), - new ItemStack(ModBlocks.anvil_starmetal), - new ItemStack(ModBlocks.anvil_meteorite), - new ItemStack(ModBlocks.anvil_ferrouranium), - new ItemStack(ModBlocks.anvil_bismuth), - new ItemStack(ModBlocks.anvil_schrabidate), - new ItemStack(ModBlocks.anvil_dnt), - new ItemStack(ModBlocks.anvil_osmiridium), - new ItemStack(ModBlocks.anvil_murky)}; - } - @Override - public String getRecipeID() { - return "ntmSmithing"; - } public LinkedList transferRectsRec = new LinkedList(); public LinkedList transferRectsGui = new LinkedList(); public LinkedList> guiRec = new LinkedList>(); diff --git a/src/main/java/com/hbm/handler/nei/ToolingHandler.java b/src/main/java/com/hbm/handler/nei/ToolingHandler.java index 9c0420b18..c50074f1e 100644 --- a/src/main/java/com/hbm/handler/nei/ToolingHandler.java +++ b/src/main/java/com/hbm/handler/nei/ToolingHandler.java @@ -1,17 +1,9 @@ package com.hbm.handler.nei; import com.hbm.blocks.generic.BlockToolConversion; -import com.hbm.items.ModItems; -import net.minecraft.item.ItemStack; public class ToolingHandler extends NEIUniversalHandler { - @Override - public ItemStack[] getMachinesForRecipe() { - return new ItemStack[]{ - new ItemStack(ModItems.boltgun), - new ItemStack(ModItems.blowtorch), - new ItemStack(ModItems.acetylene_torch)}; - } + public ToolingHandler() { super("Tooling", BlockToolConversion.getRecipes(true), BlockToolConversion.getRecipes(false)); } diff --git a/src/main/java/com/hbm/inventory/OreDictManager.java b/src/main/java/com/hbm/inventory/OreDictManager.java index 9bdb12bcd..c5bd346ff 100644 --- a/src/main/java/com/hbm/inventory/OreDictManager.java +++ b/src/main/java/com/hbm/inventory/OreDictManager.java @@ -164,6 +164,10 @@ public class OreDictManager { public static final DictFrame TCALLOY = new DictFrame("TcAlloy"); /** CADMIUM STEEL */ public static final DictFrame CDALLOY = new DictFrame("CdAlloy"); + /** BISMUTH BRONZE */ + public static final DictFrame BBRONZE = new DictFrame("BismuthBronze"); + /** ARSENIC BRONZE */ + public static final DictFrame ABRONZE = new DictFrame("ArsenicBronze"); /** LEAD */ public static final DictFrame PB = new DictFrame("Lead"); public static final DictFrame BI = new DictFrame("Bismuth"); @@ -290,6 +294,8 @@ public class OreDictManager { public static final DictGroup ANY_HARDPLASTIC = new DictGroup("AnyHardPlastic", PC, PVC); /** Any post nuclear steel like TCA or CDA */ public static final DictGroup ANY_RESISTANTALLOY = new DictGroup("AnyResistantAlloy", TCALLOY, CDALLOY); + /** Any post nuclear steel like TCA or CDA */ + public static final DictGroup ANY_BISMOIDBRONZE = new DictGroup("AnyBismoidBronze", BBRONZE, ABRONZE); /** Any "powder" propellant like gunpowder, ballistite and cordite */ public static final DictFrame ANY_GUNPOWDER = new DictFrame("AnyPropellant"); /** Any smokeless powder like ballistite and cordite */ @@ -363,6 +369,8 @@ public class OreDictManager { STEEL .ingot(ingot_steel) .dustSmall(powder_steel_tiny) .dust(powder_steel) .plate(plate_steel) .block(block_steel); TCALLOY .ingot(ingot_tcalloy) .dust(powder_tcalloy) .block(block_tcalloy); CDALLOY .ingot(ingot_cdalloy) .block(block_cdalloy); + BBRONZE .ingot(ingot_bismuth_bronze); + ABRONZE .ingot(ingot_arsenic_bronze); PB .nugget(nugget_lead) .ingot(ingot_lead) .dust(powder_lead) .plate(plate_lead) .block(block_lead) .ore(ore_lead, ore_meteor_lead); BI .nugget(nugget_bismuth) .billet(billet_bismuth) .ingot(ingot_bismuth) .dust(powder_bismuth) .block(block_bismuth); AS .nugget(nugget_arsenic) .ingot(ingot_arsenic); @@ -627,6 +635,7 @@ public class OreDictManager { ANY_PLASTIC.addPrefix(INGOT, true).addPrefix(DUST, true).addPrefix(BLOCK, true); ANY_HARDPLASTIC.addPrefix(INGOT, true); ANY_RESISTANTALLOY.addPrefix(INGOT, true).addPrefix(DUST, true).addPrefix(PLATECAST, true).addPrefix(PLATEWELDED, true).addPrefix(HEAVY_COMPONENT, true).addPrefix(BLOCK, true); + ANY_BISMOIDBRONZE.addPrefix(INGOT, true).addPrefix(PLATECAST, true); ANY_TAR.addPrefix(ANY, false); } diff --git a/src/main/java/com/hbm/inventory/SlotDeprecated.java b/src/main/java/com/hbm/inventory/SlotDeprecated.java new file mode 100644 index 000000000..1fa16a9d6 --- /dev/null +++ b/src/main/java/com/hbm/inventory/SlotDeprecated.java @@ -0,0 +1,28 @@ +package com.hbm.inventory; + +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; +import net.minecraft.inventory.IInventory; +import net.minecraft.inventory.Slot; +import net.minecraft.item.ItemStack; + +/** + * Deprecated slots can hold items from previous versions, but are otherwise entirely uninteractable + */ +public class SlotDeprecated extends Slot { + + public SlotDeprecated(IInventory inventory, int id, int x, int y) { + super(inventory, id, x, y); + } + + @Override + public boolean isItemValid(ItemStack stack) { + return false; + } + + @Override + @SideOnly(Side.CLIENT) + public boolean func_111238_b() { + return false; + } +} diff --git a/src/main/java/com/hbm/inventory/container/ContainerCentrifuge.java b/src/main/java/com/hbm/inventory/container/ContainerCentrifuge.java index 999bce6f6..58535bd9b 100644 --- a/src/main/java/com/hbm/inventory/container/ContainerCentrifuge.java +++ b/src/main/java/com/hbm/inventory/container/ContainerCentrifuge.java @@ -6,7 +6,7 @@ import com.hbm.items.ModItems; import com.hbm.items.machine.ItemMachineUpgrade; import com.hbm.tileentity.machine.TileEntityMachineCentrifuge; -import api.hbm.energy.IBatteryItem; +import api.hbm.energymk2.IBatteryItem; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.entity.player.InventoryPlayer; import net.minecraft.inventory.Container; diff --git a/src/main/java/com/hbm/inventory/container/ContainerCombustionEngine.java b/src/main/java/com/hbm/inventory/container/ContainerCombustionEngine.java index 3ba9022e5..492bcb866 100644 --- a/src/main/java/com/hbm/inventory/container/ContainerCombustionEngine.java +++ b/src/main/java/com/hbm/inventory/container/ContainerCombustionEngine.java @@ -5,7 +5,7 @@ import com.hbm.items.ModItems; import com.hbm.items.machine.IItemFluidIdentifier; import com.hbm.tileentity.machine.TileEntityMachineCombustionEngine; -import api.hbm.energy.IBatteryItem; +import api.hbm.energymk2.IBatteryItem; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.entity.player.InventoryPlayer; import net.minecraft.inventory.Container; diff --git a/src/main/java/com/hbm/inventory/container/ContainerCompressor.java b/src/main/java/com/hbm/inventory/container/ContainerCompressor.java index 3f81b4f68..6e569938d 100644 --- a/src/main/java/com/hbm/inventory/container/ContainerCompressor.java +++ b/src/main/java/com/hbm/inventory/container/ContainerCompressor.java @@ -3,7 +3,7 @@ package com.hbm.inventory.container; import com.hbm.items.machine.IItemFluidIdentifier; import com.hbm.tileentity.machine.TileEntityMachineCompressor; -import api.hbm.energy.IBatteryItem; +import api.hbm.energymk2.IBatteryItem; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.entity.player.InventoryPlayer; import net.minecraft.inventory.Container; diff --git a/src/main/java/com/hbm/inventory/container/ContainerCrystallizer.java b/src/main/java/com/hbm/inventory/container/ContainerCrystallizer.java index 55f73ebd7..337bbea28 100644 --- a/src/main/java/com/hbm/inventory/container/ContainerCrystallizer.java +++ b/src/main/java/com/hbm/inventory/container/ContainerCrystallizer.java @@ -7,7 +7,7 @@ import com.hbm.items.machine.IItemFluidIdentifier; import com.hbm.items.machine.ItemMachineUpgrade; import com.hbm.tileentity.machine.TileEntityMachineCrystallizer; -import api.hbm.energy.IBatteryItem; +import api.hbm.energymk2.IBatteryItem; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.entity.player.InventoryPlayer; import net.minecraft.inventory.Container; diff --git a/src/main/java/com/hbm/inventory/container/ContainerElectricFurnace.java b/src/main/java/com/hbm/inventory/container/ContainerElectricFurnace.java index 19ee67510..593b1feb5 100644 --- a/src/main/java/com/hbm/inventory/container/ContainerElectricFurnace.java +++ b/src/main/java/com/hbm/inventory/container/ContainerElectricFurnace.java @@ -6,7 +6,7 @@ import com.hbm.items.ModItems; import com.hbm.items.machine.ItemMachineUpgrade; import com.hbm.tileentity.machine.TileEntityMachineElectricFurnace; -import api.hbm.energy.IBatteryItem; +import api.hbm.energymk2.IBatteryItem; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.entity.player.InventoryPlayer; import net.minecraft.inventory.Container; diff --git a/src/main/java/com/hbm/inventory/container/ContainerElectrolyserFluid.java b/src/main/java/com/hbm/inventory/container/ContainerElectrolyserFluid.java index f9fcff491..05a7ae646 100644 --- a/src/main/java/com/hbm/inventory/container/ContainerElectrolyserFluid.java +++ b/src/main/java/com/hbm/inventory/container/ContainerElectrolyserFluid.java @@ -6,7 +6,7 @@ import com.hbm.items.machine.IItemFluidIdentifier; import com.hbm.items.machine.ItemMachineUpgrade; import com.hbm.tileentity.machine.TileEntityElectrolyser; -import api.hbm.energy.IBatteryItem; +import api.hbm.energymk2.IBatteryItem; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.entity.player.InventoryPlayer; import net.minecraft.inventory.Container; diff --git a/src/main/java/com/hbm/inventory/container/ContainerElectrolyserMetal.java b/src/main/java/com/hbm/inventory/container/ContainerElectrolyserMetal.java index 15c8b9565..a376d01f5 100644 --- a/src/main/java/com/hbm/inventory/container/ContainerElectrolyserMetal.java +++ b/src/main/java/com/hbm/inventory/container/ContainerElectrolyserMetal.java @@ -5,7 +5,7 @@ import com.hbm.items.ModItems; import com.hbm.items.machine.ItemMachineUpgrade; import com.hbm.tileentity.machine.TileEntityElectrolyser; -import api.hbm.energy.IBatteryItem; +import api.hbm.energymk2.IBatteryItem; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.entity.player.InventoryPlayer; import net.minecraft.inventory.Container; diff --git a/src/main/java/com/hbm/inventory/container/ContainerFEL.java b/src/main/java/com/hbm/inventory/container/ContainerFEL.java index db7cd4949..c80e69e44 100644 --- a/src/main/java/com/hbm/inventory/container/ContainerFEL.java +++ b/src/main/java/com/hbm/inventory/container/ContainerFEL.java @@ -3,7 +3,6 @@ package com.hbm.inventory.container; import com.hbm.items.ModItems; import com.hbm.tileentity.machine.TileEntityFEL; -import api.hbm.energy.IBatteryItem; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.entity.player.InventoryPlayer; import net.minecraft.inventory.Container; @@ -49,7 +48,7 @@ public class ContainerFEL extends Container { } } else { - if(rStack.getItem() instanceof IBatteryItem || rStack.getItem() == ModItems.battery_creative) { + if(rStack.getItem() instanceof api.hbm.energymk2.IBatteryItem || rStack.getItem() == ModItems.battery_creative) { if(!this.mergeItemStack(stack, 0, 1, false)) return null; } else { if(!this.mergeItemStack(stack, 1, 2, false)) return null; diff --git a/src/main/java/com/hbm/inventory/container/ContainerLaunchPadLarge.java b/src/main/java/com/hbm/inventory/container/ContainerLaunchPadLarge.java index b319759f1..f45fd6d79 100644 --- a/src/main/java/com/hbm/inventory/container/ContainerLaunchPadLarge.java +++ b/src/main/java/com/hbm/inventory/container/ContainerLaunchPadLarge.java @@ -5,7 +5,7 @@ import com.hbm.inventory.SlotTakeOnly; import com.hbm.items.ModItems; import com.hbm.tileentity.bomb.TileEntityLaunchPadBase; -import api.hbm.energy.IBatteryItem; +import api.hbm.energymk2.IBatteryItem; import api.hbm.item.IDesignatorItem; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.entity.player.InventoryPlayer; diff --git a/src/main/java/com/hbm/inventory/container/ContainerMachineArcFurnace.java b/src/main/java/com/hbm/inventory/container/ContainerMachineArcFurnace.java index 792fc0419..7cf2e32e5 100644 --- a/src/main/java/com/hbm/inventory/container/ContainerMachineArcFurnace.java +++ b/src/main/java/com/hbm/inventory/container/ContainerMachineArcFurnace.java @@ -4,7 +4,7 @@ import com.hbm.inventory.SlotSmelting; import com.hbm.items.ModItems; import com.hbm.tileentity.machine.TileEntityMachineArcFurnace; -import api.hbm.energy.IBatteryItem; +import api.hbm.energymk2.IBatteryItem; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.entity.player.InventoryPlayer; import net.minecraft.inventory.Container; diff --git a/src/main/java/com/hbm/inventory/container/ContainerMachineArcWelder.java b/src/main/java/com/hbm/inventory/container/ContainerMachineArcWelder.java index 701d718bf..19ff1155c 100644 --- a/src/main/java/com/hbm/inventory/container/ContainerMachineArcWelder.java +++ b/src/main/java/com/hbm/inventory/container/ContainerMachineArcWelder.java @@ -7,7 +7,7 @@ import com.hbm.items.machine.IItemFluidIdentifier; import com.hbm.items.machine.ItemMachineUpgrade; import com.hbm.tileentity.machine.TileEntityMachineArcWelder; -import api.hbm.energy.IBatteryItem; +import api.hbm.energymk2.IBatteryItem; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.entity.player.InventoryPlayer; import net.minecraft.inventory.Container; diff --git a/src/main/java/com/hbm/inventory/container/ContainerMachineAssembler.java b/src/main/java/com/hbm/inventory/container/ContainerMachineAssembler.java index ed084a881..c8380834b 100644 --- a/src/main/java/com/hbm/inventory/container/ContainerMachineAssembler.java +++ b/src/main/java/com/hbm/inventory/container/ContainerMachineAssembler.java @@ -6,7 +6,7 @@ import com.hbm.items.machine.ItemAssemblyTemplate; import com.hbm.items.machine.ItemMachineUpgrade; import com.hbm.tileentity.machine.TileEntityMachineAssembler; -import api.hbm.energy.IBatteryItem; +import api.hbm.energymk2.IBatteryItem; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.entity.player.InventoryPlayer; import net.minecraft.inventory.Container; diff --git a/src/main/java/com/hbm/inventory/container/ContainerMachineCatalyticReformer.java b/src/main/java/com/hbm/inventory/container/ContainerMachineCatalyticReformer.java index 41b30d98e..6994b80cc 100644 --- a/src/main/java/com/hbm/inventory/container/ContainerMachineCatalyticReformer.java +++ b/src/main/java/com/hbm/inventory/container/ContainerMachineCatalyticReformer.java @@ -5,7 +5,7 @@ import com.hbm.items.ModItems; import com.hbm.items.machine.IItemFluidIdentifier; import com.hbm.tileentity.machine.oil.TileEntityMachineCatalyticReformer; -import api.hbm.energy.IBatteryItem; +import api.hbm.energymk2.IBatteryItem; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.entity.player.InventoryPlayer; import net.minecraft.inventory.Container; diff --git a/src/main/java/com/hbm/inventory/container/ContainerMachineChemplant.java b/src/main/java/com/hbm/inventory/container/ContainerMachineChemplant.java index 6bbf3510a..950a00d7d 100644 --- a/src/main/java/com/hbm/inventory/container/ContainerMachineChemplant.java +++ b/src/main/java/com/hbm/inventory/container/ContainerMachineChemplant.java @@ -7,7 +7,7 @@ import com.hbm.items.machine.ItemChemistryTemplate; import com.hbm.items.machine.ItemMachineUpgrade; import com.hbm.tileentity.machine.TileEntityMachineChemplant; -import api.hbm.energy.IBatteryItem; +import api.hbm.energymk2.IBatteryItem; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.entity.player.InventoryPlayer; import net.minecraft.inventory.Container; diff --git a/src/main/java/com/hbm/inventory/container/ContainerMachineCyclotron.java b/src/main/java/com/hbm/inventory/container/ContainerMachineCyclotron.java index 632769cdf..7251c9623 100644 --- a/src/main/java/com/hbm/inventory/container/ContainerMachineCyclotron.java +++ b/src/main/java/com/hbm/inventory/container/ContainerMachineCyclotron.java @@ -9,7 +9,7 @@ import com.hbm.items.ModItems; import com.hbm.items.machine.ItemMachineUpgrade; import com.hbm.tileentity.machine.TileEntityMachineCyclotron; -import api.hbm.energy.IBatteryItem; +import api.hbm.energymk2.IBatteryItem; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.entity.player.InventoryPlayer; import net.minecraft.inventory.Container; diff --git a/src/main/java/com/hbm/inventory/container/ContainerMachineEPress.java b/src/main/java/com/hbm/inventory/container/ContainerMachineEPress.java index c2cfea587..020eb7ac4 100644 --- a/src/main/java/com/hbm/inventory/container/ContainerMachineEPress.java +++ b/src/main/java/com/hbm/inventory/container/ContainerMachineEPress.java @@ -7,7 +7,7 @@ import com.hbm.items.machine.ItemMachineUpgrade; import com.hbm.items.machine.ItemStamp; import com.hbm.tileentity.machine.TileEntityMachineEPress; -import api.hbm.energy.IBatteryItem; +import api.hbm.energymk2.IBatteryItem; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.entity.player.InventoryPlayer; import net.minecraft.inventory.Container; diff --git a/src/main/java/com/hbm/inventory/container/ContainerMachineExcavator.java b/src/main/java/com/hbm/inventory/container/ContainerMachineExcavator.java index 9a780d917..3169f6eeb 100644 --- a/src/main/java/com/hbm/inventory/container/ContainerMachineExcavator.java +++ b/src/main/java/com/hbm/inventory/container/ContainerMachineExcavator.java @@ -7,7 +7,7 @@ import com.hbm.items.machine.ItemDrillbit; import com.hbm.items.machine.ItemMachineUpgrade; import com.hbm.tileentity.machine.TileEntityMachineExcavator; -import api.hbm.energy.IBatteryItem; +import api.hbm.energymk2.IBatteryItem; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.entity.player.InventoryPlayer; import net.minecraft.inventory.Container; diff --git a/src/main/java/com/hbm/inventory/container/ContainerMachineExposureChamber.java b/src/main/java/com/hbm/inventory/container/ContainerMachineExposureChamber.java index c4dd07df6..913dc36a2 100644 --- a/src/main/java/com/hbm/inventory/container/ContainerMachineExposureChamber.java +++ b/src/main/java/com/hbm/inventory/container/ContainerMachineExposureChamber.java @@ -6,7 +6,7 @@ import com.hbm.items.ModItems; import com.hbm.items.machine.ItemMachineUpgrade; import com.hbm.tileentity.machine.TileEntityMachineExposureChamber; -import api.hbm.energy.IBatteryItem; +import api.hbm.energymk2.IBatteryItem; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.entity.player.InventoryPlayer; import net.minecraft.inventory.Container; diff --git a/src/main/java/com/hbm/inventory/container/ContainerMachineGasCent.java b/src/main/java/com/hbm/inventory/container/ContainerMachineGasCent.java index feb3de896..51513c094 100644 --- a/src/main/java/com/hbm/inventory/container/ContainerMachineGasCent.java +++ b/src/main/java/com/hbm/inventory/container/ContainerMachineGasCent.java @@ -6,7 +6,7 @@ import com.hbm.items.machine.IItemFluidIdentifier; import com.hbm.items.machine.ItemMachineUpgrade; import com.hbm.tileentity.machine.TileEntityMachineGasCent; -import api.hbm.energy.IBatteryItem; +import api.hbm.energymk2.IBatteryItem; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.entity.player.InventoryPlayer; import net.minecraft.inventory.Container; diff --git a/src/main/java/com/hbm/inventory/container/ContainerMachineGasFlare.java b/src/main/java/com/hbm/inventory/container/ContainerMachineGasFlare.java index 5165f4e37..37f444835 100644 --- a/src/main/java/com/hbm/inventory/container/ContainerMachineGasFlare.java +++ b/src/main/java/com/hbm/inventory/container/ContainerMachineGasFlare.java @@ -5,7 +5,7 @@ import com.hbm.items.machine.IItemFluidIdentifier; import com.hbm.items.machine.ItemMachineUpgrade; import com.hbm.tileentity.machine.oil.TileEntityMachineGasFlare; -import api.hbm.energy.IBatteryItem; +import api.hbm.energymk2.IBatteryItem; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.entity.player.InventoryPlayer; import net.minecraft.inventory.Container; diff --git a/src/main/java/com/hbm/inventory/container/ContainerMachineHydrotreater.java b/src/main/java/com/hbm/inventory/container/ContainerMachineHydrotreater.java index 375e0d753..ec7b3e206 100644 --- a/src/main/java/com/hbm/inventory/container/ContainerMachineHydrotreater.java +++ b/src/main/java/com/hbm/inventory/container/ContainerMachineHydrotreater.java @@ -1,11 +1,12 @@ package com.hbm.inventory.container; +import com.hbm.inventory.SlotDeprecated; import com.hbm.inventory.SlotTakeOnly; import com.hbm.items.ModItems; import com.hbm.items.machine.IItemFluidIdentifier; import com.hbm.tileentity.machine.oil.TileEntityMachineHydrotreater; -import api.hbm.energy.IBatteryItem; +import api.hbm.energymk2.IBatteryItem; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.entity.player.InventoryPlayer; import net.minecraft.inventory.Container; @@ -26,10 +27,10 @@ public class ContainerMachineHydrotreater extends Container { this.addSlotToContainer(new Slot(tedf, 1, 35, 90)); //Canister Output this.addSlotToContainer(new SlotTakeOnly(tedf, 2, 35, 108)); - //Hydrogen Input - this.addSlotToContainer(new Slot(tedf, 3, 53, 90)); - //Hydrogen Output - this.addSlotToContainer(new SlotTakeOnly(tedf, 4, 53, 108)); + //Hydrogen Input (removed, requires pressurization) + this.addSlotToContainer(new SlotDeprecated(tedf, 3, 53, 90)); + //Hydrogen Output (samesies) + this.addSlotToContainer(new SlotDeprecated(tedf, 4, 53, 108)); //Desulfated Oil Input this.addSlotToContainer(new Slot(tedf, 5, 125, 90)); //Desulfated Oil Output diff --git a/src/main/java/com/hbm/inventory/container/ContainerMachineRadarNT.java b/src/main/java/com/hbm/inventory/container/ContainerMachineRadarNT.java index 0bd1f475b..ea8efe275 100644 --- a/src/main/java/com/hbm/inventory/container/ContainerMachineRadarNT.java +++ b/src/main/java/com/hbm/inventory/container/ContainerMachineRadarNT.java @@ -3,7 +3,7 @@ package com.hbm.inventory.container; import com.hbm.items.ModItems; import com.hbm.tileentity.machine.TileEntityMachineRadarNT; -import api.hbm.energy.IBatteryItem; +import api.hbm.energymk2.IBatteryItem; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.entity.player.InventoryPlayer; import net.minecraft.inventory.Container; diff --git a/src/main/java/com/hbm/inventory/container/ContainerMachineShredder.java b/src/main/java/com/hbm/inventory/container/ContainerMachineShredder.java index 3e751f88e..c10e47ae7 100644 --- a/src/main/java/com/hbm/inventory/container/ContainerMachineShredder.java +++ b/src/main/java/com/hbm/inventory/container/ContainerMachineShredder.java @@ -5,7 +5,7 @@ import com.hbm.items.ModItems; import com.hbm.items.machine.ItemBlades; import com.hbm.tileentity.machine.TileEntityMachineShredder; -import api.hbm.energy.IBatteryItem; +import api.hbm.energymk2.IBatteryItem; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.entity.player.InventoryPlayer; import net.minecraft.inventory.Container; diff --git a/src/main/java/com/hbm/inventory/container/ContainerMachineTurbineGas.java b/src/main/java/com/hbm/inventory/container/ContainerMachineTurbineGas.java index b1aa96ca1..5507df3c5 100644 --- a/src/main/java/com/hbm/inventory/container/ContainerMachineTurbineGas.java +++ b/src/main/java/com/hbm/inventory/container/ContainerMachineTurbineGas.java @@ -5,7 +5,7 @@ import com.hbm.inventory.fluid.Fluids; import com.hbm.items.machine.ItemFluidIdentifier; import com.hbm.tileentity.machine.TileEntityMachineTurbineGas; -import api.hbm.energy.IBatteryItem; +import api.hbm.energymk2.IBatteryItem; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.entity.player.InventoryPlayer; import net.minecraft.inventory.Container; diff --git a/src/main/java/com/hbm/inventory/container/ContainerMachineTurbofan.java b/src/main/java/com/hbm/inventory/container/ContainerMachineTurbofan.java index 5fb979fe9..d2e12fa98 100644 --- a/src/main/java/com/hbm/inventory/container/ContainerMachineTurbofan.java +++ b/src/main/java/com/hbm/inventory/container/ContainerMachineTurbofan.java @@ -5,7 +5,7 @@ import com.hbm.items.machine.IItemFluidIdentifier; import com.hbm.items.machine.ItemMachineUpgrade; import com.hbm.tileentity.machine.TileEntityMachineTurbofan; -import api.hbm.energy.IBatteryItem; +import api.hbm.energymk2.IBatteryItem; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.entity.player.InventoryPlayer; import net.minecraft.inventory.Container; diff --git a/src/main/java/com/hbm/inventory/container/ContainerMachineVacuumDistill.java b/src/main/java/com/hbm/inventory/container/ContainerMachineVacuumDistill.java index 260bfe17d..c2fd3971b 100644 --- a/src/main/java/com/hbm/inventory/container/ContainerMachineVacuumDistill.java +++ b/src/main/java/com/hbm/inventory/container/ContainerMachineVacuumDistill.java @@ -1,5 +1,6 @@ package com.hbm.inventory.container; +import com.hbm.inventory.SlotDeprecated; import com.hbm.inventory.SlotTakeOnly; import com.hbm.tileentity.machine.oil.TileEntityMachineVacuumDistill; @@ -20,10 +21,10 @@ public class ContainerMachineVacuumDistill extends Container { //Battery this.addSlotToContainer(new Slot(tedf, 0, 26, 90)); - //Canister Input - this.addSlotToContainer(new Slot(tedf, 1, 44, 90)); - //Canister Output - this.addSlotToContainer(new SlotTakeOnly(tedf, 2, 44, 108)); + //Canister Input (removed, requires pressurization) + this.addSlotToContainer(new SlotDeprecated(tedf, 1, 44, 90)); + //Canister Output (same as above) + this.addSlotToContainer(new SlotDeprecated(tedf, 2, 44, 108)); //Heavy Oil Input this.addSlotToContainer(new Slot(tedf, 3, 80, 90)); //Heavy Oil Output diff --git a/src/main/java/com/hbm/inventory/container/ContainerMachineWoodBurner.java b/src/main/java/com/hbm/inventory/container/ContainerMachineWoodBurner.java index 73684e642..f893fb23f 100644 --- a/src/main/java/com/hbm/inventory/container/ContainerMachineWoodBurner.java +++ b/src/main/java/com/hbm/inventory/container/ContainerMachineWoodBurner.java @@ -4,7 +4,7 @@ import com.hbm.inventory.SlotTakeOnly; import com.hbm.items.machine.IItemFluidIdentifier; import com.hbm.tileentity.machine.TileEntityMachineWoodBurner; -import api.hbm.energy.IBatteryItem; +import api.hbm.energymk2.IBatteryItem; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.entity.player.InventoryPlayer; import net.minecraft.inventory.Container; diff --git a/src/main/java/com/hbm/inventory/container/ContainerMixer.java b/src/main/java/com/hbm/inventory/container/ContainerMixer.java index dcbcdd17b..0242b916b 100644 --- a/src/main/java/com/hbm/inventory/container/ContainerMixer.java +++ b/src/main/java/com/hbm/inventory/container/ContainerMixer.java @@ -4,7 +4,7 @@ import com.hbm.items.machine.IItemFluidIdentifier; import com.hbm.items.machine.ItemMachineUpgrade; import com.hbm.tileentity.machine.TileEntityMachineMixer; -import api.hbm.energy.IBatteryItem; +import api.hbm.energymk2.IBatteryItem; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.entity.player.InventoryPlayer; import net.minecraft.inventory.Container; diff --git a/src/main/java/com/hbm/inventory/fluid/tank/FluidTank.java b/src/main/java/com/hbm/inventory/fluid/tank/FluidTank.java index 40172b6bd..4fa6180d8 100644 --- a/src/main/java/com/hbm/inventory/fluid/tank/FluidTank.java +++ b/src/main/java/com/hbm/inventory/fluid/tank/FluidTank.java @@ -10,6 +10,7 @@ import org.lwjgl.opengl.GL11; import com.hbm.inventory.fluid.FluidType; import com.hbm.inventory.fluid.Fluids; import com.hbm.inventory.gui.GuiInfoContainer; +import com.hbm.items.ModItems; import com.hbm.items.machine.IItemFluidIdentifier; import com.hbm.packet.PacketDispatcher; import com.hbm.packet.TEFluidPacket; @@ -126,6 +127,11 @@ public class FluidTank { if(slots[in] == null) return false; + + boolean isInfiniteBarrel = slots[in].getItem() == ModItems.fluid_barrel_infinite; + + if(!isInfiniteBarrel && pressure != 0) + return false; int prev = this.getFill(); diff --git a/src/main/java/com/hbm/inventory/gui/GUIMachineBattery.java b/src/main/java/com/hbm/inventory/gui/GUIMachineBattery.java index 5b2e00658..11480d37d 100644 --- a/src/main/java/com/hbm/inventory/gui/GUIMachineBattery.java +++ b/src/main/java/com/hbm/inventory/gui/GUIMachineBattery.java @@ -33,6 +33,7 @@ public class GUIMachineBattery extends GuiInfoContainer { this.ySize = 166; } + @SuppressWarnings("incomplete-switch") @Override public void drawScreen(int mouseX, int mouseY, float f) { super.drawScreen(mouseX, mouseY, f); @@ -110,6 +111,6 @@ public class GUIMachineBattery extends GuiInfoContainer { int j = battery.redHigh; drawTexturedModalRect(guiLeft + 133, guiTop + 52, 176, 52 + j * 18, 18, 18); - drawTexturedModalRect(guiLeft + 152, guiTop + 35, 194, 52 + battery.priority.ordinal() * 16, 16, 16); + drawTexturedModalRect(guiLeft + 152, guiTop + 35, 194, 52 + battery.priority.ordinal() * 16 - 16, 16, 16); } } diff --git a/src/main/java/com/hbm/inventory/gui/GUIMachineSelenium.java b/src/main/java/com/hbm/inventory/gui/GUIMachineSelenium.java index 9c34f199d..5c436c06e 100644 --- a/src/main/java/com/hbm/inventory/gui/GUIMachineSelenium.java +++ b/src/main/java/com/hbm/inventory/gui/GUIMachineSelenium.java @@ -1,20 +1,14 @@ package com.hbm.inventory.gui; -import java.util.ArrayList; -import java.util.List; import org.lwjgl.opengl.GL11; import com.hbm.inventory.container.ContainerMachineSelenium; -import com.hbm.inventory.fluid.FluidType; -import com.hbm.inventory.fluid.Fluids; import com.hbm.lib.RefStrings; import com.hbm.tileentity.machine.TileEntityMachineSeleniumEngine; -import com.hbm.util.BobMathUtil; import net.minecraft.client.Minecraft; import net.minecraft.client.resources.I18n; import net.minecraft.entity.player.InventoryPlayer; -import net.minecraft.util.EnumChatFormatting; import net.minecraft.util.ResourceLocation; public class GUIMachineSelenium extends GuiInfoContainer { @@ -36,22 +30,6 @@ public class GUIMachineSelenium extends GuiInfoContainer { selenium.tank.renderTankInfo(this, mouseX, mouseY, guiLeft + 116, guiTop + 18, 16, 52); this.drawElectricityInfo(this, mouseX, mouseY, guiLeft + 8, guiTop + 108, 160, 16, selenium.power, selenium.powerCap); - - List text = new ArrayList(); - text.add(EnumChatFormatting.YELLOW + "Accepted Fuels:"); - - for(FluidType type : Fluids.getInNiceOrder()) { - long energy = selenium.getHEFromFuel(type); - - if(energy > 0) - text.add(" " + type.getLocalizedName() + " (" + BobMathUtil.getShortNumber(energy) + "HE/t)"); - } - - text.add(EnumChatFormatting.ITALIC + "(These numbers are base values,"); - text.add(EnumChatFormatting.ITALIC + "actual output is based"); - text.add(EnumChatFormatting.ITALIC + "on piston count)"); - - this.drawCustomInfoStat(mouseX, mouseY, guiLeft - 16, guiTop + 36, 16, 16, guiLeft - 8, guiTop + 36 + 16, text.toArray(new String[0])); String[] text1 = new String[] { "Fuel consumption rate:", " 1 mB/t", @@ -65,13 +43,6 @@ public class GUIMachineSelenium extends GuiInfoContainer { "required to operate this radial engine!" }; this.drawCustomInfoStat(mouseX, mouseY, guiLeft - 16, guiTop + 36 + 32, 16, 16, guiLeft - 8, guiTop + 36 + 16 + 32, text2); } - - if(!selenium.hasAcceptableFuel()) { - - String[] text2 = new String[] { "Error: The currently set fuel type", - "is not supported by this engine!" }; - this.drawCustomInfoStat(mouseX, mouseY, guiLeft - 16, guiTop + 36 + 48, 16, 16, guiLeft - 8, guiTop + 36 + 16 + 32, text2); - } } @Override @@ -88,19 +59,6 @@ public class GUIMachineSelenium extends GuiInfoContainer { Minecraft.getMinecraft().getTextureManager().bindTexture(texture); drawTexturedModalRect(guiLeft, guiTop, 0, 0, xSize, ySize); - if(selenium.power > 0) { - int i = (int)selenium.getPowerScaled(160); - - i = (int) Math.min(i, 160); - - drawTexturedModalRect(guiLeft + 8, guiTop + 108, 0, 222, i, 16); - } - - if(selenium.tank.getFill() > 0 && selenium.hasAcceptableFuel() && selenium.pistonCount > 2) - { - drawTexturedModalRect(guiLeft + 115, guiTop + 71, 192, 0, 18, 18); - } - if(selenium.pistonCount > 0) { int k = selenium.pistonCount; @@ -110,9 +68,6 @@ public class GUIMachineSelenium extends GuiInfoContainer { if(selenium.pistonCount < 3) this.drawInfoPanel(guiLeft - 16, guiTop + 36 + 32, 16, 16, 6); - if(!selenium.hasAcceptableFuel()) - this.drawInfoPanel(guiLeft - 16, guiTop + 36 + 48, 16, 16, 7); - this.drawInfoPanel(guiLeft - 16, guiTop + 36, 16, 16, 2); this.drawInfoPanel(guiLeft - 16, guiTop + 36 + 16, 16, 16, 3); diff --git a/src/main/java/com/hbm/inventory/gui/GUIScreenFluid.java b/src/main/java/com/hbm/inventory/gui/GUIScreenFluid.java index 8d0105f14..e72526ced 100644 --- a/src/main/java/com/hbm/inventory/gui/GUIScreenFluid.java +++ b/src/main/java/com/hbm/inventory/gui/GUIScreenFluid.java @@ -67,6 +67,7 @@ public class GUIScreenFluid extends GuiScreen { this.search.setTextColor(-1); this.search.setDisabledTextColour(-1); this.search.setEnableBackgroundDrawing(false); + this.search.setFocused(true); if(player.getHeldItem() != null && player.getHeldItem().getItem() == ModItems.fluid_identifier_multi) { this.primary = ItemFluidIDMulti.getType(player.getHeldItem(), true); diff --git a/src/main/java/com/hbm/inventory/material/Mats.java b/src/main/java/com/hbm/inventory/material/Mats.java index e346213d3..f2abc4a72 100644 --- a/src/main/java/com/hbm/inventory/material/Mats.java +++ b/src/main/java/com/hbm/inventory/material/Mats.java @@ -54,6 +54,7 @@ public class Mats { public static final NTMMaterial MAT_PETCOKE = make( 1411, PETCOKE) .setConversion(MAT_CARBON, 4, 3); public static final NTMMaterial MAT_LIGCOKE = make( 1412, LIGCOKE) .setConversion(MAT_CARBON, 4, 3); public static final NTMMaterial MAT_GRAPHITE = make( 1420, GRAPHITE) .setConversion(MAT_CARBON, 1, 1); + public static final NTMMaterial MAT_DIAMOND = make( 1430, DIAMOND) .setConversion(MAT_CARBON, 1, 1); public static final NTMMaterial MAT_IRON = makeSmeltable(2600, IRON, 0xFFFFFF, 0x353535, 0xFFA259).setShapes(PIPE, CASTPLATE, WELDEDPLATE); public static final NTMMaterial MAT_GOLD = makeSmeltable(7900, GOLD, 0xFFFF8B, 0xC26E00, 0xE8D754).setShapes(DENSEWIRE, CASTPLATE); public static final NTMMaterial MAT_REDSTONE = makeSmeltable(_VS + 01, REDSTONE, 0xE3260C, 0x700E06, 0xFF1000); @@ -105,6 +106,7 @@ public class Mats { public static final NTMMaterial MAT_NEODYMIUM = makeSmeltable(6000, ND, 0xE6E6B6, 0x1C1C00, 0x8F8F5F).setShapes(NUGGET, DUSTTINY, INGOT, DUST, DENSEWIRE, BLOCK); public static final NTMMaterial MAT_NIOBIUM = makeSmeltable(4100, NB, 0xB76EC9, 0x2F2D42, 0xD576B1).setShapes(NUGGET, DUSTTINY, INGOT, DUST, BLOCK); public static final NTMMaterial MAT_BERYLLIUM = makeSmeltable(400, BE, 0xB2B2A6, 0x0F0F03, 0xAE9572).setShapes(NUGGET, INGOT, DUST, BLOCK); + public static final NTMMaterial MAT_EMERALD = make( 401, EMERALD) .setConversion(MAT_BERYLLIUM, 4, 3); public static final NTMMaterial MAT_COBALT = makeSmeltable(2700, CO, 0xC2D1EE, 0x353554, 0x8F72AE).setShapes(NUGGET, DUSTTINY, BILLET, INGOT, DUST, BLOCK); public static final NTMMaterial MAT_BORON = makeSmeltable(500, B, 0xBDC8D2, 0x29343E, 0xAD72AE).setShapes(DUSTTINY, INGOT, DUST, BLOCK); public static final NTMMaterial MAT_ZIRCONIUM = makeSmeltable(4000, ZR, 0xE3DCBE, 0x3E3719, 0xADA688).setShapes(NUGGET, DUSTTINY, BILLET, INGOT, DUST, CASTPLATE, WELDEDPLATE, BLOCK); @@ -123,6 +125,8 @@ public class Mats { public static final NTMMaterial MAT_FERRO = makeSmeltable(_AS + 7, FERRO, 0xB7B7C9, 0x101022, 0x6B6B8B).setShapes(INGOT); public static final NTMMaterial MAT_TCALLOY = makeSmeltable(_AS + 6, TCALLOY, 0xD4D6D6, 0x323D3D, 0x9CA6A6).setShapes(INGOT, DUST, CASTPLATE, WELDEDPLATE, HEAVY_COMPONENT); public static final NTMMaterial MAT_CDALLOY = makeSmeltable(_AS + 13, CDALLOY, 0xF7DF8F, 0x604308, 0xFBD368).setShapes(INGOT, CASTPLATE, WELDEDPLATE, HEAVY_COMPONENT); + public static final NTMMaterial MAT_BBRONZE = makeSmeltable(_AS + 16, BBRONZE, 0xE19A69, 0x485353, 0x987D65).setShapes(INGOT, CASTPLATE); + public static final NTMMaterial MAT_ABRONZE = makeSmeltable(_AS + 17, ABRONZE, 0xDB9462, 0x203331, 0x77644D).setShapes(INGOT, CASTPLATE); public static final NTMMaterial MAT_MAGTUNG = makeSmeltable(_AS + 8, MAGTUNG, 0x22A2A2, 0x0F0F0F, 0x22A2A2).setShapes(INGOT, DUST, DENSEWIRE, BLOCK); public static final NTMMaterial MAT_CMB = makeSmeltable(_AS + 9, CMB, 0x6F6FB4, 0x000011, 0x6F6FB4).setShapes(INGOT, DUST, PLATE, CASTPLATE, WELDEDPLATE, BLOCK); public static final NTMMaterial MAT_DNT = makeSmeltable(_AS + 15, DNT, 0x7582B9, 0x16000E, 0x455289).setShapes(INGOT, DUST, DENSEWIRE, BLOCK); diff --git a/src/main/java/com/hbm/inventory/recipes/ChemplantRecipes.java b/src/main/java/com/hbm/inventory/recipes/ChemplantRecipes.java index 319d12250..75af426bc 100644 --- a/src/main/java/com/hbm/inventory/recipes/ChemplantRecipes.java +++ b/src/main/java/com/hbm/inventory/recipes/ChemplantRecipes.java @@ -286,13 +286,6 @@ public class ChemplantRecipes extends SerializableRecipe { new ItemStack(ModItems.gem_tantalium), new ItemStack(ModItems.dust, 3)) .outputFluids(new FluidStack(Fluids.WATER, 250))); - recipes.add(new ChemRecipe(91, "ARSENIC", 1200) - .inputItems(new ComparableStack(ModItems.scrap_oil, 256)) - .inputFluids(new FluidStack(Fluids.SULFURIC_ACID, 1000)) - .outputItems( - new ItemStack(ModItems.nugget_arsenic), - new ItemStack(ModItems.sulfur, 2)) - .outputFluids(new FluidStack(Fluids.HEAVYOIL, 1500))); recipes.add(new ChemRecipe(68, "VIT_LIQUID", 100) .inputItems(new ComparableStack(ModBlocks.sand_lead)) .inputFluids(new FluidStack(Fluids.WASTEFLUID, 1000)) diff --git a/src/main/java/com/hbm/inventory/recipes/CrucibleRecipes.java b/src/main/java/com/hbm/inventory/recipes/CrucibleRecipes.java index fecbd9e20..903d07e1f 100644 --- a/src/main/java/com/hbm/inventory/recipes/CrucibleRecipes.java +++ b/src/main/java/com/hbm/inventory/recipes/CrucibleRecipes.java @@ -96,6 +96,14 @@ public class CrucibleRecipes extends SerializableRecipe { .inputs(new MaterialStack(Mats.MAT_STEEL, n * 8), new MaterialStack(Mats.MAT_CADMIUM, n)) .outputs(new MaterialStack(Mats.MAT_CDALLOY, i))); + recipes.add(new CrucibleRecipe(14, "crucible.bbronze", 9, new ItemStack(ModItems.ingot_bismuth_bronze)) + .inputs(new MaterialStack(Mats.MAT_COPPER, n * 8), new MaterialStack(Mats.MAT_BISMUTH, n), new MaterialStack(Mats.MAT_FLUX, n * 3)) + .outputs(new MaterialStack(Mats.MAT_BBRONZE, i), new MaterialStack(Mats.MAT_SLAG, n * 3))); + + recipes.add(new CrucibleRecipe(15, "crucible.abronze", 9, new ItemStack(ModItems.ingot_arsenic_bronze)) + .inputs(new MaterialStack(Mats.MAT_COPPER, n * 8), new MaterialStack(Mats.MAT_ARSENIC, n), new MaterialStack(Mats.MAT_FLUX, n * 3)) + .outputs(new MaterialStack(Mats.MAT_ABRONZE, i), new MaterialStack(Mats.MAT_SLAG, n * 3))); + recipes.add(new CrucibleRecipe(13, "crucible.cmb", 3, new ItemStack(ModItems.ingot_combine_steel)) .inputs(new MaterialStack(Mats.MAT_MAGTUNG, n * 6), new MaterialStack(Mats.MAT_MUD, n * 3)) .outputs(new MaterialStack(Mats.MAT_CMB, i))); diff --git a/src/main/java/com/hbm/inventory/recipes/CrystallizerRecipes.java b/src/main/java/com/hbm/inventory/recipes/CrystallizerRecipes.java index 05282e9bd..e73b9d47e 100644 --- a/src/main/java/com/hbm/inventory/recipes/CrystallizerRecipes.java +++ b/src/main/java/com/hbm/inventory/recipes/CrystallizerRecipes.java @@ -97,6 +97,7 @@ public class CrystallizerRecipes extends SerializableRecipe { registerRecipe(new ComparableStack(Items.dye, 1, 15), new CrystallizerRecipe(new ItemStack(Items.slime_ball, 4), mixingTime), new FluidStack(Fluids.SULFURIC_ACID, 250)); registerRecipe(new ComparableStack(Items.bone), new CrystallizerRecipe(new ItemStack(Items.slime_ball, 16), mixingTime), new FluidStack(Fluids.SULFURIC_ACID, 1_000)); registerRecipe(new ComparableStack(DictFrame.fromOne(ModItems.plant_item, EnumPlantType.MUSTARDWILLOW)), new CrystallizerRecipe(new ItemStack(ModItems.powder_cadmium), 100).setReq(10), new FluidStack(Fluids.RADIOSOLVENT, 250)); + registerRecipe(new ComparableStack(ModItems.scrap_oil), new CrystallizerRecipe(new ItemStack(ModItems.nugget_arsenic), 100).setReq(16), new FluidStack(Fluids.RADIOSOLVENT, 100)); registerRecipe(new ComparableStack(DictFrame.fromOne(ModItems.powder_ash, EnumAshType.FULLERENE)), new CrystallizerRecipe(new ItemStack(ModItems.ingot_cft), baseTime).setReq(4), new FluidStack(Fluids.XYLENE, 1_000)); registerRecipe(DIAMOND.dust(), new CrystallizerRecipe(Items.diamond, utilityTime)); diff --git a/src/main/java/com/hbm/inventory/recipes/anvil/AnvilRecipes.java b/src/main/java/com/hbm/inventory/recipes/anvil/AnvilRecipes.java index e4cc0a9a5..79bd5571e 100644 --- a/src/main/java/com/hbm/inventory/recipes/anvil/AnvilRecipes.java +++ b/src/main/java/com/hbm/inventory/recipes/anvil/AnvilRecipes.java @@ -53,13 +53,14 @@ public class AnvilRecipes { Block[] anvils = new Block[]{ModBlocks.anvil_iron, ModBlocks.anvil_lead}; for(Block anvil : anvils) { - smithingRecipes.add(new AnvilSmithingRecipe(1, new ItemStack(ModBlocks.anvil_bismuth, 1), new ComparableStack(anvil), new ComparableStack(ModItems.ingot_bismuth, 10))); - smithingRecipes.add(new AnvilSmithingRecipe(1, new ItemStack(ModBlocks.anvil_dnt, 1), new ComparableStack(anvil), new OreDictStack(DNT.ingot(), 10))); - smithingRecipes.add(new AnvilSmithingRecipe(1, new ItemStack(ModBlocks.anvil_ferrouranium, 1), new ComparableStack(anvil), new ComparableStack(ModItems.ingot_ferrouranium, 10))); - smithingRecipes.add(new AnvilSmithingRecipe(1, new ItemStack(ModBlocks.anvil_meteorite, 1), new ComparableStack(anvil), new ComparableStack(ModItems.ingot_meteorite, 10))); - smithingRecipes.add(new AnvilSmithingRecipe(1, new ItemStack(ModBlocks.anvil_schrabidate, 1), new ComparableStack(anvil), new OreDictStack(SBD.ingot(), 10))); - smithingRecipes.add(new AnvilSmithingRecipe(1, new ItemStack(ModBlocks.anvil_starmetal, 1), new ComparableStack(anvil), new OreDictStack(STAR.ingot(), 10))); smithingRecipes.add(new AnvilSmithingRecipe(1, new ItemStack(ModBlocks.anvil_steel, 1), new ComparableStack(anvil), new OreDictStack(STEEL.ingot(), 10))); + smithingRecipes.add(new AnvilSmithingRecipe(1, new ItemStack(ModBlocks.anvil_desh, 1), new ComparableStack(anvil), new OreDictStack(DESH.ingot(), 10))); + smithingRecipes.add(new AnvilSmithingRecipe(1, new ItemStack(ModBlocks.anvil_saturnite, 1), new ComparableStack(anvil), new OreDictStack(BIGMT.ingot(), 10))); + smithingRecipes.add(new AnvilSmithingRecipe(1, new ItemStack(ModBlocks.anvil_ferrouranium, 1), new ComparableStack(anvil), new ComparableStack(ModItems.ingot_ferrouranium, 10))); + smithingRecipes.add(new AnvilSmithingRecipe(1, new ItemStack(ModBlocks.anvil_bismuth_bronze, 1), new ComparableStack(anvil), new OreDictStack(BBRONZE.ingot(), 10))); + smithingRecipes.add(new AnvilSmithingRecipe(1, new ItemStack(ModBlocks.anvil_arsenic_bronze, 1), new ComparableStack(anvil), new OreDictStack(ABRONZE.ingot(), 10))); + smithingRecipes.add(new AnvilSmithingRecipe(1, new ItemStack(ModBlocks.anvil_schrabidate, 1), new ComparableStack(anvil), new OreDictStack(SBD.ingot(), 10))); + smithingRecipes.add(new AnvilSmithingRecipe(1, new ItemStack(ModBlocks.anvil_dnt, 1), new ComparableStack(anvil), new OreDictStack(DNT.ingot(), 10))); smithingRecipes.add(new AnvilSmithingRecipe(1, new ItemStack(ModBlocks.anvil_osmiridium, 1), new ComparableStack(anvil), new OreDictStack(OSMIRIDIUM.ingot(), 10))); } @@ -458,14 +459,12 @@ public class AnvilRecipes { constructionRecipes.add(new AnvilConstructionRecipe( new AStack[] { - new OreDictStack(ANY_CONCRETE.any(), 6), - new OreDictStack(STEEL.ingot(), 4), - new ComparableStack(ModBlocks.steel_scaffold, 2), - new ComparableStack(ModItems.plate_polymer, 8), - new ComparableStack(ModItems.coil_copper, 2), - new ComparableStack(ModItems.coil_copper_torus, 2) + new OreDictStack(ANY_CONCRETE.any(), 8), + new OreDictStack(STEEL.ingot(), 8), + new ComparableStack(ModItems.plate_polymer, 12), + new ComparableStack(ModItems.coil_copper, 8) }, - new AnvilOutput(new ItemStack(ModBlocks.substation))).setTier(2)); + new AnvilOutput(new ItemStack(ModBlocks.substation, 2))).setTier(2)); constructionRecipes.add(new AnvilConstructionRecipe( new AStack[] { @@ -1036,8 +1035,8 @@ public class AnvilRecipes { constructionRecipes.add(new AnvilConstructionRecipe( new ComparableStack(ModBlocks.rbmk_boiler), new AnvilOutput[] { new AnvilOutput(new ItemStack(ModBlocks.rbmk_blank, 1)), - new AnvilOutput(new ItemStack(ModItems.plate_cast, 6, Mats.MAT_COPPER.id)), - new AnvilOutput(new ItemStack(ModItems.pipes_steel, 2)) + new AnvilOutput(new ItemStack(ModItems.pipe, 6, Mats.MAT_COPPER.id)), + new AnvilOutput(new ItemStack(ModItems.shell, 2, Mats.MAT_COPPER.id)) }).setTier(4)); constructionRecipes.add(new AnvilConstructionRecipe( new ComparableStack(ModBlocks.rbmk_cooler), new AnvilOutput[] { diff --git a/src/main/java/com/hbm/items/ModItems.java b/src/main/java/com/hbm/items/ModItems.java index 655721323..e9a83ed93 100644 --- a/src/main/java/com/hbm/items/ModItems.java +++ b/src/main/java/com/hbm/items/ModItems.java @@ -144,6 +144,8 @@ public class ModItems { public static Item ingot_advanced_alloy; public static Item ingot_tcalloy; public static Item ingot_cdalloy; + public static Item ingot_bismuth_bronze; + public static Item ingot_arsenic_bronze; public static Item lithium; public static Item ingot_zirconium; public static Item ingot_hes; @@ -2553,6 +2555,8 @@ public class ModItems { ingot_advanced_alloy = new Item().setUnlocalizedName("ingot_advanced_alloy").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":ingot_advanced_alloy"); ingot_tcalloy = new Item().setUnlocalizedName("ingot_tcalloy").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":ingot_tcalloy"); ingot_cdalloy = new Item().setUnlocalizedName("ingot_cdalloy").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":ingot_cdalloy"); + ingot_bismuth_bronze = new Item().setUnlocalizedName("ingot_bismuth_bronze").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":ingot_bismuth_bronze"); + ingot_arsenic_bronze = new Item().setUnlocalizedName("ingot_arsenic_bronze").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":ingot_arsenic_bronze"); niter = new Item().setUnlocalizedName("niter").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":salpeter"); ingot_copper = new Item().setUnlocalizedName("ingot_copper").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":ingot_copper"); @@ -2590,7 +2594,7 @@ public class ModItems { drill_titanium = new Item().setUnlocalizedName("drill_titanium").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":drill_titanium"); plate_dalekanium = new Item().setUnlocalizedName("plate_dalekanium").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":plate_dalekanium"); plate_euphemium = new ItemCustomLore().setRarity(EnumRarity.epic).setUnlocalizedName("plate_euphemium").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":plate_euphemium"); - bolt = new ItemAutogen(MaterialShapes.BOLT).setUnlocalizedName("bolt").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":bolt"); + bolt = new ItemAutogen(MaterialShapes.BOLT).oun("boltntm").setUnlocalizedName("bolt").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":bolt"); bolt_spike = new ItemCustomLore().setUnlocalizedName("bolt_spike").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":bolt_spike"); plate_polymer = new Item().setUnlocalizedName("plate_polymer").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":plate_polymer"); plate_kevlar = new Item().setUnlocalizedName("plate_kevlar").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":plate_kevlar"); @@ -3009,8 +3013,8 @@ public class ModItems { gear_large = new ItemGear().setUnlocalizedName("gear_large").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":gear_large"); sawblade = new Item().setUnlocalizedName("sawblade").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":sawblade"); - shell = new ItemAutogen(MaterialShapes.SHELL).setUnlocalizedName("shell").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":shell"); - pipe = new ItemAutogen(MaterialShapes.PIPE).setUnlocalizedName("pipe").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":pipe"); + shell = new ItemAutogen(MaterialShapes.SHELL).oun("shellntm").setUnlocalizedName("shell").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":shell"); + pipe = new ItemAutogen(MaterialShapes.PIPE).oun("pipentm").setUnlocalizedName("pipe").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":pipe"); fins_flat = new Item().setUnlocalizedName("fins_flat").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":fins_flat"); fins_small_steel = new Item().setUnlocalizedName("fins_small_steel").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":fins_small_steel"); fins_big_steel = new Item().setUnlocalizedName("fins_big_steel").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":fins_big_steel"); @@ -5636,6 +5640,8 @@ public class ModItems { GameRegistry.registerItem(ingot_steel, ingot_steel.getUnlocalizedName()); GameRegistry.registerItem(ingot_tcalloy, ingot_tcalloy.getUnlocalizedName()); GameRegistry.registerItem(ingot_cdalloy, ingot_cdalloy.getUnlocalizedName()); + GameRegistry.registerItem(ingot_bismuth_bronze, ingot_bismuth_bronze.getUnlocalizedName()); + GameRegistry.registerItem(ingot_arsenic_bronze, ingot_arsenic_bronze.getUnlocalizedName()); GameRegistry.registerItem(ingot_lead, ingot_lead.getUnlocalizedName()); GameRegistry.registerItem(ingot_bismuth, ingot_bismuth.getUnlocalizedName()); GameRegistry.registerItem(ingot_arsenic, ingot_arsenic.getUnlocalizedName()); @@ -5653,7 +5659,6 @@ public class ModItems { GameRegistry.registerItem(ingot_bakelite, ingot_bakelite.getUnlocalizedName()); GameRegistry.registerItem(ingot_biorubber, ingot_biorubber.getUnlocalizedName()); GameRegistry.registerItem(ingot_rubber, ingot_rubber.getUnlocalizedName()); - //GameRegistry.registerItem(ingot_pet, ingot_pet.getUnlocalizedName()); GameRegistry.registerItem(ingot_pc, ingot_pc.getUnlocalizedName()); GameRegistry.registerItem(ingot_pvc, ingot_pvc.getUnlocalizedName()); GameRegistry.registerItem(ingot_mud, ingot_mud.getUnlocalizedName()); diff --git a/src/main/java/com/hbm/items/armor/ArmorFSB.java b/src/main/java/com/hbm/items/armor/ArmorFSB.java index d6eb33079..de7a67afa 100644 --- a/src/main/java/com/hbm/items/armor/ArmorFSB.java +++ b/src/main/java/com/hbm/items/armor/ArmorFSB.java @@ -12,6 +12,8 @@ import org.lwjgl.opengl.GL11; import com.hbm.extprop.HbmLivingProps; import com.hbm.handler.radiation.ChunkRadiationManager; +import com.hbm.items.ModItems; +import com.hbm.util.ContaminationUtil; import com.hbm.util.I18nUtil; import cpw.mods.fml.common.gameevent.TickEvent; @@ -48,8 +50,8 @@ public class ArmorFSB extends ItemArmor implements IArmorDisableModel { private String texture = ""; private ResourceLocation overlay = null; - public List effects = new ArrayList(); - public HashMap resistance = new HashMap(); + public List effects = new ArrayList(); + public HashMap resistance = new HashMap(); public float blastProtection = -1; public float projectileProtection = -1; public float damageCap = -1; @@ -572,34 +574,34 @@ public class ArmorFSB extends ItemArmor implements IArmorDisableModel { if(this.armorType != 1) return; - if(!this.hasFSBArmor(entity) || !this.geigerSound) + if(!hasFSBArmor(entity) || !this.geigerSound) + return; + + if(entity.inventory.hasItem(ModItems.geiger_counter) || entity.inventory.hasItem(ModItems.dosimeter)) return; if(world.getTotalWorldTime() % 5 == 0) { - - float x = HbmLivingProps.getRadBuf((EntityLivingBase)entity); + + // Armor piece dosimeters indicate radiation dosage inside the armor, so reduce the counts by the effective protection + float mod = ContaminationUtil.calculateRadiationMod(entity); + float x = HbmLivingProps.getRadBuf(entity) * mod; if(x > 1E-5) { - - if(x > 0) { - List list = new ArrayList(); - - if(x < 1) list.add(0); - if(x < 5) list.add(0); - if(x < 10) list.add(1); - if(x > 5 && x < 15) list.add(2); - if(x > 10 && x < 20) list.add(3); - if(x > 15 && x < 25) list.add(4); - if(x > 20 && x < 30) list.add(5); - if(x > 25) list.add(6); - - int r = list.get(world.rand.nextInt(list.size())); - - if(r > 0) - world.playSoundAtEntity(entity, "hbm:item.geiger" + r, 1.0F, 1.0F); - } else if(world.rand.nextInt(50) == 0) { - world.playSoundAtEntity(entity, "hbm:item.geiger" + (1 + world.rand.nextInt(1)), 1.0F, 1.0F); - } + List list = new ArrayList(); + + if(x < 1) list.add(0); + if(x < 5) list.add(0); + if(x < 10) list.add(1); + if(x > 5 && x < 15) list.add(2); + if(x > 10 && x < 20) list.add(3); + if(x > 15 && x < 25) list.add(4); + if(x > 20 && x < 30) list.add(5); + if(x > 25) list.add(6); + + int r = list.get(world.rand.nextInt(list.size())); + + if(r > 0) + world.playSoundAtEntity(entity, "hbm:item.geiger" + r, 1.0F, 1.0F); } } } @@ -645,7 +647,7 @@ public class ArmorFSB extends ItemArmor implements IArmorDisableModel { GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F); } - private HashSet hidden = new HashSet(); + private HashSet hidden = new HashSet(); private boolean needsFullSet = false; public ArmorFSB hides(EnumPlayerPart... parts) { diff --git a/src/main/java/com/hbm/items/armor/ArmorFSBPowered.java b/src/main/java/com/hbm/items/armor/ArmorFSBPowered.java index 139df77fe..0daddf0fb 100644 --- a/src/main/java/com/hbm/items/armor/ArmorFSBPowered.java +++ b/src/main/java/com/hbm/items/armor/ArmorFSBPowered.java @@ -4,7 +4,7 @@ import java.util.List; import com.hbm.util.BobMathUtil; -import api.hbm.energy.IBatteryItem; +import api.hbm.energymk2.IBatteryItem; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; import net.minecraft.entity.player.EntityPlayer; diff --git a/src/main/java/com/hbm/items/food/ItemPancake.java b/src/main/java/com/hbm/items/food/ItemPancake.java index f3bbc368d..784ee8995 100644 --- a/src/main/java/com/hbm/items/food/ItemPancake.java +++ b/src/main/java/com/hbm/items/food/ItemPancake.java @@ -5,7 +5,7 @@ import java.util.List; import com.hbm.items.ModItems; import com.hbm.items.armor.ArmorFSB; -import api.hbm.energy.IBatteryItem; +import api.hbm.energymk2.IBatteryItem; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.item.ItemFood; import net.minecraft.item.ItemStack; diff --git a/src/main/java/com/hbm/items/machine/ItemBattery.java b/src/main/java/com/hbm/items/machine/ItemBattery.java index 4f0fda9a7..cefa97fce 100644 --- a/src/main/java/com/hbm/items/machine/ItemBattery.java +++ b/src/main/java/com/hbm/items/machine/ItemBattery.java @@ -5,7 +5,7 @@ import java.util.List; import com.hbm.items.ModItems; import com.hbm.util.BobMathUtil; -import api.hbm.energy.IBatteryItem; +import api.hbm.energymk2.IBatteryItem; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; import net.minecraft.creativetab.CreativeTabs; diff --git a/src/main/java/com/hbm/items/machine/ItemSelfcharger.java b/src/main/java/com/hbm/items/machine/ItemSelfcharger.java index d8b54f7fe..67c05fb7b 100644 --- a/src/main/java/com/hbm/items/machine/ItemSelfcharger.java +++ b/src/main/java/com/hbm/items/machine/ItemSelfcharger.java @@ -4,7 +4,7 @@ import java.util.List; import com.hbm.util.BobMathUtil; -import api.hbm.energy.IBatteryItem; +import api.hbm.energymk2.IBatteryItem; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.item.Item; import net.minecraft.item.ItemStack; diff --git a/src/main/java/com/hbm/items/special/ItemAutogen.java b/src/main/java/com/hbm/items/special/ItemAutogen.java index 7e91dd37f..ea2be4db1 100644 --- a/src/main/java/com/hbm/items/special/ItemAutogen.java +++ b/src/main/java/com/hbm/items/special/ItemAutogen.java @@ -27,6 +27,7 @@ public class ItemAutogen extends Item { private HashMap textureOverrides = new HashMap(); private HashMap iconMap = new HashMap(); + private String overrideUnlocalizedName = null; public ItemAutogen(MaterialShapes shape) { this.setHasSubtypes(true); @@ -38,6 +39,10 @@ public class ItemAutogen extends Item { textureOverrides.put(mat, tex); return this; } + public ItemAutogen oun(String overrideUnlocalizedName) { + this.overrideUnlocalizedName = overrideUnlocalizedName; + return this; + } @SideOnly(Side.CLIENT) public void registerIcons(IIconRegister reg) { @@ -117,4 +122,9 @@ public class ItemAutogen extends Item { String matName = StatCollector.translateToLocal(mat.getUnlocalizedName()); return StatCollector.translateToLocalFormatted(this.getUnlocalizedNameInefficiently(stack) + ".name", matName); } + + @Override + public String getUnlocalizedName(ItemStack stack) { + return overrideUnlocalizedName != null ? "item." + overrideUnlocalizedName : super.getUnlocalizedName(stack); + } } diff --git a/src/main/java/com/hbm/items/special/ItemGlitch.java b/src/main/java/com/hbm/items/special/ItemGlitch.java index 9942c4754..715eacd17 100644 --- a/src/main/java/com/hbm/items/special/ItemGlitch.java +++ b/src/main/java/com/hbm/items/special/ItemGlitch.java @@ -12,7 +12,7 @@ import com.hbm.items.ModItems; import com.hbm.lib.ModDamageSource; import com.hbm.main.MainRegistry; -import api.hbm.energy.IBatteryItem; +import api.hbm.energymk2.IBatteryItem; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.init.Blocks; import net.minecraft.item.Item; diff --git a/src/main/java/com/hbm/items/tool/ItemAnalyzer.java b/src/main/java/com/hbm/items/tool/ItemAnalyzer.java deleted file mode 100644 index 1076552b1..000000000 --- a/src/main/java/com/hbm/items/tool/ItemAnalyzer.java +++ /dev/null @@ -1,111 +0,0 @@ -package com.hbm.items.tool; - -import com.hbm.interfaces.IFluidDuct; -import com.hbm.tileentity.machine.TileEntityDummy; -import com.hbm.tileentity.machine.TileEntityLockableBase; -import com.hbm.tileentity.network.TileEntityPylon; - -import api.hbm.energy.IEnergyConnector; -import net.minecraft.block.Block; -import net.minecraft.client.resources.I18n; -import net.minecraft.entity.player.EntityPlayer; -import net.minecraft.inventory.IInventory; -import net.minecraft.item.Item; -import net.minecraft.item.ItemStack; -import net.minecraft.tileentity.TileEntity; -import net.minecraft.util.ChatComponentText; -import net.minecraft.world.World; - -public class ItemAnalyzer extends Item { - - @Override - public boolean onItemUse(ItemStack stack, EntityPlayer player, World world, int x, int y, int z, int b, float f0, float f1, float f2) - { - Block block = world.getBlock(x, y, z); - TileEntity te = world.getTileEntity(x, y, z); - - if(world.isRemote) { - player.addChatMessage(new ChatComponentText( - "Block: " + I18n.format(block.getUnlocalizedName() + ".name") + " (" + block.getUnlocalizedName() + ")" - )); - - player.addChatMessage(new ChatComponentText( - "Meta: " + world.getBlockMetadata(x, y, z) - )); - } - - if(!world.isRemote) { - - if(te == null) { - player.addChatMessage(new ChatComponentText( - "Tile Entity: none")); - } else { - - if(te instanceof TileEntityDummy) { - - player.addChatMessage(new ChatComponentText( - "Dummy Block, references TE at " + ((TileEntityDummy)te).targetX + " / " + ((TileEntityDummy)te).targetY + " / " + ((TileEntityDummy)te).targetZ)); - - te = world.getTileEntity(((TileEntityDummy)te).targetX, ((TileEntityDummy)te).targetY, ((TileEntityDummy)te).targetZ); - } - - String[] parts = te.toString().split("\\."); - - if(parts.length == 0) - parts = new String[]{"error"}; - - String post = parts[parts.length - 1]; - String name = post.split("@")[0]; - - player.addChatMessage(new ChatComponentText( - "Tile Entity: " + name)); - - if(te instanceof IInventory) { - - player.addChatMessage(new ChatComponentText( - "Slots: " + ((IInventory)te).getSizeInventory())); - } - - if(te instanceof IEnergyConnector) { - - player.addChatMessage(new ChatComponentText( - "Electricity: " + ((IEnergyConnector)te).getPower() + " HE")); - } - - if(te instanceof IFluidDuct) { - - player.addChatMessage(new ChatComponentText( - "Duct Type: " + ((IFluidDuct)te).getType().getLocalizedName())); - } - - if(te instanceof TileEntityPylon) { - - /** - * this is a smoldering crater - */ - } - - if(te instanceof TileEntityLockableBase) { - - player.addChatMessage(new ChatComponentText( - "Locked: " + ((TileEntityLockableBase)te).isLocked())); - - if(((TileEntityLockableBase)te).isLocked()) { - - //player.addChatMessage(new ChatComponentText( - // "Pins: " + ((TileEntityLockableBase)te).getPins())); - player.addChatMessage(new ChatComponentText( - "Pick Chance: " + (((TileEntityLockableBase)te).getMod() * 100D) + "%")); - } - } - } - - player.addChatMessage(new ChatComponentText( - "----------------------------" - )); - } - - return true; - } - -} diff --git a/src/main/java/com/hbm/items/tool/ItemDosimeter.java b/src/main/java/com/hbm/items/tool/ItemDosimeter.java index 3a6a1f4bf..c8eeb585d 100644 --- a/src/main/java/com/hbm/items/tool/ItemDosimeter.java +++ b/src/main/java/com/hbm/items/tool/ItemDosimeter.java @@ -5,7 +5,6 @@ import java.util.List; import java.util.Random; import com.hbm.extprop.HbmLivingProps; -import com.hbm.items.armor.ArmorFSB; import com.hbm.util.ContaminationUtil; import net.minecraft.entity.Entity; @@ -25,12 +24,6 @@ public class ItemDosimeter extends Item { if(!(entity instanceof EntityLivingBase) || world.isRemote) return; - if(entity instanceof EntityPlayer) { - - if(ArmorFSB.hasFSBArmor((EntityPlayer)entity) && ((ArmorFSB)((EntityPlayer)entity).inventory.armorInventory[2].getItem()).geigerSound) - return; - } - float x = HbmLivingProps.getRadBuf((EntityLivingBase)entity); if(world.getTotalWorldTime() % 5 == 0) { diff --git a/src/main/java/com/hbm/items/tool/ItemDrone.java b/src/main/java/com/hbm/items/tool/ItemDrone.java index 73e43ba14..f63f44fd6 100644 --- a/src/main/java/com/hbm/items/tool/ItemDrone.java +++ b/src/main/java/com/hbm/items/tool/ItemDrone.java @@ -53,6 +53,8 @@ public class ItemDrone extends ItemEnumMulti { world.spawnEntityInWorld(toSpawn); } + stack.stackSize--; + return false; } diff --git a/src/main/java/com/hbm/items/tool/ItemFusionCore.java b/src/main/java/com/hbm/items/tool/ItemFusionCore.java index afa388fa5..473f6f62b 100644 --- a/src/main/java/com/hbm/items/tool/ItemFusionCore.java +++ b/src/main/java/com/hbm/items/tool/ItemFusionCore.java @@ -6,7 +6,7 @@ import com.hbm.items.armor.ArmorFSB; import com.hbm.items.armor.ArmorFSBPowered; import com.hbm.util.BobMathUtil; -import api.hbm.energy.IBatteryItem; +import api.hbm.energymk2.IBatteryItem; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.item.Item; import net.minecraft.item.ItemStack; diff --git a/src/main/java/com/hbm/items/tool/ItemGeigerCounter.java b/src/main/java/com/hbm/items/tool/ItemGeigerCounter.java index 72be9d361..cc86cc758 100644 --- a/src/main/java/com/hbm/items/tool/ItemGeigerCounter.java +++ b/src/main/java/com/hbm/items/tool/ItemGeigerCounter.java @@ -6,7 +6,6 @@ import java.util.Random; import com.hbm.extprop.HbmLivingProps; import com.hbm.handler.radiation.ChunkRadiationManager; -import com.hbm.items.armor.ArmorFSB; import com.hbm.util.ContaminationUtil; import net.minecraft.entity.Entity; @@ -27,12 +26,6 @@ public class ItemGeigerCounter extends Item { if(!(entity instanceof EntityLivingBase) || world.isRemote) return; - if(entity instanceof EntityPlayer) { - - if(ArmorFSB.hasFSBArmor((EntityPlayer)entity) && ((ArmorFSB)((EntityPlayer)entity).inventory.armorInventory[2].getItem()).geigerSound) - return; - } - float x = HbmLivingProps.getRadBuf((EntityLivingBase)entity); if(world.getTotalWorldTime() % 5 == 0) { diff --git a/src/main/java/com/hbm/items/tool/ItemPowerNetTool.java b/src/main/java/com/hbm/items/tool/ItemPowerNetTool.java index 10b0d2d20..a5907f3f5 100644 --- a/src/main/java/com/hbm/items/tool/ItemPowerNetTool.java +++ b/src/main/java/com/hbm/items/tool/ItemPowerNetTool.java @@ -6,11 +6,12 @@ import com.hbm.blocks.BlockDummyable; import com.hbm.packet.AuxParticlePacketNT; import com.hbm.packet.PacketDispatcher; import com.hbm.util.ChatBuilder; +import com.hbm.util.fauxpointtwelve.BlockPos; -import api.hbm.energy.IEnergyConductor; -import api.hbm.energy.IEnergyConnector; -import api.hbm.energy.IPowerNet; -import api.hbm.energy.PowerNet; +import api.hbm.energymk2.IEnergyConductorMK2; +import api.hbm.energymk2.Nodespace; +import api.hbm.energymk2.Nodespace.PowerNode; +import api.hbm.energymk2.PowerNetMK2; import cpw.mods.fml.common.network.NetworkRegistry.TargetPoint; import net.minecraft.block.Block; import net.minecraft.entity.player.EntityPlayer; @@ -19,7 +20,6 @@ import net.minecraft.item.ItemStack; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.tileentity.TileEntity; import net.minecraft.util.EnumChatFormatting; -import net.minecraft.util.Vec3; import net.minecraft.world.World; public class ItemPowerNetTool extends Item { @@ -44,51 +44,33 @@ public class ItemPowerNetTool extends Item { if(world.isRemote) return true; - if((te instanceof IEnergyConductor)) { + if((te instanceof IEnergyConductorMK2)) { + PowerNode node = Nodespace.getNode(world, x, y, z); - IEnergyConductor con = (IEnergyConductor) te; - IPowerNet net = con.getPowerNet(); - - if(net == null) { - player.addChatComponentMessage(ChatBuilder.start("Error: No network found! This should be impossible!").color(EnumChatFormatting.RED).flush()); - return true; - } - - if(!(net instanceof PowerNet)) { - player.addChatComponentMessage(ChatBuilder.start("Error: Cannot print diagnostic for non-standard power net implementation!").color(EnumChatFormatting.RED).flush()); - } - - PowerNet network = (PowerNet) net; - String id = Integer.toHexString(net.hashCode()); - - player.addChatComponentMessage(ChatBuilder.start("Start of diagnostic for network " + id).color(EnumChatFormatting.GOLD).flush()); - player.addChatComponentMessage(ChatBuilder.start("Links: " + network.getLinks().size()).color(EnumChatFormatting.YELLOW).flush()); - player.addChatComponentMessage(ChatBuilder.start("Proxies: " + network.getProxies().size()).color(EnumChatFormatting.YELLOW).flush()); - player.addChatComponentMessage(ChatBuilder.start("Subscribers: " + network.getSubscribers().size()).color(EnumChatFormatting.YELLOW).flush()); - player.addChatComponentMessage(ChatBuilder.start("End of diagnostic for network " + id).color(EnumChatFormatting.GOLD).flush()); - - for(IEnergyConductor link : network.getLinks()) { - Vec3 pos = link.getDebugParticlePos(); + if(node != null && node.hasValidNet()) { - boolean errored = link.getPowerNet() != net; + PowerNetMK2 net = node.net; + String id = Integer.toHexString(net.hashCode()); + player.addChatComponentMessage(ChatBuilder.start("Start of diagnostic for network " + id).color(EnumChatFormatting.GOLD).flush()); + player.addChatComponentMessage(ChatBuilder.start("Links: " + net.links.size()).color(EnumChatFormatting.YELLOW).flush()); + player.addChatComponentMessage(ChatBuilder.start("Providers: " + net.providerEntries.size()).color(EnumChatFormatting.YELLOW).flush()); + player.addChatComponentMessage(ChatBuilder.start("Receivers: " + net.receiverEntries.size()).color(EnumChatFormatting.YELLOW).flush()); + player.addChatComponentMessage(ChatBuilder.start("End of diagnostic for network " + id).color(EnumChatFormatting.GOLD).flush()); - NBTTagCompound data = new NBTTagCompound(); - data.setString("type", "debug"); - data.setInteger("color", errored ? 0xff0000 : 0xffff00); - data.setFloat("scale", 0.5F); - data.setString("text", id); - PacketDispatcher.wrapper.sendToAllAround(new AuxParticlePacketNT(data, pos.xCoord, pos.yCoord, pos.zCoord), new TargetPoint(world.provider.dimensionId, pos.xCoord, pos.yCoord, pos.zCoord, radius)); - } - - for(IEnergyConnector subscriber : network.getSubscribers()) { - Vec3 pos = subscriber.getDebugParticlePos(); + for(PowerNode link : net.links) { + + for(BlockPos pos : link.positions) { + NBTTagCompound data = new NBTTagCompound(); + data.setString("type", "debug"); + data.setInteger("color", 0xffff00); + data.setFloat("scale", 0.5F); + data.setString("text", id); + PacketDispatcher.wrapper.sendToAllAround(new AuxParticlePacketNT(data, pos.getX() + 0.5, pos.getY() + 1.5, pos.getZ() + 0.5), new TargetPoint(world.provider.dimensionId, pos.getX(), pos.getY(), pos.getZ(), radius)); + } + } - NBTTagCompound data = new NBTTagCompound(); - data.setString("type", "debug"); - data.setInteger("color", 0x0000ff); - data.setFloat("scale", 1.5F); - data.setString("text", id); - PacketDispatcher.wrapper.sendToAllAround(new AuxParticlePacketNT(data, pos.xCoord, pos.yCoord, pos.zCoord), new TargetPoint(world.provider.dimensionId, pos.xCoord, pos.yCoord, pos.zCoord, radius)); + } else { + player.addChatComponentMessage(ChatBuilder.start("Error: No network found!").color(EnumChatFormatting.RED).flush()); } return true; diff --git a/src/main/java/com/hbm/items/tool/ItemSwordAbilityPower.java b/src/main/java/com/hbm/items/tool/ItemSwordAbilityPower.java index 3d6313596..674fb7572 100644 --- a/src/main/java/com/hbm/items/tool/ItemSwordAbilityPower.java +++ b/src/main/java/com/hbm/items/tool/ItemSwordAbilityPower.java @@ -4,7 +4,7 @@ import java.util.List; import com.hbm.util.BobMathUtil; -import api.hbm.energy.IBatteryItem; +import api.hbm.energymk2.IBatteryItem; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; import net.minecraft.entity.player.EntityPlayer; diff --git a/src/main/java/com/hbm/items/tool/ItemToolAbilityPower.java b/src/main/java/com/hbm/items/tool/ItemToolAbilityPower.java index 80fb5fa87..52b8686b4 100644 --- a/src/main/java/com/hbm/items/tool/ItemToolAbilityPower.java +++ b/src/main/java/com/hbm/items/tool/ItemToolAbilityPower.java @@ -4,7 +4,7 @@ import java.util.List; import com.hbm.util.BobMathUtil; -import api.hbm.energy.IBatteryItem; +import api.hbm.energymk2.IBatteryItem; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; import net.minecraft.entity.player.EntityPlayer; diff --git a/src/main/java/com/hbm/items/weapon/gununified/ItemEnergyGunBase.java b/src/main/java/com/hbm/items/weapon/gununified/ItemEnergyGunBase.java index b5e040bb3..d93a73f4a 100644 --- a/src/main/java/com/hbm/items/weapon/gununified/ItemEnergyGunBase.java +++ b/src/main/java/com/hbm/items/weapon/gununified/ItemEnergyGunBase.java @@ -19,7 +19,7 @@ import com.hbm.render.util.RenderScreenOverlay.Crosshair; import com.hbm.util.BobMathUtil; import com.hbm.util.ChatBuilder; -import api.hbm.energy.IBatteryItem; +import api.hbm.energymk2.IBatteryItem; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; import net.minecraft.client.Minecraft; diff --git a/src/main/java/com/hbm/lib/HbmWorldGen.java b/src/main/java/com/hbm/lib/HbmWorldGen.java index e6029be87..f8ee016ff 100644 --- a/src/main/java/com/hbm/lib/HbmWorldGen.java +++ b/src/main/java/com/hbm/lib/HbmWorldGen.java @@ -220,8 +220,10 @@ public class HbmWorldGen implements IWorldGenerator { } boolean enableDungeons = world.getWorldInfo().isMapFeaturesEnabled(); + if(GeneralConfig.enableDungeons == 1) enableDungeons = true; + if(GeneralConfig.enableDungeons == 0) enableDungeons = false; - if(GeneralConfig.enableDungeons && world.provider.dimensionId == 0 && enableDungeons) { + if(enableDungeons && world.provider.dimensionId == 0) { if(MobConfig.enableHives && rand.nextInt(MobConfig.hiveSpawn) == 0) { int x = i + rand.nextInt(16) + 8; diff --git a/src/main/java/com/hbm/lib/Library.java b/src/main/java/com/hbm/lib/Library.java index cd0059185..bccf0f075 100644 --- a/src/main/java/com/hbm/lib/Library.java +++ b/src/main/java/com/hbm/lib/Library.java @@ -17,9 +17,9 @@ import com.hbm.inventory.fluid.FluidType; import com.hbm.items.ModItems; import com.hbm.tileentity.TileEntityProxyInventory; -import api.hbm.energy.IBatteryItem; -import api.hbm.energy.IEnergyConnector; -import api.hbm.energy.IEnergyConnectorBlock; +import api.hbm.energymk2.IBatteryItem; +import api.hbm.energymk2.IEnergyConnectorBlock; +import api.hbm.energymk2.IEnergyConnectorMK2; import api.hbm.fluid.IFluidConnector; import api.hbm.fluid.IFluidConnectorBlock; import net.minecraft.block.Block; @@ -118,8 +118,8 @@ public class Library { TileEntity te = world.getTileEntity(x, y, z); - if(te instanceof IEnergyConnector) { - IEnergyConnector con = (IEnergyConnector) te; + if(te instanceof IEnergyConnectorMK2) { + IEnergyConnectorMK2 con = (IEnergyConnectorMK2) te; if(con.canConnect(dir.getOpposite() /* machine's connecting side */)) return true; diff --git a/src/main/java/com/hbm/lib/RefStrings.java b/src/main/java/com/hbm/lib/RefStrings.java index d4ba6dc9a..477c52bb5 100644 --- a/src/main/java/com/hbm/lib/RefStrings.java +++ b/src/main/java/com/hbm/lib/RefStrings.java @@ -3,7 +3,7 @@ package com.hbm.lib; public class RefStrings { public static final String MODID = "hbm"; public static final String NAME = "Hbm's Nuclear Tech Mod"; - public static final String VERSION = "1.0.27 BETA (4921)"; + public static final String VERSION = "1.0.27 BETA (4939)"; //HBM's Beta Naming Convention: //V T (X) //V -> next release version diff --git a/src/main/java/com/hbm/main/ClientProxy.java b/src/main/java/com/hbm/main/ClientProxy.java index 7e54077a5..ed8282110 100644 --- a/src/main/java/com/hbm/main/ClientProxy.java +++ b/src/main/java/com/hbm/main/ClientProxy.java @@ -38,6 +38,7 @@ import net.minecraft.world.World; import net.minecraftforge.client.MinecraftForgeClient; import net.minecraftforge.client.model.AdvancedModelLoader; import net.minecraftforge.common.MinecraftForge; +import paulscode.sound.SoundSystemConfig; import java.awt.Color; import java.awt.Desktop; @@ -60,6 +61,7 @@ import com.hbm.blocks.generic.BlockSnowglobe.TileEntitySnowglobe; import com.hbm.blocks.machine.MachineFan.TileEntityFan; import com.hbm.blocks.machine.PistonInserter.TileEntityPistonInserter; import com.hbm.blocks.machine.WatzPump.TileEntityWatzPump; +import com.hbm.config.GeneralConfig; import com.hbm.entity.cart.*; import com.hbm.entity.effect.*; import com.hbm.entity.grenade.*; @@ -152,8 +154,11 @@ public class ClientProxy extends ServerProxy { registerBlockRenderer(); Jars.initJars(); - - //SoundUtil.addSoundCategory("ntmMachines"); + + if(GeneralConfig.enableSoundExtension) { + SoundSystemConfig.setNumberNormalChannels(1000); + SoundSystemConfig.setNumberStreamingChannels(50); + } } private void registerClientEventHandler(Object handler) { @@ -347,6 +352,7 @@ public class ClientProxy extends ServerProxy { ClientRegistry.bindTileEntitySpecialRenderer(TileEntityFluidDuct.class, new RenderFluidDuct()); ClientRegistry.bindTileEntitySpecialRenderer(TileEntityPylon.class, new RenderPylon()); ClientRegistry.bindTileEntitySpecialRenderer(TileEntityConnector.class, new RenderConnector()); + ClientRegistry.bindTileEntitySpecialRenderer(TileEntityPylonMedium.class, new RenderPylonMedium()); ClientRegistry.bindTileEntitySpecialRenderer(TileEntityPylonLarge.class, new RenderPylonLarge()); ClientRegistry.bindTileEntitySpecialRenderer(TileEntitySubstation.class, new RenderSubstation()); //chargers diff --git a/src/main/java/com/hbm/main/CraftingManager.java b/src/main/java/com/hbm/main/CraftingManager.java index 04b67bc0d..cb9013f34 100644 --- a/src/main/java/com/hbm/main/CraftingManager.java +++ b/src/main/java/com/hbm/main/CraftingManager.java @@ -279,6 +279,10 @@ public class CraftingManager { addShapelessAuto(new ItemStack(ModBlocks.red_cable_gauge), new Object[] { ModBlocks.red_wire_coated, STEEL.ingot(), ModItems.circuit_aluminium }); addRecipeAuto(new ItemStack(ModBlocks.red_connector, 4), new Object[] { "C", "I", "S", 'C', ModItems.coil_copper, 'I', ModItems.plate_polymer, 'S', STEEL.ingot() }); addRecipeAuto(new ItemStack(ModBlocks.red_pylon, 4), new Object[] { "CWC", "PWP", " T ", 'C', ModItems.coil_copper, 'W', KEY_PLANKS, 'P', ModItems.plate_polymer, 'T', ModBlocks.red_wire_coated }); + addRecipeAuto(new ItemStack(ModBlocks.red_pylon_medium_wood, 2), new Object[] { "CCW", "IIW", " S", 'C', ModItems.coil_copper, 'W', KEY_PLANKS, 'I', ModItems.plate_polymer, 'S', KEY_COBBLESTONE }); + addShapelessAuto(new ItemStack(ModBlocks.red_pylon_medium_wood_transformer, 1), new Object[] { ModBlocks.red_pylon_medium_wood, ModItems.plate_polymer, ModItems.coil_copper }); + addRecipeAuto(new ItemStack(ModBlocks.red_pylon_medium_steel, 2), new Object[] { "CCW", "IIW", " S", 'C', ModItems.coil_copper, 'W', STEEL.pipe(), 'I', ModItems.plate_polymer, 'S', KEY_COBBLESTONE }); + addShapelessAuto(new ItemStack(ModBlocks.red_pylon_medium_steel_transformer, 1), new Object[] { ModBlocks.red_pylon_medium_steel, ModItems.plate_polymer, ModItems.coil_copper }); addRecipeAuto(new ItemStack(ModBlocks.machine_battery_potato, 1), new Object[] { "PCP", "WRW", "PCP", 'P', ItemBattery.getEmptyBattery(ModItems.battery_potato), 'C', CU.ingot(), 'R', REDSTONE.block(), 'W', KEY_PLANKS }); addRecipeAuto(new ItemStack(ModBlocks.capacitor_bus, 1), new Object[] { "PIP", "PIP", "PIP", 'P', ModItems.plate_polymer, 'I', MINGRADE.ingot() }); addRecipeAuto(new ItemStack(ModBlocks.capacitor_copper, 1), new Object[] { "PPP", "PCP", "WWW", 'P', STEEL.plate(), 'C', CU.block(), 'W', KEY_PLANKS }); @@ -449,8 +453,8 @@ public class CraftingManager { addRecipeAuto(new ItemStack(Item.getItemFromBlock(ModBlocks.reinforced_lamp_off), 1), new Object[] { "FFF", "FBF", "FFF", 'F', Blocks.iron_bars, 'B', Blocks.redstone_lamp }); addRecipeAuto(new ItemStack(Item.getItemFromBlock(ModBlocks.reinforced_sand), 4), new Object[] { "FBF", "BFB", "FBF", 'F', Blocks.iron_bars, 'B', Blocks.sandstone }); - addRecipeAuto(new ItemStack(ModBlocks.lamp_tritium_green_off, 1), new Object[] { "GPG", "1T2", "GPG", 'G', KEY_ANYGLASS, 'P', P_RED.dust(), 'T', ModItems.cell_tritium, '1', "dustSulfur", '2', CU.dust() }); - addRecipeAuto(new ItemStack(ModBlocks.lamp_tritium_blue_off, 1), new Object[] { "GPG", "1T2", "GPG", 'G', KEY_ANYGLASS, 'P',P_RED.dust(), 'T', ModItems.cell_tritium, '1', AL.dust(), '2', ST.dust() }); + addShapelessAuto(new ItemStack(ModBlocks.lamp_tritium_green_off, 1), new Object[] { KEY_ANYGLASS, P_RED.dust(), Fluids.TRITIUM.getDict(1_000), S.dust() }); + addShapelessAuto(new ItemStack(ModBlocks.lamp_tritium_blue_off, 1), new Object[] { KEY_ANYGLASS, P_RED.dust(), Fluids.TRITIUM.getDict(1_000), AL.dust() }); addRecipeAuto(new ItemStack(ModBlocks.lantern, 1), new Object[] { "PGP", " S ", " S ", 'P', KEY_ANYPANE, 'G', Items.glowstone_dust, 'S', ModBlocks.steel_beam }); addRecipeAuto(new ItemStack(ModBlocks.spotlight_incandescent, 8), new Object[] { " G ", " T ", " I ", 'G', KEY_ANYPANE, 'T', ModItems.wire_tungsten, 'I', Items.iron_ingot }); addRecipeAuto(new ItemStack(ModBlocks.spotlight_fluoro, 8), new Object[] { " G ", " M ", " A ", 'G', KEY_ANYPANE, 'M', ModItems.ingot_mercury, 'A', ModItems.plate_aluminium }); @@ -960,7 +964,7 @@ public class CraftingManager { addShapelessAuto(new ItemStack(ModItems.solid_fuel, 3), new Object[] { Fluids.HEATINGOIL.getDict(16000), KEY_TOOL_CHEMISTRYSET }); addShapelessAuto(new ItemStack(ModItems.canister_full, 2, Fluids.LUBRICANT.getID()), new Object[] { Fluids.HEATINGOIL.getDict(1000), Fluids.UNSATURATEDS.getDict(1000), ModItems.canister_empty, ModItems.canister_empty, KEY_TOOL_CHEMISTRYSET }); - addRecipeAuto(new ItemStack(ModBlocks.machine_condenser), new Object[] { "SIS", "ICI", "SIS", 'S', STEEL.ingot(), 'I', IRON.plate(), 'C', CU.plateWelded() }); + addRecipeAuto(new ItemStack(ModBlocks.machine_condenser), new Object[] { "SIS", "ICI", "SIS", 'S', STEEL.ingot(), 'I', IRON.plate(), 'C', CU.plateCast() }); addShapelessAuto(new ItemStack(ModItems.book_guide, 1, BookType.TEST.ordinal()), new Object[] { Items.book, ModItems.canned_conserve.stackFromEnum(EnumFoodType.JIZZ) }); addShapelessAuto(new ItemStack(ModItems.book_guide, 1, BookType.RBMK.ordinal()), new Object[] { Items.book, Items.potato }); diff --git a/src/main/java/com/hbm/main/MainRegistry.java b/src/main/java/com/hbm/main/MainRegistry.java index 974b2a722..59b5d6031 100644 --- a/src/main/java/com/hbm/main/MainRegistry.java +++ b/src/main/java/com/hbm/main/MainRegistry.java @@ -14,7 +14,10 @@ import com.hbm.entity.grenade.*; import com.hbm.entity.logic.IChunkLoader; import com.hbm.entity.mob.siege.SiegeTier; import com.hbm.handler.*; -import com.hbm.handler.imc.*; +import com.hbm.handler.imc.IMCBlastFurnace; +import com.hbm.handler.imc.IMCCentrifuge; +import com.hbm.handler.imc.IMCCrystallizer; +import com.hbm.handler.imc.IMCHandler; import com.hbm.handler.pollution.PollutionHandler; import com.hbm.handler.radiation.ChunkRadiationManager; import com.hbm.hazard.HazardRegistry; @@ -49,10 +52,13 @@ import com.hbm.world.feature.OreCave; import com.hbm.world.feature.OreLayer3D; import com.hbm.world.feature.SchistStratum; import com.hbm.world.generator.CellularDungeonFactory; -import cpw.mods.fml.common.*; +import cpw.mods.fml.common.FMLCommonHandler; +import cpw.mods.fml.common.Mod; import cpw.mods.fml.common.Mod.EventHandler; import cpw.mods.fml.common.Mod.Instance; import cpw.mods.fml.common.Mod.Metadata; +import cpw.mods.fml.common.ModMetadata; +import cpw.mods.fml.common.SidedProxy; import cpw.mods.fml.common.event.*; import cpw.mods.fml.common.event.FMLInterModComms.IMCEvent; import cpw.mods.fml.common.event.FMLInterModComms.IMCMessage; @@ -659,7 +665,7 @@ public class MainRegistry { @EventHandler public static void load(FMLInitializationEvent event) { - + RodRecipes.registerInit(); achSacrifice = new Achievement("achievement.sacrifice", "sacrifice", -3, 1, ModItems.burnt_bark, null).initIndependentStat().setSpecial().registerStat(); @@ -681,7 +687,7 @@ public class MainRegistry { achSulfuric = new Achievement("achievement.sulfuric", "sulfuric", -10, 8, DictFrame.fromOne(ModItems.achievement_icon, EnumAchievementType.BALLS), achSlimeball).initIndependentStat().setSpecial().registerStat(); achInferno = new Achievement("achievement.inferno", "inferno", -8, 10, ModItems.canister_napalm, null).initIndependentStat().setSpecial().registerStat(); achRedRoom = new Achievement("achievement.redRoom", "redRoom", -10, 10, ModItems.key_red, null).initIndependentStat().setSpecial().registerStat(); - + bobHidden = new Achievement("achievement.hidden", "hidden", 15, -4, DictFrame.fromOne(ModItems.achievement_icon, EnumAchievementType.QUESTIONMARK), null).initIndependentStat().registerStat(); horizonsStart = new Achievement("achievement.horizonsStart", "horizonsStart", -5, 4, ModItems.sat_gerald, null).initIndependentStat().registerStat(); @@ -698,20 +704,20 @@ public class MainRegistry { achRadDeath = new Achievement("achievement.radDeath", "radDeath", 0, 6, Items.skull, achRadPoison).initIndependentStat().registerStat().setSpecial(); achSomeWounds = new Achievement("achievement.someWounds", "someWounds", -2, 10, ModItems.injector_knife, null).initIndependentStat().registerStat(); - + digammaSee = new Achievement("achievement.digammaSee", "digammaSee", -1, 8, DictFrame.fromOne(ModItems.achievement_icon, EnumAchievementType.DIGAMMASEE), null).initIndependentStat().registerStat(); digammaFeel = new Achievement("achievement.digammaFeel", "digammaFeel", 1, 8, DictFrame.fromOne(ModItems.achievement_icon, EnumAchievementType.DIGAMMAFEEL), digammaSee).initIndependentStat().registerStat(); digammaKnow = new Achievement("achievement.digammaKnow", "digammaKnow", 3, 8, DictFrame.fromOne(ModItems.achievement_icon, EnumAchievementType.DIGAMMAKNOW), digammaFeel).initIndependentStat().registerStat().setSpecial(); digammaKauaiMoho = new Achievement("achievement.digammaKauaiMoho", "digammaKauaiMoho", 5, 8, DictFrame.fromOne(ModItems.achievement_icon, EnumAchievementType.DIGAMMAKAUAIMOHO), digammaKnow).initIndependentStat().registerStat().setSpecial(); digammaUpOnTop = new Achievement("achievement.digammaUpOnTop", "digammaUpOnTop", 7, 8, DictFrame.fromOne(ModItems.achievement_icon, EnumAchievementType.DIGAMMAUPONTOP), digammaKauaiMoho).initIndependentStat().registerStat().setSpecial(); - + //progression achieves achBurnerPress = new Achievement("achievement.burnerPress", "burnerPress", 0, 0, new ItemStack(ModBlocks.machine_press), null).initIndependentStat().registerStat(); achBlastFurnace = new Achievement("achievement.blastFurnace", "blastFurnace", 1, 3, new ItemStack(ModBlocks.machine_difurnace_off), achBurnerPress).initIndependentStat().registerStat(); achAssembly = new Achievement("achievement.assembly", "assembly", 3, -1, new ItemStack(ModBlocks.machine_assembler), achBurnerPress).initIndependentStat().registerStat(); achSelenium = new Achievement("achievement.selenium", "selenium", 3, 2, ModItems.ingot_starmetal, achBurnerPress).initIndependentStat().setSpecial().registerStat(); achChemplant = new Achievement("achievement.chemplant", "chemplant", 6, -1, new ItemStack(ModBlocks.machine_chemplant), achAssembly).initIndependentStat().registerStat(); - achConcrete = new Achievement("achievement.concrete", "concrete", 6, -4, new ItemStack(ModBlocks.concrete), achChemplant).initIndependentStat().registerStat(); + achConcrete = new Achievement("achievement.concrete", "concrete", 6, -4, new ItemStack(ModBlocks.concrete), achChemplant).initIndependentStat().registerStat(); achPolymer = new Achievement("achievement.polymer", "polymer", 9, -1, ModItems.ingot_polymer, achChemplant).initIndependentStat().registerStat(); achDesh = new Achievement("achievement.desh", "desh", 9, 2, ModItems.ingot_desh, achChemplant).initIndependentStat().registerStat(); achTantalum = new Achievement("achievement.tantalum", "tantalum", 7, 3, ModItems.gem_tantalium, achChemplant).initIndependentStat().setSpecial().registerStat(); @@ -737,8 +743,8 @@ public class MainRegistry { achMeltdown = new Achievement("achievement.meltdown", "meltdown", 15, -7, ModItems.powder_balefire, achFusion).initIndependentStat().setSpecial().registerStat(); achRedBalloons = new Achievement("achievement.redBalloons", "redBalloons", 11, 0, ModItems.missile_nuclear, achPolymer).initIndependentStat().setSpecial().registerStat(); achManhattan = new Achievement("achievement.manhattan", "manhattan", 11, -4, new ItemStack(ModBlocks.nuke_boy), achPolymer).initIndependentStat().setSpecial().registerStat(); - - AchievementPage.registerAchievementPage(new AchievementPage("Nuclear Tech", new Achievement[]{ + + AchievementPage.registerAchievementPage(new AchievementPage("Nuclear Tech", new Achievement[] { achSacrifice, achImpossible, achTOB, @@ -774,7 +780,7 @@ public class MainRegistry { digammaKnow, digammaKauaiMoho, digammaUpOnTop, - + achBurnerPress, achBlastFurnace, achAssembly, @@ -814,11 +820,14 @@ public class MainRegistry { IMCHandler.registerHandler("blastfurnace", new IMCBlastFurnace()); IMCHandler.registerHandler("crystallizer", new IMCCrystallizer()); IMCHandler.registerHandler("centrifuge", new IMCCentrifuge()); +<<<<<<< HEAD if (Loader.isModLoaded("NotEnoughItems")){ if (Loader.instance().getIndexedModList().get("NotEnoughItems").getVersion().contains("GTNH")) { proxy.handleNHNEICompat(); } } +======= +>>>>>>> 13aaa627b243ad1b3aa7dc13c07882396fbdbfbb } @EventHandler @@ -836,7 +845,6 @@ public class MainRegistry { MainRegistry.logger.error("Could not process unknown IMC type \"" + message.key + "\""); } } - } @EventHandler @@ -890,6 +898,7 @@ public class MainRegistry { Compat.handleRailcraftNonsense(); SuicideThreadDump.register(); + //ExplosionTests.runTest(); } @@ -925,7 +934,7 @@ public class MainRegistry { FMLCommonHandler.instance().bus().register(keyHandler); } } - + //yes kids, this is where we would usually register commands @EventHandler public void serverStart(FMLServerStartingEvent event) { @@ -1290,12 +1299,18 @@ public class MainRegistry { ignoreMappings.add("hbm:item.rotor_steel"); ignoreMappings.add("hbm:item.generator_steel"); ignoreMappings.add("hbm:item.bolt_compound"); + ignoreMappings.add("hbm:tile.anvil_meteorite"); + ignoreMappings.add("hbm:tile.anvil_starmetal"); + ignoreMappings.add("hbm:tile.anvil_bismuth"); /// REMAP /// remapItems.put("hbm:item.gadget_explosive8", ModItems.early_explosive_lenses); remapItems.put("hbm:item.man_explosive8", ModItems.explosive_lenses); remapItems.put("hbm:item.briquette_lignite", ModItems.briquette); remapItems.put("hbm:item.antiknock", ModItems.fuel_additive); + remapItems.put("hbm:tile.anvil_meteorite", Item.getItemFromBlock(ModBlocks.anvil_desh)); + remapItems.put("hbm:tile.anvil_starmetal", Item.getItemFromBlock(ModBlocks.anvil_saturnite)); + remapItems.put("hbm:tile.anvil_bismuth", Item.getItemFromBlock(ModBlocks.anvil_bismuth_bronze)); for(MissingMapping mapping : event.get()) { diff --git a/src/main/java/com/hbm/main/ModEventHandler.java b/src/main/java/com/hbm/main/ModEventHandler.java index 69b79f7b5..7b5772fc7 100644 --- a/src/main/java/com/hbm/main/ModEventHandler.java +++ b/src/main/java/com/hbm/main/ModEventHandler.java @@ -79,6 +79,7 @@ import com.hbm.util.InventoryUtil; import com.hbm.util.ArmorRegistry.HazardClass; import com.hbm.world.generator.TimedGenerator; +import api.hbm.energymk2.Nodespace; import cpw.mods.fml.common.eventhandler.EventPriority; import cpw.mods.fml.common.eventhandler.SubscribeEvent; import cpw.mods.fml.common.gameevent.PlayerEvent; @@ -1101,6 +1102,7 @@ public class ModEventHandler { RTTYSystem.updateBroadcastQueue(); RequestNetwork.updateEntries(); TileEntityMachineRadarNT.updateSystem(); + Nodespace.updateNodespace(); } } diff --git a/src/main/java/com/hbm/main/ModEventHandlerClient.java b/src/main/java/com/hbm/main/ModEventHandlerClient.java index 281a1d9d0..d8bf978c2 100644 --- a/src/main/java/com/hbm/main/ModEventHandlerClient.java +++ b/src/main/java/com/hbm/main/ModEventHandlerClient.java @@ -86,6 +86,7 @@ import com.hbm.sound.MovingSoundPlayerLoop.EnumHbmSound; import cpw.mods.fml.client.FMLClientHandler; import cpw.mods.fml.common.FMLCommonHandler; +import cpw.mods.fml.common.Loader; import cpw.mods.fml.common.eventhandler.EventPriority; import cpw.mods.fml.common.eventhandler.SubscribeEvent; import cpw.mods.fml.common.gameevent.InputEvent; @@ -150,6 +151,8 @@ public class ModEventHandlerClient { public static final int flashDuration = 5_000; public static long flashTimestamp; + public static final int shakeDuration = 1_500; + public static long shakeTimestamp; @SubscribeEvent public void onOverlayRender(RenderGameOverlayEvent.Pre event) { @@ -923,14 +926,16 @@ public class ModEventHandlerClient { Minecraft mc = Minecraft.getMinecraft(); ArmorNo9.updateWorldHook(mc.theWorld); + + boolean supportsHighRenderDistance = FMLClientHandler.instance().hasOptifine() || Loader.isModLoaded("angelica"); - if(mc.gameSettings.renderDistanceChunks > 16 && GeneralConfig.enableRenderDistCheck && ! FMLClientHandler.instance().hasOptifine()) { + if(mc.gameSettings.renderDistanceChunks > 16 && GeneralConfig.enableRenderDistCheck && !supportsHighRenderDistance) { mc.gameSettings.renderDistanceChunks = 16; LoggingUtil.errorWithHighlight("========================== WARNING =========================="); - LoggingUtil.errorWithHighlight("Dangerous render distance detected: Values over 16 only work on 1.8+ or with Optifine installed!!"); + LoggingUtil.errorWithHighlight("Dangerous render distance detected: Values over 16 only work on 1.8+ or with Optifine/Angelica installed!!"); LoggingUtil.errorWithHighlight("Set '1.25_enableRenderDistCheck' in hbm.cfg to 'false' to disable this check."); LoggingUtil.errorWithHighlight("========================== WARNING =========================="); - LoggingUtil.errorWithHighlight("If you got this error after removing Optifine: Consider deleting your option files after removing mods."); + LoggingUtil.errorWithHighlight("If you got this error after removing Optifine/Angelica: Consider deleting your option files after removing mods."); LoggingUtil.errorWithHighlight("If you got this error after downgrading your Minecraft version: Consider using a launcher that doesn't reuse the same folders for every game instance. MultiMC for example, it's really good and it comes with a dedicated cat button. You like cats, right? Are you using the Microsoft launcher? The one launcher that turns every version switch into a tightrope act because all the old config and options files are still here because different instances all use the same folder structure instead of different folders like a competent launcher would, because some MO-RON thought that this was an acceptable way of doing things? Really? The launcher that circumcises every crashlog into indecipherable garbage, tricking oblivious people into posting that as a \"crash report\", effectively wasting everyone's time? The launcher made by the company that thought it would be HI-LA-RI-OUS to force everyone to use Microsoft accounts, effectively breaking every other launcher until they implement their terrible auth system?"); LoggingUtil.errorWithHighlight("========================== WARNING =========================="); } diff --git a/src/main/java/com/hbm/main/ModEventHandlerRenderer.java b/src/main/java/com/hbm/main/ModEventHandlerRenderer.java index fd5bf7d78..7fb0fc35b 100644 --- a/src/main/java/com/hbm/main/ModEventHandlerRenderer.java +++ b/src/main/java/com/hbm/main/ModEventHandlerRenderer.java @@ -401,10 +401,10 @@ public class ModEventHandlerRenderer { @SubscribeEvent public void onRenderHUD(RenderGameOverlayEvent.Pre event) { - if(event.type == ElementType.HOTBAR && (ModEventHandlerClient.flashTimestamp + ModEventHandlerClient.flashDuration - System.currentTimeMillis()) > 0) { - double mult = (ModEventHandlerClient.flashTimestamp + ModEventHandlerClient.flashDuration - System.currentTimeMillis()) / (double) ModEventHandlerClient.flashDuration * 2; - double horizontal = MathHelper.clamp_double(Math.sin(System.currentTimeMillis() * 0.02), -0.7, 0.7) * 5; - double vertical = MathHelper.clamp_double(Math.sin(System.currentTimeMillis() * 0.01 + 2), -0.7, 0.7) * 1; + if(event.type == ElementType.HOTBAR && (ModEventHandlerClient.shakeTimestamp + ModEventHandlerClient.shakeDuration - System.currentTimeMillis()) > 0) { + double mult = (ModEventHandlerClient.shakeTimestamp + ModEventHandlerClient.shakeDuration - System.currentTimeMillis()) / (double) ModEventHandlerClient.shakeDuration * 2; + double horizontal = MathHelper.clamp_double(Math.sin(System.currentTimeMillis() * 0.02), -0.7, 0.7) * 15; + double vertical = MathHelper.clamp_double(Math.sin(System.currentTimeMillis() * 0.01 + 2), -0.7, 0.7) * 3; GL11.glTranslated(horizontal * mult, vertical * mult, 0); } } diff --git a/src/main/java/com/hbm/main/NEIConfig.java b/src/main/java/com/hbm/main/NEIConfig.java index d161a3645..12e4d8b4f 100644 --- a/src/main/java/com/hbm/main/NEIConfig.java +++ b/src/main/java/com/hbm/main/NEIConfig.java @@ -1,15 +1,12 @@ package com.hbm.main; -import java.util.ArrayList; import java.util.List; -import codechicken.nei.recipe.*; import com.hbm.blocks.ModBlocks; import com.hbm.blocks.generic.BlockMotherOfAllOres.TileEntityRandomOre; import com.hbm.config.CustomMachineConfigJSON; import com.hbm.config.CustomMachineConfigJSON.MachineConfiguration; import com.hbm.config.VersatileConfig; -import com.hbm.handler.imc.IMCHandlerNHNEI; import com.hbm.handler.nei.*; import com.hbm.items.ModItems; import com.hbm.items.machine.ItemBattery; @@ -19,6 +16,10 @@ import codechicken.nei.api.API; import codechicken.nei.api.IConfigureNEI; import codechicken.nei.api.IHighlightHandler; import codechicken.nei.api.ItemInfo.Layout; +import codechicken.nei.recipe.GuiCraftingRecipe; +import codechicken.nei.recipe.GuiUsageRecipe; +import codechicken.nei.recipe.ICraftingHandler; +import codechicken.nei.recipe.IUsageHandler; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.item.ItemStack; import net.minecraft.tileentity.TileEntity; @@ -28,6 +29,7 @@ import net.minecraft.world.World; import static com.hbm.main.ClientProxy.handlerList; public class NEIConfig implements IConfigureNEI { + @Override public void loadConfig() { for (TemplateRecipeHandler handler: handlerList()) { diff --git a/src/main/java/com/hbm/main/ResourceManager.java b/src/main/java/com/hbm/main/ResourceManager.java index 677b69c92..027f33180 100644 --- a/src/main/java/com/hbm/main/ResourceManager.java +++ b/src/main/java/com/hbm/main/ResourceManager.java @@ -9,6 +9,7 @@ import com.hbm.lib.RefStrings; import com.hbm.render.anim.AnimationLoader; import com.hbm.render.anim.BusAnimation; import com.hbm.render.loader.HFRWavefrontObject; +import com.hbm.render.loader.IModelCustomNamed; import com.hbm.render.loader.WavefrontObjDisplayList; import net.minecraft.util.ResourceLocation; @@ -25,35 +26,35 @@ public class ResourceManager { ////Obj TEs //Turrets - public static final IModelCustom turret_chekhov = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/turrets/turret_chekhov.obj")).asDisplayList(); - public static final IModelCustom turret_jeremy = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/turrets/turret_jeremy.obj")).asDisplayList(); - public static final IModelCustom turret_tauon = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/turrets/turret_tauon.obj")).asDisplayList(); - public static final IModelCustom turret_richard = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/turrets/turret_richard.obj")).asDisplayList(); - public static final IModelCustom turret_howard = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/turrets/turret_howard.obj")).asDisplayList(); - public static final IModelCustom turret_maxwell = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/turrets/turret_microwave.obj")).asDisplayList(); - public static final IModelCustom turret_fritz = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/turrets/turret_fritz.obj")).asDisplayList(); - public static final IModelCustom turret_brandon = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/turrets/turret_brandon.obj")).asDisplayList(); - public static final IModelCustom turret_arty = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/turrets/turret_arty.obj")).asDisplayList(); - public static final IModelCustom turret_himars = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/turrets/turret_himars.obj")).asDisplayList(); - public static final IModelCustom turret_sentry = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/turrets/turret_sentry.obj")).asDisplayList(); + public static final IModelCustom turret_chekhov = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/turrets/turret_chekhov.obj")).asVBO(); + public static final IModelCustom turret_jeremy = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/turrets/turret_jeremy.obj")).asVBO(); + public static final IModelCustom turret_tauon = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/turrets/turret_tauon.obj")).asVBO(); + public static final IModelCustom turret_richard = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/turrets/turret_richard.obj")).asVBO(); + public static final IModelCustom turret_howard = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/turrets/turret_howard.obj")).asVBO(); + public static final IModelCustom turret_maxwell = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/turrets/turret_microwave.obj")).asVBO(); + public static final IModelCustom turret_fritz = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/turrets/turret_fritz.obj")).asVBO(); + public static final IModelCustom turret_brandon = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/turrets/turret_brandon.obj")).asVBO(); + public static final IModelCustom turret_arty = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/turrets/turret_arty.obj")).asVBO(); + public static final IModelCustom turret_himars = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/turrets/turret_himars.obj")).asVBO(); + public static final IModelCustom turret_sentry = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/turrets/turret_sentry.obj")).asVBO(); - public static final IModelCustom turret_howard_damaged = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/turrets/turret_howard_damaged.obj")).asDisplayList(); + public static final IModelCustom turret_howard_damaged = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/turrets/turret_howard_damaged.obj")).asVBO(); //Heaters - public static final IModelCustom heater_firebox = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/machines/firebox.obj"), false).asDisplayList(); - public static final IModelCustom heater_oven = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/machines/heating_oven.obj"), false).asDisplayList(); - public static final IModelCustom heater_oilburner = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/machines/oilburner.obj")).asDisplayList(); - public static final IModelCustom heater_electric = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/machines/electric_heater.obj"), false).asDisplayList(); - public static final IModelCustom heater_heatex = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/machines/heatex.obj")).asDisplayList(); + public static final IModelCustom heater_firebox = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/machines/firebox.obj"), false).asVBO(); + public static final IModelCustom heater_oven = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/machines/heating_oven.obj"), false).asVBO(); + public static final IModelCustom heater_oilburner = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/machines/oilburner.obj")).asVBO(); + public static final IModelCustom heater_electric = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/machines/electric_heater.obj"), false).asVBO(); + public static final IModelCustom heater_heatex = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/machines/heatex.obj")).asVBO(); //Heat Engines public static final IModelCustom stirling = AdvancedModelLoader.loadModel(new ResourceLocation(RefStrings.MODID, "models/machines/stirling.obj")); public static final IModelCustom sawmill = AdvancedModelLoader.loadModel(new ResourceLocation(RefStrings.MODID, "models/machines/sawmill.obj")); public static final IModelCustom crucible_heat = AdvancedModelLoader.loadModel(new ResourceLocation(RefStrings.MODID, "models/machines/crucible.obj")); - public static final IModelCustom boiler = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/machines/boiler.obj")).asDisplayList(); - public static final IModelCustom boiler_burst = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/machines/boiler_burst.obj")).asDisplayList(); - public static final IModelCustom boiler_industrial = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/machines/industrial_boiler.obj")).asDisplayList(); - public static final IModelCustom hephaestus = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/machines/hephaestus.obj")).asDisplayList(); + public static final IModelCustom boiler = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/machines/boiler.obj")).asVBO(); + public static final IModelCustom boiler_burst = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/machines/boiler_burst.obj")).asVBO(); + public static final IModelCustom boiler_industrial = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/machines/industrial_boiler.obj")).asVBO(); + public static final IModelCustom hephaestus = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/machines/hephaestus.obj")).asVBO(); //Caster o' Strands public static final IModelCustom strand_caster = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/machines/strand_caster.obj")); @@ -70,53 +71,53 @@ public class ResourceManager { public static final IModelCustom mine_fat = AdvancedModelLoader.loadModel(new ResourceLocation(RefStrings.MODID, "models/mine_fat.obj")); //Oil Pumps - public static final IModelCustom derrick = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/machines/derrick.obj")).asDisplayList(); - public static final IModelCustom pumpjack = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/machines/pumpjack.obj")).asDisplayList(); - public static final IModelCustom fracking_tower = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/machines/fracking_tower.obj")).asDisplayList(); + public static final IModelCustom derrick = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/machines/derrick.obj")).asVBO(); + public static final IModelCustom pumpjack = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/machines/pumpjack.obj")).asVBO(); + public static final IModelCustom fracking_tower = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/machines/fracking_tower.obj")).asVBO(); //Refinery - public static final IModelCustom refinery = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/refinery.obj")).asDisplayList(); - public static final IModelCustom vacuum_distill = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/machines/vacuum_distill.obj")).asDisplayList(); - public static final IModelCustom refinery_exploded = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/refinery_exploded.obj")).asDisplayList(); + public static final IModelCustom refinery = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/refinery.obj")).asVBO(); + public static final IModelCustom vacuum_distill = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/machines/vacuum_distill.obj")).asVBO(); + public static final IModelCustom refinery_exploded = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/refinery_exploded.obj")).asVBO(); public static final IModelCustom fraction_tower = AdvancedModelLoader.loadModel(new ResourceLocation(RefStrings.MODID, "models/machines/fraction_tower.obj")); public static final IModelCustom fraction_spacer = AdvancedModelLoader.loadModel(new ResourceLocation(RefStrings.MODID, "models/machines/fraction_spacer.obj")); - public static final IModelCustom cracking_tower = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/machines/cracking_tower.obj")).asDisplayList(); - public static final IModelCustom catalytic_reformer = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/machines/catalytic_reformer.obj")).asDisplayList(); - public static final IModelCustom hydrotreater = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/machines/hydrotreater.obj")).asDisplayList(); - public static final IModelCustom liquefactor = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/machines/liquefactor.obj")).asDisplayList(); - public static final IModelCustom solidifier = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/machines/solidifier.obj")).asDisplayList(); - public static final IModelCustom compressor = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/machines/compressor.obj")).asDisplayList(); - public static final IModelCustom coker = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/machines/coker.obj")).asDisplayList(); + public static final IModelCustom cracking_tower = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/machines/cracking_tower.obj")).asVBO(); + public static final IModelCustom catalytic_reformer = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/machines/catalytic_reformer.obj")).asVBO(); + public static final IModelCustom hydrotreater = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/machines/hydrotreater.obj")).asVBO(); + public static final IModelCustom liquefactor = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/machines/liquefactor.obj")).asVBO(); + public static final IModelCustom solidifier = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/machines/solidifier.obj")).asVBO(); + public static final IModelCustom compressor = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/machines/compressor.obj")).asVBO(); + public static final IModelCustom coker = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/machines/coker.obj")).asVBO(); //Flare Stack - public static final IModelCustom oilflare = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/machines/flare_stack.obj")).asDisplayList(); - public static final IModelCustom chimney_brick = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/machines/chimney_brick.obj")).asDisplayList(); - public static final IModelCustom chimney_industrial = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/machines/chimney_industrial.obj")).asDisplayList(); + public static final IModelCustom oilflare = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/machines/flare_stack.obj")).asVBO(); + public static final IModelCustom chimney_brick = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/machines/chimney_brick.obj")).asVBO(); + public static final IModelCustom chimney_industrial = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/machines/chimney_industrial.obj")).asVBO(); //Tank - public static final IModelCustom fluidtank = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/fluidtank.obj")).asDisplayList(); - public static final IModelCustom fluidtank_exploded = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/fluidtank_exploded.obj")).asDisplayList(); - public static final IModelCustom bat9000 = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/machines/bat9000.obj")).asDisplayList(); - public static final IModelCustom orbus = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/machines/orbus.obj")).asDisplayList(); + public static final IModelCustom fluidtank = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/fluidtank.obj")).asVBO(); + public static final IModelCustom fluidtank_exploded = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/fluidtank_exploded.obj")).asVBO(); + public static final IModelCustom bat9000 = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/machines/bat9000.obj")).asVBO(); + public static final IModelCustom orbus = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/machines/orbus.obj")).asVBO(); //Turbofan - public static final IModelCustom turbofan = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/machines/turbofan.obj")).asDisplayList(); + public static final IModelCustom turbofan = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/machines/turbofan.obj")).asVBO(); //Gas Turbine - public static final IModelCustom turbinegas = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/machines/turbinegas.obj")).asDisplayList(); + public static final IModelCustom turbinegas = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/machines/turbinegas.obj")).asVBO(); //Pumps - public static final IModelCustom pump = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/machines/pump.obj")).asDisplayList(); + public static final IModelCustom pump = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/machines/pump.obj")).asVBO(); //Large Turbine - public static final IModelCustom steam_engine = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/machines/steam_engine.obj")).asDisplayList(); + public static final IModelCustom steam_engine = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/machines/steam_engine.obj")).asVBO(); public static final IModelCustom turbine = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/machines/turbine.obj")); - public static final IModelCustom chungus = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/machines/chungus.obj")).asDisplayList(); + public static final IModelCustom chungus = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/machines/chungus.obj")).asVBO(); //Cooling Tower - public static final IModelCustom tower_small = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/machines/tower_small.obj")).asDisplayList(); - public static final IModelCustom tower_large = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/machines/tower_large.obj")).asDisplayList(); - public static final IModelCustom condenser = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/machines/condenser.obj")).asDisplayList(); + public static final IModelCustom tower_small = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/machines/tower_small.obj")).asVBO(); + public static final IModelCustom tower_large = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/machines/tower_large.obj")).asVBO(); + public static final IModelCustom condenser = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/machines/condenser.obj")).asVBO(); //Wood burner public static final IModelCustom wood_burner = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/machines/wood_burner.obj")); @@ -131,7 +132,7 @@ public class ResourceManager { //Combustion Engine public static final IModelCustom dieselgen = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/machines/dieselgen.obj")); - public static final IModelCustom combustion_engine = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/machines/combustion_engine.obj")).asDisplayList(); + public static final IModelCustom combustion_engine = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/machines/combustion_engine.obj")).asVBO(); //Press public static final IModelCustom press_body = AdvancedModelLoader.loadModel(new ResourceLocation(RefStrings.MODID, "models/press_body.obj")); @@ -179,7 +180,7 @@ public class ResourceManager { //Mining Drill public static final IModelCustom drill_body = AdvancedModelLoader.loadModel(new ResourceLocation(RefStrings.MODID, "models/drill_main.obj")); public static final IModelCustom drill_bolt = AdvancedModelLoader.loadModel(new ResourceLocation(RefStrings.MODID, "models/drill_bolt.obj")); - public static final IModelCustom mining_drill = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/machines/mining_drill.obj")).asDisplayList(); + public static final IModelCustom mining_drill = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/machines/mining_drill.obj")).asVBO(); //Laser Miner public static final IModelCustom mining_laser = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/machines/mining_laser.obj")); @@ -263,11 +264,11 @@ public class ResourceManager { public static final IModelCustom shredder = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/machines/shredder.obj")); //Bombs - public static final IModelCustom bomb_gadget = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/bombs/gadget.obj")).asDisplayList(); + public static final IModelCustom bomb_gadget = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/bombs/gadget.obj")).asVBO(); public static final IModelCustom bomb_boy = AdvancedModelLoader.loadModel(new ResourceLocation(RefStrings.MODID, "models/LilBoy1.obj")); - public static final IModelCustom bomb_man = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/FatMan.obj")).asDisplayList(); + public static final IModelCustom bomb_man = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/FatMan.obj")).asVBO(); public static final IModelCustom bomb_mike = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/bombs/ivymike.obj")); - public static final IModelCustom bomb_tsar = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/bombs/tsar.obj")).asDisplayList(); + public static final IModelCustom bomb_tsar = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/bombs/tsar.obj")).asVBO(); public static final IModelCustom bomb_prototype = AdvancedModelLoader.loadModel(new ResourceLocation(RefStrings.MODID, "models/Prototype.obj")); public static final IModelCustom bomb_fleija = AdvancedModelLoader.loadModel(new ResourceLocation(RefStrings.MODID, "models/Fleija.obj")); public static final IModelCustom bomb_solinium = AdvancedModelLoader.loadModel(new ResourceLocation(RefStrings.MODID, "models/bombs/ufp.obj")); @@ -327,7 +328,7 @@ public class ResourceManager { //Doors public static AnimatedModel transition_seal = ColladaLoader.load(new ResourceLocation(RefStrings.MODID, "models/doors/seal.dae"), true); public static Animation transition_seal_anim = ColladaLoader.loadAnim(24040, new ResourceLocation(RefStrings.MODID, "models/doors/seal.dae")); - public static final WavefrontObjDisplayList fire_door = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/doors/fire_door.obj")).asDisplayList(); + public static final IModelCustomNamed fire_door = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/doors/fire_door.obj")).asVBO(); //Secure Access Door public static final ResourceLocation secure_access_door_tex = new ResourceLocation(RefStrings.MODID, "textures/models/doors/secure_access_door.png"); @@ -385,6 +386,7 @@ public class ResourceManager { //Network public static final IModelCustom connector = AdvancedModelLoader.loadModel(new ResourceLocation(RefStrings.MODID, "models/network/connector.obj")); + public static final IModelCustom pylon_medium = AdvancedModelLoader.loadModel(new ResourceLocation(RefStrings.MODID, "models/network/pylon_medium.obj")); public static final IModelCustom pylon_large = AdvancedModelLoader.loadModel(new ResourceLocation(RefStrings.MODID, "models/network/pylon_large.obj")); public static final IModelCustom substation = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/network/substation.obj")); @@ -782,9 +784,12 @@ public class ResourceManager { //Electricity public static final ResourceLocation connector_tex = new ResourceLocation(RefStrings.MODID, "textures/models/network/connector.png"); + public static final ResourceLocation pylon_medium_tex = new ResourceLocation(RefStrings.MODID, "textures/models/network/pylon_medium.png"); + public static final ResourceLocation pylon_medium_steel_tex = new ResourceLocation(RefStrings.MODID, "textures/models/network/pylon_medium_steel.png"); public static final ResourceLocation pylon_large_tex = new ResourceLocation(RefStrings.MODID, "textures/models/network/pylon_large.png"); public static final ResourceLocation substation_tex = new ResourceLocation(RefStrings.MODID, "textures/models/network/substation.png"); public static final ResourceLocation wire_tex = new ResourceLocation(RefStrings.MODID, "textures/models/network/wire.png"); + public static final ResourceLocation wire_greyscale_tex = new ResourceLocation(RefStrings.MODID, "textures/models/network/wire_greyscale.png"); //Radiolysis public static final ResourceLocation radiolysis_tex = new ResourceLocation(RefStrings.MODID, "textures/models/radiolysis.png"); @@ -842,17 +847,17 @@ public class ResourceManager { public static final IModelCustom nightmare_dark = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/weapons/nightmare_dark.obj")); public static final IModelCustom glass_cannon = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/weapons/glass_cannon.obj")); public static final IModelCustom bio_revolver = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/weapons/bio_revolver.obj")); - public static final IModelCustom chemthrower = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/weapons/chemthrower.obj")).asDisplayList(); + public static final IModelCustom chemthrower = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/weapons/chemthrower.obj")).asVBO(); public static final IModelCustom novac = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/weapons/novac.obj")); - public static final IModelCustom m2 = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/weapons/m2_browning.obj")).asDisplayList(); //large fella should be a display list - public static final IModelCustom lunatic_sniper = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/weapons/lunatic_sniper.obj")).asDisplayList(); + public static final IModelCustom m2 = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/weapons/m2_browning.obj")).asVBO(); //large fella should be a display list + public static final IModelCustom lunatic_sniper = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/weapons/lunatic_sniper.obj")).asVBO(); public static final IModelCustom tau = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/weapons/tau.obj")); - public static final IModelCustom benelli = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/weapons/benelli_new.obj")).asDisplayList(); - public static final IModelCustom coilgun = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/weapons/coilgun.obj")).asDisplayList(); - public static final IModelCustom cryocannon = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/weapons/cryo_cannon.obj")).asDisplayList(); - public static final IModelCustom uac_pistol = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/weapons/UAC pistol.obj")).asDisplayList(); - public static final IModelCustom congolake = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/weapons/congolake.obj")).asDisplayList(); - public static final IModelCustom lilmac = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/weapons/lilmac.obj")).asDisplayList(); + public static final IModelCustom benelli = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/weapons/benelli_new.obj")).asVBO(); + public static final IModelCustom coilgun = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/weapons/coilgun.obj")).asVBO(); + public static final IModelCustom cryocannon = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/weapons/cryo_cannon.obj")).asVBO(); + public static final IModelCustom uac_pistol = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/weapons/UAC pistol.obj")).asVBO(); + public static final IModelCustom congolake = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/weapons/congolake.obj")).asVBO(); + public static final IModelCustom lilmac = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/weapons/lilmac.obj")).asVBO(); public static final HashMap python_anim = AnimationLoader.load(new ResourceLocation(RefStrings.MODID, "models/weapons/animations/python.json")); public static final HashMap cursed_anim = AnimationLoader.load(new ResourceLocation(RefStrings.MODID, "models/weapons/animations/cursed.json")); @@ -1078,30 +1083,30 @@ public class ResourceManager { public static final IModelCustom b29 = AdvancedModelLoader.loadModel(new ResourceLocation(RefStrings.MODID, "models/b29.obj")); //Missiles - public static final IModelCustom missileV2 = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/missile_v2.obj")).asDisplayList(); - public static final IModelCustom missileABM = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/missile_abm.obj")).asDisplayList(); - public static final IModelCustom missileStealth = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/missile_stealth.obj"), false).asDisplayList(); - public static final IModelCustom missileStrong = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/missile_strong.obj")).asDisplayList(); - public static final IModelCustom missileHuge = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/missile_huge.obj")).asDisplayList(); - public static final IModelCustom missileNuclear = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/missile_atlas.obj")).asDisplayList(); - public static final IModelCustom missileMicro = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/missile_micro.obj")).asDisplayList(); + public static final IModelCustom missileV2 = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/missile_v2.obj")).asVBO(); + public static final IModelCustom missileABM = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/missile_abm.obj")).asVBO(); + public static final IModelCustom missileStealth = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/missile_stealth.obj"), false).asVBO(); + public static final IModelCustom missileStrong = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/missile_strong.obj")).asVBO(); + public static final IModelCustom missileHuge = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/missile_huge.obj")).asVBO(); + public static final IModelCustom missileNuclear = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/missile_atlas.obj")).asVBO(); + public static final IModelCustom missileMicro = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/missile_micro.obj")).asVBO(); public static final IModelCustom missileShuttle = AdvancedModelLoader.loadModel(new ResourceLocation(RefStrings.MODID, "models/missileShuttle.obj")); public static final IModelCustom missileCarrier = AdvancedModelLoader.loadModel(new ResourceLocation(RefStrings.MODID, "models/missileCarrier.obj")); public static final IModelCustom missileBooster = AdvancedModelLoader.loadModel(new ResourceLocation(RefStrings.MODID, "models/missileBooster.obj")); public static final IModelCustom minerRocket = AdvancedModelLoader.loadModel(new ResourceLocation(RefStrings.MODID, "models/minerRocket.obj")); - public static final IModelCustom soyuz = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/soyuz.obj")).asDisplayList(); - public static final IModelCustom soyuz_lander = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/soyuz_lander.obj")).asDisplayList(); - public static final IModelCustom soyuz_module = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/soyuz_module.obj")).asDisplayList(); - public static final IModelCustom soyuz_launcher_legs = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/launch_table/soyuz_launcher_legs.obj"), false).asDisplayList(); - public static final IModelCustom soyuz_launcher_table = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/launch_table/soyuz_launcher_table.obj"), false).asDisplayList(); - public static final IModelCustom soyuz_launcher_tower_base = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/launch_table/soyuz_launcher_tower_base.obj"), false).asDisplayList(); - public static final IModelCustom soyuz_launcher_tower = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/launch_table/soyuz_launcher_tower.obj"), false).asDisplayList(); - public static final IModelCustom soyuz_launcher_support_base = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/launch_table/soyuz_launcher_support_base.obj"), false).asDisplayList(); - public static final IModelCustom soyuz_launcher_support = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/launch_table/soyuz_launcher_support.obj"), false).asDisplayList(); + public static final IModelCustom soyuz = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/soyuz.obj")).asVBO(); + public static final IModelCustom soyuz_lander = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/soyuz_lander.obj")).asVBO(); + public static final IModelCustom soyuz_module = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/soyuz_module.obj")).asVBO(); + public static final IModelCustom soyuz_launcher_legs = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/launch_table/soyuz_launcher_legs.obj"), false).asVBO(); + public static final IModelCustom soyuz_launcher_table = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/launch_table/soyuz_launcher_table.obj"), false).asVBO(); + public static final IModelCustom soyuz_launcher_tower_base = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/launch_table/soyuz_launcher_tower_base.obj"), false).asVBO(); + public static final IModelCustom soyuz_launcher_tower = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/launch_table/soyuz_launcher_tower.obj"), false).asVBO(); + public static final IModelCustom soyuz_launcher_support_base = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/launch_table/soyuz_launcher_support_base.obj"), false).asVBO(); + public static final IModelCustom soyuz_launcher_support = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/launch_table/soyuz_launcher_support.obj"), false).asVBO(); //Missile Parts public static final IModelCustom missile_pad = AdvancedModelLoader.loadModel(new ResourceLocation(RefStrings.MODID, "models/weapons/launch_pad_silo.obj")); - public static final IModelCustom missile_erector = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/weapons/launch_pad_erector.obj")).asDisplayList(); + public static final IModelCustom missile_erector = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/weapons/launch_pad_erector.obj")).asVBO(); public static final IModelCustom missile_assembly = AdvancedModelLoader.loadModel(new ResourceLocation(RefStrings.MODID, "models/missile_assembly.obj")); public static final IModelCustom strut = AdvancedModelLoader.loadModel(new ResourceLocation(RefStrings.MODID, "models/strut.obj")); public static final IModelCustom compact_launcher = AdvancedModelLoader.loadModel(new ResourceLocation(RefStrings.MODID, "models/compact_launcher.obj")); diff --git a/src/main/java/com/hbm/packet/AuxButtonPacket.java b/src/main/java/com/hbm/packet/AuxButtonPacket.java index 1241363c1..c80dfd5ef 100644 --- a/src/main/java/com/hbm/packet/AuxButtonPacket.java +++ b/src/main/java/com/hbm/packet/AuxButtonPacket.java @@ -15,7 +15,7 @@ import com.hbm.tileentity.machine.TileEntitySoyuzLauncher; import com.hbm.tileentity.machine.storage.TileEntityBarrel; import com.hbm.tileentity.machine.storage.TileEntityMachineBattery; -import api.hbm.energy.IEnergyConnector.ConnectionPriority; +import api.hbm.energymk2.IEnergyReceiverMK2.ConnectionPriority; import cpw.mods.fml.common.network.simpleimpl.IMessage; import cpw.mods.fml.common.network.simpleimpl.IMessageHandler; import cpw.mods.fml.common.network.simpleimpl.MessageContext; @@ -68,6 +68,7 @@ public class AuxButtonPacket implements IMessage { public static class Handler implements IMessageHandler { + @SuppressWarnings("incomplete-switch") @Override public IMessage onMessage(AuxButtonPacket m, MessageContext ctx) { diff --git a/src/main/java/com/hbm/packet/AuxElectricityPacket.java b/src/main/java/com/hbm/packet/AuxElectricityPacket.java index bebb4e9c1..39c27e7e1 100644 --- a/src/main/java/com/hbm/packet/AuxElectricityPacket.java +++ b/src/main/java/com/hbm/packet/AuxElectricityPacket.java @@ -1,6 +1,6 @@ package com.hbm.packet; -import api.hbm.energy.IEnergyUser; +import api.hbm.energymk2.IEnergyHandlerMK2; import cpw.mods.fml.common.network.simpleimpl.IMessage; import cpw.mods.fml.common.network.simpleimpl.IMessageHandler; import cpw.mods.fml.common.network.simpleimpl.MessageContext; @@ -55,9 +55,9 @@ public class AuxElectricityPacket implements IMessage { try { TileEntity te = Minecraft.getMinecraft().theWorld.getTileEntity(m.x, m.y, m.z); - if (te instanceof IEnergyUser) { + if (te instanceof IEnergyHandlerMK2) { - IEnergyUser gen = (IEnergyUser) te; + IEnergyHandlerMK2 gen = (IEnergyHandlerMK2) te; gen.setPower(m.charge); } } catch (Exception x) { } diff --git a/src/main/java/com/hbm/render/block/ct/RenderBlocksCT.java b/src/main/java/com/hbm/render/block/ct/RenderBlocksCT.java index bbd2655ee..498e81e3a 100644 --- a/src/main/java/com/hbm/render/block/ct/RenderBlocksCT.java +++ b/src/main/java/com/hbm/render/block/ct/RenderBlocksCT.java @@ -26,11 +26,8 @@ public class RenderBlocksCT extends RenderBlocks { VertInfo bc; VertInfo br; - Tessellator tess; - public RenderBlocksCT() { super(); - this.tess = Tessellator.instance; } public void prepWorld(IBlockAccess acc) { @@ -240,13 +237,13 @@ public class RenderBlocksCT extends RenderBlocks { boolean debugColor = false; /// ORDER: ROTATIONAL /// - if(debugColor) tess.setColorOpaque_F(1F, 1F, 0F); + if(debugColor) Tessellator.instance.setColorOpaque_F(1F, 1F, 0F); drawVert(ftr, icon.getMaxU(), icon.getMinV(), ntr); - if(debugColor) tess.setColorOpaque_F(1F, 0F, 0F); + if(debugColor) Tessellator.instance.setColorOpaque_F(1F, 0F, 0F); drawVert(ftl, icon.getMinU(), icon.getMinV(), ntl); - if(debugColor) tess.setColorOpaque_F(0F, 0F, 1F); + if(debugColor) Tessellator.instance.setColorOpaque_F(0F, 0F, 1F); drawVert(fbl, icon.getMinU(), icon.getMaxV(), nbl); - if(debugColor) tess.setColorOpaque_F(0F, 1F, 0F); + if(debugColor) Tessellator.instance.setColorOpaque_F(0F, 1F, 0F); drawVert(fbr, icon.getMaxU(), icon.getMaxV(), nbr); } @@ -257,11 +254,11 @@ public class RenderBlocksCT extends RenderBlocks { private void drawVert(double x, double y, double z, double u, double v, VertInfo info) { if(this.enableAO) { - tess.setColorOpaque_F(info.red, info.green, info.blue); - tess.setBrightness(info.brightness); + Tessellator.instance.setColorOpaque_F(info.red, info.green, info.blue); + Tessellator.instance.setBrightness(info.brightness); } - tess.addVertexWithUV(x, y, z, u, v); + Tessellator.instance.addVertexWithUV(x, y, z, u, v); } private double[] avgCoords(double[] first, double[] second) { @@ -315,32 +312,32 @@ public class RenderBlocksCT extends RenderBlocks { GL11.glRotatef(90.0F, 0.0F, 1.0F, 0.0F); GL11.glTranslatef(-0.5F, -0.5F, -0.5F); - tess.startDrawingQuads(); - tess.setNormal(0.0F, -1.0F, 0.0F); + Tessellator.instance.startDrawingQuads(); + Tessellator.instance.setNormal(0.0F, -1.0F, 0.0F); super.renderFaceYNeg(block, 0.0D, 0.0D, 0.0D, this.getBlockIconFromSideAndMetadata(block, 0, meta)); - tess.draw(); - tess.startDrawingQuads(); - tess.setNormal(0.0F, 1.0F, 0.0F); + Tessellator.instance.draw(); + Tessellator.instance.startDrawingQuads(); + Tessellator.instance.setNormal(0.0F, 1.0F, 0.0F); super.renderFaceYPos(block, 0.0D, 0.0D, 0.0D, this.getBlockIconFromSideAndMetadata(block, 1, meta)); - tess.draw(); + Tessellator.instance.draw(); - tess.startDrawingQuads(); - tess.setNormal(0.0F, 0.0F, -1.0F); + Tessellator.instance.startDrawingQuads(); + Tessellator.instance.setNormal(0.0F, 0.0F, -1.0F); super.renderFaceZNeg(block, 0.0D, 0.0D, 0.0D, this.getBlockIconFromSideAndMetadata(block, 2, meta)); - tess.draw(); - tess.startDrawingQuads(); - tess.setNormal(0.0F, 0.0F, 1.0F); + Tessellator.instance.draw(); + Tessellator.instance.startDrawingQuads(); + Tessellator.instance.setNormal(0.0F, 0.0F, 1.0F); super.renderFaceZPos(block, 0.0D, 0.0D, 0.0D, this.getBlockIconFromSideAndMetadata(block, 3, meta)); - tess.draw(); + Tessellator.instance.draw(); - tess.startDrawingQuads(); - tess.setNormal(-1.0F, 0.0F, 0.0F); + Tessellator.instance.startDrawingQuads(); + Tessellator.instance.setNormal(-1.0F, 0.0F, 0.0F); super.renderFaceXNeg(block, 0.0D, 0.0D, 0.0D, this.getBlockIconFromSideAndMetadata(block, 4, meta)); - tess.draw(); - tess.startDrawingQuads(); - tess.setNormal(1.0F, 0.0F, 0.0F); + Tessellator.instance.draw(); + Tessellator.instance.startDrawingQuads(); + Tessellator.instance.setNormal(1.0F, 0.0F, 0.0F); super.renderFaceXPos(block, 0.0D, 0.0D, 0.0D, this.getBlockIconFromSideAndMetadata(block, 5, meta)); - tess.draw(); + Tessellator.instance.draw(); GL11.glTranslatef(0.5F, 0.5F, 0.5F); } diff --git a/src/main/java/com/hbm/render/entity/effect/RenderTorex.java b/src/main/java/com/hbm/render/entity/effect/RenderTorex.java index 809f403f4..674eb8818 100644 --- a/src/main/java/com/hbm/render/entity/effect/RenderTorex.java +++ b/src/main/java/com/hbm/render/entity/effect/RenderTorex.java @@ -38,6 +38,14 @@ public class RenderTorex extends Render { cloudletWrapper(cloud, interp); if(cloud.ticksExisted < 101) flashWrapper(cloud, interp); if(cloud.ticksExisted < 10 && System.currentTimeMillis() - ModEventHandlerClient.flashTimestamp > 1_000) ModEventHandlerClient.flashTimestamp = System.currentTimeMillis(); + if(cloud.didPlaySound && !cloud.didShake && System.currentTimeMillis() - ModEventHandlerClient.shakeTimestamp > 1_000) { + ModEventHandlerClient.shakeTimestamp = System.currentTimeMillis(); + cloud.didShake = true; + EntityPlayer player = MainRegistry.proxy.me(); + player.hurtTime = 15; + player.maxHurtTime = 15; + player.attackedAtYaw = 0F; + } if(fog) GL11.glEnable(GL11.GL_FOG); GL11.glPopMatrix(); } diff --git a/src/main/java/com/hbm/render/entity/mob/RenderRADBeast.java b/src/main/java/com/hbm/render/entity/mob/RenderRADBeast.java index 068ce2365..8e37a801f 100644 --- a/src/main/java/com/hbm/render/entity/mob/RenderRADBeast.java +++ b/src/main/java/com/hbm/render/entity/mob/RenderRADBeast.java @@ -20,95 +20,86 @@ import net.minecraft.util.Vec3; public class RenderRADBeast extends RenderLiving { - private static final ResourceLocation blazeTextures = new ResourceLocation(RefStrings.MODID, "textures/entity/radbeast.png"); - private static final ResourceLocation mask = new ResourceLocation(RefStrings.MODID, "textures/models/ModelM65Blaze.png"); - private int field_77068_a; + private static final ResourceLocation blazeTextures = new ResourceLocation(RefStrings.MODID, "textures/entity/radbeast.png"); + private static final ResourceLocation mask = new ResourceLocation(RefStrings.MODID, "textures/models/ModelM65Blaze.png"); + private int blazeModel; - public RenderRADBeast() - { - super(new ModelBlaze(), 0.5F); - this.field_77068_a = ((ModelBlaze)this.mainModel).func_78104_a(); - } - - public void doRender(EntityRADBeast entity, double x, double y, double z, float r0, float r1) - { - int i = ((ModelBlaze)this.mainModel).func_78104_a(); + public RenderRADBeast() { + super(new ModelBlaze(), 0.5F); + this.blazeModel = ((ModelBlaze) this.mainModel).func_78104_a(); + } - if (i != this.field_77068_a) - { - this.field_77068_a = i; - this.mainModel = new ModelBlaze(); - } - - Entity victim = entity.getUnfortunateSoul(); - - if(victim != null) { + public void doRender(EntityRADBeast entity, double x, double y, double z, float r0, float r1) { + int i = ((ModelBlaze) this.mainModel).func_78104_a(); - GL11.glPushMatrix(); - - GL11.glTranslated(x, y + 1.25, z); - - double sx = entity.posX; - double sy = entity.posY + 1.25; - double sz = entity.posZ; - - double tX = victim.posX; - double tY = victim.posY + victim.height / 2; - double tZ = victim.posZ; - - if(victim == Minecraft.getMinecraft().thePlayer) - tY -= 1.5; - - double length = Math.sqrt(Math.pow(tX - sx, 2) + Math.pow(tY - sy, 2) + Math.pow(tZ - sz, 2)); - BeamPronter.prontBeam(Vec3.createVectorHelper(tX - sx, tY - sy, tZ - sz), EnumWaveType.RANDOM, EnumBeamType.SOLID, 0x004000, 0x004000, (int) (entity.worldObj.getTotalWorldTime() % 1000 + 1), (int) (length * 5), 0.125F, 2, 0.03125F); - - GL11.glPopMatrix(); + if(i != this.blazeModel) { + this.blazeModel = i; + this.mainModel = new ModelBlaze(); } - super.doRender((EntityLiving)entity, x, y, z, r0, r1); - } - - protected ResourceLocation getEntityTexture(EntityRADBeast p_110775_1_) - { - return blazeTextures; - } - - public void doRender(EntityLiving p_76986_1_, double p_76986_2_, double p_76986_4_, double p_76986_6_, float p_76986_8_, float p_76986_9_) - { - this.doRender((EntityRADBeast)p_76986_1_, p_76986_2_, p_76986_4_, p_76986_6_, p_76986_8_, p_76986_9_); - } - - public void doRender(EntityLivingBase p_76986_1_, double p_76986_2_, double p_76986_4_, double p_76986_6_, float p_76986_8_, float p_76986_9_) - { - this.doRender((EntityRADBeast)p_76986_1_, p_76986_2_, p_76986_4_, p_76986_6_, p_76986_8_, p_76986_9_); - } - - protected ResourceLocation getEntityTexture(Entity p_110775_1_) - { - return this.getEntityTexture((EntityRADBeast)p_110775_1_); - } - - public void doRender(Entity p_76986_1_, double p_76986_2_, double p_76986_4_, double p_76986_6_, float p_76986_8_, float p_76986_9_) - { - this.doRender((EntityRADBeast)p_76986_1_, p_76986_2_, p_76986_4_, p_76986_6_, p_76986_8_, p_76986_9_); - } + Entity victim = entity.getUnfortunateSoul(); + + if(victim != null && entity.posY > 0.1) { + + GL11.glPushMatrix(); + + GL11.glTranslated(x, y + 1.25, z); + + double sx = entity.posX; + double sy = entity.posY + 1.25; + double sz = entity.posZ; + + double tX = victim.posX; + double tY = victim.posY + victim.height / 2; + double tZ = victim.posZ; + + if(victim == Minecraft.getMinecraft().thePlayer) + tY -= 1.5; + + double length = Math.sqrt(Math.pow(tX - sx, 2) + Math.pow(tY - sy, 2) + Math.pow(tZ - sz, 2)); + if(length < 200) BeamPronter.prontBeam(Vec3.createVectorHelper(tX - sx, tY - sy, tZ - sz), EnumWaveType.RANDOM, EnumBeamType.SOLID, 0x004000, 0x004000, (int) (entity.worldObj.getTotalWorldTime() % 1000 + 1), (int) (length * 5), 0.125F, 2, 0.03125F); + + GL11.glPopMatrix(); + } + + super.doRender((EntityLiving) entity, x, y, z, r0, r1); + } + + protected ResourceLocation getEntityTexture(EntityRADBeast p_110775_1_) { + return blazeTextures; + } + + public void doRender(EntityLiving p_76986_1_, double p_76986_2_, double p_76986_4_, double p_76986_6_, float p_76986_8_, float p_76986_9_) { + this.doRender((EntityRADBeast) p_76986_1_, p_76986_2_, p_76986_4_, p_76986_6_, p_76986_8_, p_76986_9_); + } + + public void doRender(EntityLivingBase p_76986_1_, double p_76986_2_, double p_76986_4_, double p_76986_6_, float p_76986_8_, float p_76986_9_) { + this.doRender((EntityRADBeast) p_76986_1_, p_76986_2_, p_76986_4_, p_76986_6_, p_76986_8_, p_76986_9_); + } + + protected ResourceLocation getEntityTexture(Entity p_110775_1_) { + return this.getEntityTexture((EntityRADBeast) p_110775_1_); + } + + public void doRender(Entity p_76986_1_, double p_76986_2_, double p_76986_4_, double p_76986_6_, float p_76986_8_, float p_76986_9_) { + this.doRender((EntityRADBeast) p_76986_1_, p_76986_2_, p_76986_4_, p_76986_6_, p_76986_8_, p_76986_9_); + } private ModelM65Blaze modelM65; - protected int shouldRenderPass(EntityLivingBase p_77032_1_, int p_77032_2_, float p_77032_3_) - { - - if(p_77032_2_ == 0) { - this.bindTexture(mask); - - if (this.modelM65 == null) { + protected int shouldRenderPass(EntityLivingBase p_77032_1_, int p_77032_2_, float p_77032_3_) { + + if(p_77032_2_ == 0) { + this.bindTexture(mask); + + if(this.modelM65 == null) { this.modelM65 = new ModelM65Blaze(); } - - this.setRenderPassModel(modelM65); - return 1; - } - - return super.shouldRenderPass(p_77032_1_, p_77032_2_, p_77032_3_); - } + + this.setRenderPassModel(modelM65); + return 1; + } + + return super.shouldRenderPass(p_77032_1_, p_77032_2_, p_77032_3_); + } } diff --git a/src/main/java/com/hbm/render/loader/HFRWavefrontObject.java b/src/main/java/com/hbm/render/loader/HFRWavefrontObject.java index 3b27a781c..a3e443e99 100644 --- a/src/main/java/com/hbm/render/loader/HFRWavefrontObject.java +++ b/src/main/java/com/hbm/render/loader/HFRWavefrontObject.java @@ -5,6 +5,7 @@ import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader; import java.util.ArrayList; +import java.util.List; import java.util.regex.Matcher; import java.util.regex.Pattern; @@ -16,12 +17,11 @@ import net.minecraft.client.Minecraft; import net.minecraft.client.renderer.Tessellator; import net.minecraft.client.resources.IResource; import net.minecraft.util.ResourceLocation; -import net.minecraftforge.client.model.IModelCustom; import net.minecraftforge.client.model.ModelFormatException; import net.minecraftforge.client.model.obj.TextureCoordinate; import net.minecraftforge.client.model.obj.Vertex; -public class HFRWavefrontObject implements IModelCustom { +public class HFRWavefrontObject implements IModelCustomNamed { private static Pattern vertexPattern = Pattern.compile("(v( (\\-){0,1}\\d+(\\.\\d+)?){3,4} *\\n)|(v( (\\-){0,1}\\d+(\\.\\d+)?){3,4} *$)"); private static Pattern vertexNormalPattern = Pattern.compile("(vn( (\\-){0,1}\\d+(\\.\\d+)?){3,4} *\\n)|(vn( (\\-){0,1}\\d+(\\.\\d+)?){3,4} *$)"); private static Pattern textureCoordinatePattern = Pattern.compile("(vt( (\\-){0,1}\\d+\\.\\d+){2,3} *\\n)|(vt( (\\-){0,1}\\d+(\\.\\d+)?){2,3} *$)"); @@ -482,6 +482,19 @@ public class HFRWavefrontObject implements IModelCustom { public String getType() { return "obj"; } + + @Override + public List getPartNames() { + List names = new ArrayList(); + for(S_GroupObject data : groupObjects) { + names.add(data.name); + } + return names; + } + + public WavefrontObjVBO asVBO() { + return new WavefrontObjVBO(this); + } public WavefrontObjDisplayList asDisplayList() { return new WavefrontObjDisplayList(this); diff --git a/src/main/java/com/hbm/render/loader/IModelCustomNamed.java b/src/main/java/com/hbm/render/loader/IModelCustomNamed.java new file mode 100644 index 000000000..a12e1bdb4 --- /dev/null +++ b/src/main/java/com/hbm/render/loader/IModelCustomNamed.java @@ -0,0 +1,13 @@ +package com.hbm.render.loader; + +import java.util.List; + +import net.minecraftforge.client.model.IModelCustom; + +public interface IModelCustomNamed extends IModelCustom { + + // A little messy, but this is the cleanest refactor, and can be useful in the future + + public List getPartNames(); + +} diff --git a/src/main/java/com/hbm/render/loader/WavefrontObjDisplayList.java b/src/main/java/com/hbm/render/loader/WavefrontObjDisplayList.java index 99eef4360..b797be151 100644 --- a/src/main/java/com/hbm/render/loader/WavefrontObjDisplayList.java +++ b/src/main/java/com/hbm/render/loader/WavefrontObjDisplayList.java @@ -7,11 +7,10 @@ import org.apache.commons.lang3.tuple.Pair; import org.lwjgl.opengl.GL11; import net.minecraft.client.renderer.Tessellator; -import net.minecraftforge.client.model.IModelCustom; import net.minecraftforge.client.model.obj.GroupObject; import net.minecraftforge.client.model.obj.WavefrontObject; -public class WavefrontObjDisplayList implements IModelCustom { +public class WavefrontObjDisplayList implements IModelCustomNamed { public List> nameToCallList = new ArrayList<>(); @@ -95,4 +94,13 @@ public class WavefrontObjDisplayList implements IModelCustom { } } } + + @Override + public List getPartNames() { + List names = new ArrayList(); + for(Pair data : nameToCallList) { + names.add(data.getLeft()); + } + return names; + } } \ No newline at end of file diff --git a/src/main/java/com/hbm/render/loader/WavefrontObjVBO.java b/src/main/java/com/hbm/render/loader/WavefrontObjVBO.java new file mode 100644 index 000000000..fe7eb985f --- /dev/null +++ b/src/main/java/com/hbm/render/loader/WavefrontObjVBO.java @@ -0,0 +1,158 @@ +package com.hbm.render.loader; + +import java.nio.FloatBuffer; +import java.util.ArrayList; +import java.util.List; + +import org.lwjgl.BufferUtils; +import org.lwjgl.opengl.*; + +import net.minecraftforge.client.model.obj.TextureCoordinate; +import net.minecraftforge.client.model.obj.Vertex; + +public class WavefrontObjVBO implements IModelCustomNamed { + + class VBOBufferData { + + String name; + int vertices = 0; + int vertexHandle; + int uvHandle; + int normalHandle; + + } + + List groups = new ArrayList(); + + static int VERTEX_SIZE = 3; + static int UV_SIZE = 3; + + public WavefrontObjVBO(HFRWavefrontObject obj) { + for(S_GroupObject g : obj.groupObjects) { + VBOBufferData data = new VBOBufferData(); + data.name = g.name; + + FloatBuffer vertexData = BufferUtils.createFloatBuffer(g.faces.size() * 3 * VERTEX_SIZE); + FloatBuffer uvData = BufferUtils.createFloatBuffer(g.faces.size() * 3 * UV_SIZE); + FloatBuffer normalData = BufferUtils.createFloatBuffer(g.faces.size() * 3 * VERTEX_SIZE); + + for(S_Face face : g.faces) { + for(int i = 0; i < face.vertices.length; i++) { + Vertex vert = face.vertices[i]; + TextureCoordinate tex = new TextureCoordinate(0, 0); + Vertex normal = face.vertexNormals[i]; + + if(face.textureCoordinates != null && face.textureCoordinates.length > 0) { + tex = face.textureCoordinates[i]; + } + + data.vertices++; + vertexData.put(new float[] { vert.x, vert.y, vert.z }); + uvData.put(new float[] { tex.u, tex.v, tex.w }); + normalData.put(new float[] { normal.x, normal.y, normal.z }); + } + } + vertexData.flip(); + uvData.flip(); + normalData.flip(); + + data.vertexHandle = GL15.glGenBuffers(); + GL15.glBindBuffer(GL15.GL_ARRAY_BUFFER, data.vertexHandle); + GL15.glBufferData(GL15.GL_ARRAY_BUFFER, vertexData, GL15.GL_STATIC_DRAW); + GL15.glBindBuffer(GL15.GL_ARRAY_BUFFER, 0); + + data.uvHandle = GL15.glGenBuffers(); + GL15.glBindBuffer(GL15.GL_ARRAY_BUFFER, data.uvHandle); + GL15.glBufferData(GL15.GL_ARRAY_BUFFER, uvData, GL15.GL_STATIC_DRAW); + GL15.glBindBuffer(GL15.GL_ARRAY_BUFFER, 0); + + data.normalHandle = GL15.glGenBuffers(); + GL15.glBindBuffer(GL15.GL_ARRAY_BUFFER, data.normalHandle); + GL15.glBufferData(GL15.GL_ARRAY_BUFFER, normalData, GL15.GL_STATIC_DRAW); + GL15.glBindBuffer(GL15.GL_ARRAY_BUFFER, 0); + + groups.add(data); + } + } + + @Override + public String getType() { + return "obj_vbo"; + } + + private void renderVBO(VBOBufferData data) { + GL15.glBindBuffer(GL15.GL_ARRAY_BUFFER, data.vertexHandle); + GL11.glVertexPointer(VERTEX_SIZE, GL11.GL_FLOAT, 0, 0l); + + GL15.glBindBuffer(GL15.GL_ARRAY_BUFFER, data.uvHandle); + GL11.glTexCoordPointer(UV_SIZE, GL11.GL_FLOAT, 0, 0l); + + GL15.glBindBuffer(GL15.GL_ARRAY_BUFFER, data.normalHandle); + GL11.glNormalPointer(GL11.GL_FLOAT, 0, 0l); + + GL11.glEnableClientState(GL11.GL_VERTEX_ARRAY); + GL11.glEnableClientState(GL11.GL_TEXTURE_COORD_ARRAY); + GL11.glEnableClientState(GL11.GL_NORMAL_ARRAY); + + GL11.glDrawArrays(GL11.GL_TRIANGLES, 0, data.vertices); + + GL11.glDisableClientState(GL11.GL_VERTEX_ARRAY); + GL11.glDisableClientState(GL11.GL_TEXTURE_COORD_ARRAY); + GL11.glDisableClientState(GL11.GL_NORMAL_ARRAY); + + GL15.glBindBuffer(GL15.GL_ARRAY_BUFFER, 0); + } + + @Override + public void renderAll() { + for(VBOBufferData data : groups) { + renderVBO(data); + } + } + + @Override + public void renderOnly(String... groupNames) { + for(VBOBufferData data : groups) { + for(String name : groupNames) { + if(data.name.equalsIgnoreCase(name)) { + renderVBO(data); + } + } + } + } + + @Override + public void renderPart(String partName) { + for(VBOBufferData data : groups) { + if(data.name.equalsIgnoreCase(partName)) { + renderVBO(data); + } + } + } + + @Override + public void renderAllExcept(String... excludedGroupNames) { + for(VBOBufferData data : groups) { + boolean skip = false; + for(String name : excludedGroupNames) { + if(data.name.equalsIgnoreCase(name)) { + skip = true; + break; + } + } + if(!skip) { + renderVBO(data); + } + } + } + + @Override + public List getPartNames() { + List names = new ArrayList(); + for(VBOBufferData data : groups) { + names.add(data.name); + } + return names; + } + +} \ No newline at end of file diff --git a/src/main/java/com/hbm/render/tileentity/RenderDoorGeneric.java b/src/main/java/com/hbm/render/tileentity/RenderDoorGeneric.java index 080be2114..33bdb32d9 100644 --- a/src/main/java/com/hbm/render/tileentity/RenderDoorGeneric.java +++ b/src/main/java/com/hbm/render/tileentity/RenderDoorGeneric.java @@ -2,7 +2,6 @@ package com.hbm.render.tileentity; import java.nio.DoubleBuffer; -import org.apache.commons.lang3.tuple.Pair; import org.lwjgl.opengl.GL11; import com.hbm.animloader.AnimatedModel; @@ -11,7 +10,7 @@ import com.hbm.animloader.AnimationWrapper; import com.hbm.animloader.AnimationWrapper.EndResult; import com.hbm.animloader.AnimationWrapper.EndType; import com.hbm.blocks.BlockDummyable; -import com.hbm.render.loader.WavefrontObjDisplayList; +import com.hbm.render.loader.IModelCustomNamed; import com.hbm.tileentity.DoorDecl; import com.hbm.tileentity.TileEntityDoorGeneric; @@ -75,25 +74,33 @@ public class RenderDoorGeneric extends TileEntitySpecialRenderer { animModel.controller.setAnim(w); animModel.renderAnimated(System.currentTimeMillis()); } else { - WavefrontObjDisplayList model = door.getModel(); + IModelCustomNamed model = door.getModel(); long ms = System.currentTimeMillis()-te.animStartTime; float openTicks = MathHelper.clamp_float(te.state == 2 || te.state == 0 ? door.timeToOpen()*50-ms : ms, 0, door.timeToOpen()*50)*0.02F; - for(Pair p : model.nameToCallList){ - if(!door.doesRender(p.getLeft(), false)) + + for(String partName : model.getPartNames()) { + if(!door.doesRender(partName, false)) continue; + GL11.glPushMatrix(); - bindTexture(door.getTextureForPart(te.getSkinIndex(), p.getLeft())); - doPartTransform(door, p.getLeft(), openTicks, false); - GL11.glCallList(p.getRight()); - for(String name : door.getChildren(p.getLeft())){ - if(!door.doesRender(name, true)) - continue; - GL11.glPushMatrix(); - bindTexture(door.getTextureForPart(te.getSkinIndex(), name)); - doPartTransform(door, name, openTicks, true); - model.renderPart(name); - GL11.glPopMatrix(); + { + bindTexture(door.getTextureForPart(te.getSkinIndex(), partName)); + doPartTransform(door, partName, openTicks, false); + model.renderPart(partName); + + for(String innerPartName : door.getChildren(partName)) { + if(!door.doesRender(innerPartName, true)) + continue; + + GL11.glPushMatrix(); + { + bindTexture(door.getTextureForPart(te.getSkinIndex(), innerPartName)); + doPartTransform(door, innerPartName, openTicks, true); + model.renderPart(innerPartName); + } + GL11.glPopMatrix(); + } } GL11.glPopMatrix(); } diff --git a/src/main/java/com/hbm/render/tileentity/RenderPylonBase.java b/src/main/java/com/hbm/render/tileentity/RenderPylonBase.java index f7ffccd91..1d69ca2ba 100644 --- a/src/main/java/com/hbm/render/tileentity/RenderPylonBase.java +++ b/src/main/java/com/hbm/render/tileentity/RenderPylonBase.java @@ -4,7 +4,6 @@ import org.lwjgl.opengl.GL11; import com.hbm.main.ResourceManager; import com.hbm.tileentity.network.TileEntityPylonBase; -import com.hbm.tileentity.network.TileEntityPylonBase.ConnectionType; import net.minecraft.client.renderer.Tessellator; import net.minecraft.client.renderer.tileentity.TileEntitySpecialRenderer; @@ -15,63 +14,6 @@ import net.minecraft.world.World; public abstract class RenderPylonBase extends TileEntitySpecialRenderer { - //TODO: adapt this into a more generic form for multi wire pylons - /*@Deprecated - public void renderSingleLine(TileEntityPylonBase pyl, double x, double y, double z) { - - for(int i = 0; i < pyl.connected.size(); i++) { - - int[] wire = pyl.connected.get(i); - TileEntity tile = pyl.getWorldObj().getTileEntity(wire[0], wire[1], wire[2]); - - if(tile instanceof TileEntityPylonBase) { - TileEntityPylonBase pylon = (TileEntityPylonBase) tile; - Vec3 myOffset = pyl.getMountPos()[0]; - Vec3 theirOffset = pylon.getMountPos()[0]; - - double conX0 = pyl.xCoord + myOffset.xCoord; - double conY0 = pyl.yCoord + myOffset.yCoord; - double conZ0 = pyl.zCoord + myOffset.zCoord; - double conX1 = pylon.xCoord + theirOffset.xCoord; - double conY1 = pylon.yCoord + theirOffset.yCoord; - double conZ1 = pylon.zCoord + theirOffset.zCoord; - - double wX = (conX1 - conX0) / 2D; - double wY = (conY1 - conY0) / 2D; - double wZ = (conZ1 - conZ0) / 2D; - - float count = 10; - Vec3 delta = Vec3.createVectorHelper(conX1 - conX0, conY1 - conY0, conZ1 - conZ0); - double hang = delta.lengthVector() / 15D; - - for(float j = 0; j < count; j++) { - - float k = j + 1; - - double ja = j + 0.5D; - double ix = conX0 + delta.xCoord / (double)(count * 2) * ja; - double iy = conY0 + delta.yCoord / (double)(count * 2) * ja - Math.sin(j / count * Math.PI * 0.5) * hang; - double iz = conZ0 + delta.zCoord / (double)(count * 2) * ja; - - //pylon.getWorldObj().spawnParticle("reddust", ix, iy, iz, 0.01 + j * 0.1, 0, 0); - - int brightness = pyl.getWorldObj().getLightBrightnessForSkyBlocks(MathHelper.floor_double(ix), MathHelper.floor_double(iy), MathHelper.floor_double(iz), 0); - int lX = brightness % 65536; - int lY = brightness / 65536; - OpenGlHelper.setLightmapTextureCoords(OpenGlHelper.lightmapTexUnit, (float)lX / 1.0F, (float)lY / 1.0F); - - drawLineSegment( - x + myOffset.xCoord + (wX * j / count), - y + myOffset.yCoord + (wY * j / count) - Math.sin(j / count * Math.PI * 0.5) * hang, - z + myOffset.zCoord + (wZ * j / count), - x + myOffset.xCoord + (wX * k / count), - y + myOffset.yCoord + (wY * k / count) - Math.sin(k / count * Math.PI * 0.5) * hang, - z + myOffset.zCoord + (wZ * k / count)); - } - } - } - }*/ - /** * The closest we have to a does-all solution. It will figure out if it needs to draw multiple lines, * iterate through all the mounting points, try to find the matching mounting points and then draw the lines. @@ -82,7 +24,7 @@ public abstract class RenderPylonBase extends TileEntitySpecialRenderer { */ public void renderLinesGeneric(TileEntityPylonBase pyl, double x, double y, double z) { - this.bindTexture(ResourceManager.wire_tex); + this.bindTexture(pyl.color == 0 ? ResourceManager.wire_tex : ResourceManager.wire_greyscale_tex); for(int i = 0; i < pyl.connected.size(); i++) { @@ -95,7 +37,7 @@ public abstract class RenderPylonBase extends TileEntitySpecialRenderer { Vec3[] m1 = pyl.getMountPos(); Vec3[] m2 = pylon.getMountPos(); - int lineCount = Math.max(pyl.getConnectionType() == ConnectionType.QUAD ? 4 : 1, pylon.getConnectionType() == ConnectionType.QUAD ? 4 : 1); + int lineCount = Math.min(m1.length, m2.length); for(int line = 0; line < lineCount; line++) { @@ -185,6 +127,8 @@ public abstract class RenderPylonBase extends TileEntitySpecialRenderer { int brightness = world.getLightBrightnessForSkyBlocks(MathHelper.floor_double(ix), MathHelper.floor_double(iy), MathHelper.floor_double(iz), 0); tess.setBrightness(brightness); + tess.setColorOpaque_I(pyl.color == 0 ? 0xffffff : pyl.color); + drawLineSegment(tess, x0 + (deltaX * j / count), y0 + (deltaY * j / count) - sagJ, @@ -227,14 +171,17 @@ public abstract class RenderPylonBase extends TileEntitySpecialRenderer { double iZ = Math.cos(yaw) * Math.cos(newPitch) * girth; double iX = Math.sin(yaw) * Math.cos(newPitch) * girth; double iY = Math.sin(newPitch) * girth; - double jZ = Math.cos(newYaw) * Math.cos(newPitch) * girth; - double jX = Math.sin(newYaw) * Math.cos(newPitch) * girth; + double jZ = Math.cos(newYaw) * girth; + double jX = Math.sin(newYaw) * girth; double length = Math.sqrt(deltaX * deltaX + deltaY * deltaY + deltaZ * deltaZ); int wrap = (int) Math.ceil(length * 8); - if(deltaX + deltaZ < 0) wrap *= -1; + if(deltaX + deltaZ < 0) { + wrap *= -1; + jZ *= -1; + jX *= -1; + } - tessellator.setColorOpaque_I(0xffffff); tessellator.addVertexWithUV(x + iX, y + iY, z + iZ, 0, 0); tessellator.addVertexWithUV(x - iX, y - iY, z - iZ, 0, 1); tessellator.addVertexWithUV(a - iX, b - iY, c - iZ, wrap, 1); diff --git a/src/main/java/com/hbm/render/tileentity/RenderPylonLarge.java b/src/main/java/com/hbm/render/tileentity/RenderPylonLarge.java index 8df4d64fb..a70616ce7 100644 --- a/src/main/java/com/hbm/render/tileentity/RenderPylonLarge.java +++ b/src/main/java/com/hbm/render/tileentity/RenderPylonLarge.java @@ -35,5 +35,4 @@ public class RenderPylonLarge extends RenderPylonBase { this.renderLinesGeneric(pyl, x, y, z); GL11.glPopMatrix(); } - } diff --git a/src/main/java/com/hbm/render/tileentity/RenderPylonMedium.java b/src/main/java/com/hbm/render/tileentity/RenderPylonMedium.java new file mode 100644 index 000000000..c37cd2881 --- /dev/null +++ b/src/main/java/com/hbm/render/tileentity/RenderPylonMedium.java @@ -0,0 +1,87 @@ +package com.hbm.render.tileentity; + +import org.lwjgl.opengl.GL11; + +import com.hbm.blocks.BlockDummyable; +import com.hbm.blocks.ModBlocks; +import com.hbm.main.ResourceManager; +import com.hbm.render.item.ItemRenderBase; +import com.hbm.tileentity.network.TileEntityPylonMedium; + +import net.minecraft.item.Item; +import net.minecraft.item.ItemStack; +import net.minecraft.tileentity.TileEntity; +import net.minecraftforge.client.IItemRenderer; + +public class RenderPylonMedium extends RenderPylonBase implements IItemRendererProvider { + + @Override + public void renderTileEntityAt(TileEntity tile, double x, double y, double z, float interp) { + GL11.glPushMatrix(); + GL11.glTranslated(x + 0.5, y, z + 0.5); + GL11.glEnable(GL11.GL_LIGHTING); + GL11.glEnable(GL11.GL_CULL_FACE); + + switch(tile.getBlockMetadata() - BlockDummyable.offset) { + case 2: GL11.glRotatef(180, 0F, 1F, 0F); break; + case 4: GL11.glRotatef(270, 0F, 1F, 0F); break; + case 3: GL11.glRotatef(0, 0F, 1F, 0F); break; + case 5: GL11.glRotatef(90, 0F, 1F, 0F); break; + } + + TileEntityPylonMedium pyl = (TileEntityPylonMedium)tile; + + + if(tile.getBlockType() == ModBlocks.red_pylon_medium_steel || tile.getBlockType() == ModBlocks.red_pylon_medium_steel_transformer) + bindTexture(ResourceManager.pylon_medium_steel_tex); + else + bindTexture(ResourceManager.pylon_medium_tex); + + ResourceManager.pylon_medium.renderPart("Pylon"); + if(pyl.hasTransformer()) ResourceManager.pylon_medium.renderPart("Transformer"); + + GL11.glPopMatrix(); + + GL11.glPushMatrix(); + this.renderLinesGeneric(pyl, x, y, z); + GL11.glPopMatrix(); + } + + @Override + public Item[] getItemsForRenderer() { + return new Item[] { + Item.getItemFromBlock(ModBlocks.red_pylon_medium_wood), + Item.getItemFromBlock(ModBlocks.red_pylon_medium_wood_transformer), + Item.getItemFromBlock(ModBlocks.red_pylon_medium_steel), + Item.getItemFromBlock(ModBlocks.red_pylon_medium_steel_transformer) + }; + } + + @Override + public Item getItemForRenderer() { return Item.getItemFromBlock(ModBlocks.red_pylon_medium_wood); } + + @Override + public IItemRenderer getRenderer() { + return new ItemRenderBase( ) { + public void renderInventory() { + GL11.glTranslated(1, -5, 0); + GL11.glScaled(4.5, 4.5, 4.5); + } + public void renderCommonWithStack(ItemStack stack) { + GL11.glRotatef(90, 0F, 1F, 0F); + GL11.glScaled(0.5, 0.5, 0.5); + GL11.glTranslated(0.75, 0, 0); + + if(stack.getItem() == Item.getItemFromBlock(ModBlocks.red_pylon_medium_steel) || stack.getItem() == Item.getItemFromBlock(ModBlocks.red_pylon_medium_steel_transformer)) + bindTexture(ResourceManager.pylon_medium_steel_tex); + else + bindTexture(ResourceManager.pylon_medium_tex); + + ResourceManager.pylon_medium.renderPart("Pylon"); + + if(stack.getItem() == Item.getItemFromBlock(ModBlocks.red_pylon_medium_wood_transformer) || stack.getItem() == Item.getItemFromBlock(ModBlocks.red_pylon_medium_steel_transformer)) + ResourceManager.pylon_medium.renderPart("Transformer"); + } + }; + } +} diff --git a/src/main/java/com/hbm/render/tileentity/RenderSelenium.java b/src/main/java/com/hbm/render/tileentity/RenderSelenium.java index 8ee84a595..53362572b 100644 --- a/src/main/java/com/hbm/render/tileentity/RenderSelenium.java +++ b/src/main/java/com/hbm/render/tileentity/RenderSelenium.java @@ -46,9 +46,6 @@ public class RenderSelenium extends TileEntitySpecialRenderer { ResourceManager.selenium_piston.renderAll(); GL11.glRotatef(rot, 0, 0, 1); } - - if(count > 2 && ((TileEntityMachineSeleniumEngine)tileEntity).hasAcceptableFuel() && ((TileEntityMachineSeleniumEngine)tileEntity).tank.getFill() > 0) - GL11.glRotatef((System.currentTimeMillis() / 2) % 360, 0F, 0F, -1F); bindTexture(ResourceManager.selenium_rotor_tex); ResourceManager.selenium_rotor.renderAll(); diff --git a/src/main/java/com/hbm/render/tileentity/RenderSnowglobe.java b/src/main/java/com/hbm/render/tileentity/RenderSnowglobe.java index 76f23bc5a..5a87ce681 100644 --- a/src/main/java/com/hbm/render/tileentity/RenderSnowglobe.java +++ b/src/main/java/com/hbm/render/tileentity/RenderSnowglobe.java @@ -24,7 +24,7 @@ import net.minecraftforge.client.model.IModelCustom; public class RenderSnowglobe extends TileEntitySpecialRenderer implements IItemRendererProvider { - public static final IModelCustom snowglobe = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/trinkets/snowglobe.obj"), false).asDisplayList(); + public static final IModelCustom snowglobe = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/trinkets/snowglobe.obj"), false).asVBO(); public static final ResourceLocation socket = new ResourceLocation(RefStrings.MODID, "textures/models/trinkets/snowglobe.png"); public static final ResourceLocation glass = new ResourceLocation(RefStrings.MODID, "textures/models/trinkets/snowglobe_glass.png"); public static final ResourceLocation features = new ResourceLocation(RefStrings.MODID, "textures/models/trinkets/snowglobe_features.png"); diff --git a/src/main/java/com/hbm/render/util/HorsePronter.java b/src/main/java/com/hbm/render/util/HorsePronter.java index 6cba0146c..bec1e9ef6 100644 --- a/src/main/java/com/hbm/render/util/HorsePronter.java +++ b/src/main/java/com/hbm/render/util/HorsePronter.java @@ -11,7 +11,7 @@ import net.minecraftforge.client.model.IModelCustom; public class HorsePronter { - public static final IModelCustom horse = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/mobs/horse.obj"), false).asDisplayList(); + public static final IModelCustom horse = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/mobs/horse.obj"), false).asVBO(); public static final ResourceLocation tex_demohorse = new ResourceLocation(RefStrings.MODID, "textures/models/horse/horse_demo.png"); diff --git a/src/main/java/com/hbm/test/ReEvalTest.java b/src/main/java/com/hbm/test/ReEvalTest.java deleted file mode 100644 index 9c137c481..000000000 --- a/src/main/java/com/hbm/test/ReEvalTest.java +++ /dev/null @@ -1,44 +0,0 @@ -package com.hbm.test; - -import java.util.HashMap; - -import com.hbm.main.MainRegistry; - -import api.hbm.energy.IEnergyConductor; - -public class ReEvalTest { - - /** - * Runs a collision test on a relatively large scale. So large in fact that it will most certainly OOM. - * Not an issue, since by that point we will already have our results. - * @throws OutOfMemoryError - */ - public static void runTest() throws OutOfMemoryError { - - HashMap collisions = new HashMap(); - - int minX = -130; - int maxX = 140; - int minZ = 300; - int maxZ = 520; - - MainRegistry.logger.info("Starting collision test..."); - - for(int x = minX; x <= maxX; x++) { - for(int y = 1; y <= 255; y++) { - for(int z = minZ; z <= maxZ; z++) { - int identity = IEnergyConductor.getIdentityFromPos(x, y, z); - - if(collisions.containsKey(identity)) { - int[] collision = collisions.get(identity); - MainRegistry.logger.info("Position " + x + "/" + y + "/" + z + " collides with " + collision[0] + "/" + collision[1] + "/" + collision[2] + "!"); - } else { - collisions.put(identity, new int[] {x, y, z}); - } - } - } - } - - MainRegistry.logger.info("Collision test complete!"); - } -} diff --git a/src/main/java/com/hbm/tileentity/DoorDecl.java b/src/main/java/com/hbm/tileentity/DoorDecl.java index 5844fcded..d28ae1e22 100644 --- a/src/main/java/com/hbm/tileentity/DoorDecl.java +++ b/src/main/java/com/hbm/tileentity/DoorDecl.java @@ -4,12 +4,13 @@ import com.hbm.animloader.AnimatedModel; import com.hbm.animloader.Animation; import com.hbm.lib.Library; import com.hbm.main.ResourceManager; -import com.hbm.render.loader.WavefrontObjDisplayList; +import com.hbm.render.loader.IModelCustomNamed; import com.hbm.util.BobMathUtil; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; import net.minecraft.util.AxisAlignedBB; import net.minecraft.util.ResourceLocation; + import org.lwjgl.opengl.GL11; public abstract class DoorDecl { @@ -90,7 +91,7 @@ public abstract class DoorDecl { @Override @SideOnly(Side.CLIENT) - public WavefrontObjDisplayList getModel() { + public IModelCustomNamed getModel() { return null; } }; @@ -179,7 +180,7 @@ public abstract class DoorDecl { @Override @SideOnly(Side.CLIENT) - public WavefrontObjDisplayList getModel() { + public IModelCustomNamed getModel() { return ResourceManager.fire_door; } }; @@ -267,7 +268,7 @@ public abstract class DoorDecl { } @Override - public WavefrontObjDisplayList getModel() { + public IModelCustomNamed getModel() { return null; } @@ -358,7 +359,7 @@ public abstract class DoorDecl { @Override @SideOnly(Side.CLIENT) - public WavefrontObjDisplayList getModel() { + public IModelCustomNamed getModel() { return ResourceManager.sliding_seal_door; } }; @@ -457,7 +458,7 @@ public abstract class DoorDecl { @Override @SideOnly(Side.CLIENT) - public WavefrontObjDisplayList getModel() { + public IModelCustomNamed getModel() { return ResourceManager.secure_access_door; } }; @@ -546,7 +547,7 @@ public abstract class DoorDecl { @Override @SideOnly(Side.CLIENT) - public WavefrontObjDisplayList getModel() { + public IModelCustomNamed getModel() { return ResourceManager.round_airlock_door; } }; @@ -629,7 +630,7 @@ public abstract class DoorDecl { @Override @SideOnly(Side.CLIENT) - public WavefrontObjDisplayList getModel() { + public IModelCustomNamed getModel() { return ResourceManager.qe_sliding_door; } @@ -715,7 +716,7 @@ public abstract class DoorDecl { @Override @SideOnly(Side.CLIENT) - public WavefrontObjDisplayList getModel() { + public IModelCustomNamed getModel() { return ResourceManager.qe_containment; } @@ -856,7 +857,7 @@ public abstract class DoorDecl { @Override @SideOnly(Side.CLIENT) - public WavefrontObjDisplayList getModel() { + public IModelCustomNamed getModel() { return ResourceManager.water_door; } @@ -918,7 +919,7 @@ public abstract class DoorDecl { @Override public int[] getDimensions() { return new int[] { 0, 0, 2, 2, 2, 2 }; } @Override @SideOnly(Side.CLIENT) public ResourceLocation getTextureForPart(String partName) { return ResourceManager.silo_hatch_tex; } @Override public ResourceLocation getTextureForPart(int skinIndex, String partName) { return ResourceManager.silo_hatch_tex; } - @Override @SideOnly(Side.CLIENT) public WavefrontObjDisplayList getModel() { return ResourceManager.silo_hatch; } + @Override @SideOnly(Side.CLIENT) public IModelCustomNamed getModel() { return ResourceManager.silo_hatch; } }; @@ -978,7 +979,7 @@ public abstract class DoorDecl { @Override public int[] getDimensions() { return new int[] { 0, 0, 3, 3, 3, 3 }; } @Override @SideOnly(Side.CLIENT) public ResourceLocation getTextureForPart(String partName) { return ResourceManager.silo_hatch_large_tex; } @Override public ResourceLocation getTextureForPart(int skinIndex, String partName) { return ResourceManager.silo_hatch_large_tex; } - @Override @SideOnly(Side.CLIENT) public WavefrontObjDisplayList getModel() { return ResourceManager.silo_hatch_large; } + @Override @SideOnly(Side.CLIENT) public IModelCustomNamed getModel() { return ResourceManager.silo_hatch_large; } }; @@ -1056,7 +1057,7 @@ public abstract class DoorDecl { @Override @SideOnly(Side.CLIENT) - public WavefrontObjDisplayList getModel() { + public IModelCustomNamed getModel() { return ResourceManager.large_vehicle_door; } @@ -1110,7 +1111,7 @@ public abstract class DoorDecl { public abstract ResourceLocation getTextureForPart(int skinIndex, String partName); @SideOnly(Side.CLIENT) - public abstract WavefrontObjDisplayList getModel(); + public abstract IModelCustomNamed getModel(); @SideOnly(Side.CLIENT) public AnimatedModel getAnimatedModel() { diff --git a/src/main/java/com/hbm/tileentity/TileEntityLoadedBase.java b/src/main/java/com/hbm/tileentity/TileEntityLoadedBase.java index cb529b2d9..11ec8ddd1 100644 --- a/src/main/java/com/hbm/tileentity/TileEntityLoadedBase.java +++ b/src/main/java/com/hbm/tileentity/TileEntityLoadedBase.java @@ -2,7 +2,7 @@ package com.hbm.tileentity; import com.hbm.sound.AudioWrapper; -import api.hbm.energy.ILoadedTile; +import api.hbm.tile.ILoadedTile; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.tileentity.TileEntity; diff --git a/src/main/java/com/hbm/tileentity/TileEntityProxyCombo.java b/src/main/java/com/hbm/tileentity/TileEntityProxyCombo.java index c0957eb69..7fe9db0f3 100644 --- a/src/main/java/com/hbm/tileentity/TileEntityProxyCombo.java +++ b/src/main/java/com/hbm/tileentity/TileEntityProxyCombo.java @@ -6,8 +6,7 @@ import com.hbm.interfaces.IFluidAcceptor; import com.hbm.interfaces.IFluidContainer; import com.hbm.inventory.fluid.FluidType; -import api.hbm.energy.IEnergyConnector; -import api.hbm.energy.IEnergyUser; +import api.hbm.energymk2.IEnergyReceiverMK2; import api.hbm.fluid.IFluidConnector; import api.hbm.tile.IHeatSource; import com.hbm.inventory.material.Mats; @@ -19,7 +18,7 @@ import net.minecraft.tileentity.TileEntity; import net.minecraft.world.World; import net.minecraftforge.common.util.ForgeDirection; -public class TileEntityProxyCombo extends TileEntityProxyBase implements IEnergyUser, IFluidAcceptor, ISidedInventory, IFluidConnector, IHeatSource, ICrucibleAcceptor { +public class TileEntityProxyCombo extends TileEntityProxyBase implements IEnergyReceiverMK2, IFluidAcceptor, ISidedInventory, IFluidConnector, IHeatSource, ICrucibleAcceptor { TileEntity tile; boolean inventory; @@ -170,8 +169,8 @@ public class TileEntityProxyCombo extends TileEntityProxyBase implements IEnergy if(!power) return; - if(getTile() instanceof IEnergyUser) { - ((IEnergyUser)getTile()).setPower(i); + if(getTile() instanceof IEnergyReceiverMK2) { + ((IEnergyReceiverMK2)getTile()).setPower(i); } } @@ -181,8 +180,8 @@ public class TileEntityProxyCombo extends TileEntityProxyBase implements IEnergy if(!power) return 0; - if(getTile() instanceof IEnergyConnector) { - return ((IEnergyConnector)getTile()).getPower(); + if(getTile() instanceof IEnergyReceiverMK2) { + return ((IEnergyReceiverMK2)getTile()).getPower(); } return 0; @@ -194,8 +193,8 @@ public class TileEntityProxyCombo extends TileEntityProxyBase implements IEnergy if(!power) return 0; - if(getTile() instanceof IEnergyConnector) { - return ((IEnergyConnector)getTile()).getMaxPower(); + if(getTile() instanceof IEnergyReceiverMK2) { + return ((IEnergyReceiverMK2)getTile()).getMaxPower(); } return 0; @@ -207,8 +206,8 @@ public class TileEntityProxyCombo extends TileEntityProxyBase implements IEnergy if(!this.power) return power; - if(getTile() instanceof IEnergyConnector) { - return ((IEnergyConnector)getTile()).transferPower(power); + if(getTile() instanceof IEnergyReceiverMK2) { + return ((IEnergyReceiverMK2)getTile()).transferPower(power); } return power; @@ -220,8 +219,8 @@ public class TileEntityProxyCombo extends TileEntityProxyBase implements IEnergy if(!power) return false; - if(getTile() instanceof IEnergyConnector) { - return ((IEnergyConnector)getTile()).canConnect(dir); + if(getTile() instanceof IEnergyReceiverMK2) { + return ((IEnergyReceiverMK2)getTile()).canConnect(dir); } return true; diff --git a/src/main/java/com/hbm/tileentity/TileEntityProxyConductor.java b/src/main/java/com/hbm/tileentity/TileEntityProxyConductor.java index 1bcbaa6cb..f7b16aec9 100644 --- a/src/main/java/com/hbm/tileentity/TileEntityProxyConductor.java +++ b/src/main/java/com/hbm/tileentity/TileEntityProxyConductor.java @@ -1,87 +1,11 @@ package com.hbm.tileentity; -import java.util.ArrayList; -import java.util.List; +import api.hbm.energymk2.IEnergyConnectorMK2; -import api.hbm.energy.IEnergyConductor; -import api.hbm.energy.IPowerNet; -import net.minecraft.tileentity.TileEntity; - -public class TileEntityProxyConductor extends TileEntityProxyBase implements IEnergyConductor { +public class TileEntityProxyConductor extends TileEntityProxyBase implements IEnergyConnectorMK2 { @Override public boolean canUpdate() { return false; } - - @Override - public long transferPower(long power) { - - TileEntity te = this.getTE(); - - if(te instanceof IEnergyConductor) { - return ((IEnergyConductor)te).transferPower(power); - } - - return 0; - } - - @Override - public long getPower() { - - TileEntity te = this.getTE(); - - if(te instanceof IEnergyConductor) { - return ((IEnergyConductor)te).getPower(); - } - - return 0; - } - - @Override - public long getMaxPower() { - - TileEntity te = this.getTE(); - - if(te instanceof IEnergyConductor) { - return ((IEnergyConductor)te).getMaxPower(); - } - - return 0; - } - - @Override - public IPowerNet getPowerNet() { - - TileEntity te = this.getTE(); - - if(te instanceof IEnergyConductor) { - return ((IEnergyConductor)te).getPowerNet(); - } - - return null; - } - - @Override - public void setPowerNet(IPowerNet network) { - - TileEntity te = this.getTE(); - - if(te instanceof IEnergyConductor) { - ((IEnergyConductor)te).setPowerNet(network); - } - } - - @Override - public List getConnectionPoints() { - - /*TileEntity te = this.getTE(); - - if(te instanceof IEnergyConductor) { - return ((IEnergyConductor)te).getConnectionPoints(); - }*/ - - /* Proxy TE doesn't need to implement proxying here because the conductor main TE already has a network-specific proxying system */ - return new ArrayList(); - } } diff --git a/src/main/java/com/hbm/tileentity/TileEntityProxyEnergy.java b/src/main/java/com/hbm/tileentity/TileEntityProxyEnergy.java index f4ae0e810..65c983e23 100644 --- a/src/main/java/com/hbm/tileentity/TileEntityProxyEnergy.java +++ b/src/main/java/com/hbm/tileentity/TileEntityProxyEnergy.java @@ -1,24 +1,23 @@ package com.hbm.tileentity; -import api.hbm.energy.IEnergyUser; +import api.hbm.energymk2.IEnergyReceiverMK2; import net.minecraft.tileentity.TileEntity; import net.minecraftforge.common.util.ForgeDirection; //can be used as a soruce too since the core TE handles that anyway -public class TileEntityProxyEnergy extends TileEntityProxyBase implements IEnergyUser { +public class TileEntityProxyEnergy extends TileEntityProxyBase implements IEnergyReceiverMK2 { - public boolean canUpdate() - { - return false; - } + public boolean canUpdate() { + return false; + } @Override public void setPower(long i) { TileEntity te = getTE(); - if(te instanceof IEnergyUser) { - ((IEnergyUser)te).setPower(i); + if(te instanceof IEnergyReceiverMK2) { + ((IEnergyReceiverMK2)te).setPower(i); } } @@ -27,8 +26,8 @@ public class TileEntityProxyEnergy extends TileEntityProxyBase implements IEnerg TileEntity te = getTE(); - if(te instanceof IEnergyUser) { - return ((IEnergyUser)te).getPower(); + if(te instanceof IEnergyReceiverMK2) { + return ((IEnergyReceiverMK2)te).getPower(); } return 0; @@ -39,8 +38,8 @@ public class TileEntityProxyEnergy extends TileEntityProxyBase implements IEnerg TileEntity te = getTE(); - if(te instanceof IEnergyUser) { - return ((IEnergyUser)te).getMaxPower(); + if(te instanceof IEnergyReceiverMK2) { + return ((IEnergyReceiverMK2)te).getMaxPower(); } return 0; @@ -49,8 +48,8 @@ public class TileEntityProxyEnergy extends TileEntityProxyBase implements IEnerg @Override public long transferPower(long power) { - if(getTE() instanceof IEnergyUser) { - return ((IEnergyUser)getTE()).transferPower(power); + if(getTE() instanceof IEnergyReceiverMK2) { + return ((IEnergyReceiverMK2)getTE()).transferPower(power); } return 0; @@ -60,8 +59,8 @@ public class TileEntityProxyEnergy extends TileEntityProxyBase implements IEnerg public boolean canConnect(ForgeDirection dir) { TileEntity te = getTE(); - if(te instanceof IEnergyUser) { - return ((IEnergyUser)te).canConnect(dir); //for some reason two consecutive getTE calls return different things? + if(te instanceof IEnergyReceiverMK2) { + return ((IEnergyReceiverMK2)te).canConnect(dir); //for some reason two consecutive getTE calls return different things? } return false; diff --git a/src/main/java/com/hbm/tileentity/TileMappings.java b/src/main/java/com/hbm/tileentity/TileMappings.java index 89db6f2f3..ca90591b5 100644 --- a/src/main/java/com/hbm/tileentity/TileMappings.java +++ b/src/main/java/com/hbm/tileentity/TileMappings.java @@ -65,7 +65,6 @@ public class TileMappings { put(TileEntityDecoPoleSatelliteReceiver.class, "tileentity_satellitereceicer"); put(TileEntityMachineBattery.class, "tileentity_battery"); put(TileEntityCapacitor.class, "tileentity_capacitor"); - put(TileEntityMachineCoal.class, "tileentity_coal"); put(TileEntityMachineWoodBurner.class, "tileentity_wood_burner"); put(TileEntityRedBarrel.class, "tileentity_barrel"); put(TileEntityYellowBarrel.class, "tileentity_nukebarrel"); @@ -383,6 +382,7 @@ public class TileMappings { put(TileEntityConnector.class, "tileentity_connector_redwire"); put(TileEntityPylon.class, "tileentity_pylon_redwire"); + put(TileEntityPylonMedium.class, "tileentity_pylon_medium"); put(TileEntityPylonLarge.class, "tileentity_pylon_large"); put(TileEntitySubstation.class, "tileentity_substation"); diff --git a/src/main/java/com/hbm/tileentity/bomb/TileEntityCompactLauncher.java b/src/main/java/com/hbm/tileentity/bomb/TileEntityCompactLauncher.java index 55068c5fa..3266a973f 100644 --- a/src/main/java/com/hbm/tileentity/bomb/TileEntityCompactLauncher.java +++ b/src/main/java/com/hbm/tileentity/bomb/TileEntityCompactLauncher.java @@ -27,7 +27,7 @@ import com.hbm.tileentity.IRadarCommandReceiver; import com.hbm.tileentity.TileEntityLoadedBase; import com.hbm.util.fauxpointtwelve.DirPos; -import api.hbm.energy.IEnergyUser; +import api.hbm.energymk2.IEnergyReceiverMK2; import api.hbm.fluid.IFluidStandardReceiver; import api.hbm.item.IDesignatorItem; import cpw.mods.fml.common.network.NetworkRegistry.TargetPoint; @@ -48,7 +48,7 @@ import net.minecraft.util.Vec3; import net.minecraft.world.World; import net.minecraftforge.common.util.ForgeDirection; -public class TileEntityCompactLauncher extends TileEntityLoadedBase implements ISidedInventory, IFluidContainer, IFluidAcceptor, IEnergyUser, IFluidStandardReceiver, IGUIProvider, IRadarCommandReceiver { +public class TileEntityCompactLauncher extends TileEntityLoadedBase implements ISidedInventory, IFluidContainer, IFluidAcceptor, IEnergyReceiverMK2, IFluidStandardReceiver, IGUIProvider, IRadarCommandReceiver { private ItemStack slots[]; @@ -284,10 +284,17 @@ public class TileEntityCompactLauncher extends TileEntityLoadedBase implements I public void launchFromDesignator() { - int tX = slots[1].stackTagCompound.getInteger("xCoord"); - int tZ = slots[1].stackTagCompound.getInteger("zCoord"); - - this.launchTo(tX, tZ); + if(slots[1] != null && slots[1].getItem() instanceof IDesignatorItem) { + IDesignatorItem designator = (IDesignatorItem) slots[1].getItem(); + + if(designator.isReady(worldObj, slots[1], xCoord, yCoord, zCoord)) { + Vec3 coords = designator.getCoords(worldObj, slots[1], xCoord, yCoord, zCoord); + int tX = (int) Math.floor(coords.xCoord); + int tZ = (int) Math.floor(coords.zCoord); + + this.launchTo(tX, tZ); + } + } } public void launchTo(int tX, int tZ) { diff --git a/src/main/java/com/hbm/tileentity/bomb/TileEntityLaunchPad.java b/src/main/java/com/hbm/tileentity/bomb/TileEntityLaunchPad.java index 857c3a3a1..0adf91ab8 100644 --- a/src/main/java/com/hbm/tileentity/bomb/TileEntityLaunchPad.java +++ b/src/main/java/com/hbm/tileentity/bomb/TileEntityLaunchPad.java @@ -7,8 +7,6 @@ import com.hbm.lib.Library; import com.hbm.main.MainRegistry; import com.hbm.util.fauxpointtwelve.DirPos; -import api.hbm.energy.IEnergyUser; -import api.hbm.fluid.IFluidStandardReceiver; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; import net.minecraft.entity.Entity; @@ -16,7 +14,7 @@ import net.minecraft.nbt.NBTTagCompound; import net.minecraft.util.AxisAlignedBB; import net.minecraftforge.common.util.ForgeDirection; -public class TileEntityLaunchPad extends TileEntityLaunchPadBase implements IEnergyUser, IFluidStandardReceiver { +public class TileEntityLaunchPad extends TileEntityLaunchPadBase { @Override public boolean isReadyForLaunch() { return delay <= 0; } @Override public double getLaunchOffset() { return 1D; } diff --git a/src/main/java/com/hbm/tileentity/bomb/TileEntityLaunchPadBase.java b/src/main/java/com/hbm/tileentity/bomb/TileEntityLaunchPadBase.java index 5fc986444..d73ed90bf 100644 --- a/src/main/java/com/hbm/tileentity/bomb/TileEntityLaunchPadBase.java +++ b/src/main/java/com/hbm/tileentity/bomb/TileEntityLaunchPadBase.java @@ -31,7 +31,7 @@ import com.hbm.util.TrackerUtil; import com.hbm.util.fauxpointtwelve.BlockPos; import com.hbm.util.fauxpointtwelve.DirPos; -import api.hbm.energy.IEnergyUser; +import api.hbm.energymk2.IEnergyReceiverMK2; import api.hbm.fluid.IFluidStandardReceiver; import api.hbm.item.IDesignatorItem; import cpw.mods.fml.relauncher.Side; @@ -49,7 +49,7 @@ import net.minecraft.util.Vec3; import net.minecraft.world.World; import net.minecraftforge.common.util.ForgeDirection; -public abstract class TileEntityLaunchPadBase extends TileEntityMachineBase implements IEnergyUser, IFluidStandardReceiver, IGUIProvider, IRadarCommandReceiver { +public abstract class TileEntityLaunchPadBase extends TileEntityMachineBase implements IEnergyReceiverMK2, IFluidStandardReceiver, IGUIProvider, IRadarCommandReceiver { /** Automatic instantiation of generic missiles, i.e. everything that both extends EntityMissileBaseNT and needs a designator */ public static final HashMap> missiles = new HashMap(); diff --git a/src/main/java/com/hbm/tileentity/bomb/TileEntityLaunchPadLarge.java b/src/main/java/com/hbm/tileentity/bomb/TileEntityLaunchPadLarge.java index a60e17084..55a9dac77 100644 --- a/src/main/java/com/hbm/tileentity/bomb/TileEntityLaunchPadLarge.java +++ b/src/main/java/com/hbm/tileentity/bomb/TileEntityLaunchPadLarge.java @@ -8,11 +8,8 @@ import com.hbm.items.weapon.ItemMissile.MissileFormFactor; import com.hbm.lib.Library; import com.hbm.main.MainRegistry; import com.hbm.sound.AudioWrapper; -import com.hbm.tileentity.IRadarCommandReceiver; import com.hbm.util.fauxpointtwelve.DirPos; -import api.hbm.energy.IEnergyUser; -import api.hbm.fluid.IFluidStandardReceiver; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; import io.netty.buffer.ByteBuf; @@ -21,7 +18,7 @@ import net.minecraft.nbt.NBTTagCompound; import net.minecraft.util.AxisAlignedBB; import net.minecraftforge.common.util.ForgeDirection; -public class TileEntityLaunchPadLarge extends TileEntityLaunchPadBase implements IEnergyUser, IFluidStandardReceiver, IRadarCommandReceiver { +public class TileEntityLaunchPadLarge extends TileEntityLaunchPadBase { public int formFactor = -1; /** Whether the missile has already been placed on the launchpad. Missile will render statically on the pad if true */ diff --git a/src/main/java/com/hbm/tileentity/bomb/TileEntityLaunchTable.java b/src/main/java/com/hbm/tileentity/bomb/TileEntityLaunchTable.java index ed300621f..3259452ce 100644 --- a/src/main/java/com/hbm/tileentity/bomb/TileEntityLaunchTable.java +++ b/src/main/java/com/hbm/tileentity/bomb/TileEntityLaunchTable.java @@ -26,7 +26,7 @@ import com.hbm.tileentity.IGUIProvider; import com.hbm.tileentity.IRadarCommandReceiver; import com.hbm.tileentity.TileEntityLoadedBase; -import api.hbm.energy.IEnergyUser; +import api.hbm.energymk2.IEnergyReceiverMK2; import api.hbm.fluid.IFluidStandardReceiver; import api.hbm.item.IDesignatorItem; import cpw.mods.fml.common.Optional; @@ -53,7 +53,7 @@ import net.minecraft.world.World; import net.minecraftforge.common.util.ForgeDirection; @Optional.InterfaceList({@Optional.Interface(iface = "li.cil.oc.api.network.SimpleComponent", modid = "OpenComputers")}) -public class TileEntityLaunchTable extends TileEntityLoadedBase implements ISidedInventory, IEnergyUser, IFluidContainer, IFluidAcceptor, IFluidStandardReceiver, IGUIProvider, SimpleComponent, IRadarCommandReceiver { +public class TileEntityLaunchTable extends TileEntityLoadedBase implements ISidedInventory, IEnergyReceiverMK2, IFluidContainer, IFluidAcceptor, IFluidStandardReceiver, IGUIProvider, SimpleComponent, IRadarCommandReceiver { private ItemStack slots[]; @@ -279,10 +279,17 @@ public class TileEntityLaunchTable extends TileEntityLoadedBase implements ISide public void launchFromDesignator() { - int tX = slots[1].stackTagCompound.getInteger("xCoord"); - int tZ = slots[1].stackTagCompound.getInteger("zCoord"); - - this.launchTo(tX, tZ); + if(slots[1] != null && slots[1].getItem() instanceof IDesignatorItem) { + IDesignatorItem designator = (IDesignatorItem) slots[1].getItem(); + + if(designator.isReady(worldObj, slots[1], xCoord, yCoord, zCoord)) { + Vec3 coords = designator.getCoords(worldObj, slots[1], xCoord, yCoord, zCoord); + int tX = (int) Math.floor(coords.xCoord); + int tZ = (int) Math.floor(coords.zCoord); + + this.launchTo(tX, tZ); + } + } } public void launchTo(int tX, int tZ) { diff --git a/src/main/java/com/hbm/tileentity/bomb/TileEntityNukeBalefire.java b/src/main/java/com/hbm/tileentity/bomb/TileEntityNukeBalefire.java index 829898ae3..51bef052f 100644 --- a/src/main/java/com/hbm/tileentity/bomb/TileEntityNukeBalefire.java +++ b/src/main/java/com/hbm/tileentity/bomb/TileEntityNukeBalefire.java @@ -8,7 +8,7 @@ import com.hbm.items.ModItems; import com.hbm.tileentity.IGUIProvider; import com.hbm.tileentity.TileEntityMachineBase; -import api.hbm.energy.IBatteryItem; +import api.hbm.energymk2.IBatteryItem; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; import net.minecraft.client.gui.GuiScreen; diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityCharger.java b/src/main/java/com/hbm/tileentity/machine/TileEntityCharger.java index 9e47668de..e747c3a5d 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityCharger.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityCharger.java @@ -7,15 +7,15 @@ import java.util.Random; import com.hbm.tileentity.INBTPacketReceiver; import com.hbm.tileentity.TileEntityLoadedBase; -import api.hbm.energy.IBatteryItem; -import api.hbm.energy.IEnergyUser; +import api.hbm.energymk2.IBatteryItem; +import api.hbm.energymk2.IEnergyReceiverMK2; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.item.ItemStack; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.util.AxisAlignedBB; import net.minecraftforge.common.util.ForgeDirection; -public class TileEntityCharger extends TileEntityLoadedBase implements IEnergyUser, INBTPacketReceiver { +public class TileEntityCharger extends TileEntityLoadedBase implements IEnergyReceiverMK2, INBTPacketReceiver { private List players = new ArrayList(); private long charge = 0; diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityChungus.java b/src/main/java/com/hbm/tileentity/machine/TileEntityChungus.java index 3ef6a42d2..5ae5bc423 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityChungus.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityChungus.java @@ -24,7 +24,7 @@ import com.hbm.util.CompatEnergyControl; import com.hbm.util.fauxpointtwelve.BlockPos; import com.hbm.util.fauxpointtwelve.DirPos; -import api.hbm.energy.IEnergyGenerator; +import api.hbm.energymk2.IEnergyProviderMK2; import api.hbm.fluid.IFluidStandardTransceiver; import api.hbm.tile.IInfoProviderEC; import cpw.mods.fml.common.Optional; @@ -41,7 +41,7 @@ import net.minecraft.util.AxisAlignedBB; import net.minecraftforge.common.util.ForgeDirection; @Optional.InterfaceList({@Optional.Interface(iface = "li.cil.oc.api.network.SimpleComponent", modid = "OpenComputers")}) -public class TileEntityChungus extends TileEntityLoadedBase implements IFluidAcceptor, IFluidSource, IEnergyGenerator, INBTPacketReceiver, IFluidStandardTransceiver, SimpleComponent, IInfoProviderEC { +public class TileEntityChungus extends TileEntityLoadedBase implements IFluidAcceptor, IFluidSource, IEnergyProviderMK2, INBTPacketReceiver, IFluidStandardTransceiver, SimpleComponent, IInfoProviderEC { public long power; public static final long maxPower = 100000000000L; @@ -100,7 +100,7 @@ public class TileEntityChungus extends TileEntityLoadedBase implements IFluidAcc if(power > maxPower) power = maxPower; ForgeDirection dir = ForgeDirection.getOrientation(this.getBlockMetadata() - BlockDummyable.offset); - this.sendPower(worldObj, xCoord - dir.offsetX * 11, yCoord, zCoord - dir.offsetZ * 11, dir.getOpposite()); + this.tryProvide(worldObj, xCoord - dir.offsetX * 11, yCoord, zCoord - dir.offsetZ * 11, dir.getOpposite()); for(DirPos pos : this.getConPos()) { this.sendFluid(tanks[1], worldObj, pos.getX(), pos.getY(), pos.getZ(), pos.getDir()); diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityCondenserPowered.java b/src/main/java/com/hbm/tileentity/machine/TileEntityCondenserPowered.java index 2e9e58b18..65fa15e19 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityCondenserPowered.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityCondenserPowered.java @@ -5,7 +5,7 @@ import com.hbm.inventory.fluid.Fluids; import com.hbm.inventory.fluid.tank.FluidTank; import com.hbm.util.fauxpointtwelve.DirPos; -import api.hbm.energy.IEnergyUser; +import api.hbm.energymk2.IEnergyReceiverMK2; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; import net.minecraft.nbt.NBTTagCompound; @@ -13,7 +13,7 @@ import net.minecraft.tileentity.TileEntity; import net.minecraft.util.AxisAlignedBB; import net.minecraftforge.common.util.ForgeDirection; -public class TileEntityCondenserPowered extends TileEntityCondenser implements IEnergyUser { +public class TileEntityCondenserPowered extends TileEntityCondenser implements IEnergyReceiverMK2 { public long power; public static final long maxPower = 10_000_000; diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityConveyorPress.java b/src/main/java/com/hbm/tileentity/machine/TileEntityConveyorPress.java index 982b55616..418c9932c 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityConveyorPress.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityConveyorPress.java @@ -9,7 +9,7 @@ import com.hbm.lib.Library; import com.hbm.tileentity.TileEntityMachineBase; import com.hbm.util.fauxpointtwelve.DirPos; -import api.hbm.energy.IEnergyUser; +import api.hbm.energymk2.IEnergyReceiverMK2; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; import net.minecraft.item.ItemStack; @@ -17,7 +17,7 @@ import net.minecraft.nbt.NBTTagCompound; import net.minecraft.util.AxisAlignedBB; import net.minecraftforge.common.util.ForgeDirection; -public class TileEntityConveyorPress extends TileEntityMachineBase implements IEnergyUser { +public class TileEntityConveyorPress extends TileEntityMachineBase implements IEnergyReceiverMK2 { public int usage = 100; public long power = 0; diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityCoreEmitter.java b/src/main/java/com/hbm/tileentity/machine/TileEntityCoreEmitter.java index 442668e49..ff1278e52 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityCoreEmitter.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityCoreEmitter.java @@ -1,7 +1,7 @@ package com.hbm.tileentity.machine; import api.hbm.block.ILaserable; -import api.hbm.energy.IEnergyUser; +import api.hbm.energymk2.IEnergyReceiverMK2; import api.hbm.fluid.IFluidStandardReceiver; import api.hbm.tile.IInfoProviderEC; @@ -37,7 +37,7 @@ import net.minecraftforge.common.util.ForgeDirection; import java.util.List; @Optional.InterfaceList({@Optional.Interface(iface = "li.cil.oc.api.network.SimpleComponent", modid = "OpenComputers")}) -public class TileEntityCoreEmitter extends TileEntityMachineBase implements IEnergyUser, ILaserable, IFluidStandardReceiver, SimpleComponent, IGUIProvider, IInfoProviderEC { +public class TileEntityCoreEmitter extends TileEntityMachineBase implements IEnergyReceiverMK2, ILaserable, IFluidStandardReceiver, SimpleComponent, IGUIProvider, IInfoProviderEC { public long power; public static final long maxPower = 1000000000L; @@ -64,8 +64,7 @@ public class TileEntityCoreEmitter extends TileEntityMachineBase implements IEne public void updateEntity() { if (!worldObj.isRemote) { - - this.updateStandardConnections(worldObj, xCoord, yCoord, zCoord); + for(ForgeDirection dir : ForgeDirection.VALID_DIRECTIONS) this.trySubscribe(worldObj, xCoord + dir.offsetX, yCoord + dir.offsetY, zCoord + dir.offsetZ, dir); this.subscribeToAllAround(tank.getTankType(), this); watts = MathHelper.clamp_int(watts, 1, 100); diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityCoreReceiver.java b/src/main/java/com/hbm/tileentity/machine/TileEntityCoreReceiver.java index 2805004db..be45e1ab5 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityCoreReceiver.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityCoreReceiver.java @@ -11,7 +11,7 @@ import com.hbm.tileentity.TileEntityMachineBase; import com.hbm.util.CompatEnergyControl; import api.hbm.block.ILaserable; -import api.hbm.energy.IEnergyGenerator; +import api.hbm.energymk2.IEnergyProviderMK2; import api.hbm.fluid.IFluidStandardReceiver; import api.hbm.tile.IInfoProviderEC; import cpw.mods.fml.common.Optional; @@ -32,7 +32,7 @@ import net.minecraft.world.World; import net.minecraftforge.common.util.ForgeDirection; @Optional.InterfaceList({@Optional.Interface(iface = "li.cil.oc.api.network.SimpleComponent", modid = "OpenComputers")}) -public class TileEntityCoreReceiver extends TileEntityMachineBase implements IEnergyGenerator, IFluidAcceptor, ILaserable, IFluidStandardReceiver, SimpleComponent, IGUIProvider, IInfoProviderEC { +public class TileEntityCoreReceiver extends TileEntityMachineBase implements IEnergyProviderMK2, IFluidAcceptor, ILaserable, IFluidStandardReceiver, SimpleComponent, IGUIProvider, IInfoProviderEC { public long power; public long joules; @@ -59,7 +59,7 @@ public class TileEntityCoreReceiver extends TileEntityMachineBase implements IEn power = joules * 5000; for(ForgeDirection dir : ForgeDirection.VALID_DIRECTIONS) - this.sendPower(worldObj, xCoord + dir.offsetX, yCoord + dir.offsetY, zCoord + dir.offsetZ, dir); + this.tryProvide(worldObj, xCoord + dir.offsetX, yCoord + dir.offsetY, zCoord + dir.offsetZ, dir); if(joules > 0) { diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityCoreStabilizer.java b/src/main/java/com/hbm/tileentity/machine/TileEntityCoreStabilizer.java index 344b02ea0..50564fb48 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityCoreStabilizer.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityCoreStabilizer.java @@ -8,7 +8,7 @@ import com.hbm.tileentity.IGUIProvider; import com.hbm.tileentity.TileEntityMachineBase; import com.hbm.util.CompatEnergyControl; -import api.hbm.energy.IEnergyUser; +import api.hbm.energymk2.IEnergyReceiverMK2; import api.hbm.tile.IInfoProviderEC; import cpw.mods.fml.common.Optional; import cpw.mods.fml.relauncher.Side; @@ -28,7 +28,7 @@ import net.minecraft.world.World; import net.minecraftforge.common.util.ForgeDirection; @Optional.InterfaceList({@Optional.Interface(iface = "li.cil.oc.api.network.SimpleComponent", modid = "OpenComputers")}) -public class TileEntityCoreStabilizer extends TileEntityMachineBase implements IEnergyUser, SimpleComponent, IGUIProvider, IInfoProviderEC { +public class TileEntityCoreStabilizer extends TileEntityMachineBase implements IEnergyReceiverMK2, SimpleComponent, IGUIProvider, IInfoProviderEC { public long power; public static final long maxPower = 2500000000L; diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityCustomMachine.java b/src/main/java/com/hbm/tileentity/machine/TileEntityCustomMachine.java index f810b8dfb..afc3b4d8e 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityCustomMachine.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityCustomMachine.java @@ -26,7 +26,8 @@ import com.hbm.util.Compat; import com.hbm.util.fauxpointtwelve.BlockPos; import com.hbm.util.fauxpointtwelve.DirPos; -import api.hbm.energy.IEnergyUser; +import api.hbm.energymk2.IEnergyProviderMK2; +import api.hbm.energymk2.IEnergyReceiverMK2; import api.hbm.fluid.IFluidStandardTransceiver; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; @@ -40,7 +41,7 @@ import net.minecraft.tileentity.TileEntity; import net.minecraft.world.World; import net.minecraftforge.common.util.ForgeDirection; -public class TileEntityCustomMachine extends TileEntityMachinePolluting implements IFluidStandardTransceiver, IEnergyUser, IGUIProvider { +public class TileEntityCustomMachine extends TileEntityMachinePolluting implements IFluidStandardTransceiver, IEnergyProviderMK2, IEnergyReceiverMK2, IGUIProvider { public String machineType; public MachineConfiguration config; @@ -155,7 +156,7 @@ public class TileEntityCustomMachine extends TileEntityMachinePolluting implemen for (DirPos pos : this.connectionPos) { if (config.generatorMode && power > 0) - this.sendPower(worldObj, pos.getX(), pos.getY(), pos.getZ(), pos.getDir()); + this.tryProvide(worldObj, pos.getX(), pos.getY(), pos.getZ(), pos.getDir()); for (FluidTank tank : this.outputTanks) if (tank.getFill() > 0) this.sendFluid(tank, worldObj, pos.getX(), pos.getY(), pos.getZ(), pos.getDir()); @@ -592,11 +593,16 @@ public class TileEntityCustomMachine extends TileEntityMachinePolluting implemen return 0; } - + @Override - public long getTransferWeight() { - if(this.config != null && this.config.generatorMode) return 0; - - return Math.max(getMaxPower() - getPower(), 0); + public long getReceiverSpeed() { + if(this.config != null && !this.config.generatorMode) return this.getMaxPower(); + return 0; + } + + @Override + public long getProviderSpeed() { + if(this.config != null && this.config.generatorMode) return this.getMaxPower(); + return 0; } } diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityDeuteriumExtractor.java b/src/main/java/com/hbm/tileentity/machine/TileEntityDeuteriumExtractor.java index 268ca8277..12cc135b4 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityDeuteriumExtractor.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityDeuteriumExtractor.java @@ -4,12 +4,12 @@ import com.hbm.inventory.fluid.Fluids; import com.hbm.inventory.fluid.tank.FluidTank; import com.hbm.tileentity.TileEntityMachineBase; -import api.hbm.energy.IEnergyUser; +import api.hbm.energymk2.IEnergyReceiverMK2; import api.hbm.fluid.IFluidStandardTransceiver; import net.minecraft.nbt.NBTTagCompound; import net.minecraftforge.common.util.ForgeDirection; -public class TileEntityDeuteriumExtractor extends TileEntityMachineBase implements IEnergyUser, IFluidStandardTransceiver { +public class TileEntityDeuteriumExtractor extends TileEntityMachineBase implements IEnergyReceiverMK2, IFluidStandardTransceiver { public long power = 0; public FluidTank[] tanks; diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityElectrolyser.java b/src/main/java/com/hbm/tileentity/machine/TileEntityElectrolyser.java index b41f54a7d..633c18cb7 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityElectrolyser.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityElectrolyser.java @@ -32,7 +32,7 @@ import com.hbm.util.CrucibleUtil; import com.hbm.util.I18nUtil; import com.hbm.util.fauxpointtwelve.DirPos; -import api.hbm.energy.IEnergyUser; +import api.hbm.energymk2.IEnergyReceiverMK2; import api.hbm.fluid.IFluidStandardTransceiver; import cpw.mods.fml.common.network.NetworkRegistry.TargetPoint; import cpw.mods.fml.common.network.internal.FMLNetworkHandler; @@ -49,7 +49,7 @@ import net.minecraft.util.Vec3; import net.minecraft.world.World; import net.minecraftforge.common.util.ForgeDirection; -public class TileEntityElectrolyser extends TileEntityMachineBase implements IEnergyUser, IFluidStandardTransceiver, IControlReceiver, IGUIProvider, IUpgradeInfoProvider { +public class TileEntityElectrolyser extends TileEntityMachineBase implements IEnergyReceiverMK2, IFluidStandardTransceiver, IControlReceiver, IGUIProvider, IUpgradeInfoProvider { public long power; public static final long maxPower = 20000000; diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityFEL.java b/src/main/java/com/hbm/tileentity/machine/TileEntityFEL.java index 5619478c3..d34054398 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityFEL.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityFEL.java @@ -20,7 +20,7 @@ import com.hbm.util.ContaminationUtil; import com.hbm.util.ContaminationUtil.ContaminationType; import com.hbm.util.ContaminationUtil.HazardType; -import api.hbm.energy.IEnergyUser; +import api.hbm.energymk2.IEnergyReceiverMK2; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; import net.minecraft.block.Block; @@ -41,7 +41,7 @@ import net.minecraft.util.MathHelper; import net.minecraft.world.World; import net.minecraftforge.common.util.ForgeDirection; -public class TileEntityFEL extends TileEntityMachineBase implements IEnergyUser, IGUIProvider { +public class TileEntityFEL extends TileEntityMachineBase implements IEnergyReceiverMK2, IGUIProvider { public long power; public static final long maxPower = 20000000; diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityFWatzCore.java b/src/main/java/com/hbm/tileentity/machine/TileEntityFWatzCore.java index ff3e3a1ee..dadc37ec1 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityFWatzCore.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityFWatzCore.java @@ -19,7 +19,6 @@ import com.hbm.tileentity.TileEntityLoadedBase; import com.hbm.util.fauxpointtwelve.DirPos; import com.hbm.world.machine.FWatz; -import api.hbm.energy.IEnergyGenerator; import api.hbm.fluid.IFluidStandardReceiver; import cpw.mods.fml.common.network.NetworkRegistry.TargetPoint; import cpw.mods.fml.relauncher.Side; @@ -34,7 +33,7 @@ import net.minecraft.nbt.NBTTagCompound; import net.minecraft.nbt.NBTTagList; import net.minecraft.world.World; -public class TileEntityFWatzCore extends TileEntityLoadedBase implements ISidedInventory, IReactor, IEnergyGenerator, IFluidContainer, IFluidAcceptor, IFluidStandardReceiver, IGUIProvider { +public class TileEntityFWatzCore extends TileEntityLoadedBase implements ISidedInventory, IReactor, IFluidContainer, IFluidAcceptor, IFluidStandardReceiver, IGUIProvider { public long power; public final static long maxPower = 10000000000L; @@ -281,7 +280,6 @@ public class TileEntityFWatzCore extends TileEntityLoadedBase implements ISidedI if(!worldObj.isRemote && this.isStructureValid(this.worldObj)) { for(DirPos pos : this.getConPos()) { - this.sendPower(worldObj, pos.getX(), pos.getY(), pos.getZ(), pos.getDir()); this.trySubscribe(tanks[1].getTankType(), worldObj, pos.getX(), pos.getY(), pos.getZ(), pos.getDir()); this.trySubscribe(tanks[2].getTankType(), worldObj, pos.getX(), pos.getY(), pos.getZ(), pos.getDir()); @@ -387,21 +385,6 @@ public class TileEntityFWatzCore extends TileEntityLoadedBase implements ISidedI public boolean isRunning() { return FWatz.getPlasma(worldObj, this.xCoord, this.yCoord, this.zCoord) && this.isStructureValid(worldObj); } - - @Override - public long getMaxPower() { - return this.maxPower; - } - - @Override - public long getPower() { - return power; - } - - @Override - public void setPower(long i) { - this.power = i; - } @Override public void setFillForSync(int fill, int index) { diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityForceField.java b/src/main/java/com/hbm/tileentity/machine/TileEntityForceField.java index 6259e1eb1..417c24894 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityForceField.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityForceField.java @@ -12,8 +12,8 @@ import com.hbm.packet.TEFFPacket; import com.hbm.tileentity.IGUIProvider; import com.hbm.tileentity.TileEntityLoadedBase; -import api.hbm.energy.IBatteryItem; -import api.hbm.energy.IEnergyUser; +import api.hbm.energymk2.IBatteryItem; +import api.hbm.energymk2.IEnergyReceiverMK2; import cpw.mods.fml.common.network.NetworkRegistry.TargetPoint; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; @@ -31,7 +31,7 @@ import net.minecraft.util.Vec3; import net.minecraft.world.World; import net.minecraftforge.common.util.ForgeDirection; -public class TileEntityForceField extends TileEntityLoadedBase implements ISidedInventory, IEnergyUser, IGUIProvider { +public class TileEntityForceField extends TileEntityLoadedBase implements ISidedInventory, IEnergyReceiverMK2, IGUIProvider { private ItemStack slots[]; diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityFoundrySlagtap.java b/src/main/java/com/hbm/tileentity/machine/TileEntityFoundrySlagtap.java index 5d8fa4656..ba297333f 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityFoundrySlagtap.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityFoundrySlagtap.java @@ -11,7 +11,6 @@ import api.hbm.block.ICrucibleAcceptor; import cpw.mods.fml.common.network.NetworkRegistry.TargetPoint; import net.minecraft.block.Block; import net.minecraft.nbt.NBTTagCompound; -import net.minecraft.tileentity.TileEntity; import net.minecraft.util.MovingObjectPosition; import net.minecraft.util.Vec3; import net.minecraft.world.World; diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityHadron.java b/src/main/java/com/hbm/tileentity/machine/TileEntityHadron.java index bdafebdbe..167f550c8 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityHadron.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityHadron.java @@ -21,7 +21,7 @@ import com.hbm.tileentity.IGUIProvider; import com.hbm.tileentity.TileEntityMachineBase; import com.hbm.tileentity.machine.TileEntityHadronDiode.DiodeConfig; -import api.hbm.energy.IEnergyUser; +import api.hbm.energymk2.IEnergyReceiverMK2; import cpw.mods.fml.common.network.NetworkRegistry.TargetPoint; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; @@ -37,7 +37,7 @@ import net.minecraft.util.AxisAlignedBB; import net.minecraft.world.World; import net.minecraftforge.common.util.ForgeDirection; -public class TileEntityHadron extends TileEntityMachineBase implements IEnergyUser, IGUIProvider { +public class TileEntityHadron extends TileEntityMachineBase implements IEnergyReceiverMK2, IGUIProvider { public long power; public static final long maxPower = 10000000; diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityHadronPower.java b/src/main/java/com/hbm/tileentity/machine/TileEntityHadronPower.java index 4e8bcf815..814711f6d 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityHadronPower.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityHadronPower.java @@ -4,12 +4,12 @@ import com.hbm.blocks.machine.BlockHadronPower; import com.hbm.tileentity.INBTPacketReceiver; import com.hbm.tileentity.TileEntityLoadedBase; -import api.hbm.energy.IEnergyUser; +import api.hbm.energymk2.IEnergyReceiverMK2; import net.minecraft.block.Block; import net.minecraft.nbt.NBTTagCompound; import net.minecraftforge.common.util.ForgeDirection; -public class TileEntityHadronPower extends TileEntityLoadedBase implements IEnergyUser, INBTPacketReceiver { +public class TileEntityHadronPower extends TileEntityLoadedBase implements IEnergyReceiverMK2, INBTPacketReceiver { public long power; diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityHeaterElectric.java b/src/main/java/com/hbm/tileentity/machine/TileEntityHeaterElectric.java index 93f49a593..7c8a19797 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityHeaterElectric.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityHeaterElectric.java @@ -7,7 +7,7 @@ import com.hbm.tileentity.INBTPacketReceiver; import com.hbm.tileentity.TileEntityLoadedBase; import com.hbm.util.CompatEnergyControl; -import api.hbm.energy.IEnergyUser; +import api.hbm.energymk2.IEnergyReceiverMK2; import api.hbm.tile.IHeatSource; import api.hbm.tile.IInfoProviderEC; import cpw.mods.fml.relauncher.Side; @@ -17,7 +17,7 @@ import net.minecraft.tileentity.TileEntity; import net.minecraft.util.AxisAlignedBB; import net.minecraftforge.common.util.ForgeDirection; -public class TileEntityHeaterElectric extends TileEntityLoadedBase implements IHeatSource, IEnergyUser, INBTPacketReceiver, IInfoProviderEC { +public class TileEntityHeaterElectric extends TileEntityLoadedBase implements IHeatSource, IEnergyReceiverMK2, INBTPacketReceiver, IInfoProviderEC { public long power; public int heatEnergy; diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityITER.java b/src/main/java/com/hbm/tileentity/machine/TileEntityITER.java index 367fd3b2a..22fb2665d 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityITER.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityITER.java @@ -30,7 +30,7 @@ import com.hbm.tileentity.TileEntityMachineBase; import com.hbm.util.CompatEnergyControl; import com.hbm.util.fauxpointtwelve.DirPos; -import api.hbm.energy.IEnergyUser; +import api.hbm.energymk2.IEnergyReceiverMK2; import api.hbm.fluid.IFluidStandardTransceiver; import api.hbm.tile.IInfoProviderEC; import cpw.mods.fml.common.network.NetworkRegistry.TargetPoint; @@ -46,7 +46,7 @@ import net.minecraft.util.Vec3; import net.minecraft.world.World; import net.minecraftforge.common.util.ForgeDirection; -public class TileEntityITER extends TileEntityMachineBase implements IEnergyUser, IFluidAcceptor, IFluidSource, IFluidStandardTransceiver, IGUIProvider, IInfoProviderEC { +public class TileEntityITER extends TileEntityMachineBase implements IEnergyReceiverMK2, IFluidAcceptor, IFluidSource, IFluidStandardTransceiver, IGUIProvider, IInfoProviderEC { public long power; public static final long maxPower = 10000000; diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineAmgen.java b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineAmgen.java index ec2e10421..a01b3b6f6 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineAmgen.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineAmgen.java @@ -5,14 +5,14 @@ import com.hbm.handler.radiation.ChunkRadiationManager; import com.hbm.tileentity.TileEntityLoadedBase; import com.hbm.util.CompatEnergyControl; -import api.hbm.energy.IEnergyGenerator; +import api.hbm.energymk2.IEnergyProviderMK2; import api.hbm.tile.IInfoProviderEC; import net.minecraft.block.Block; import net.minecraft.init.Blocks; import net.minecraft.nbt.NBTTagCompound; import net.minecraftforge.common.util.ForgeDirection; -public class TileEntityMachineAmgen extends TileEntityLoadedBase implements IEnergyGenerator, IInfoProviderEC { +public class TileEntityMachineAmgen extends TileEntityLoadedBase implements IEnergyProviderMK2, IInfoProviderEC { public long power; public long maxPower = 500; @@ -42,7 +42,7 @@ public class TileEntityMachineAmgen extends TileEntityLoadedBase implements IEne power = maxPower; for(ForgeDirection dir : ForgeDirection.VALID_DIRECTIONS) - this.sendPower(worldObj, xCoord + dir.offsetX, yCoord + dir.offsetY, zCoord + dir.offsetZ, dir); + this.tryProvide(worldObj, xCoord + dir.offsetX, yCoord + dir.offsetY, zCoord + dir.offsetZ, dir); } } diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineArcFurnace.java b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineArcFurnace.java index 085eb355e..f907bf852 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineArcFurnace.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineArcFurnace.java @@ -13,7 +13,7 @@ import com.hbm.tileentity.IGUIProvider; import com.hbm.tileentity.TileEntityLoadedBase; import com.hbm.util.CompatEnergyControl; -import api.hbm.energy.IEnergyUser; +import api.hbm.energymk2.IEnergyReceiverMK2; import api.hbm.tile.IInfoProviderEC; import cpw.mods.fml.common.network.NetworkRegistry.TargetPoint; import cpw.mods.fml.relauncher.Side; @@ -27,8 +27,9 @@ import net.minecraft.item.crafting.FurnaceRecipes; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.nbt.NBTTagList; import net.minecraft.world.World; +import net.minecraftforge.common.util.ForgeDirection; -public class TileEntityMachineArcFurnace extends TileEntityLoadedBase implements ISidedInventory, IEnergyUser, IGUIProvider, IInfoProviderEC { +public class TileEntityMachineArcFurnace extends TileEntityLoadedBase implements ISidedInventory, IEnergyReceiverMK2, IGUIProvider, IInfoProviderEC { private ItemStack slots[]; @@ -315,8 +316,9 @@ public class TileEntityMachineArcFurnace extends TileEntityLoadedBase implements boolean flag1 = false; if(!worldObj.isRemote) { - - this.updateStandardConnections(worldObj, xCoord, yCoord, zCoord); + + for(ForgeDirection dir : ForgeDirection.VALID_DIRECTIONS) + this.trySubscribe(worldObj, xCoord + dir.offsetX, yCoord + dir.offsetY, zCoord + dir.offsetZ, dir); if(hasPower() && canProcess()) { diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineArcWelder.java b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineArcWelder.java index f42fd7b9d..fc2837579 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineArcWelder.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineArcWelder.java @@ -23,7 +23,7 @@ import com.hbm.util.I18nUtil; import com.hbm.util.fauxpointtwelve.BlockPos; import com.hbm.util.fauxpointtwelve.DirPos; -import api.hbm.energy.IEnergyUser; +import api.hbm.energymk2.IEnergyReceiverMK2; import api.hbm.fluid.IFluidStandardReceiver; import cpw.mods.fml.common.network.NetworkRegistry.TargetPoint; import cpw.mods.fml.relauncher.Side; @@ -39,7 +39,7 @@ import net.minecraft.util.EnumChatFormatting; import net.minecraft.world.World; import net.minecraftforge.common.util.ForgeDirection; -public class TileEntityMachineArcWelder extends TileEntityMachineBase implements IEnergyUser, IFluidStandardReceiver, IConditionalInvAccess, IGUIProvider, IUpgradeInfoProvider { +public class TileEntityMachineArcWelder extends TileEntityMachineBase implements IEnergyReceiverMK2, IFluidStandardReceiver, IConditionalInvAccess, IGUIProvider, IUpgradeInfoProvider { public long power; public long maxPower = 2_000; diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineAssembler.java b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineAssembler.java index d0bd26ea0..89a674740 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineAssembler.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineAssembler.java @@ -20,7 +20,7 @@ import com.hbm.util.BobMathUtil; import com.hbm.util.I18nUtil; import com.hbm.util.fauxpointtwelve.DirPos; -import api.hbm.energy.IBatteryItem; +import api.hbm.energymk2.IBatteryItem; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; import net.minecraft.client.gui.GuiScreen; diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineAssemblerBase.java b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineAssemblerBase.java index 836b03f1d..be6f29afa 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineAssemblerBase.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineAssemblerBase.java @@ -13,14 +13,14 @@ import com.hbm.tileentity.machine.storage.TileEntityCrateTemplate; import com.hbm.util.InventoryUtil; import com.hbm.util.fauxpointtwelve.DirPos; -import api.hbm.energy.IEnergyUser; +import api.hbm.energymk2.IEnergyReceiverMK2; import net.minecraft.inventory.IInventory; import net.minecraft.inventory.ISidedInventory; import net.minecraft.item.ItemStack; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.tileentity.TileEntity; -public abstract class TileEntityMachineAssemblerBase extends TileEntityMachineBase implements IEnergyUser, IGUIProvider { +public abstract class TileEntityMachineAssemblerBase extends TileEntityMachineBase implements IEnergyReceiverMK2, IGUIProvider { public long power; public int[] progress; @@ -184,8 +184,12 @@ public abstract class TileEntityMachineAssemblerBase extends TileEntityMachineBa if(recipe != null) { for(AStack ingredient : recipe) { + + int tracker = 0; outer: while(!InventoryUtil.doesArrayHaveIngredients(slots, indices[0], indices[1], ingredient)) { + + if(tracker++ > 10) break; boolean found = false; diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineAutocrafter.java b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineAutocrafter.java index f3abfb2ba..9f1834c63 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineAutocrafter.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineAutocrafter.java @@ -10,7 +10,7 @@ import com.hbm.tileentity.IGUIProvider; import com.hbm.tileentity.TileEntityMachineBase; import com.hbm.util.ItemStackUtil; -import api.hbm.energy.IEnergyUser; +import api.hbm.energymk2.IEnergyReceiverMK2; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; import net.minecraft.client.gui.GuiScreen; @@ -23,8 +23,9 @@ import net.minecraft.item.crafting.CraftingManager; import net.minecraft.item.crafting.IRecipe; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.world.World; +import net.minecraftforge.common.util.ForgeDirection; -public class TileEntityMachineAutocrafter extends TileEntityMachineBase implements IEnergyUser, IGUIProvider { +public class TileEntityMachineAutocrafter extends TileEntityMachineBase implements IEnergyReceiverMK2, IGUIProvider { public static final String MODE_EXACT = "exact"; public static final String MODE_WILDCARD = "wildcard"; @@ -146,7 +147,7 @@ public class TileEntityMachineAutocrafter extends TileEntityMachineBase implemen if(!worldObj.isRemote) { this.power = Library.chargeTEFromItems(slots, 20, power, maxPower); - this.updateStandardConnections(worldObj, this); + for(ForgeDirection dir : ForgeDirection.VALID_DIRECTIONS) this.trySubscribe(worldObj, xCoord + dir.offsetX, yCoord + dir.offsetY, zCoord + dir.offsetZ, dir); if(!this.recipes.isEmpty() && this.power >= this.consumption) { IRecipe recipe = this.recipes.get(recipeIndex); diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineBoilerElectric.java b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineBoilerElectric.java index e29757724..dd61cdfae 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineBoilerElectric.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineBoilerElectric.java @@ -21,8 +21,8 @@ import com.hbm.packet.PacketDispatcher; import com.hbm.tileentity.IGUIProvider; import com.hbm.tileentity.TileEntityLoadedBase; -import api.hbm.energy.IBatteryItem; -import api.hbm.energy.IEnergyUser; +import api.hbm.energymk2.IBatteryItem; +import api.hbm.energymk2.IEnergyReceiverMK2; import api.hbm.fluid.IFluidStandardTransceiver; import cpw.mods.fml.common.network.NetworkRegistry.TargetPoint; import cpw.mods.fml.relauncher.Side; @@ -38,7 +38,7 @@ import net.minecraft.tileentity.TileEntityFurnace; import net.minecraft.world.World; import net.minecraftforge.common.util.ForgeDirection; -public class TileEntityMachineBoilerElectric extends TileEntityLoadedBase implements ISidedInventory, IFluidContainer, IFluidAcceptor, IFluidSource, IEnergyUser, IFluidStandardTransceiver, IGUIProvider { +public class TileEntityMachineBoilerElectric extends TileEntityLoadedBase implements ISidedInventory, IFluidContainer, IFluidAcceptor, IFluidSource, IEnergyReceiverMK2, IFluidStandardTransceiver, IGUIProvider { private ItemStack slots[]; diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineCentrifuge.java b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineCentrifuge.java index 247214a14..71694f632 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineCentrifuge.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineCentrifuge.java @@ -18,7 +18,7 @@ import com.hbm.util.BobMathUtil; import com.hbm.util.CompatEnergyControl; import com.hbm.util.I18nUtil; -import api.hbm.energy.IEnergyUser; +import api.hbm.energymk2.IEnergyReceiverMK2; import api.hbm.tile.IInfoProviderEC; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; @@ -31,8 +31,9 @@ import net.minecraft.util.AxisAlignedBB; import net.minecraft.util.EnumChatFormatting; import net.minecraft.util.MathHelper; import net.minecraft.world.World; +import net.minecraftforge.common.util.ForgeDirection; -public class TileEntityMachineCentrifuge extends TileEntityMachineBase implements IEnergyUser, IGUIProvider, IUpgradeInfoProvider, IInfoProviderEC { +public class TileEntityMachineCentrifuge extends TileEntityMachineBase implements IEnergyReceiverMK2, IGUIProvider, IUpgradeInfoProvider, IInfoProviderEC { public int progress; public long power; @@ -155,8 +156,8 @@ public class TileEntityMachineCentrifuge extends TileEntityMachineBase implement public void updateEntity() { if(!worldObj.isRemote) { - - this.updateStandardConnections(worldObj, xCoord, yCoord, zCoord); + + for(ForgeDirection dir : ForgeDirection.VALID_DIRECTIONS) this.trySubscribe(worldObj, xCoord + dir.offsetX, yCoord + dir.offsetY, zCoord + dir.offsetZ, dir); power = Library.chargeTEFromItems(slots, 1, power, maxPower); diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineChemplant.java b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineChemplant.java index 00318242c..0e1efc401 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineChemplant.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineChemplant.java @@ -1,16 +1,12 @@ package com.hbm.tileentity.machine; -import java.util.ArrayList; import java.util.List; import com.hbm.blocks.BlockDummyable; import com.hbm.blocks.ModBlocks; -import com.hbm.interfaces.IFluidAcceptor; -import com.hbm.interfaces.IFluidSource; import com.hbm.inventory.RecipesCommon.AStack; import com.hbm.inventory.UpgradeManager; import com.hbm.inventory.container.ContainerMachineChemplant; -import com.hbm.inventory.fluid.FluidType; import com.hbm.inventory.fluid.Fluids; import com.hbm.inventory.fluid.tank.FluidTank; import com.hbm.inventory.gui.GUIMachineChemplant; @@ -29,7 +25,7 @@ import com.hbm.util.I18nUtil; import com.hbm.util.InventoryUtil; import com.hbm.util.fauxpointtwelve.DirPos; -import api.hbm.energy.IEnergyUser; +import api.hbm.energymk2.IEnergyReceiverMK2; import api.hbm.fluid.IFluidStandardTransceiver; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; @@ -46,7 +42,7 @@ import net.minecraft.util.EnumChatFormatting; import net.minecraft.world.World; import net.minecraftforge.common.util.ForgeDirection; -public class TileEntityMachineChemplant extends TileEntityMachineBase implements IEnergyUser, IFluidSource, IFluidAcceptor, IFluidStandardTransceiver, IGUIProvider, IUpgradeInfoProvider { +public class TileEntityMachineChemplant extends TileEntityMachineBase implements IEnergyReceiverMK2, IFluidStandardTransceiver, IGUIProvider, IUpgradeInfoProvider { public long power; public static final long maxPower = 100000; @@ -78,7 +74,7 @@ public class TileEntityMachineChemplant extends TileEntityMachineBase implements tanks = new FluidTank[4]; for(int i = 0; i < 4; i++) { - tanks[i] = new FluidTank(Fluids.NONE, 24_000, i); + tanks[i] = new FluidTank(Fluids.NONE, 24_000); } } @@ -123,10 +119,6 @@ public class TileEntityMachineChemplant extends TileEntityMachineBase implements loadItems(); unloadItems(); - if(worldObj.getTotalWorldTime() % 10 == 0) { - this.fillFluidInit(tanks[2].getTankType()); - this.fillFluidInit(tanks[3].getTankType()); - } if(worldObj.getTotalWorldTime() % 20 == 0) { this.updateConnections(); } @@ -511,106 +503,6 @@ public class TileEntityMachineChemplant extends TileEntityMachineBase implements public long getMaxPower() { return this.maxPower; } - - @Override - public void setFillForSync(int fill, int index) { - if(index >= 0 && index < tanks.length) tanks[index].setFill(fill); - } - - @Override - public void setFluidFill(int fill, FluidType type) { - - for(FluidTank tank : tanks) { - if(tank.getTankType() == type) { - tank.setFill(fill); - return; - } - } - } - - @Override - public void setTypeForSync(FluidType type, int index) { - if(index >= 0 && index < tanks.length) tanks[index].setTankType(type); - } - - @Override - public int getFluidFill(FluidType type) { - - for(FluidTank tank : tanks) { - if(tank.getTankType() == type) { - return tank.getFill(); - } - } - - return 0; - } - - @Override - public int getMaxFluidFill(FluidType type) { - - for(int i = 0; i < 2; i++) { - if(tanks[i].getTankType() == type) { - return tanks[i].getMaxFill(); - } - } - - return 0; - } - - @Override - public void fillFluidInit(FluidType type) { - - /* - * #### - * X####X - * X##O#X - * #### - */ - - ForgeDirection dir = ForgeDirection.getOrientation(this.getBlockMetadata() - BlockDummyable.offset).getOpposite(); - ForgeDirection rot = dir.getRotation(ForgeDirection.DOWN); - - fillFluid(xCoord + rot.offsetX * 3, yCoord, zCoord + rot.offsetZ * 3, this.getTact(), type); - fillFluid(xCoord - rot.offsetX * 2, yCoord, zCoord - rot.offsetZ * 2, this.getTact(), type); - fillFluid(xCoord + rot.offsetX * 3 + dir.offsetX, yCoord, zCoord + rot.offsetZ * 3 + dir.offsetZ, this.getTact(), type); - fillFluid(xCoord - rot.offsetX * 2 + dir.offsetX, yCoord, zCoord - rot.offsetZ * 2 + dir.offsetZ, this.getTact(), type); - } - - @Override - public void fillFluid(int x, int y, int z, boolean newTact, FluidType type) { - Library.transmitFluid(x, y, z, newTact, this, worldObj, type); - } - - @Override - public boolean getTact() { - return worldObj.getTotalWorldTime() % 20 < 10; - } - - List[] lists = new List[] { - new ArrayList(), new ArrayList(), new ArrayList(), new ArrayList() - }; - - @Override - public List getFluidList(FluidType type) { - - for(int i = 0; i < tanks.length; i++) { - if(tanks[i].getTankType() == type) { - return lists[i]; - } - } - - return new ArrayList(); - } - - @Override - public void clearFluidList(FluidType type) { - - for(int i = 0; i < tanks.length; i++) { - if(tanks[i].getTankType() == type) { - lists[i].clear(); - } - } - } @Override public void readFromNBT(NBTTagCompound nbt) { diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineChemplantBase.java b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineChemplantBase.java index 162a456f2..1ca2d230e 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineChemplantBase.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineChemplantBase.java @@ -16,7 +16,7 @@ import com.hbm.tileentity.TileEntityMachineBase; import com.hbm.util.InventoryUtil; import com.hbm.util.fauxpointtwelve.DirPos; -import api.hbm.energy.IEnergyUser; +import api.hbm.energymk2.IEnergyReceiverMK2; import api.hbm.fluid.IFluidUser; import net.minecraft.inventory.IInventory; import net.minecraft.inventory.ISidedInventory; @@ -32,7 +32,7 @@ import net.minecraft.tileentity.TileEntity; * Tanks follow the order R1(I1, I2, O1, O2), R2(I1, I2, O1, O2) ... * @author hbm */ -public abstract class TileEntityMachineChemplantBase extends TileEntityMachineBase implements IEnergyUser, IFluidUser, IGUIProvider { +public abstract class TileEntityMachineChemplantBase extends TileEntityMachineBase implements IEnergyReceiverMK2, IFluidUser, IGUIProvider { public long power; public int[] progress; diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineCoal.java b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineCoal.java deleted file mode 100644 index c616c9afc..000000000 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineCoal.java +++ /dev/null @@ -1,33 +0,0 @@ -package com.hbm.tileentity.machine; - -import com.hbm.blocks.ModBlocks; -import com.hbm.tileentity.TileEntityMachineBase; - -import net.minecraft.entity.item.EntityItem; -import net.minecraft.inventory.ISidedInventory; -import net.minecraft.item.ItemStack; - -@Deprecated -public class TileEntityMachineCoal extends TileEntityMachineBase implements ISidedInventory { - - public TileEntityMachineCoal() { - super(4); - } - - @Override - public String getName() { - return "container.machineCoal"; - } - - @Override - public void updateEntity() { - - if(!worldObj.isRemote) { - worldObj.setBlockToAir(xCoord, yCoord, zCoord); - EntityItem drop = new EntityItem(worldObj); - drop.setEntityItemStack(new ItemStack(ModBlocks.machine_wood_burner)); - drop.setPosition(xCoord + 0.5, yCoord + 0.5, zCoord + 0.5); - worldObj.spawnEntityInWorld(drop); - } - } -} diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineCombustionEngine.java b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineCombustionEngine.java index eeb04c81e..8e4687ac3 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineCombustionEngine.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineCombustionEngine.java @@ -20,7 +20,7 @@ import com.hbm.tileentity.TileEntityMachinePolluting; import com.hbm.util.EnumUtil; import com.hbm.util.fauxpointtwelve.DirPos; -import api.hbm.energy.IEnergyGenerator; +import api.hbm.energymk2.IEnergyProviderMK2; import api.hbm.fluid.IFluidStandardTransceiver; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; @@ -33,7 +33,7 @@ import net.minecraft.util.MathHelper; import net.minecraft.world.World; import net.minecraftforge.common.util.ForgeDirection; -public class TileEntityMachineCombustionEngine extends TileEntityMachinePolluting implements IEnergyGenerator, IFluidStandardTransceiver, IControlReceiver, IGUIProvider { +public class TileEntityMachineCombustionEngine extends TileEntityMachinePolluting implements IEnergyProviderMK2, IFluidStandardTransceiver, IControlReceiver, IGUIProvider { public boolean isOn = false; public static long maxPower = 2_500_000; @@ -52,7 +52,7 @@ public class TileEntityMachineCombustionEngine extends TileEntityMachinePollutin public TileEntityMachineCombustionEngine() { super(5, 50); - this.tank = new FluidTank(Fluids.DIESEL, 24_000, 0); + this.tank = new FluidTank(Fluids.DIESEL, 24_000); } @Override @@ -105,7 +105,7 @@ public class TileEntityMachineCombustionEngine extends TileEntityMachinePollutin this.power = Library.chargeItemsFromTE(slots, 3, power, power); for(DirPos pos : getConPos()) { - this.sendPower(worldObj, pos.getX(), pos.getY(), pos.getZ(), pos.getDir()); + this.tryProvide(worldObj, pos.getX(), pos.getY(), pos.getZ(), pos.getDir()); this.trySubscribe(tank.getTankType(), worldObj, pos.getX(), pos.getY(), pos.getZ(), pos.getDir()); this.sendSmoke(pos.getX(), pos.getY(), pos.getZ(), pos.getDir()); } diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineCompressor.java b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineCompressor.java index 318a1a4d0..c3e94a705 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineCompressor.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineCompressor.java @@ -23,7 +23,7 @@ import com.hbm.util.I18nUtil; import com.hbm.util.Tuple.Pair; import com.hbm.util.fauxpointtwelve.DirPos; -import api.hbm.energy.IEnergyUser; +import api.hbm.energymk2.IEnergyReceiverMK2; import api.hbm.fluid.IFluidStandardTransceiver; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; @@ -37,7 +37,7 @@ import net.minecraft.util.MathHelper; import net.minecraft.world.World; import net.minecraftforge.common.util.ForgeDirection; -public class TileEntityMachineCompressor extends TileEntityMachineBase implements IGUIProvider, IControlReceiver, IEnergyUser, IFluidStandardTransceiver, IUpgradeInfoProvider { +public class TileEntityMachineCompressor extends TileEntityMachineBase implements IGUIProvider, IControlReceiver, IEnergyReceiverMK2, IFluidStandardTransceiver, IUpgradeInfoProvider { public FluidTank[] tanks; public long power; diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineCrystallizer.java b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineCrystallizer.java index 5e6d51bbe..3ead60a33 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineCrystallizer.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineCrystallizer.java @@ -22,8 +22,8 @@ import com.hbm.util.BobMathUtil; import com.hbm.util.I18nUtil; import com.hbm.util.fauxpointtwelve.DirPos; -import api.hbm.energy.IBatteryItem; -import api.hbm.energy.IEnergyUser; +import api.hbm.energymk2.IBatteryItem; +import api.hbm.energymk2.IEnergyReceiverMK2; import api.hbm.fluid.IFluidStandardReceiver; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; @@ -38,7 +38,7 @@ import net.minecraft.util.EnumChatFormatting; import net.minecraft.world.World; import net.minecraftforge.common.util.ForgeDirection; -public class TileEntityMachineCrystallizer extends TileEntityMachineBase implements IEnergyUser, IFluidStandardReceiver, IGUIProvider, IUpgradeInfoProvider { +public class TileEntityMachineCrystallizer extends TileEntityMachineBase implements IEnergyReceiverMK2, IFluidStandardReceiver, IGUIProvider, IUpgradeInfoProvider { public long power; public static final long maxPower = 1000000; diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineCyclotron.java b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineCyclotron.java index f538dff8a..87660cb63 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineCyclotron.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineCyclotron.java @@ -35,7 +35,7 @@ import com.hbm.util.I18nUtil; import com.hbm.util.Tuple.Pair; import com.hbm.util.fauxpointtwelve.DirPos; -import api.hbm.energy.IEnergyUser; +import api.hbm.energymk2.IEnergyReceiverMK2; import api.hbm.fluid.IFluidStandardTransceiver; import api.hbm.tile.IInfoProviderEC; import cpw.mods.fml.common.network.NetworkRegistry.TargetPoint; @@ -52,7 +52,7 @@ import net.minecraft.util.EnumChatFormatting; import net.minecraft.world.World; import net.minecraftforge.common.util.ForgeDirection; -public class TileEntityMachineCyclotron extends TileEntityMachineBase implements IFluidSource, IFluidAcceptor, IEnergyUser, IFluidStandardTransceiver, IGUIProvider, IConditionalInvAccess, IUpgradeInfoProvider, IInfoProviderEC { +public class TileEntityMachineCyclotron extends TileEntityMachineBase implements IFluidSource, IFluidAcceptor, IEnergyReceiverMK2, IFluidStandardTransceiver, IGUIProvider, IConditionalInvAccess, IUpgradeInfoProvider, IInfoProviderEC { public long power; public static final long maxPower = 100000000; @@ -224,7 +224,7 @@ public class TileEntityMachineCyclotron extends TileEntityMachineBase implements if(rand < 2) { - worldObj.spawnEntityInWorld(EntityNukeExplosionMK5.statFac(worldObj, (int)(BombConfig.fatmanRadius * 1.5), xCoord + 0.5, yCoord + 1.5, zCoord + 0.5).mute()); + worldObj.spawnEntityInWorld(EntityNukeExplosionMK5.statFac(worldObj, (int)(BombConfig.fatmanRadius * 1.5), xCoord + 0.5, yCoord + 1.5, zCoord + 0.5)); NBTTagCompound data = new NBTTagCompound(); data.setString("type", "muke"); @@ -233,7 +233,7 @@ public class TileEntityMachineCyclotron extends TileEntityMachineBase implements } else if(rand < 4) { - EntityBalefire bf = new EntityBalefire(worldObj).mute(); + EntityBalefire bf = new EntityBalefire(worldObj); bf.posX = xCoord + 0.5; bf.posY = yCoord + 1.5; bf.posZ = zCoord + 0.5; diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineDetector.java b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineDetector.java index 8f62d9f47..b4d1a8d39 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineDetector.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineDetector.java @@ -2,15 +2,15 @@ package com.hbm.tileentity.machine; import com.hbm.tileentity.TileEntityLoadedBase; -import api.hbm.energy.IEnergyUser; +import api.hbm.energymk2.IEnergyReceiverMK2; import net.minecraftforge.common.util.ForgeDirection; -public class TileEntityMachineDetector extends TileEntityLoadedBase implements IEnergyUser { +public class TileEntityMachineDetector extends TileEntityLoadedBase implements IEnergyReceiverMK2 { long power; @Override - public void updateEntity() { + public void updateEntity() { if(!worldObj.isRemote) { @@ -56,5 +56,4 @@ public class TileEntityMachineDetector extends TileEntityLoadedBase implements I public ConnectionPriority getPriority() { return ConnectionPriority.HIGH; } - } diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineDiesel.java b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineDiesel.java index cf2e88d8a..af951569c 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineDiesel.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineDiesel.java @@ -25,8 +25,8 @@ import com.hbm.tileentity.IGUIProvider; import com.hbm.tileentity.TileEntityMachinePolluting; import com.hbm.util.CompatEnergyControl; -import api.hbm.energy.IBatteryItem; -import api.hbm.energy.IEnergyGenerator; +import api.hbm.energymk2.IBatteryItem; +import api.hbm.energymk2.IEnergyProviderMK2; import api.hbm.fluid.IFluidStandardTransceiver; import api.hbm.tile.IInfoProviderEC; import cpw.mods.fml.relauncher.Side; @@ -39,7 +39,7 @@ import net.minecraft.nbt.NBTTagCompound; import net.minecraft.world.World; import net.minecraftforge.common.util.ForgeDirection; -public class TileEntityMachineDiesel extends TileEntityMachinePolluting implements IEnergyGenerator, IFluidContainer, IFluidAcceptor, IFluidStandardTransceiver, IConfigurableMachine, IGUIProvider, IInfoProviderEC { +public class TileEntityMachineDiesel extends TileEntityMachinePolluting implements IEnergyProviderMK2, IFluidContainer, IFluidAcceptor, IFluidStandardTransceiver, IConfigurableMachine, IGUIProvider, IInfoProviderEC { public long power; public int soundCycle = 0; @@ -132,7 +132,7 @@ public class TileEntityMachineDiesel extends TileEntityMachinePolluting implemen if(!worldObj.isRemote) { for(ForgeDirection dir : ForgeDirection.VALID_DIRECTIONS) { - this.sendPower(worldObj, xCoord + dir.offsetX, yCoord + dir.offsetY, zCoord + dir.offsetZ, dir); + this.tryProvide(worldObj, xCoord + dir.offsetX, yCoord + dir.offsetY, zCoord + dir.offsetZ, dir); this.sendSmoke(xCoord + dir.offsetX, yCoord + dir.offsetY, zCoord + dir.offsetZ, dir); } diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineEPress.java b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineEPress.java index b7bd4ec24..081aab10a 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineEPress.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineEPress.java @@ -16,7 +16,7 @@ import com.hbm.tileentity.TileEntityMachineBase; import com.hbm.util.CompatEnergyControl; import com.hbm.util.I18nUtil; -import api.hbm.energy.IEnergyUser; +import api.hbm.energymk2.IEnergyReceiverMK2; import api.hbm.tile.IInfoProviderEC; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; @@ -30,7 +30,7 @@ import net.minecraft.util.EnumChatFormatting; import net.minecraft.world.World; import net.minecraftforge.common.util.ForgeDirection; -public class TileEntityMachineEPress extends TileEntityMachineBase implements IEnergyUser, IGUIProvider, IUpgradeInfoProvider, IInfoProviderEC { +public class TileEntityMachineEPress extends TileEntityMachineBase implements IEnergyReceiverMK2, IGUIProvider, IUpgradeInfoProvider, IInfoProviderEC { public long power = 0; public final static long maxPower = 50000; diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineElectricFurnace.java b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineElectricFurnace.java index a790d6265..4636da4e2 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineElectricFurnace.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineElectricFurnace.java @@ -14,8 +14,8 @@ import com.hbm.tileentity.IUpgradeInfoProvider; import com.hbm.tileentity.TileEntityMachineBase; import com.hbm.util.I18nUtil; -import api.hbm.energy.IBatteryItem; -import api.hbm.energy.IEnergyUser; +import api.hbm.energymk2.IBatteryItem; +import api.hbm.energymk2.IEnergyReceiverMK2; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; import net.minecraft.client.gui.GuiScreen; @@ -29,7 +29,7 @@ import net.minecraft.util.EnumChatFormatting; import net.minecraft.world.World; import net.minecraftforge.common.util.ForgeDirection; -public class TileEntityMachineElectricFurnace extends TileEntityMachineBase implements ISidedInventory, IEnergyUser, IGUIProvider, IUpgradeInfoProvider { +public class TileEntityMachineElectricFurnace extends TileEntityMachineBase implements ISidedInventory, IEnergyReceiverMK2, IGUIProvider, IUpgradeInfoProvider { // HOLY FUCKING SHIT I SPENT 5 DAYS ON THIS SHITFUCK CLASS FILE // thanks Martin, vaer and Bob for the help diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineExcavator.java b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineExcavator.java index ac6265b3a..2dbbcb63b 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineExcavator.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineExcavator.java @@ -35,7 +35,7 @@ import com.hbm.util.fauxpointtwelve.BlockPos; import com.hbm.util.fauxpointtwelve.DirPos; import api.hbm.conveyor.IConveyorBelt; -import api.hbm.energy.IEnergyUser; +import api.hbm.energymk2.IEnergyReceiverMK2; import api.hbm.fluid.IFluidStandardReceiver; import cpw.mods.fml.relauncher.ReflectionHelper; import cpw.mods.fml.relauncher.Side; @@ -58,7 +58,7 @@ import net.minecraft.util.Vec3; import net.minecraft.world.World; import net.minecraftforge.common.util.ForgeDirection; -public class TileEntityMachineExcavator extends TileEntityMachineBase implements IEnergyUser, IFluidStandardReceiver, IControlReceiver, IGUIProvider, IUpgradeInfoProvider { +public class TileEntityMachineExcavator extends TileEntityMachineBase implements IEnergyReceiverMK2, IFluidStandardReceiver, IControlReceiver, IGUIProvider, IUpgradeInfoProvider { public static final long maxPower = 1_000_000; public long power; diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineExposureChamber.java b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineExposureChamber.java index 160a35b0b..d733720ba 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineExposureChamber.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineExposureChamber.java @@ -17,7 +17,7 @@ import com.hbm.util.BobMathUtil; import com.hbm.util.I18nUtil; import com.hbm.util.fauxpointtwelve.DirPos; -import api.hbm.energy.IEnergyUser; +import api.hbm.energymk2.IEnergyReceiverMK2; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; import io.netty.buffer.ByteBuf; @@ -31,7 +31,7 @@ import net.minecraft.util.EnumChatFormatting; import net.minecraft.world.World; import net.minecraftforge.common.util.ForgeDirection; -public class TileEntityMachineExposureChamber extends TileEntityMachineBase implements IGUIProvider, IEnergyUser, IUpgradeInfoProvider { +public class TileEntityMachineExposureChamber extends TileEntityMachineBase implements IGUIProvider, IEnergyReceiverMK2, IUpgradeInfoProvider { public long power; public static final long maxPower = 1_000_000; diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineGasCent.java b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineGasCent.java index bc51868ab..cf0ad2b1c 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineGasCent.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineGasCent.java @@ -19,7 +19,7 @@ import com.hbm.util.CompatEnergyControl; import com.hbm.util.InventoryUtil; import com.hbm.util.fauxpointtwelve.DirPos; -import api.hbm.energy.IEnergyUser; +import api.hbm.energymk2.IEnergyReceiverMK2; import api.hbm.fluid.IFluidStandardReceiver; import api.hbm.tile.IInfoProviderEC; import cpw.mods.fml.common.network.NetworkRegistry.TargetPoint; @@ -36,7 +36,7 @@ import net.minecraft.world.World; import net.minecraftforge.common.util.ForgeDirection; //epic! -public class TileEntityMachineGasCent extends TileEntityMachineBase implements IEnergyUser, IFluidStandardReceiver, IGUIProvider, IInfoProviderEC { +public class TileEntityMachineGasCent extends TileEntityMachineBase implements IEnergyReceiverMK2, IFluidStandardReceiver, IGUIProvider, IInfoProviderEC { public long power; public int progress; diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineIGenerator.java b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineIGenerator.java index 3b66c7d06..325b68a64 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineIGenerator.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineIGenerator.java @@ -1,24 +1,17 @@ package com.hbm.tileentity.machine; -import java.io.IOException; - -import com.google.gson.JsonObject; -import com.google.gson.stream.JsonWriter; import com.hbm.blocks.BlockDummyable; -import com.hbm.interfaces.IFluidAcceptor; import com.hbm.inventory.container.ContainerIGenerator; import com.hbm.inventory.fluid.FluidType; import com.hbm.inventory.fluid.Fluids; import com.hbm.inventory.fluid.tank.FluidTank; import com.hbm.inventory.fluid.trait.FT_Flammable; import com.hbm.inventory.gui.GUIIGenerator; -import com.hbm.tileentity.IConfigurableMachine; import com.hbm.tileentity.IGUIProvider; import com.hbm.tileentity.TileEntityMachineBase; import com.hbm.util.CompatEnergyControl; import com.hbm.util.fauxpointtwelve.DirPos; -import api.hbm.energy.IEnergyGenerator; import api.hbm.fluid.IFluidStandardReceiver; import api.hbm.tile.IInfoProviderEC; import cpw.mods.fml.relauncher.Side; @@ -34,7 +27,7 @@ import net.minecraft.util.AxisAlignedBB; import net.minecraft.world.World; import net.minecraftforge.common.util.ForgeDirection; -public class TileEntityMachineIGenerator extends TileEntityMachineBase implements IFluidAcceptor, IEnergyGenerator, IFluidStandardReceiver, IConfigurableMachine, IGUIProvider, IInfoProviderEC { +public class TileEntityMachineIGenerator extends TileEntityMachineBase implements IFluidStandardReceiver, IGUIProvider, IInfoProviderEC { public long power; public int spin; @@ -66,37 +59,6 @@ public class TileEntityMachineIGenerator extends TileEntityMachineBase implement protected long output; - @Override - public String getConfigName() { - return "igen"; - } - - @Override - public void readIfPresent(JsonObject obj) { - maxPower = IConfigurableMachine.grab(obj, "L:powerCap", maxPower); - waterCap = IConfigurableMachine.grab(obj, "I:waterCap", waterCap); - oilCap = IConfigurableMachine.grab(obj, "I:oilCap", oilCap); - lubeCap = IConfigurableMachine.grab(obj, "I:lubeCap", lubeCap); - coalGenRate = IConfigurableMachine.grab(obj, "I:solidFuelRate2", coalGenRate); - rtgHeatMult = IConfigurableMachine.grab(obj, "D:rtgHeatMult", rtgHeatMult); - waterRate = IConfigurableMachine.grab(obj, "I:waterRate", waterRate); - lubeRate = IConfigurableMachine.grab(obj, "I:lubeRate", lubeRate); - fluidHeatDiv = IConfigurableMachine.grab(obj, "D:fluidHeatDiv", fluidHeatDiv); - } - - @Override - public void writeConfig(JsonWriter writer) throws IOException { - writer.name("L:powerCap").value(maxPower); - writer.name("I:waterCap").value(waterCap); - writer.name("I:oilCap").value(oilCap); - writer.name("I:lubeCap").value(lubeCap); - writer.name("I:solidFuelRate2").value(coalGenRate); - writer.name("D:rtgHeatMult").value(rtgHeatMult); - writer.name("I:waterRate").value(waterRate); - writer.name("I:lubeRate").value(lubeRate); - writer.name("D:fluidHeatDiv").value(fluidHeatDiv); - } - public TileEntityMachineIGenerator() { super(21); tanks = new FluidTank[3]; @@ -274,47 +236,6 @@ public class TileEntityMachineIGenerator extends TileEntityMachineBase implement FluidType type = tanks[1].getTankType(); return type.hasTrait(FT_Flammable.class) ? (int)(type.getTrait(FT_Flammable.class).getHeatEnergy() / (con ? 5000L : fluidHeatDiv)) : 0; } - - @Override - public void setFillForSync(int fill, int index) { - tanks[index].setFill(fill); - } - - @Override - public void setFluidFill(int fill, FluidType type) { - - if(type == Fluids.WATER) - tanks[0].setFill(fill); - else if(type == Fluids.LUBRICANT) - tanks[2].setFill(fill); - else if(tanks[1].getTankType() == type) - tanks[1].setFill(fill); - } - - @Override - public void setTypeForSync(FluidType type, int index) { - tanks[index].setTankType(type); - } - - @Override - public int getFluidFill(FluidType type) { - - for(int i = 0; i < 3; i++) - if(tanks[i].getTankType() == type) - return tanks[i].getFill(); - - return 0; - } - - @Override - public int getMaxFluidFill(FluidType type) { - - for(int i = 0; i < 3; i++) - if(tanks[i].getTankType() == type) - return tanks[i].getMaxFill(); - - return 0; - } @Override public void readFromNBT(NBTTagCompound nbt) { @@ -345,26 +266,10 @@ public class TileEntityMachineIGenerator extends TileEntityMachineBase implement @Override @SideOnly(Side.CLIENT) - public double getMaxRenderDistanceSquared() - { + public double getMaxRenderDistanceSquared() { return 65536.0D; } - @Override - public void setPower(long power) { - this.power = power; - } - - @Override - public long getPower() { - return this.power; - } - - @Override - public long getMaxPower() { - return this.maxPower; - } - @Override public FluidTank[] getReceivingTanks() { return new FluidTank[] { tanks[0], tanks[1], tanks[2] }; diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineLargeTurbine.java b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineLargeTurbine.java index 3041a8a9b..508e4d3a0 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineLargeTurbine.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineLargeTurbine.java @@ -24,7 +24,7 @@ import com.hbm.tileentity.TileEntityMachineBase; import com.hbm.util.CompatEnergyControl; import com.hbm.util.fauxpointtwelve.DirPos; -import api.hbm.energy.IEnergyGenerator; +import api.hbm.energymk2.IEnergyProviderMK2; import api.hbm.fluid.IFluidStandardTransceiver; import api.hbm.tile.IInfoProviderEC; import cpw.mods.fml.common.Optional; @@ -44,7 +44,7 @@ import net.minecraft.world.World; import net.minecraftforge.common.util.ForgeDirection; @Optional.InterfaceList({@Optional.Interface(iface = "li.cil.oc.api.network.SimpleComponent", modid = "OpenComputers")}) -public class TileEntityMachineLargeTurbine extends TileEntityMachineBase implements IFluidContainer, IFluidAcceptor, IFluidSource, IEnergyGenerator, IFluidStandardTransceiver, IGUIProvider, SimpleComponent, IInfoProviderEC { +public class TileEntityMachineLargeTurbine extends TileEntityMachineBase implements IFluidContainer, IFluidAcceptor, IFluidSource, IEnergyProviderMK2, IFluidStandardTransceiver, IGUIProvider, SimpleComponent, IInfoProviderEC { public long power; public static final long maxPower = 100000000; @@ -92,7 +92,7 @@ public class TileEntityMachineLargeTurbine extends TileEntityMachineBase impleme fillFluidInit(tanks[1].getTankType()); ForgeDirection dir = ForgeDirection.getOrientation(this.getBlockMetadata() - BlockDummyable.offset); - this.sendPower(worldObj, xCoord + dir.offsetX * -4, yCoord, zCoord + dir.offsetZ * -4, dir.getOpposite()); + this.tryProvide(worldObj, xCoord + dir.offsetX * -4, yCoord, zCoord + dir.offsetZ * -4, dir.getOpposite()); for(DirPos pos : getConPos()) this.trySubscribe(tanks[0].getTankType(), worldObj, pos.getX(), pos.getY(), pos.getZ(), pos.getDir()); for(DirPos pos : getConPos()) this.sendFluid(tanks[1], worldObj, pos.getX(), pos.getY(), pos.getZ(), pos.getDir()); diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineMiniRTG.java b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineMiniRTG.java index cf6c1372d..ba194d48d 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineMiniRTG.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineMiniRTG.java @@ -4,12 +4,12 @@ import com.hbm.blocks.ModBlocks; import com.hbm.tileentity.TileEntityLoadedBase; import com.hbm.util.CompatEnergyControl; -import api.hbm.energy.IEnergyGenerator; +import api.hbm.energymk2.IEnergyProviderMK2; import api.hbm.tile.IInfoProviderEC; import net.minecraft.nbt.NBTTagCompound; import net.minecraftforge.common.util.ForgeDirection; -public class TileEntityMachineMiniRTG extends TileEntityLoadedBase implements IEnergyGenerator, IInfoProviderEC { +public class TileEntityMachineMiniRTG extends TileEntityLoadedBase implements IEnergyProviderMK2, IInfoProviderEC { public long power; boolean tact = false; @@ -24,8 +24,9 @@ public class TileEntityMachineMiniRTG extends TileEntityLoadedBase implements IE if(power > getMaxPower()) power = getMaxPower(); - for(ForgeDirection dir : ForgeDirection.VALID_DIRECTIONS) - this.sendPower(worldObj, xCoord + dir.offsetX, yCoord + dir.offsetY, zCoord + dir.offsetZ, dir); + for(ForgeDirection dir : ForgeDirection.VALID_DIRECTIONS) { + this.tryProvide(worldObj, xCoord + dir.offsetX, yCoord + dir.offsetY, zCoord + dir.offsetZ, dir); + } } } diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineMiningLaser.java b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineMiningLaser.java index fd4e39243..018855a6b 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineMiningLaser.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineMiningLaser.java @@ -31,7 +31,7 @@ import com.hbm.util.InventoryUtil; import api.hbm.block.IDrillInteraction; import api.hbm.block.IMiningDrill; -import api.hbm.energy.IEnergyUser; +import api.hbm.energymk2.IEnergyReceiverMK2; import api.hbm.fluid.IFluidStandardSender; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; @@ -54,7 +54,7 @@ import net.minecraft.util.EnumChatFormatting; import net.minecraft.world.World; import net.minecraftforge.common.util.ForgeDirection; -public class TileEntityMachineMiningLaser extends TileEntityMachineBase implements IEnergyUser, IFluidSource, IMiningDrill, IFluidStandardSender, IGUIProvider, IUpgradeInfoProvider { +public class TileEntityMachineMiningLaser extends TileEntityMachineBase implements IEnergyReceiverMK2, IFluidSource, IMiningDrill, IFluidStandardSender, IGUIProvider, IUpgradeInfoProvider { public long power; public int age = 0; diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineMixer.java b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineMixer.java index d4d8c40cc..34e2b1498 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineMixer.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineMixer.java @@ -21,7 +21,7 @@ import com.hbm.util.BobMathUtil; import com.hbm.util.I18nUtil; import com.hbm.util.fauxpointtwelve.DirPos; -import api.hbm.energy.IEnergyUser; +import api.hbm.energymk2.IEnergyReceiverMK2; import api.hbm.fluid.IFluidStandardTransceiver; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; @@ -34,7 +34,7 @@ import net.minecraft.util.AxisAlignedBB; import net.minecraft.util.EnumChatFormatting; import net.minecraft.world.World; -public class TileEntityMachineMixer extends TileEntityMachineBase implements INBTPacketReceiver, IControlReceiver, IGUIProvider, IEnergyUser, IFluidStandardTransceiver, IUpgradeInfoProvider { +public class TileEntityMachineMixer extends TileEntityMachineBase implements INBTPacketReceiver, IControlReceiver, IGUIProvider, IEnergyReceiverMK2, IFluidStandardTransceiver, IUpgradeInfoProvider { public long power; public static final long maxPower = 10_000; diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityMachinePlasmaHeater.java b/src/main/java/com/hbm/tileentity/machine/TileEntityMachinePlasmaHeater.java index 583aa45ee..175e11a68 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityMachinePlasmaHeater.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityMachinePlasmaHeater.java @@ -16,7 +16,7 @@ import com.hbm.lib.Library; import com.hbm.tileentity.IGUIProvider; import com.hbm.tileentity.TileEntityMachineBase; -import api.hbm.energy.IEnergyUser; +import api.hbm.energymk2.IEnergyReceiverMK2; import api.hbm.fluid.IFluidStandardReceiver; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; @@ -29,7 +29,7 @@ import net.minecraft.util.AxisAlignedBB; import net.minecraft.world.World; import net.minecraftforge.common.util.ForgeDirection; -public class TileEntityMachinePlasmaHeater extends TileEntityMachineBase implements IFluidAcceptor, IEnergyUser, IFluidStandardReceiver, IGUIProvider { +public class TileEntityMachinePlasmaHeater extends TileEntityMachineBase implements IFluidAcceptor, IEnergyReceiverMK2, IFluidStandardReceiver, IGUIProvider { public long power; public static final long maxPower = 100000000; diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityMachinePumpElectric.java b/src/main/java/com/hbm/tileentity/machine/TileEntityMachinePumpElectric.java index 25b22372d..288193818 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityMachinePumpElectric.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityMachinePumpElectric.java @@ -4,10 +4,10 @@ import com.hbm.inventory.fluid.Fluids; import com.hbm.inventory.fluid.tank.FluidTank; import com.hbm.util.fauxpointtwelve.DirPos; -import api.hbm.energy.IEnergyUser; +import api.hbm.energymk2.IEnergyReceiverMK2; import net.minecraft.nbt.NBTTagCompound; -public class TileEntityMachinePumpElectric extends TileEntityMachinePumpBase implements IEnergyUser { +public class TileEntityMachinePumpElectric extends TileEntityMachinePumpBase implements IEnergyReceiverMK2 { public long power; public static final long maxPower = 10_000; diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineRTG.java b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineRTG.java index 255966614..56ab3442f 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineRTG.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineRTG.java @@ -11,7 +11,7 @@ import com.hbm.tileentity.TileEntityLoadedBase; import com.hbm.util.CompatEnergyControl; import com.hbm.util.RTGUtil; -import api.hbm.energy.IEnergyGenerator; +import api.hbm.energymk2.IEnergyProviderMK2; import api.hbm.tile.IInfoProviderEC; import cpw.mods.fml.common.network.NetworkRegistry.TargetPoint; import cpw.mods.fml.relauncher.Side; @@ -26,7 +26,7 @@ import net.minecraft.nbt.NBTTagList; import net.minecraft.world.World; import net.minecraftforge.common.util.ForgeDirection; -public class TileEntityMachineRTG extends TileEntityLoadedBase implements ISidedInventory, IEnergyGenerator, IGUIProvider, IInfoProviderEC { +public class TileEntityMachineRTG extends TileEntityLoadedBase implements ISidedInventory, IEnergyProviderMK2, IGUIProvider, IInfoProviderEC { private ItemStack slots[]; @@ -211,7 +211,7 @@ public class TileEntityMachineRTG extends TileEntityLoadedBase implements ISided if(!worldObj.isRemote) { for(ForgeDirection dir : ForgeDirection.VALID_DIRECTIONS) - this.sendPower(worldObj, xCoord + dir.offsetX, yCoord + dir.offsetY, zCoord + dir.offsetZ, dir); + this.tryProvide(worldObj, xCoord + dir.offsetX, yCoord + dir.offsetY, zCoord + dir.offsetZ, dir); heat = RTGUtil.updateRTGs(slots, slot_io); diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineRadGen.java b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineRadGen.java index c3977ba78..825937515 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineRadGen.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineRadGen.java @@ -14,7 +14,7 @@ import com.hbm.tileentity.TileEntityMachineBase; import com.hbm.util.CompatEnergyControl; import com.hbm.util.Tuple.Triplet; -import api.hbm.energy.IEnergyGenerator; +import api.hbm.energymk2.IEnergyProviderMK2; import api.hbm.tile.IInfoProviderEC; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; @@ -30,7 +30,7 @@ import net.minecraft.util.AxisAlignedBB; import net.minecraft.world.World; import net.minecraftforge.common.util.ForgeDirection; -public class TileEntityMachineRadGen extends TileEntityMachineBase implements IEnergyGenerator, IGUIProvider, IInfoProviderEC { +public class TileEntityMachineRadGen extends TileEntityMachineBase implements IEnergyProviderMK2, IGUIProvider, IInfoProviderEC { public int[] progress = new int[12]; public int[] maxProgress = new int[12]; @@ -60,7 +60,7 @@ public class TileEntityMachineRadGen extends TileEntityMachineBase implements IE this.output = 0; ForgeDirection dir = ForgeDirection.getOrientation(this.getBlockMetadata() - BlockDummyable.offset); - this.sendPower(worldObj, this.xCoord - dir.offsetX * 4, this.yCoord, this.zCoord - dir.offsetZ * 4, dir.getOpposite()); + this.tryProvide(worldObj, this.xCoord - dir.offsetX * 4, this.yCoord, this.zCoord - dir.offsetZ * 4, dir.getOpposite()); //check if reload necessary for any queues for(int i = 0; i < 12; i++) { diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineRadarNT.java b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineRadarNT.java index b53f86839..e4f255b8a 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineRadarNT.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineRadarNT.java @@ -32,7 +32,7 @@ import com.hbm.util.fauxpointtwelve.BlockPos; import com.hbm.util.fauxpointtwelve.DirPos; import com.hbm.world.WorldUtil; -import api.hbm.energy.IEnergyUser; +import api.hbm.energymk2.IEnergyReceiverMK2; import api.hbm.entity.IRadarDetectable; import api.hbm.entity.IRadarDetectableNT; import api.hbm.entity.IRadarDetectableNT.RadarScanParams; @@ -60,7 +60,7 @@ import net.minecraft.world.WorldServer; * Now with SmЯt™ lag-free entity detection! (patent pending) * @author hbm */ -public class TileEntityMachineRadarNT extends TileEntityMachineBase implements IEnergyUser, IGUIProvider, IConfigurableMachine, IControlReceiver { +public class TileEntityMachineRadarNT extends TileEntityMachineBase implements IEnergyReceiverMK2, IGUIProvider, IConfigurableMachine, IControlReceiver { public boolean scanMissiles = true; public boolean scanShells = true; diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineRadiolysis.java b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineRadiolysis.java index cc5210787..612cdabfd 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineRadiolysis.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineRadiolysis.java @@ -24,7 +24,7 @@ import com.hbm.util.RTGUtil; import com.hbm.util.Tuple.Pair; import com.hbm.util.fauxpointtwelve.DirPos; -import api.hbm.energy.IEnergyGenerator; +import api.hbm.energymk2.IEnergyProviderMK2; import api.hbm.fluid.IFluidStandardTransceiver; import api.hbm.tile.IInfoProviderEC; import cpw.mods.fml.relauncher.Side; @@ -39,7 +39,7 @@ import net.minecraft.util.AxisAlignedBB; import net.minecraft.world.World; import net.minecraftforge.common.util.ForgeDirection; -public class TileEntityMachineRadiolysis extends TileEntityMachineBase implements IEnergyGenerator, IFluidAcceptor, IFluidSource, IFluidContainer, IFluidStandardTransceiver, IGUIProvider, IInfoProviderEC { +public class TileEntityMachineRadiolysis extends TileEntityMachineBase implements IEnergyProviderMK2, IFluidAcceptor, IFluidSource, IFluidContainer, IFluidStandardTransceiver, IGUIProvider, IInfoProviderEC { public long power; public static final int maxPower = 1000000; @@ -144,7 +144,7 @@ public class TileEntityMachineRadiolysis extends TileEntityMachineBase implement } for(DirPos pos : getConPos()) { - this.sendPower(worldObj, pos.getX(), pos.getY(),pos.getZ(), pos.getDir()); + this.tryProvide(worldObj, pos.getX(), pos.getY(),pos.getZ(), pos.getDir()); this.trySubscribe(tanks[0].getTankType(), worldObj, pos.getX(), pos.getY(),pos.getZ(), pos.getDir()); if(tanks[1].getFill() > 0) this.sendFluid(tanks[1], worldObj, pos.getX(), pos.getY(),pos.getZ(), pos.getDir()); if(tanks[2].getFill() > 0) this.sendFluid(tanks[2], worldObj, pos.getX(), pos.getY(),pos.getZ(), pos.getDir()); diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineSPP.java b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineSPP.java index 9e1a58aa7..f659905d0 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineSPP.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineSPP.java @@ -5,12 +5,12 @@ import com.hbm.lib.Library; import com.hbm.tileentity.TileEntityLoadedBase; import com.hbm.util.CompatEnergyControl; -import api.hbm.energy.IEnergyGenerator; +import api.hbm.energymk2.IEnergyProviderMK2; import api.hbm.tile.IInfoProviderEC; import net.minecraft.init.Blocks; import net.minecraft.nbt.NBTTagCompound; -public class TileEntityMachineSPP extends TileEntityLoadedBase implements IEnergyGenerator, IInfoProviderEC { +public class TileEntityMachineSPP extends TileEntityLoadedBase implements IEnergyProviderMK2, IInfoProviderEC { public long power; public static final long maxPower = 100000; @@ -22,11 +22,11 @@ public class TileEntityMachineSPP extends TileEntityLoadedBase implements IEnerg if(!worldObj.isRemote) { - this.sendPower(worldObj, xCoord + 1, yCoord, zCoord, Library.POS_X); - this.sendPower(worldObj, xCoord - 1, yCoord, zCoord, Library.NEG_X); - this.sendPower(worldObj, xCoord, yCoord, zCoord + 1, Library.POS_Z); - this.sendPower(worldObj, xCoord, yCoord, zCoord - 1, Library.NEG_Z); - this.sendPower(worldObj, xCoord, yCoord - 1, zCoord, Library.NEG_Y); + this.tryProvide(worldObj, xCoord + 1, yCoord, zCoord, Library.POS_X); + this.tryProvide(worldObj, xCoord - 1, yCoord, zCoord, Library.NEG_X); + this.tryProvide(worldObj, xCoord, yCoord, zCoord + 1, Library.POS_Z); + this.tryProvide(worldObj, xCoord, yCoord, zCoord - 1, Library.NEG_Z); + this.tryProvide(worldObj, xCoord, yCoord - 1, zCoord, Library.NEG_Y); if(worldObj.getTotalWorldTime() % 20 == 0) gen = checkStructure() * 15; diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineSchrabidiumTransmutator.java b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineSchrabidiumTransmutator.java index 83b516c43..8693ef3c2 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineSchrabidiumTransmutator.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineSchrabidiumTransmutator.java @@ -12,8 +12,8 @@ import com.hbm.sound.AudioWrapper; import com.hbm.tileentity.IGUIProvider; import com.hbm.tileentity.TileEntityMachineBase; -import api.hbm.energy.IBatteryItem; -import api.hbm.energy.IEnergyUser; +import api.hbm.energymk2.IBatteryItem; +import api.hbm.energymk2.IEnergyReceiverMK2; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; import net.minecraft.client.gui.GuiScreen; @@ -24,7 +24,7 @@ import net.minecraft.nbt.NBTTagCompound; import net.minecraft.world.World; import net.minecraftforge.common.util.ForgeDirection; -public class TileEntityMachineSchrabidiumTransmutator extends TileEntityMachineBase implements IEnergyUser, IGUIProvider { +public class TileEntityMachineSchrabidiumTransmutator extends TileEntityMachineBase implements IEnergyReceiverMK2, IGUIProvider { public long power = 0; public int process = 0; diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineSeleniumEngine.java b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineSeleniumEngine.java index d366b287f..6a30be6fe 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineSeleniumEngine.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineSeleniumEngine.java @@ -1,47 +1,17 @@ package com.hbm.tileentity.machine; -import java.io.IOException; -import java.util.HashMap; - -import com.google.gson.JsonArray; -import com.google.gson.JsonObject; -import com.google.gson.stream.JsonWriter; -import com.hbm.interfaces.IFluidAcceptor; -import com.hbm.interfaces.IFluidContainer; import com.hbm.inventory.FluidContainerRegistry; -import com.hbm.inventory.container.ContainerMachineSelenium; -import com.hbm.inventory.fluid.FluidType; -import com.hbm.inventory.fluid.Fluids; import com.hbm.inventory.fluid.tank.FluidTank; -import com.hbm.inventory.fluid.trait.FT_Combustible; -import com.hbm.inventory.fluid.trait.FT_Combustible.FuelGrade; -import com.hbm.inventory.gui.GUIMachineSelenium; -import com.hbm.items.ModItems; -import com.hbm.lib.Library; -import com.hbm.packet.AuxElectricityPacket; -import com.hbm.packet.AuxGaugePacket; -import com.hbm.packet.PacketDispatcher; -import com.hbm.tileentity.IConfigurableMachine; -import com.hbm.tileentity.IGUIProvider; import com.hbm.tileentity.TileEntityLoadedBase; -import api.hbm.energy.IBatteryItem; -import api.hbm.energy.IEnergyGenerator; -import api.hbm.fluid.IFluidStandardReceiver; -import cpw.mods.fml.common.network.NetworkRegistry.TargetPoint; -import cpw.mods.fml.relauncher.Side; -import cpw.mods.fml.relauncher.SideOnly; -import net.minecraft.client.gui.GuiScreen; +import api.hbm.energymk2.IBatteryItem; import net.minecraft.entity.player.EntityPlayer; -import net.minecraft.inventory.Container; import net.minecraft.inventory.ISidedInventory; import net.minecraft.item.ItemStack; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.nbt.NBTTagList; -import net.minecraft.world.World; -import net.minecraftforge.common.util.ForgeDirection; -public class TileEntityMachineSeleniumEngine extends TileEntityLoadedBase implements ISidedInventory, IEnergyGenerator, IFluidContainer, IFluidAcceptor, IFluidStandardReceiver, IConfigurableMachine, IGUIProvider { +public class TileEntityMachineSeleniumEngine extends TileEntityLoadedBase implements ISidedInventory { private ItemStack slots[]; @@ -51,27 +21,11 @@ public class TileEntityMachineSeleniumEngine extends TileEntityLoadedBase implem public FluidTank tank; public int pistonCount = 0; - public static long maxPower = 250000; - public static int fluidCap = 16000; - public static double pistonExp = 1.0D; - public static boolean shutUp = false; - public static HashMap fuelEfficiency = new HashMap(); - static { - fuelEfficiency.put(FuelGrade.LOW, 0.75D); - fuelEfficiency.put(FuelGrade.MEDIUM, 0.5D); - fuelEfficiency.put(FuelGrade.HIGH, 0.25D); - fuelEfficiency.put(FuelGrade.AERO, 0.00D); - } - - private static final int[] slots_top = new int[] { 0 }; - private static final int[] slots_bottom = new int[] { 1, 2 }; - private static final int[] slots_side = new int[] { 2 }; private String customName; public TileEntityMachineSeleniumEngine() { slots = new ItemStack[14]; - tank = new FluidTank(Fluids.DIESEL, fluidCap, 0); } @Override @@ -211,225 +165,16 @@ public class TileEntityMachineSeleniumEngine extends TileEntityLoadedBase implem @Override public int[] getAccessibleSlotsFromSide(int p_94128_1_) { - return p_94128_1_ == 0 ? slots_bottom : (p_94128_1_ == 1 ? slots_top : slots_side); + return new int[0]; } @Override - public boolean canInsertItem(int i, ItemStack itemStack, int j) { - return this.isItemValidForSlot(i, itemStack); - } - - @Override - public boolean canExtractItem(int i, ItemStack itemStack, int j) { - if (i == 1) - if (itemStack.getItem() == ModItems.canister_empty || itemStack.getItem() == ModItems.tank_steel) - return true; - if (i == 2) - if (itemStack.getItem() instanceof IBatteryItem && ((IBatteryItem)itemStack.getItem()).getCharge(itemStack) == ((IBatteryItem)itemStack.getItem()).getMaxCharge()) - return true; - + public boolean canInsertItem(int p_102007_1_, ItemStack p_102007_2_, int p_102007_3_) { return false; } - public long getPowerScaled(long i) { - return (power * i) / powerCap; - } - @Override - public void updateEntity() { - - if (!worldObj.isRemote) { - - this.subscribeToAllAround(tank.getTankType(), this); - this.sendPower(worldObj, xCoord, yCoord - 1, zCoord, ForgeDirection.DOWN); - - pistonCount = countPistons(); - - //Tank Management - tank.setType(11, 12, slots); - tank.loadTank(9, 10, slots); - tank.updateTank(xCoord, yCoord, zCoord, worldObj.provider.dimensionId); - - FluidType type = tank.getTankType(); - if(type == Fluids.NITAN) - powerCap = maxPower * 10; - else - powerCap = maxPower; - - // Battery Item - power = Library.chargeItemsFromTE(slots, 13, power, powerCap); - - if(this.pistonCount > 2) - generate(); - - PacketDispatcher.wrapper.sendToAllAround(new AuxElectricityPacket(xCoord, yCoord, zCoord, power), new TargetPoint(worldObj.provider.dimensionId, xCoord, yCoord, zCoord, 50)); - PacketDispatcher.wrapper.sendToAllAround(new AuxGaugePacket(xCoord, yCoord, zCoord, pistonCount, 0), new TargetPoint(worldObj.provider.dimensionId, xCoord, yCoord, zCoord, 150)); - PacketDispatcher.wrapper.sendToAllAround(new AuxGaugePacket(xCoord, yCoord, zCoord, (int)powerCap, 1), new TargetPoint(worldObj.provider.dimensionId, xCoord, yCoord, zCoord, 50)); - } - } - - public int countPistons() { - int count = 0; - - for(int i = 0; i < 9; i++) { - if(slots[i] != null && slots[i].getItem() == ModItems.piston_selenium) - count++; - } - - return count; - } - - public boolean hasAcceptableFuel() { - return getHEFromFuel() > 0; - } - - public long getHEFromFuel() { - return getHEFromFuel(tank.getTankType()); - } - - public static long getHEFromFuel(FluidType type) { - - if(type.hasTrait(FT_Combustible.class)) { - FT_Combustible fuel = type.getTrait(FT_Combustible.class); - FuelGrade grade = fuel.getGrade(); - double efficiency = fuelEfficiency.containsKey(grade) ? fuelEfficiency.get(grade) : 0; - return (long) (fuel.getCombustionEnergy() / 1000L * efficiency); - } - - return 0; - } - - public void generate() { - if (hasAcceptableFuel()) { - if (tank.getFill() > 0) { - - if(!shutUp) { - if (soundCycle == 0) { - this.worldObj.playSoundEffect(this.xCoord, this.yCoord, this.zCoord, "fireworks.blast", this.getVolume(1.0F), 0.5F); - } - soundCycle++; - - if (soundCycle >= 3) - soundCycle = 0; - } - - tank.setFill(tank.getFill() - this.pistonCount); - if(tank.getFill() < 0) - tank.setFill(0); - - power += getHEFromFuel() * Math.pow(this.pistonCount, pistonExp); - - if(power > powerCap) - power = powerCap; - } - } - } - - @Override - public long getPower() { - return power; - } - - @Override - public long getMaxPower() { - return maxPower; - } - - @Override - public void setPower(long i) { - this.power = i; - } - - @Override - public void setFillForSync(int fill, int index) { - tank.setFill(fill); - } - - @Override - public void setTypeForSync(FluidType type, int index) { - tank.setTankType(type); - } - - @Override - public int getMaxFluidFill(FluidType type) { - return type == this.tank.getTankType() ? tank.getMaxFill() : 0; - } - - @Override - public int getFluidFill(FluidType type) { - return type == this.tank.getTankType() ? tank.getFill() : 0; - } - - @Override - public void setFluidFill(int i, FluidType type) { - if(type == tank.getTankType()) - tank.setFill(i); - } - - @Override - public boolean canConnect(ForgeDirection dir) { - return dir == ForgeDirection.DOWN; - } - - @Override - public String getConfigName() { - return "radialengine"; - } - - @Override - public void readIfPresent(JsonObject obj) { - maxPower = IConfigurableMachine.grab(obj, "L:powerCap", maxPower); - fluidCap = IConfigurableMachine.grab(obj, "I:fuelCap", fluidCap); - pistonExp = IConfigurableMachine.grab(obj, "D:pistonGenExponent", pistonExp); - - if(obj.has("D[:efficiency")) { - JsonArray array = obj.get("D[:efficiency").getAsJsonArray(); - for(FuelGrade grade : FuelGrade.values()) { - fuelEfficiency.put(grade, array.get(grade.ordinal()).getAsDouble()); - } - } - - shutUp = IConfigurableMachine.grab(obj, "B:shutUp", shutUp); - } - - @Override - public void writeConfig(JsonWriter writer) throws IOException { - writer.name("L:powerCap").value(maxPower); - writer.name("I:fuelCap").value(fluidCap); - writer.name("D:pistonGenExponent").value(pistonExp); - - String info = "Fuel grades in order: "; - for(FuelGrade grade : FuelGrade.values()) info += grade.name() + " "; - info = info.trim(); - writer.name("INFO").value(info); - - writer.name("D[:efficiency").beginArray().setIndent(""); - for(FuelGrade grade : FuelGrade.values()) { - double d = fuelEfficiency.containsKey(grade) ? fuelEfficiency.get(grade) : 0.0D; - writer.value(d); - } - writer.endArray().setIndent(" "); - writer.name("B:shutUp").value(shutUp); - } - - @Override - public FluidTank[] getAllTanks() { - return new FluidTank[] {tank}; - } - - @Override - public FluidTank[] getReceivingTanks() { - return new FluidTank[] {tank}; - } - - @Override - public Container provideContainer(int ID, EntityPlayer player, World world, int x, int y, int z) { - return new ContainerMachineSelenium(player.inventory, this); - } - - @Override - @SideOnly(Side.CLIENT) - public GuiScreen provideGUI(int ID, EntityPlayer player, World world, int x, int y, int z) { - return new GUIMachineSelenium(player.inventory, this); + public boolean canExtractItem(int p_102008_1_, ItemStack p_102008_2_, int p_102008_3_) { + return false; } } diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineShredder.java b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineShredder.java index ab6c81d37..9ac85cf5c 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineShredder.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineShredder.java @@ -10,8 +10,8 @@ import com.hbm.packet.PacketDispatcher; import com.hbm.tileentity.IGUIProvider; import com.hbm.tileentity.TileEntityLoadedBase; -import api.hbm.energy.IBatteryItem; -import api.hbm.energy.IEnergyUser; +import api.hbm.energymk2.IBatteryItem; +import api.hbm.energymk2.IEnergyReceiverMK2; import cpw.mods.fml.common.network.NetworkRegistry.TargetPoint; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; @@ -25,7 +25,7 @@ import net.minecraft.nbt.NBTTagList; import net.minecraft.world.World; import net.minecraftforge.common.util.ForgeDirection; -public class TileEntityMachineShredder extends TileEntityLoadedBase implements ISidedInventory, IEnergyUser, IGUIProvider { +public class TileEntityMachineShredder extends TileEntityLoadedBase implements ISidedInventory, IEnergyReceiverMK2, IGUIProvider { private ItemStack slots[]; diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineTeleporter.java b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineTeleporter.java index 9baaffd5f..0784cd130 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineTeleporter.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineTeleporter.java @@ -6,7 +6,7 @@ import java.util.List; import com.hbm.tileentity.INBTPacketReceiver; import com.hbm.tileentity.TileEntityLoadedBase; -import api.hbm.energy.IEnergyUser; +import api.hbm.energymk2.IEnergyReceiverMK2; import cpw.mods.fml.common.FMLCommonHandler; import cpw.mods.fml.relauncher.ReflectionHelper; import net.minecraft.entity.Entity; @@ -27,8 +27,9 @@ import net.minecraft.util.IntHashMap; import net.minecraft.util.MathHelper; import net.minecraft.world.WorldServer; import net.minecraft.world.chunk.IChunkProvider; +import net.minecraftforge.common.util.ForgeDirection; -public class TileEntityMachineTeleporter extends TileEntityLoadedBase implements IEnergyUser, INBTPacketReceiver { +public class TileEntityMachineTeleporter extends TileEntityLoadedBase implements IEnergyReceiverMK2, INBTPacketReceiver { public long power = 0; public int targetX = -1; @@ -42,7 +43,7 @@ public class TileEntityMachineTeleporter extends TileEntityLoadedBase implements public void updateEntity() { if(!this.worldObj.isRemote) { - this.updateStandardConnections(worldObj, xCoord, yCoord, zCoord); + for(ForgeDirection dir : ForgeDirection.VALID_DIRECTIONS) this.trySubscribe(worldObj, xCoord + dir.offsetX, yCoord + dir.offsetY, zCoord + dir.offsetZ, dir); if(this.targetY != -1) { List entities = this.worldObj.getEntitiesWithinAABB(Entity.class, AxisAlignedBB.getBoundingBox(this.xCoord + 0.25, this.yCoord, this.zCoord + 0.25, this.xCoord + 0.75, this.yCoord + 2, this.zCoord + 0.75)); diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineTurbine.java b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineTurbine.java index 543f471eb..9221bcb5d 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineTurbine.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineTurbine.java @@ -16,8 +16,8 @@ import com.hbm.tileentity.IGUIProvider; import com.hbm.tileentity.TileEntityLoadedBase; import com.hbm.util.CompatEnergyControl; -import api.hbm.energy.IBatteryItem; -import api.hbm.energy.IEnergyGenerator; +import api.hbm.energymk2.IBatteryItem; +import api.hbm.energymk2.IEnergyProviderMK2; import api.hbm.fluid.IFluidStandardTransceiver; import api.hbm.tile.IInfoProviderEC; import cpw.mods.fml.common.Optional; @@ -39,7 +39,7 @@ import net.minecraft.world.World; import net.minecraftforge.common.util.ForgeDirection; @Optional.InterfaceList({@Optional.Interface(iface = "li.cil.oc.api.network.SimpleComponent", modid = "OpenComputers")}) -public class TileEntityMachineTurbine extends TileEntityLoadedBase implements ISidedInventory, IFluidContainer, IEnergyGenerator, IFluidStandardTransceiver, IGUIProvider, SimpleComponent, IInfoProviderEC { +public class TileEntityMachineTurbine extends TileEntityLoadedBase implements ISidedInventory, IFluidContainer, IEnergyProviderMK2, IFluidStandardTransceiver, IGUIProvider, SimpleComponent, IInfoProviderEC { private ItemStack slots[]; @@ -239,7 +239,7 @@ public class TileEntityMachineTurbine extends TileEntityLoadedBase implements IS this.subscribeToAllAround(tanks[0].getTankType(), this); for(ForgeDirection dir : ForgeDirection.VALID_DIRECTIONS) - this.sendPower(worldObj, xCoord + dir.offsetX, yCoord + dir.offsetY, zCoord + dir.offsetZ, dir); + this.tryProvide(worldObj, xCoord + dir.offsetX, yCoord + dir.offsetY, zCoord + dir.offsetZ, dir); tanks[0].setType(0, 1, slots); tanks[0].loadTank(2, 3, slots); diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineTurbineGas.java b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineTurbineGas.java index 6e784e6e7..28895add2 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineTurbineGas.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineTurbineGas.java @@ -21,7 +21,7 @@ import com.hbm.tileentity.IGUIProvider; import com.hbm.tileentity.TileEntityMachineBase; import com.hbm.util.CompatEnergyControl; -import api.hbm.energy.IEnergyGenerator; +import api.hbm.energymk2.IEnergyProviderMK2; import api.hbm.fluid.IFluidStandardTransceiver; import api.hbm.tile.IInfoProviderEC; import cpw.mods.fml.common.Optional; @@ -41,7 +41,7 @@ import net.minecraft.world.World; import net.minecraftforge.common.util.ForgeDirection; @Optional.InterfaceList({@Optional.Interface(iface = "li.cil.oc.api.network.SimpleComponent", modid = "OpenComputers")}) -public class TileEntityMachineTurbineGas extends TileEntityMachineBase implements IFluidStandardTransceiver, IEnergyGenerator, IControlReceiver, IGUIProvider, SimpleComponent, IInfoProviderEC { +public class TileEntityMachineTurbineGas extends TileEntityMachineBase implements IFluidStandardTransceiver, IEnergyProviderMK2, IControlReceiver, IGUIProvider, SimpleComponent, IInfoProviderEC { public long power; public static final long maxPower = 1000000L; @@ -136,7 +136,7 @@ public class TileEntityMachineTurbineGas extends TileEntityMachineBase implement //do net/battery deductions first... power = Library.chargeItemsFromTE(slots, 0, power, maxPower); - this.sendPower(worldObj, xCoord - dir.offsetZ * 5, yCoord + 1, zCoord + dir.offsetX * 5, rot); //sends out power + this.tryProvide(worldObj, xCoord - dir.offsetZ * 5, yCoord + 1, zCoord + dir.offsetX * 5, rot); //sends out power //...and then cap it. Prevents potential future cases where power would be limited due to the fuel being too strong and the buffer too small. if(this.power > this.maxPower) diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineTurbofan.java b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineTurbofan.java index a1b83fb45..d5155190d 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineTurbofan.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineTurbofan.java @@ -32,7 +32,7 @@ import com.hbm.util.CompatEnergyControl; import com.hbm.util.I18nUtil; import com.hbm.util.fauxpointtwelve.DirPos; -import api.hbm.energy.IEnergyGenerator; +import api.hbm.energymk2.IEnergyProviderMK2; import api.hbm.fluid.IFluidStandardTransceiver; import api.hbm.tile.IInfoProviderEC; import cpw.mods.fml.common.network.NetworkRegistry.TargetPoint; @@ -51,7 +51,7 @@ import net.minecraft.util.EnumChatFormatting; import net.minecraft.world.World; import net.minecraftforge.common.util.ForgeDirection; -public class TileEntityMachineTurbofan extends TileEntityMachinePolluting implements IEnergyGenerator, IFluidContainer, IFluidAcceptor, IFluidStandardTransceiver, IGUIProvider, IUpgradeInfoProvider, IInfoProviderEC { +public class TileEntityMachineTurbofan extends TileEntityMachinePolluting implements IEnergyProviderMK2, IFluidContainer, IFluidAcceptor, IFluidStandardTransceiver, IGUIProvider, IUpgradeInfoProvider, IInfoProviderEC { public long power; public static final long maxPower = 1_000_000; @@ -182,7 +182,7 @@ public class TileEntityMachineTurbofan extends TileEntityMachinePolluting implem power = Library.chargeItemsFromTE(slots, 3, power, power); for(DirPos pos : getConPos()) { - this.sendPower(worldObj, pos.getX(), pos.getY(), pos.getZ(), pos.getDir()); + this.tryProvide(worldObj, pos.getX(), pos.getY(), pos.getZ(), pos.getDir()); this.trySubscribe(tank.getTankType(), worldObj, pos.getX(), pos.getY(), pos.getZ(), pos.getDir()); if(this.blood.getFill() > 0) this.sendFluid(blood, worldObj, pos.getX(), pos.getY(), pos.getZ(), pos.getDir()); this.sendSmoke(pos.getX(), pos.getY(), pos.getZ(), pos.getDir()); diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineWoodBurner.java b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineWoodBurner.java index 6f4bb62dc..72306abf9 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineWoodBurner.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineWoodBurner.java @@ -19,7 +19,7 @@ import com.hbm.tileentity.TileEntityMachineBase; import com.hbm.util.CompatEnergyControl; import com.hbm.util.fauxpointtwelve.DirPos; -import api.hbm.energy.IEnergyGenerator; +import api.hbm.energymk2.IEnergyProviderMK2; import api.hbm.fluid.IFluidStandardReceiver; import api.hbm.tile.IInfoProviderEC; import cpw.mods.fml.relauncher.Side; @@ -33,7 +33,7 @@ import net.minecraft.util.AxisAlignedBB; import net.minecraft.world.World; import net.minecraftforge.common.util.ForgeDirection; -public class TileEntityMachineWoodBurner extends TileEntityMachineBase implements IFluidStandardReceiver, IControlReceiver, IEnergyGenerator, IGUIProvider, IInfoProviderEC { +public class TileEntityMachineWoodBurner extends TileEntityMachineBase implements IFluidStandardReceiver, IControlReceiver, IEnergyProviderMK2, IGUIProvider, IInfoProviderEC { public long power; public static final long maxPower = 100_000; @@ -73,7 +73,7 @@ public class TileEntityMachineWoodBurner extends TileEntityMachineBase implement this.power = Library.chargeItemsFromTE(slots, 5, power, maxPower); for(DirPos pos : getConPos()) { - if(power > 0) this.sendPower(worldObj, pos.getX(), pos.getY(), pos.getZ(), pos.getDir()); + if(power > 0) this.tryProvide(worldObj, pos.getX(), pos.getY(), pos.getZ(), pos.getDir()); if(worldObj.getTotalWorldTime() % 20 == 0) this.trySubscribe(tank.getTankType(), worldObj, pos.getX(), pos.getY(), pos.getZ(), pos.getDir()); } diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityMicrowave.java b/src/main/java/com/hbm/tileentity/machine/TileEntityMicrowave.java index baf799651..781adaa14 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityMicrowave.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityMicrowave.java @@ -6,7 +6,7 @@ import com.hbm.lib.Library; import com.hbm.tileentity.IGUIProvider; import com.hbm.tileentity.TileEntityMachineBase; -import api.hbm.energy.IEnergyUser; +import api.hbm.energymk2.IEnergyReceiverMK2; import cpw.mods.fml.common.Optional; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; @@ -23,9 +23,10 @@ import net.minecraft.nbt.NBTTagCompound; import net.minecraft.tileentity.TileEntity; import net.minecraft.util.AxisAlignedBB; import net.minecraft.world.World; +import net.minecraftforge.common.util.ForgeDirection; @Optional.InterfaceList({@Optional.Interface(iface = "li.cil.oc.api.network.SimpleComponent", modid = "OpenComputers")}) -public class TileEntityMicrowave extends TileEntityMachineBase implements IEnergyUser, IGUIProvider, SimpleComponent { +public class TileEntityMicrowave extends TileEntityMachineBase implements IEnergyReceiverMK2, IGUIProvider, SimpleComponent { public long power; public static final long maxPower = 50000; @@ -48,8 +49,8 @@ public class TileEntityMicrowave extends TileEntityMachineBase implements IEnerg public void updateEntity() { if(!worldObj.isRemote) { - - this.updateStandardConnections(worldObj, xCoord, yCoord, zCoord); + + for(ForgeDirection dir : ForgeDirection.VALID_DIRECTIONS) this.trySubscribe(worldObj, xCoord + dir.offsetX, yCoord + dir.offsetY, zCoord + dir.offsetZ, dir); this.power = Library.chargeTEFromItems(slots, 2, power, maxPower); diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityRadiobox.java b/src/main/java/com/hbm/tileentity/machine/TileEntityRadiobox.java index 8a513a99b..7b4751c96 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityRadiobox.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityRadiobox.java @@ -9,7 +9,7 @@ import com.hbm.lib.ModDamageSource; import com.hbm.tileentity.IGUIProvider; import com.hbm.tileentity.TileEntityLoadedBase; -import api.hbm.energy.IEnergyUser; +import api.hbm.energymk2.IEnergyReceiverMK2; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; import net.minecraft.client.gui.GuiScreen; @@ -22,7 +22,7 @@ import net.minecraft.util.AxisAlignedBB; import net.minecraft.world.World; import net.minecraftforge.common.util.ForgeDirection; -public class TileEntityRadiobox extends TileEntityLoadedBase implements IEnergyUser, IGUIProvider { +public class TileEntityRadiobox extends TileEntityLoadedBase implements IEnergyReceiverMK2, IGUIProvider { long power; public static long maxPower = 500000; diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntitySoyuzLauncher.java b/src/main/java/com/hbm/tileentity/machine/TileEntitySoyuzLauncher.java index 01a399e72..d13fea7ff 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntitySoyuzLauncher.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntitySoyuzLauncher.java @@ -20,7 +20,7 @@ import com.hbm.tileentity.IGUIProvider; import com.hbm.tileentity.TileEntityMachineBase; import com.hbm.util.fauxpointtwelve.DirPos; -import api.hbm.energy.IEnergyUser; +import api.hbm.energymk2.IEnergyReceiverMK2; import api.hbm.fluid.IFluidStandardReceiver; import api.hbm.item.IDesignatorItem; import cpw.mods.fml.relauncher.Side; @@ -38,7 +38,7 @@ import net.minecraft.util.Vec3; import net.minecraft.world.World; import net.minecraftforge.common.util.ForgeDirection; -public class TileEntitySoyuzLauncher extends TileEntityMachineBase implements ISidedInventory, IEnergyUser, IFluidContainer, IFluidAcceptor, IFluidStandardReceiver, IGUIProvider { +public class TileEntitySoyuzLauncher extends TileEntityMachineBase implements ISidedInventory, IEnergyReceiverMK2, IFluidContainer, IFluidAcceptor, IFluidStandardReceiver, IGUIProvider { public long power; public static final long maxPower = 1000000; diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntitySteamEngine.java b/src/main/java/com/hbm/tileentity/machine/TileEntitySteamEngine.java index 3c0f29220..a09c5747e 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntitySteamEngine.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntitySteamEngine.java @@ -1,26 +1,20 @@ package com.hbm.tileentity.machine; import java.io.IOException; -import java.util.ArrayList; -import java.util.List; import com.google.gson.JsonObject; import com.google.gson.stream.JsonWriter; import com.hbm.blocks.BlockDummyable; -import com.hbm.interfaces.IFluidAcceptor; -import com.hbm.interfaces.IFluidSource; -import com.hbm.inventory.fluid.FluidType; import com.hbm.inventory.fluid.Fluids; import com.hbm.inventory.fluid.tank.FluidTank; import com.hbm.inventory.fluid.trait.FT_Coolable; import com.hbm.inventory.fluid.trait.FT_Coolable.CoolingType; -import com.hbm.lib.Library; import com.hbm.tileentity.IConfigurableMachine; import com.hbm.tileentity.INBTPacketReceiver; import com.hbm.tileentity.TileEntityLoadedBase; import com.hbm.util.fauxpointtwelve.DirPos; -import api.hbm.energy.IEnergyGenerator; +import api.hbm.energymk2.IEnergyProviderMK2; import api.hbm.fluid.IFluidStandardTransceiver; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; @@ -30,14 +24,13 @@ import net.minecraft.util.AxisAlignedBB; import net.minecraft.util.MathHelper; import net.minecraftforge.common.util.ForgeDirection; -public class TileEntitySteamEngine extends TileEntityLoadedBase implements IFluidAcceptor, IFluidSource, IEnergyGenerator, IFluidStandardTransceiver, INBTPacketReceiver, IConfigurableMachine { +public class TileEntitySteamEngine extends TileEntityLoadedBase implements IEnergyProviderMK2, IFluidStandardTransceiver, INBTPacketReceiver, IConfigurableMachine { public long powerBuffer; public float rotor; public float lastRotor; private float syncRotor; - public List list2 = new ArrayList(); public FluidTank[] tanks; private int turnProgress; @@ -51,8 +44,8 @@ public class TileEntitySteamEngine extends TileEntityLoadedBase implements IFlui public TileEntitySteamEngine() { tanks = new FluidTank[2]; - tanks[0] = new FluidTank(Fluids.STEAM, steamCap, 0); - tanks[1] = new FluidTank(Fluids.SPENTSTEAM, ldsCap, 1); + tanks[0] = new FluidTank(Fluids.STEAM, steamCap); + tanks[1] = new FluidTank(Fluids.SPENTSTEAM, ldsCap); } @Override @@ -117,12 +110,10 @@ public class TileEntitySteamEngine extends TileEntityLoadedBase implements IFlui tanks[1].writeToNBT(data, "w"); for(DirPos pos : getConPos()) { - if(this.powerBuffer > 0) - this.sendPower(worldObj, pos.getX(), pos.getY(), pos.getZ(), pos.getDir()); + if(this.powerBuffer > 0) this.tryProvide(worldObj, pos.getX(), pos.getY(), pos.getZ(), pos.getDir()); this.trySubscribe(tanks[0].getTankType(), worldObj, pos.getX(), pos.getY(), pos.getZ(), pos.getDir()); this.sendFluid(tanks[1], worldObj, pos.getX(), pos.getY(), pos.getZ(), pos.getDir()); } - if(tanks[1].getFill() > 0) fillFluidInit(tanks[1].getTankType()); INBTPacketReceiver.networkPack(this, data, 150); } else { @@ -168,69 +159,6 @@ public class TileEntitySteamEngine extends TileEntityLoadedBase implements IFlui tanks[0].writeToNBT(nbt, "s"); tanks[1].writeToNBT(nbt, "w"); } - - @Override - public void fillFluidInit(FluidType type) { - for(DirPos pos : getConPos()) fillFluid(pos.getX(), pos.getY(), pos.getZ(), getTact(), type); - } - - @Override - public void fillFluid(int x, int y, int z, boolean newTact, FluidType type) { - Library.transmitFluid(x, y, z, newTact, this, worldObj, type); - } - - @Override - public boolean getTact() { - return worldObj.getTotalWorldTime() % 2 == 0; - } - - @Override - public void setFluidFill(int i, FluidType type) { - if(type == tanks[0].getTankType()) - tanks[0].setFill(i); - else if(type == tanks[1].getTankType()) - tanks[1].setFill(i); - } - - @Override - public int getFluidFill(FluidType type) { - if(type == tanks[0].getTankType()) - return tanks[0].getFill(); - else if(type == tanks[1].getTankType()) - return tanks[1].getFill(); - - return 0; - } - - @Override - public int getMaxFluidFill(FluidType type) { - if(type == tanks[0].getTankType()) - return tanks[0].getMaxFill(); - - return 0; - } - - @Override - public void setFillForSync(int fill, int index) { - if(index < 2 && tanks[index] != null) - tanks[index].setFill(fill); - } - - @Override - public void setTypeForSync(FluidType type, int index) { - if(index < 2 && tanks[index] != null) - tanks[index].setTankType(type); - } - - @Override - public List getFluidList(FluidType type) { - return list2; - } - - @Override - public void clearFluidList(FluidType type) { - list2.clear(); - } @Override public AxisAlignedBB getRenderBoundingBox() { diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityStirling.java b/src/main/java/com/hbm/tileentity/machine/TileEntityStirling.java index fc2560845..d59a5e933 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityStirling.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityStirling.java @@ -13,7 +13,7 @@ import com.hbm.tileentity.INBTPacketReceiver; import com.hbm.tileentity.TileEntityLoadedBase; import com.hbm.util.fauxpointtwelve.DirPos; -import api.hbm.energy.IEnergyGenerator; +import api.hbm.energymk2.IEnergyProviderMK2; import api.hbm.tile.IHeatSource; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; @@ -22,7 +22,7 @@ import net.minecraft.tileentity.TileEntity; import net.minecraft.util.AxisAlignedBB; import net.minecraftforge.common.util.ForgeDirection; -public class TileEntityStirling extends TileEntityLoadedBase implements INBTPacketReceiver, IEnergyGenerator, IConfigurableMachine { +public class TileEntityStirling extends TileEntityLoadedBase implements INBTPacketReceiver, IEnergyProviderMK2, IConfigurableMachine { public long powerBuffer; public int heat; @@ -46,6 +46,7 @@ public class TileEntityStirling extends TileEntityLoadedBase implements INBTPack if(!worldObj.isRemote) { if(hasCog) { + this.powerBuffer = 0; tryPullHeat(); this.powerBuffer = (long) (this.heat * (this.isCreative() ? 1 : this.efficiency)); @@ -95,9 +96,8 @@ public class TileEntityStirling extends TileEntityLoadedBase implements INBTPack if(hasCog) { for(DirPos pos : getConPos()) { - this.sendPower(worldObj, pos.getX(), pos.getY(), pos.getZ(), pos.getDir()); + this.tryProvide(worldObj, pos.getX(), pos.getY(), pos.getZ(), pos.getDir()); } - this.powerBuffer = 0; } else { if(this.powerBuffer > 0) diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityTesla.java b/src/main/java/com/hbm/tileentity/machine/TileEntityTesla.java index 664327e1f..ecdb619a0 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityTesla.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityTesla.java @@ -12,7 +12,7 @@ import com.hbm.lib.ModDamageSource; import com.hbm.tileentity.TileEntityMachineBase; import com.hbm.util.ArmorUtil; -import api.hbm.energy.IEnergyUser; +import api.hbm.energymk2.IEnergyReceiverMK2; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; import net.minecraft.entity.Entity; @@ -28,7 +28,7 @@ import net.minecraft.util.Vec3; import net.minecraft.world.World; import net.minecraftforge.common.util.ForgeDirection; -public class TileEntityTesla extends TileEntityMachineBase implements IEnergyUser { +public class TileEntityTesla extends TileEntityMachineBase implements IEnergyReceiverMK2 { public long power; public static final long maxPower = 100000; diff --git a/src/main/java/com/hbm/tileentity/machine/oil/TileEntityMachineCatalyticReformer.java b/src/main/java/com/hbm/tileentity/machine/oil/TileEntityMachineCatalyticReformer.java index 66f4b6eab..3ef9daf56 100644 --- a/src/main/java/com/hbm/tileentity/machine/oil/TileEntityMachineCatalyticReformer.java +++ b/src/main/java/com/hbm/tileentity/machine/oil/TileEntityMachineCatalyticReformer.java @@ -16,7 +16,7 @@ import com.hbm.tileentity.TileEntityMachineBase; import com.hbm.util.Tuple.Triplet; import com.hbm.util.fauxpointtwelve.DirPos; -import api.hbm.energy.IEnergyUser; +import api.hbm.energymk2.IEnergyReceiverMK2; import api.hbm.fluid.IFluidStandardTransceiver; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; @@ -28,7 +28,7 @@ import net.minecraft.util.AxisAlignedBB; import net.minecraft.world.World; import net.minecraftforge.common.util.ForgeDirection; -public class TileEntityMachineCatalyticReformer extends TileEntityMachineBase implements IEnergyUser, IFluidStandardTransceiver, IPersistentNBT, IGUIProvider { +public class TileEntityMachineCatalyticReformer extends TileEntityMachineBase implements IEnergyReceiverMK2, IFluidStandardTransceiver, IPersistentNBT, IGUIProvider { public long power; public static final long maxPower = 1_000_000; diff --git a/src/main/java/com/hbm/tileentity/machine/oil/TileEntityMachineGasFlare.java b/src/main/java/com/hbm/tileentity/machine/oil/TileEntityMachineGasFlare.java index 784c7d158..e8f5928f0 100644 --- a/src/main/java/com/hbm/tileentity/machine/oil/TileEntityMachineGasFlare.java +++ b/src/main/java/com/hbm/tileentity/machine/oil/TileEntityMachineGasFlare.java @@ -28,7 +28,7 @@ import com.hbm.util.I18nUtil; import com.hbm.util.ParticleUtil; import com.hbm.util.fauxpointtwelve.DirPos; -import api.hbm.energy.IEnergyGenerator; +import api.hbm.energymk2.IEnergyProviderMK2; import api.hbm.fluid.IFluidStandardReceiver; import api.hbm.tile.IInfoProviderEC; import cpw.mods.fml.relauncher.Side; @@ -44,7 +44,7 @@ import net.minecraft.util.DamageSource; import net.minecraft.util.EnumChatFormatting; import net.minecraft.world.World; -public class TileEntityMachineGasFlare extends TileEntityMachineBase implements IEnergyGenerator, IFluidContainer, IFluidAcceptor, IFluidStandardReceiver, IControlReceiver, IGUIProvider, IUpgradeInfoProvider, IInfoProviderEC { +public class TileEntityMachineGasFlare extends TileEntityMachineBase implements IEnergyProviderMK2, IFluidContainer, IFluidAcceptor, IFluidStandardReceiver, IControlReceiver, IGUIProvider, IUpgradeInfoProvider, IInfoProviderEC { public long power; public static final long maxPower = 100000; @@ -107,7 +107,7 @@ public class TileEntityMachineGasFlare extends TileEntityMachineBase implements this.output = 0; for(DirPos pos : getConPos()) { - this.sendPower(worldObj, pos.getX(), pos.getY(), pos.getZ(), pos.getDir()); + this.tryProvide(worldObj, pos.getX(), pos.getY(), pos.getZ(), pos.getDir()); this.trySubscribe(tank.getTankType(), worldObj, pos.getX(), pos.getY(), pos.getZ(), pos.getDir()); } diff --git a/src/main/java/com/hbm/tileentity/machine/oil/TileEntityMachineHydrotreater.java b/src/main/java/com/hbm/tileentity/machine/oil/TileEntityMachineHydrotreater.java index 3aa9141de..9bffbf38b 100644 --- a/src/main/java/com/hbm/tileentity/machine/oil/TileEntityMachineHydrotreater.java +++ b/src/main/java/com/hbm/tileentity/machine/oil/TileEntityMachineHydrotreater.java @@ -15,7 +15,7 @@ import com.hbm.tileentity.TileEntityMachineBase; import com.hbm.util.Tuple.Triplet; import com.hbm.util.fauxpointtwelve.DirPos; -import api.hbm.energy.IEnergyUser; +import api.hbm.energymk2.IEnergyReceiverMK2; import api.hbm.fluid.IFluidStandardTransceiver; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; @@ -28,7 +28,7 @@ import net.minecraft.util.AxisAlignedBB; import net.minecraft.world.World; import net.minecraftforge.common.util.ForgeDirection; -public class TileEntityMachineHydrotreater extends TileEntityMachineBase implements IEnergyUser, IFluidStandardTransceiver, IPersistentNBT, IGUIProvider { +public class TileEntityMachineHydrotreater extends TileEntityMachineBase implements IEnergyReceiverMK2, IFluidStandardTransceiver, IPersistentNBT, IGUIProvider { public long power; public static final long maxPower = 1_000_000; diff --git a/src/main/java/com/hbm/tileentity/machine/oil/TileEntityMachineLiquefactor.java b/src/main/java/com/hbm/tileentity/machine/oil/TileEntityMachineLiquefactor.java index f02c1f4b4..531bebb18 100644 --- a/src/main/java/com/hbm/tileentity/machine/oil/TileEntityMachineLiquefactor.java +++ b/src/main/java/com/hbm/tileentity/machine/oil/TileEntityMachineLiquefactor.java @@ -23,7 +23,7 @@ import com.hbm.util.CompatEnergyControl; import com.hbm.util.I18nUtil; import com.hbm.util.fauxpointtwelve.DirPos; -import api.hbm.energy.IEnergyUser; +import api.hbm.energymk2.IEnergyReceiverMK2; import api.hbm.fluid.IFluidStandardSender; import api.hbm.tile.IInfoProviderEC; import cpw.mods.fml.relauncher.Side; @@ -37,7 +37,7 @@ import net.minecraft.util.AxisAlignedBB; import net.minecraft.util.EnumChatFormatting; import net.minecraft.world.World; -public class TileEntityMachineLiquefactor extends TileEntityMachineBase implements IEnergyUser, IFluidSource, IFluidStandardSender, IGUIProvider, IUpgradeInfoProvider, IInfoProviderEC { +public class TileEntityMachineLiquefactor extends TileEntityMachineBase implements IEnergyReceiverMK2, IFluidSource, IFluidStandardSender, IGUIProvider, IUpgradeInfoProvider, IInfoProviderEC { public long power; public static final long maxPower = 100000; diff --git a/src/main/java/com/hbm/tileentity/machine/oil/TileEntityMachineRefinery.java b/src/main/java/com/hbm/tileentity/machine/oil/TileEntityMachineRefinery.java index 95ec386e1..65bf61681 100644 --- a/src/main/java/com/hbm/tileentity/machine/oil/TileEntityMachineRefinery.java +++ b/src/main/java/com/hbm/tileentity/machine/oil/TileEntityMachineRefinery.java @@ -33,7 +33,7 @@ import com.hbm.util.ParticleUtil; import com.hbm.util.Tuple.Quintet; import com.hbm.util.fauxpointtwelve.DirPos; -import api.hbm.energy.IEnergyUser; +import api.hbm.energymk2.IEnergyReceiverMK2; import api.hbm.fluid.IFluidStandardTransceiver; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; @@ -49,7 +49,7 @@ import net.minecraft.world.Explosion; import net.minecraft.world.World; import net.minecraftforge.common.util.ForgeDirection; -public class TileEntityMachineRefinery extends TileEntityMachineBase implements IEnergyUser, IOverpressurable, IPersistentNBT, IRepairable, IFluidStandardTransceiver, IGUIProvider { +public class TileEntityMachineRefinery extends TileEntityMachineBase implements IEnergyReceiverMK2, IOverpressurable, IPersistentNBT, IRepairable, IFluidStandardTransceiver, IGUIProvider { public long power = 0; public int sulfur = 0; diff --git a/src/main/java/com/hbm/tileentity/machine/oil/TileEntityMachineSolidifier.java b/src/main/java/com/hbm/tileentity/machine/oil/TileEntityMachineSolidifier.java index cf7cb6319..ae595e10d 100644 --- a/src/main/java/com/hbm/tileentity/machine/oil/TileEntityMachineSolidifier.java +++ b/src/main/java/com/hbm/tileentity/machine/oil/TileEntityMachineSolidifier.java @@ -21,7 +21,7 @@ import com.hbm.util.I18nUtil; import com.hbm.util.Tuple.Pair; import com.hbm.util.fauxpointtwelve.DirPos; -import api.hbm.energy.IEnergyUser; +import api.hbm.energymk2.IEnergyReceiverMK2; import api.hbm.fluid.IFluidStandardReceiver; import api.hbm.tile.IInfoProviderEC; import cpw.mods.fml.relauncher.Side; @@ -35,7 +35,7 @@ import net.minecraft.util.AxisAlignedBB; import net.minecraft.util.EnumChatFormatting; import net.minecraft.world.World; -public class TileEntityMachineSolidifier extends TileEntityMachineBase implements IEnergyUser, IFluidAcceptor, IFluidStandardReceiver, IGUIProvider, IUpgradeInfoProvider, IInfoProviderEC { +public class TileEntityMachineSolidifier extends TileEntityMachineBase implements IEnergyReceiverMK2, IFluidAcceptor, IFluidStandardReceiver, IGUIProvider, IUpgradeInfoProvider, IInfoProviderEC { public long power; public static final long maxPower = 100000; diff --git a/src/main/java/com/hbm/tileentity/machine/oil/TileEntityMachineVacuumDistill.java b/src/main/java/com/hbm/tileentity/machine/oil/TileEntityMachineVacuumDistill.java index ea3ec152e..037982ffd 100644 --- a/src/main/java/com/hbm/tileentity/machine/oil/TileEntityMachineVacuumDistill.java +++ b/src/main/java/com/hbm/tileentity/machine/oil/TileEntityMachineVacuumDistill.java @@ -16,7 +16,7 @@ import com.hbm.tileentity.TileEntityMachineBase; import com.hbm.util.Tuple.Quartet; import com.hbm.util.fauxpointtwelve.DirPos; -import api.hbm.energy.IEnergyUser; +import api.hbm.energymk2.IEnergyReceiverMK2; import api.hbm.fluid.IFluidStandardTransceiver; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; @@ -28,7 +28,7 @@ import net.minecraft.util.AxisAlignedBB; import net.minecraft.world.World; import net.minecraftforge.common.util.ForgeDirection; -public class TileEntityMachineVacuumDistill extends TileEntityMachineBase implements IEnergyUser, IFluidStandardTransceiver, IPersistentNBT, IGUIProvider { +public class TileEntityMachineVacuumDistill extends TileEntityMachineBase implements IEnergyReceiverMK2, IFluidStandardTransceiver, IPersistentNBT, IGUIProvider { public long power; public static final long maxPower = 1_000_000; diff --git a/src/main/java/com/hbm/tileentity/machine/oil/TileEntityOilDrillBase.java b/src/main/java/com/hbm/tileentity/machine/oil/TileEntityOilDrillBase.java index 940cb14d5..b61115d65 100644 --- a/src/main/java/com/hbm/tileentity/machine/oil/TileEntityOilDrillBase.java +++ b/src/main/java/com/hbm/tileentity/machine/oil/TileEntityOilDrillBase.java @@ -24,7 +24,7 @@ import com.hbm.util.Tuple; import com.hbm.util.Tuple.Triplet; import com.hbm.util.fauxpointtwelve.DirPos; -import api.hbm.energy.IEnergyUser; +import api.hbm.energymk2.IEnergyReceiverMK2; import api.hbm.fluid.IFluidStandardTransceiver; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; @@ -35,7 +35,7 @@ import net.minecraft.tileentity.TileEntity; import net.minecraft.util.AxisAlignedBB; import net.minecraftforge.common.util.ForgeDirection; -public abstract class TileEntityOilDrillBase extends TileEntityMachineBase implements IEnergyUser, IFluidSource, IFluidStandardTransceiver, IConfigurableMachine, IPersistentNBT, IGUIProvider, IUpgradeInfoProvider { +public abstract class TileEntityOilDrillBase extends TileEntityMachineBase implements IEnergyReceiverMK2, IFluidSource, IFluidStandardTransceiver, IConfigurableMachine, IPersistentNBT, IGUIProvider, IUpgradeInfoProvider { public int indicator = 0; diff --git a/src/main/java/com/hbm/tileentity/machine/storage/TileEntityMachineBattery.java b/src/main/java/com/hbm/tileentity/machine/storage/TileEntityMachineBattery.java index 21b8f7825..84e40e47b 100644 --- a/src/main/java/com/hbm/tileentity/machine/storage/TileEntityMachineBattery.java +++ b/src/main/java/com/hbm/tileentity/machine/storage/TileEntityMachineBattery.java @@ -1,10 +1,14 @@ package com.hbm.tileentity.machine.storage; -import api.hbm.energy.*; +import api.hbm.energymk2.IBatteryItem; +import api.hbm.energymk2.IEnergyConductorMK2; +import api.hbm.energymk2.IEnergyProviderMK2; +import api.hbm.energymk2.IEnergyReceiverMK2; +import api.hbm.energymk2.Nodespace; +import api.hbm.energymk2.Nodespace.PowerNode; import api.hbm.tile.IInfoProviderEC; import com.hbm.blocks.machine.MachineBattery; -import com.hbm.config.GeneralConfig; import com.hbm.inventory.container.ContainerMachineBattery; import com.hbm.inventory.gui.GUIMachineBattery; import com.hbm.lib.Library; @@ -25,24 +29,19 @@ import net.minecraft.entity.player.EntityPlayer; import net.minecraft.inventory.Container; import net.minecraft.item.ItemStack; import net.minecraft.nbt.NBTTagCompound; -import net.minecraft.tileentity.TileEntity; import net.minecraft.util.MathHelper; import net.minecraft.world.World; import net.minecraftforge.common.util.ForgeDirection; -import java.util.ArrayList; -import java.util.HashSet; -import java.util.List; -import java.util.Set; - @Optional.InterfaceList({@Optional.Interface(iface = "li.cil.oc.api.network.SimpleComponent", modid = "opencomputers")}) -public class TileEntityMachineBattery extends TileEntityMachineBase implements IEnergyUser, IPersistentNBT, SimpleComponent, IGUIProvider, IInfoProviderEC { +public class TileEntityMachineBattery extends TileEntityMachineBase implements IEnergyConductorMK2, IEnergyProviderMK2, IEnergyReceiverMK2, IPersistentNBT, SimpleComponent, IGUIProvider, IInfoProviderEC { public long[] log = new long[20]; public long delta = 0; public long power = 0; public long prevPowerState = 0; - public int pingPongTicks = 0; + + protected PowerNode node; //0: input only //1: buffer @@ -95,8 +94,7 @@ public class TileEntityMachineBattery extends TileEntityMachineBase implements I switch(i) { case 0: case 1: - if(stack.getItem() instanceof IBatteryItem) - return true; + if(stack.getItem() instanceof IBatteryItem) return true; break; } @@ -165,19 +163,43 @@ public class TileEntityMachineBattery extends TileEntityMachineBase implements I if(!worldObj.isRemote && worldObj.getBlock(xCoord, yCoord, zCoord) instanceof MachineBattery) { + if(priority == null || priority.ordinal() == 0 || priority.ordinal() == 4) { + priority = ConnectionPriority.LOW; + } + + int mode = this.getRelevantMode(false); + + if(this.node == null || this.node.expired) { + + this.node = Nodespace.getNode(worldObj, xCoord, yCoord, zCoord); + + if(this.node == null || this.node.expired) { + this.node = this.createNode(); + Nodespace.createNode(worldObj, this.node); + } + } + long prevPower = this.power; power = Library.chargeItemsFromTE(slots, 1, power, getMaxPower()); - ////////////////////////////////////////////////////////////////////// - this.transmitPowerFairly(); - ////////////////////////////////////////////////////////////////////// + if(mode == mode_output || mode == mode_buffer) { + for(ForgeDirection dir : ForgeDirection.VALID_DIRECTIONS) this.tryProvide(worldObj, xCoord + dir.offsetX, yCoord + dir.offsetY, zCoord + dir.offsetZ, dir); + } else { + if(node != null && node.hasValidNet()) node.net.removeProvider(this); + } byte comp = this.getComparatorPower(); if(comp != this.lastRedstone) this.markDirty(); this.lastRedstone = comp; + if(mode == mode_input || mode == mode_buffer) { + if(node != null && node.hasValidNet()) node.net.addReceiver(this); + } else { + if(node != null && node.hasValidNet()) node.net.removeReceiver(this); + } + power = Library.chargeTEFromItems(slots, 0, power, getMaxPower()); long avg = (power + prevPower) / 2; @@ -187,19 +209,6 @@ public class TileEntityMachineBattery extends TileEntityMachineBase implements I this.log[i - 1] = this.log[i]; } - if(GeneralConfig.enable528) { - long threshold = this.getMaxPower() / 3; - if(Math.abs(prevPower - power) > threshold && Math.abs(prevPower - prevPowerState) > threshold) { - this.pingPongTicks++; - if(this.pingPongTicks > 10) { - worldObj.func_147480_a(xCoord, yCoord, zCoord, false); - worldObj.newExplosion(null, xCoord + 0.5, yCoord + 0.5, zCoord + 0.5, 10F, false, false); - } - } else { - if(this.pingPongTicks > 0) this.pingPongTicks--; - } - } - this.log[19] = avg; prevPowerState = power; @@ -214,115 +223,29 @@ public class TileEntityMachineBattery extends TileEntityMachineBase implements I } } - protected void transmitPowerFairly() { - - short mode = (short) this.getRelevantMode(); - - //HasSets to we don'T have any duplicates - Set nets = new HashSet(); - Set consumers = new HashSet(); - - //iterate over all sides - for(ForgeDirection dir : ForgeDirection.VALID_DIRECTIONS) { - - TileEntity te = worldObj.getTileEntity(xCoord + dir.offsetX, yCoord + dir.offsetY, zCoord + dir.offsetZ); - - //if it's a cable, buffer both the network and all subscribers of the net - if(te instanceof IEnergyConductor) { - IEnergyConductor con = (IEnergyConductor) te; - if(con.canConnect(dir.getOpposite()) && con.getPowerNet() != null) { - nets.add(con.getPowerNet()); - con.getPowerNet().unsubscribe(this); - consumers.addAll(con.getPowerNet().getSubscribers()); - } - - //if it's just a consumer, buffer it as a subscriber - } else if(te instanceof IEnergyConnector) { - IEnergyConnector con = (IEnergyConnector) te; - if(con.canConnect(dir.getOpposite())) { - consumers.add((IEnergyConnector) te); - } - } - } + public void onNodeDestroyedCallback() { + this.node = null; + } - //send power to buffered consumers, independent of nets - if(this.power > 0 && (mode == mode_buffer || mode == mode_output)) { - List con = new ArrayList(); - con.addAll(consumers); - - if(PowerNet.trackingInstances == null) { - PowerNet.trackingInstances = new ArrayList(); - } - PowerNet.trackingInstances.clear(); - - nets.forEach(x -> { - if(x instanceof PowerNet) PowerNet.trackingInstances.add((PowerNet) x); - }); - - long toSend = Math.min(this.power, this.getMaxTransfer()); - long powerRemaining = this.power - toSend; - this.power = PowerNet.fairTransfer(con, toSend) + powerRemaining; - } + @Override + public void invalidate() { + super.invalidate(); - //resubscribe to buffered nets, if necessary - if(mode == mode_buffer || mode == mode_input) { - nets.forEach(x -> x.subscribe(this)); - } - } - - @Deprecated protected void transmitPower() { - - short mode = (short) this.getRelevantMode(); - - for(ForgeDirection dir : ForgeDirection.VALID_DIRECTIONS) { - - TileEntity te = worldObj.getTileEntity(xCoord + dir.offsetX, yCoord + dir.offsetY, zCoord + dir.offsetZ); - - // first we make sure we're not subscribed to the network that we'll be supplying - if(te instanceof IEnergyConductor) { - IEnergyConductor con = (IEnergyConductor) te; - - if(con.getPowerNet() != null && con.getPowerNet().isSubscribed(this)) - con.getPowerNet().unsubscribe(this); - } - - //then we add energy - if(mode == mode_buffer || mode == mode_output) { - if(te instanceof IEnergyConnector) { - IEnergyConnector con = (IEnergyConnector) te; - - long max = getMaxTransfer(); - long toTransfer = Math.min(max, this.power); - long remainder = this.power - toTransfer; - this.power = toTransfer; - - long oldPower = this.power; - long transfer = this.power - con.transferPower(this.power); - this.power = oldPower - transfer; - - power += remainder; - } - } - - //then we subscribe if possible - if(te instanceof IEnergyConductor) { - IEnergyConductor con = (IEnergyConductor) te; - - if(con.getPowerNet() != null) { - if(mode == mode_output || mode == mode_none) { - if(con.getPowerNet().isSubscribed(this)) { - con.getPowerNet().unsubscribe(this); - } - } else if(!con.getPowerNet().isSubscribed(this)) { - con.getPowerNet().subscribe(this); - } - } + if(!worldObj.isRemote) { + if(this.node != null) { + Nodespace.destroyNode(worldObj, xCoord, yCoord, zCoord); } } } + + @Override public long getProviderSpeed() { + int mode = this.getRelevantMode(true); + return mode == mode_output || mode == mode_buffer ? this.getMaxPower() / 20 : 0; + } - public long getMaxTransfer() { - return this.getMaxPower() / 20; + @Override public long getReceiverSpeed() { + int mode = this.getRelevantMode(true); + return mode == mode_input || mode == mode_buffer ? this.getMaxPower() / 20 : 0; } @Override @@ -341,13 +264,11 @@ public class TileEntityMachineBattery extends TileEntityMachineBase implements I return power; } - public short getRelevantMode() { - - if(worldObj.isBlockIndirectlyGettingPowered(xCoord, yCoord, zCoord)) { - return this.redHigh; - } else { - return this.redLow; - } + private short modeCache = 0; + public short getRelevantMode(boolean useCache) { + if(useCache) return this.modeCache; + this.modeCache = worldObj.isBlockIndirectlyGettingPowered(xCoord, yCoord, zCoord) ? this.redHigh : this.redLow; + return this.modeCache; } private long bufferedMax; @@ -361,63 +282,10 @@ public class TileEntityMachineBattery extends TileEntityMachineBase implements I return bufferedMax; } - - /* - * SATAN - TECH - */ - @Override - public long transferPower(long power) { - - long overshoot = 0; - - // if power exceeds our transfer limit, truncate - if(power > getMaxTransfer()) { - overshoot += power - getMaxTransfer(); - power = getMaxTransfer(); - } - - // this check is in essence the same as the default implementation, but re-arranged to never overflow the int64 range - // if the remaining power exceeds the power cap, truncate again - long freespace = this.getMaxPower() - this.getPower(); - - if(freespace < power) { - overshoot += power - freespace; - power = freespace; - } - - // what remains is sure to not exceed the transfer limit and the power cap (and therefore the int64 range) - this.setPower(this.getPower() + power); - this.worldObj.markTileEntityChunkModified(this.xCoord, this.yCoord, this.zCoord, this); - - return overshoot; - } - - @Override - public long getTransferWeight() { - int mode = this.getRelevantMode(); - - if(mode == mode_output || mode == mode_none) { - return 0; - } - - return Math.min(Math.max(getMaxPower() - getPower(), 0), this.getMaxTransfer()); - } - - @Override - public boolean canConnect(ForgeDirection dir) { - return true; - } - - @Override - public void setPower(long power) { - this.power = power; - } - - @Override - public ConnectionPriority getPriority() { - return this.priority; - } + @Override public boolean canConnect(ForgeDirection dir) { return true; } + @Override public void setPower(long power) { this.power = power; } + @Override public ConnectionPriority getPriority() { return this.priority; } // do some opencomputer stuff @Override diff --git a/src/main/java/com/hbm/tileentity/machine/storage/TileEntityMachineFENSU.java b/src/main/java/com/hbm/tileentity/machine/storage/TileEntityMachineFENSU.java index 3ece44aca..bef292604 100644 --- a/src/main/java/com/hbm/tileentity/machine/storage/TileEntityMachineFENSU.java +++ b/src/main/java/com/hbm/tileentity/machine/storage/TileEntityMachineFENSU.java @@ -1,16 +1,11 @@ package com.hbm.tileentity.machine.storage; -import java.util.ArrayList; -import java.util.HashSet; -import java.util.List; -import java.util.Set; - import com.hbm.lib.Library; +import com.hbm.util.fauxpointtwelve.BlockPos; +import com.hbm.util.fauxpointtwelve.DirPos; -import api.hbm.energy.IEnergyConductor; -import api.hbm.energy.IEnergyConnector; -import api.hbm.energy.IPowerNet; -import api.hbm.energy.PowerNet; +import api.hbm.energymk2.Nodespace; +import api.hbm.energymk2.Nodespace.PowerNode; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; import net.minecraft.nbt.NBTTagCompound; @@ -24,25 +19,55 @@ public class TileEntityMachineFENSU extends TileEntityMachineBattery { public float rotation = 0F; public static final long maxTransfer = 10_000_000_000_000_000L; + + @Override public long getProviderSpeed() { + int mode = this.getRelevantMode(true); + return mode == mode_output || mode == mode_buffer ? maxTransfer : 0; + } + + @Override public long getReceiverSpeed() { + int mode = this.getRelevantMode(true); + return mode == mode_input || mode == mode_buffer ? maxTransfer : 0; + } @Override public void updateEntity() { if(!worldObj.isRemote) { + + int mode = this.getRelevantMode(false); + + if(this.node == null || this.node.expired) { + + this.node = Nodespace.getNode(worldObj, xCoord, yCoord, zCoord); + + if(this.node == null || this.node.expired) { + this.node = this.createNode(); + Nodespace.createNode(worldObj, this.node); + } + } long prevPower = this.power; power = Library.chargeItemsFromTE(slots, 1, power, getMaxPower()); - ////////////////////////////////////////////////////////////////////// - this.transmitPowerFairly(); - ////////////////////////////////////////////////////////////////////// + if(mode == mode_output || mode == mode_buffer) { + this.tryProvide(worldObj, xCoord, yCoord - 1, zCoord, ForgeDirection.DOWN); + } else { + if(node != null && node.hasValidNet()) node.net.removeProvider(this); + } byte comp = this.getComparatorPower(); if(comp != this.lastRedstone) this.markDirty(); this.lastRedstone = comp; + if(mode == mode_input || mode == mode_buffer) { + if(node != null && node.hasValidNet()) node.net.addReceiver(this); + } else { + if(node != null && node.hasValidNet()) node.net.removeReceiver(this); + } + power = Library.chargeTEFromItems(slots, 0, power, getMaxPower()); long avg = (power / 2 + prevPower / 2); @@ -73,61 +98,10 @@ public class TileEntityMachineFENSU extends TileEntityMachineBattery { } } } - - @Deprecated protected void transmitPower() { - - short mode = (short) this.getRelevantMode(); - - //HasSets to we don'T have any duplicates - Set nets = new HashSet(); - Set consumers = new HashSet(); - - //iterate over all sides - for(ForgeDirection dir : ForgeDirection.VALID_DIRECTIONS) { - - TileEntity te = worldObj.getTileEntity(xCoord + dir.offsetX, yCoord + dir.offsetY, zCoord + dir.offsetZ); - - //if it's a cable, buffer both the network and all subscribers of the net - if(te instanceof IEnergyConductor) { - IEnergyConductor con = (IEnergyConductor) te; - if(con.canConnect(dir.getOpposite()) && con.getPowerNet() != null) { - nets.add(con.getPowerNet()); - con.getPowerNet().unsubscribe(this); - consumers.addAll(con.getPowerNet().getSubscribers()); - } - - //if it's just a consumer, buffer it as a subscriber - } else if(te instanceof IEnergyConnector) { - IEnergyConnector con = (IEnergyConnector) te; - if(con.canConnect(dir.getOpposite())) { - consumers.add((IEnergyConnector) te); - } - } - } - //send power to buffered consumers, independent of nets - if(this.power > 0 && (mode == mode_buffer || mode == mode_output)) { - List con = new ArrayList(); - con.addAll(consumers); - - if(PowerNet.trackingInstances == null) { - PowerNet.trackingInstances = new ArrayList(); - } - PowerNet.trackingInstances.clear(); - - nets.forEach(x -> { - if(x instanceof PowerNet) PowerNet.trackingInstances.add((PowerNet) x); - }); - - long toSend = Math.min(this.power, maxTransfer); - long powerRemaining = this.power - toSend; - this.power = PowerNet.fairTransfer(con, toSend) + powerRemaining; - } - - //resubscribe to buffered nets, if necessary - if(mode == mode_buffer || mode == mode_input) { - nets.forEach(x -> x.subscribe(this)); - } + @Override + public PowerNode createNode() { + return new PowerNode(new BlockPos(xCoord, yCoord, zCoord)).setConnections(new DirPos(xCoord, yCoord - 1, zCoord, Library.NEG_Y)); } @Override @@ -140,11 +114,6 @@ public class TileEntityMachineFENSU extends TileEntityMachineBattery { public long getMaxPower() { return Long.MAX_VALUE; } - - @Override - public long getMaxTransfer() { - return maxTransfer; - } public float getSpeed() { return (float) Math.pow(Math.log(power * 0.75 + 1) * 0.05F, 5); diff --git a/src/main/java/com/hbm/tileentity/network/TileEntityCableBaseNT.java b/src/main/java/com/hbm/tileentity/network/TileEntityCableBaseNT.java index 71b37ab3c..8afaeb73c 100644 --- a/src/main/java/com/hbm/tileentity/network/TileEntityCableBaseNT.java +++ b/src/main/java/com/hbm/tileentity/network/TileEntityCableBaseNT.java @@ -1,53 +1,40 @@ package com.hbm.tileentity.network; -import api.hbm.energy.IEnergyConductor; -import api.hbm.energy.IPowerNet; -import api.hbm.energy.PowerNet; +import api.hbm.energymk2.IEnergyConductorMK2; +import api.hbm.energymk2.Nodespace; +import api.hbm.energymk2.Nodespace.PowerNode; import net.minecraft.tileentity.TileEntity; import net.minecraftforge.common.util.ForgeDirection; -public class TileEntityCableBaseNT extends TileEntity implements IEnergyConductor { +public class TileEntityCableBaseNT extends TileEntity implements IEnergyConductorMK2 { - protected IPowerNet network; + protected PowerNode node; @Override public void updateEntity() { - if(!worldObj.isRemote && canUpdate()) { + if(!worldObj.isRemote) { - //we got here either because the net doesn't exist or because it's not valid, so that's safe to assume - this.setPowerNet(null); - - this.connect(); - - if(this.getPowerNet() == null) { - this.setPowerNet(new PowerNet().joinLink(this)); + if(this.node == null || this.node.expired) { + + if(this.shouldCreateNode()) { + this.node = Nodespace.getNode(worldObj, xCoord, yCoord, zCoord); + + if(this.node == null || this.node.expired) { + this.node = this.createNode(); + Nodespace.createNode(worldObj, this.node); + } + } } } } - protected void connect() { - - for(ForgeDirection dir : ForgeDirection.VALID_DIRECTIONS) { - - TileEntity te = worldObj.getTileEntity(xCoord + dir.offsetX, yCoord + dir.offsetY, zCoord + dir.offsetZ); - - if(te instanceof IEnergyConductor) { - - IEnergyConductor conductor = (IEnergyConductor) te; - - if(!conductor.canConnect(dir.getOpposite())) - continue; - - if(this.getPowerNet() == null && conductor.getPowerNet() != null) { - conductor.getPowerNet().joinLink(this); - } - - if(this.getPowerNet() != null && conductor.getPowerNet() != null && this.getPowerNet() != conductor.getPowerNet()) { - conductor.getPowerNet().joinNetworks(this.getPowerNet()); - } - } - } + public boolean shouldCreateNode() { + return true; + } + + public void onNodeDestroyedCallback() { + this.node = null; } @Override @@ -55,52 +42,14 @@ public class TileEntityCableBaseNT extends TileEntity implements IEnergyConducto super.invalidate(); if(!worldObj.isRemote) { - if(this.network != null) { - this.network.reevaluate(); - this.network = null; + if(this.node != null) { + Nodespace.destroyNode(worldObj, xCoord, yCoord, zCoord); } } } - /** - * Only update until a power net is formed, in >99% of the cases it should be the first tick. Everything else is handled by neighbors and the net itself. - */ - @Override - public boolean canUpdate() { - return (this.network == null || !this.network.isValid()) && !this.isInvalid(); - } - @Override public boolean canConnect(ForgeDirection dir) { return dir != ForgeDirection.UNKNOWN; } - - @Override - public long getPower() { - return 0; - } - - @Override - public long getMaxPower() { - return 0; - } - - @Override - public void setPowerNet(IPowerNet network) { - this.network = network; - } - - @Override - public long transferPower(long power) { - - if(this.network == null) - return power; - - return this.network.transferPower(power); - } - - @Override - public IPowerNet getPowerNet() { - return this.network; - } } diff --git a/src/main/java/com/hbm/tileentity/network/TileEntityCableSwitch.java b/src/main/java/com/hbm/tileentity/network/TileEntityCableSwitch.java index e8a80f871..acdffcd99 100644 --- a/src/main/java/com/hbm/tileentity/network/TileEntityCableSwitch.java +++ b/src/main/java/com/hbm/tileentity/network/TileEntityCableSwitch.java @@ -1,33 +1,26 @@ package com.hbm.tileentity.network; -import api.hbm.energy.PowerNet; +import api.hbm.energymk2.Nodespace; public class TileEntityCableSwitch extends TileEntityCableBaseNT { @Override public boolean canUpdate() { - return this.worldObj != null && this.getBlockMetadata() == 1 && super.canUpdate(); + return super.canUpdate(); } public void updateState() { //if the meta is 0 (OFF) and there is a net present, destroy and de-reference it. //that should be all, since the state being 0 also prevents the TE from updating and joining the new net. - if(this.getBlockMetadata() == 0 && this.network != null) { - this.network.reevaluate(); - this.network = null; - } - - if(this.getBlockMetadata() == 1) { - this.connect(); - - if(this.getPowerNet() == null) { - new PowerNet().joinLink(this); - } + if(this.getBlockMetadata() == 0 && this.node != null) { + Nodespace.destroyNode(worldObj, xCoord, yCoord, zCoord); + this.node = null; } } - public boolean canReevaluate() { - return super.canReevaluate() && this.getBlockMetadata() == 1; + @Override + public boolean shouldCreateNode() { + return this.getBlockMetadata() == 1; } } diff --git a/src/main/java/com/hbm/tileentity/network/TileEntityConnector.java b/src/main/java/com/hbm/tileentity/network/TileEntityConnector.java index dc20b8f8d..baa262982 100644 --- a/src/main/java/com/hbm/tileentity/network/TileEntityConnector.java +++ b/src/main/java/com/hbm/tileentity/network/TileEntityConnector.java @@ -1,9 +1,9 @@ package com.hbm.tileentity.network; -import java.util.ArrayList; -import java.util.List; +import com.hbm.util.fauxpointtwelve.BlockPos; +import com.hbm.util.fauxpointtwelve.DirPos; -import api.hbm.energy.IEnergyConductor; +import api.hbm.energymk2.Nodespace.PowerNode; import net.minecraft.tileentity.TileEntity; import net.minecraft.util.Vec3; import net.minecraftforge.common.util.ForgeDirection; @@ -24,33 +24,16 @@ public class TileEntityConnector extends TileEntityPylonBase { public double getMaxWireLength() { return 10; } - + @Override - public List getConnectionPoints() { - List pos = new ArrayList(connected); - + public PowerNode createNode() { + TileEntity tile = (TileEntity) this; ForgeDirection dir = ForgeDirection.getOrientation(this.getBlockMetadata()).getOpposite(); - //pos.add(new int[] {xCoord + dir.offsetX, yCoord + dir.offsetY, zCoord + dir.offsetZ}); - - TileEntity te = worldObj.getTileEntity(xCoord + dir.offsetX, yCoord + dir.offsetY, zCoord + dir.offsetZ); - - if(te instanceof IEnergyConductor) { - - IEnergyConductor conductor = (IEnergyConductor) te; - - if(conductor.canConnect(dir.getOpposite())) { - - if(this.getPowerNet() == null && conductor.getPowerNet() != null) { - conductor.getPowerNet().joinLink(this); - } - - if(this.getPowerNet() != null && conductor.getPowerNet() != null && this.getPowerNet() != conductor.getPowerNet()) { - conductor.getPowerNet().joinNetworks(this.getPowerNet()); - } - } - } - - return pos; + PowerNode node = new PowerNode(new BlockPos(tile.xCoord, tile.yCoord, tile.zCoord)).setConnections( + new DirPos(xCoord, yCoord, zCoord, ForgeDirection.UNKNOWN), + new DirPos(xCoord + dir.offsetX, yCoord + dir.offsetY, zCoord + dir.offsetZ, dir)); + for(int[] pos : this.connected) node.addConnection(new DirPos(pos[0], pos[1], pos[2], ForgeDirection.UNKNOWN)); + return node; } @Override diff --git a/src/main/java/com/hbm/tileentity/network/TileEntityConverterHeRf.java b/src/main/java/com/hbm/tileentity/network/TileEntityConverterHeRf.java index 941f83c1c..325e31ee1 100644 --- a/src/main/java/com/hbm/tileentity/network/TileEntityConverterHeRf.java +++ b/src/main/java/com/hbm/tileentity/network/TileEntityConverterHeRf.java @@ -3,13 +3,13 @@ package com.hbm.tileentity.network; import com.hbm.calc.Location; import com.hbm.tileentity.TileEntityLoadedBase; -import api.hbm.energy.IEnergyConnector; +import api.hbm.energymk2.IEnergyReceiverMK2; import cofh.api.energy.IEnergyHandler; import cofh.api.energy.IEnergyReceiver; import net.minecraft.tileentity.TileEntity; import net.minecraftforge.common.util.ForgeDirection; -public class TileEntityConverterHeRf extends TileEntityLoadedBase implements IEnergyConnector, IEnergyHandler { +public class TileEntityConverterHeRf extends TileEntityLoadedBase implements IEnergyReceiverMK2, IEnergyHandler { //Thanks to the great people of Fusion Warfare for helping me with the original implementation of the RF energy API @@ -22,30 +22,13 @@ public class TileEntityConverterHeRf extends TileEntityLoadedBase implements IEn } } - @Override - public boolean canConnectEnergy(ForgeDirection from) { - return true; - } - - @Override - public int extractEnergy(ForgeDirection from, int maxExtract, boolean simulate) { - return 0; - } - - @Override - public int getEnergyStored(ForgeDirection from) { - return 0; - } - - @Override - public int getMaxEnergyStored(ForgeDirection from) { - return 0; - } - - @Override - public long getPower() { - return 0; - } + @Override public boolean canConnectEnergy(ForgeDirection from) { return true; } + @Override public int receiveEnergy(ForgeDirection from, int maxReceive, boolean simulate) { return 0; } + @Override public int extractEnergy(ForgeDirection from, int maxExtract, boolean simulate) { return 0; } + @Override public int getEnergyStored(ForgeDirection from) { return 0; } + @Override public int getMaxEnergyStored(ForgeDirection from) { return 0; } + @Override public long getPower() { return 0; } + @Override public void setPower(long power) { } @Override public long getMaxPower() { @@ -55,7 +38,7 @@ public class TileEntityConverterHeRf extends TileEntityLoadedBase implements IEn private long lastTransfer = 0; @Override - public long getTransferWeight() { + public long getReceiverSpeed() { if(lastTransfer > 0) { return lastTransfer * 2; @@ -63,11 +46,6 @@ public class TileEntityConverterHeRf extends TileEntityLoadedBase implements IEn return getMaxPower(); } } - - @Override - public int receiveEnergy(ForgeDirection from, int maxReceive, boolean simulate) { - return 0; - } private boolean recursionBrake = false; diff --git a/src/main/java/com/hbm/tileentity/network/TileEntityConverterRfHe.java b/src/main/java/com/hbm/tileentity/network/TileEntityConverterRfHe.java index 7346c5066..a41c62ce2 100644 --- a/src/main/java/com/hbm/tileentity/network/TileEntityConverterRfHe.java +++ b/src/main/java/com/hbm/tileentity/network/TileEntityConverterRfHe.java @@ -3,11 +3,11 @@ package com.hbm.tileentity.network; import com.hbm.interfaces.Untested; import com.hbm.tileentity.TileEntityLoadedBase; -import api.hbm.energy.IEnergyGenerator; +import api.hbm.energymk2.IEnergyProviderMK2; import cofh.api.energy.IEnergyHandler; import net.minecraftforge.common.util.ForgeDirection; -public class TileEntityConverterRfHe extends TileEntityLoadedBase implements IEnergyGenerator, IEnergyHandler { +public class TileEntityConverterRfHe extends TileEntityLoadedBase implements IEnergyProviderMK2, IEnergyHandler { @Override public void setPower(long power) { @@ -48,7 +48,7 @@ public class TileEntityConverterRfHe extends TileEntityLoadedBase implements IEn subBuffer = capacity; for(ForgeDirection dir : ForgeDirection.VALID_DIRECTIONS) { - this.sendPower(worldObj, xCoord + dir.offsetX, yCoord + dir.offsetY, zCoord + dir.offsetZ, dir); + this.tryProvide(worldObj, xCoord + dir.offsetX, yCoord + dir.offsetY, zCoord + dir.offsetZ, dir); } recursionBrake = false; diff --git a/src/main/java/com/hbm/tileentity/network/TileEntityPylon.java b/src/main/java/com/hbm/tileentity/network/TileEntityPylon.java index 3dde2245e..03646593c 100644 --- a/src/main/java/com/hbm/tileentity/network/TileEntityPylon.java +++ b/src/main/java/com/hbm/tileentity/network/TileEntityPylon.java @@ -1,8 +1,11 @@ package com.hbm.tileentity.network; -import java.util.ArrayList; -import java.util.List; +import com.hbm.lib.Library; +import com.hbm.util.fauxpointtwelve.BlockPos; +import com.hbm.util.fauxpointtwelve.DirPos; +import api.hbm.energymk2.Nodespace.PowerNode; +import net.minecraft.tileentity.TileEntity; import net.minecraft.util.Vec3; import net.minecraftforge.common.util.ForgeDirection; @@ -22,14 +25,20 @@ public class TileEntityPylon extends TileEntityPylonBase { public double getMaxWireLength() { return 25D; } - + @Override - public List getConnectionPoints() { - List pos = new ArrayList(connected); - - for(ForgeDirection dir : ForgeDirection.VALID_DIRECTIONS) { - pos.add(new int[] {xCoord + dir.offsetX, yCoord + dir.offsetY, zCoord + dir.offsetZ}); - } - return pos; + public PowerNode createNode() { + TileEntity tile = (TileEntity) this; + PowerNode node = new PowerNode(new BlockPos(tile.xCoord, tile.yCoord, tile.zCoord)).setConnections( + new DirPos(xCoord, yCoord, zCoord, ForgeDirection.UNKNOWN), + new DirPos(xCoord + 1, yCoord, zCoord, Library.POS_X), + new DirPos(xCoord - 1, yCoord, zCoord, Library.NEG_X), + new DirPos(xCoord, yCoord + 1, zCoord, Library.POS_Y), + new DirPos(xCoord, yCoord - 1, zCoord, Library.NEG_Y), + new DirPos(xCoord, yCoord, zCoord + 1, Library.POS_Z), + new DirPos(xCoord, yCoord, zCoord - 1, Library.NEG_Z) + ); + for(int[] pos : this.connected) node.addConnection(new DirPos(pos[0], pos[1], pos[2], ForgeDirection.UNKNOWN)); + return node; } } diff --git a/src/main/java/com/hbm/tileentity/network/TileEntityPylonBase.java b/src/main/java/com/hbm/tileentity/network/TileEntityPylonBase.java index 09e335094..7581ddaed 100644 --- a/src/main/java/com/hbm/tileentity/network/TileEntityPylonBase.java +++ b/src/main/java/com/hbm/tileentity/network/TileEntityPylonBase.java @@ -3,9 +3,15 @@ package com.hbm.tileentity.network; import java.util.ArrayList; import java.util.List; -import api.hbm.energy.IEnergyConductor; +import com.hbm.util.ColorUtil; +import com.hbm.util.fauxpointtwelve.BlockPos; +import com.hbm.util.fauxpointtwelve.DirPos; + +import api.hbm.energymk2.Nodespace; +import api.hbm.energymk2.Nodespace.PowerNode; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; +import net.minecraft.item.ItemStack; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.network.NetworkManager; import net.minecraft.network.Packet; @@ -14,10 +20,12 @@ import net.minecraft.tileentity.TileEntity; import net.minecraft.util.AxisAlignedBB; import net.minecraft.util.Vec3; import net.minecraft.world.WorldServer; +import net.minecraftforge.common.util.ForgeDirection; public abstract class TileEntityPylonBase extends TileEntityCableBaseNT { public List connected = new ArrayList(); + public int color; public static int canConnect(TileEntityPylonBase first, TileEntityPylonBase second) { @@ -41,14 +49,37 @@ public abstract class TileEntityPylonBase extends TileEntityCableBaseNT { return len >= delta.lengthVector() ? 0 : 3; } + public boolean setColor(ItemStack stack) { + if(stack == null) return false; + int color = ColorUtil.getColorFromDye(stack); + if(color == 0 || color == this.color) return false; + stack.stackSize--; + this.color = color; + + this.markDirty(); + if(worldObj instanceof WorldServer) { + WorldServer world = (WorldServer) worldObj; + world.getPlayerManager().markBlockForUpdate(xCoord, yCoord, zCoord); + } + + return true; + } + + @Override + public PowerNode createNode() { + TileEntity tile = (TileEntity) this; + PowerNode node = new PowerNode(new BlockPos(tile.xCoord, tile.yCoord, tile.zCoord)).setConnections(new DirPos(xCoord, yCoord, zCoord, ForgeDirection.UNKNOWN)); + for(int[] pos : this.connected) node.addConnection(new DirPos(pos[0], pos[1], pos[2], ForgeDirection.UNKNOWN)); + return node; + } + public void addConnection(int x, int y, int z) { connected.add(new int[] {x, y, z}); - if(this.getPowerNet() != null) { - this.getPowerNet().reevaluate(); - this.network = null; - } + PowerNode node = Nodespace.getNode(worldObj, xCoord, yCoord, zCoord); + node.recentlyChanged = true; + node.addConnection(new DirPos(x, y, z, ForgeDirection.UNKNOWN)); this.markDirty(); @@ -69,6 +100,7 @@ public abstract class TileEntityPylonBase extends TileEntityCableBaseNT { if(te instanceof TileEntityPylonBase) { TileEntityPylonBase pylon = (TileEntityPylonBase) te; + Nodespace.destroyNode(worldObj, pos[0], pos[1], pos[2]); for(int i = 0; i < pylon.connected.size(); i++) { int[] conPos = pylon.connected.get(i); @@ -87,33 +119,8 @@ public abstract class TileEntityPylonBase extends TileEntityCableBaseNT { } } } - } - - @Override - protected void connect() { - for(int[] pos : getConnectionPoints()) { - - TileEntity te = worldObj.getTileEntity(pos[0], pos[1], pos[2]); - - if(te instanceof IEnergyConductor) { - - IEnergyConductor conductor = (IEnergyConductor) te; - - if(this.getPowerNet() == null && conductor.getPowerNet() != null) { - conductor.getPowerNet().joinLink(this); - } - - if(this.getPowerNet() != null && conductor.getPowerNet() != null && this.getPowerNet() != conductor.getPowerNet()) { - conductor.getPowerNet().joinNetworks(this.getPowerNet()); - } - } - } - } - - @Override - public List getConnectionPoints() { - return new ArrayList(connected); + Nodespace.destroyNode(worldObj, xCoord, yCoord, zCoord); } public abstract ConnectionType getConnectionType(); @@ -132,8 +139,9 @@ public abstract class TileEntityPylonBase extends TileEntityCableBaseNT { @Override public void writeToNBT(NBTTagCompound nbt) { super.writeToNBT(nbt); - + nbt.setInteger("conCount", connected.size()); + nbt.setInteger("color", color); for(int i = 0; i < connected.size(); i++) { nbt.setIntArray("con" + i, connected.get(i)); @@ -145,6 +153,7 @@ public abstract class TileEntityPylonBase extends TileEntityCableBaseNT { super.readFromNBT(nbt); int count = nbt.getInteger("conCount"); + this.color = nbt.getInteger("color"); this.connected.clear(); @@ -168,6 +177,7 @@ public abstract class TileEntityPylonBase extends TileEntityCableBaseNT { public static enum ConnectionType { SINGLE, + TRIPLE, QUAD //more to follow } diff --git a/src/main/java/com/hbm/tileentity/network/TileEntityPylonLarge.java b/src/main/java/com/hbm/tileentity/network/TileEntityPylonLarge.java index f0ef0c3d5..03b588ed0 100644 --- a/src/main/java/com/hbm/tileentity/network/TileEntityPylonLarge.java +++ b/src/main/java/com/hbm/tileentity/network/TileEntityPylonLarge.java @@ -37,5 +37,4 @@ public class TileEntityPylonLarge extends TileEntityPylonBase { public double getMaxWireLength() { return 100; } - } diff --git a/src/main/java/com/hbm/tileentity/network/TileEntityPylonMedium.java b/src/main/java/com/hbm/tileentity/network/TileEntityPylonMedium.java new file mode 100644 index 000000000..fd7cb146f --- /dev/null +++ b/src/main/java/com/hbm/tileentity/network/TileEntityPylonMedium.java @@ -0,0 +1,59 @@ +package com.hbm.tileentity.network; + +import com.hbm.blocks.ModBlocks; +import com.hbm.util.fauxpointtwelve.BlockPos; +import com.hbm.util.fauxpointtwelve.DirPos; + +import api.hbm.energymk2.Nodespace.PowerNode; +import net.minecraft.block.Block; +import net.minecraft.tileentity.TileEntity; +import net.minecraft.util.Vec3; +import net.minecraftforge.common.util.ForgeDirection; + +public class TileEntityPylonMedium extends TileEntityPylonBase { + + @Override + public ConnectionType getConnectionType() { + return ConnectionType.TRIPLE; + } + + @Override + public Vec3[] getMountPos() { + + ForgeDirection dir = ForgeDirection.getOrientation(this.getBlockMetadata() - 10); + double height = 7.5D; + + return new Vec3[] { + Vec3.createVectorHelper(0.5, height, 0.5), + Vec3.createVectorHelper(0.5 + dir.offsetX, height, 0.5 + dir.offsetZ), + Vec3.createVectorHelper(0.5 + dir.offsetX * 2, height, 0.5 + dir.offsetZ * 2), + }; + } + + @Override + public double getMaxWireLength() { + return 45; + } + + @Override + public boolean canConnect(ForgeDirection dir) { + return this.hasTransformer() ? ForgeDirection.getOrientation(this.getBlockMetadata() - 10).getOpposite() == dir : false; + } + + @Override + public PowerNode createNode() { + TileEntity tile = (TileEntity) this; + PowerNode node = new PowerNode(new BlockPos(tile.xCoord, tile.yCoord, tile.zCoord)).setConnections(new DirPos(xCoord, yCoord, zCoord, ForgeDirection.UNKNOWN)); + for(int[] pos : this.connected) node.addConnection(new DirPos(pos[0], pos[1], pos[2], ForgeDirection.UNKNOWN)); + if(this.hasTransformer()) { + ForgeDirection dir = ForgeDirection.getOrientation(this.getBlockMetadata() - 10).getOpposite(); + node.addConnection(new DirPos(xCoord + dir.offsetX, yCoord, zCoord + dir.offsetZ, dir)); + } + return node; + } + + public boolean hasTransformer() { + Block block = this.getBlockType(); + return block == ModBlocks.red_pylon_medium_wood_transformer || block == ModBlocks.red_pylon_medium_steel_transformer; + } +} diff --git a/src/main/java/com/hbm/tileentity/network/TileEntitySubstation.java b/src/main/java/com/hbm/tileentity/network/TileEntitySubstation.java index 6f4235e38..33d6291c8 100644 --- a/src/main/java/com/hbm/tileentity/network/TileEntitySubstation.java +++ b/src/main/java/com/hbm/tileentity/network/TileEntitySubstation.java @@ -1,12 +1,14 @@ package com.hbm.tileentity.network; -import java.util.ArrayList; -import java.util.List; - import com.hbm.blocks.BlockDummyable; +import com.hbm.lib.Library; +import com.hbm.util.fauxpointtwelve.BlockPos; +import com.hbm.util.fauxpointtwelve.DirPos; -import api.hbm.energy.IEnergyConductor; +import api.hbm.energymk2.Nodespace.PowerNode; +import net.minecraft.tileentity.TileEntity; import net.minecraft.util.Vec3; +import net.minecraftforge.common.util.ForgeDirection; public class TileEntitySubstation extends TileEntityPylonBase { @@ -45,33 +47,22 @@ public class TileEntitySubstation extends TileEntityPylonBase { public double getMaxWireLength() { return 20; } - - @Override - public List getConnectionPoints() { - List pos = new ArrayList(connected); - pos.add(new int[] {xCoord + 2, yCoord, zCoord - 1}); - pos.add(new int[] {xCoord + 2, yCoord, zCoord + 1}); - pos.add(new int[] {xCoord - 2, yCoord, zCoord - 1}); - pos.add(new int[] {xCoord - 2, yCoord, zCoord + 1}); - pos.add(new int[] {xCoord - 1, yCoord, zCoord + 2}); - pos.add(new int[] {xCoord + 1, yCoord, zCoord + 2}); - pos.add(new int[] {xCoord - 1, yCoord, zCoord - 2}); - pos.add(new int[] {xCoord + 1, yCoord, zCoord - 2}); - return pos; - } @Override - public boolean hasProxies() { - return true; - } - - @Override - public List getProxies() { - List proxies = new ArrayList(); - proxies.add(IEnergyConductor.getIdentityFromPos(xCoord + 1, yCoord, zCoord + 1)); - proxies.add(IEnergyConductor.getIdentityFromPos(xCoord + 1, yCoord, zCoord - 1)); - proxies.add(IEnergyConductor.getIdentityFromPos(xCoord - 1, yCoord, zCoord + 1)); - proxies.add(IEnergyConductor.getIdentityFromPos(xCoord - 1, yCoord, zCoord - 1)); - return proxies; + public PowerNode createNode() { + TileEntity tile = (TileEntity) this; + PowerNode node = new PowerNode(new BlockPos(tile.xCoord, tile.yCoord, tile.zCoord)).setConnections( + new DirPos(xCoord, yCoord, zCoord, ForgeDirection.UNKNOWN), + new DirPos(xCoord + 2, yCoord, zCoord - 1, Library.POS_X), + new DirPos(xCoord + 2, yCoord, zCoord + 1, Library.POS_X), + new DirPos(xCoord - 2, yCoord, zCoord - 1, Library.NEG_X), + new DirPos(xCoord - 2, yCoord, zCoord + 1, Library.NEG_X), + new DirPos(xCoord - 1, yCoord, zCoord + 2, Library.POS_Z), + new DirPos(xCoord + 1, yCoord, zCoord + 2, Library.POS_Z), + new DirPos(xCoord - 1, yCoord, zCoord - 2, Library.NEG_Z), + new DirPos(xCoord + 1, yCoord, zCoord - 2, Library.NEG_Z) + ); + for(int[] pos : this.connected) node.addConnection(new DirPos(pos[0], pos[1], pos[2], ForgeDirection.UNKNOWN)); + return node; } } diff --git a/src/main/java/com/hbm/tileentity/turret/TileEntityTurretBaseNT.java b/src/main/java/com/hbm/tileentity/turret/TileEntityTurretBaseNT.java index 452b33eb9..6006a5767 100644 --- a/src/main/java/com/hbm/tileentity/turret/TileEntityTurretBaseNT.java +++ b/src/main/java/com/hbm/tileentity/turret/TileEntityTurretBaseNT.java @@ -27,7 +27,7 @@ import com.hbm.tileentity.IGUIProvider; import com.hbm.tileentity.TileEntityMachineBase; import com.hbm.util.CompatExternal; -import api.hbm.energy.IEnergyUser; +import api.hbm.energymk2.IEnergyReceiverMK2; import api.hbm.entity.IRadarDetectableNT; import cpw.mods.fml.common.network.NetworkRegistry.TargetPoint; import cpw.mods.fml.relauncher.Side; @@ -58,7 +58,7 @@ import net.minecraftforge.common.util.ForgeDirection; * @author hbm * */ -public abstract class TileEntityTurretBaseNT extends TileEntityMachineBase implements IEnergyUser, IControlReceiver, IGUIProvider { +public abstract class TileEntityTurretBaseNT extends TileEntityMachineBase implements IEnergyReceiverMK2, IControlReceiver, IGUIProvider { @Override public boolean hasPermission(EntityPlayer player) { diff --git a/src/main/java/com/hbm/tileentity/turret/TileEntityTurretHIMARS.java b/src/main/java/com/hbm/tileentity/turret/TileEntityTurretHIMARS.java index fcfc1d074..4cd07246e 100644 --- a/src/main/java/com/hbm/tileentity/turret/TileEntityTurretHIMARS.java +++ b/src/main/java/com/hbm/tileentity/turret/TileEntityTurretHIMARS.java @@ -350,6 +350,8 @@ public class TileEntityTurretHIMARS extends TileEntityTurretBaseArtillery implem super.readFromNBT(nbt); this.mode = nbt.getShort("mode"); + this.typeLoaded = nbt.getShort("type"); + this.ammo = nbt.getInteger("ammo"); } @Override @@ -357,6 +359,8 @@ public class TileEntityTurretHIMARS extends TileEntityTurretBaseArtillery implem super.writeToNBT(nbt); nbt.setShort("mode", this.mode); + nbt.setInteger("type", this.typeLoaded); + nbt.setInteger("ammo", this.ammo); } @Override diff --git a/src/main/java/com/hbm/util/ColorUtil.java b/src/main/java/com/hbm/util/ColorUtil.java index aec239b53..2d0ad9378 100644 --- a/src/main/java/com/hbm/util/ColorUtil.java +++ b/src/main/java/com/hbm/util/ColorUtil.java @@ -7,6 +7,7 @@ import java.util.ArrayList; import java.util.Collections; import java.util.HashMap; import java.util.List; +import java.util.Locale; import javax.imageio.ImageIO; @@ -182,4 +183,36 @@ public class ColorUtil { float[] hsb = Color.RGBtoHSB(color.getRed(), color.getGreen(), color.getBlue(), new float[3]); return hsb[2]; } + + public static HashMap nameToColor = new HashMap() {{ + put("black", 1973019); + put("red", 11743532); + put("green", 3887386); + put("brown", 5320730); + put("blue", 2437522); + put("purple", 8073150); + put("cyan", 2651799); + put("silver", 11250603); + put("gray", 4408131); + put("pink", 14188952); + put("lime", 4312372); + put("yellow", 14602026); + put("lightBlue", 6719955); + put("magenta", 12801229); + put("orange", 15435844); + put("white", 15790320); + }}; + + public static int getColorFromDye(ItemStack stack) { + List oreNames = ItemStackUtil.getOreDictNames(stack); + + for(String dict : oreNames) { + if(dict.length() > 3 && dict.startsWith("dye")) { + String color = dict.substring(3).toLowerCase(Locale.US); + if(nameToColor.containsKey(color)) return nameToColor.get(color); + } + } + + return 0; + } } diff --git a/src/main/java/com/hbm/util/CompatEnergyControl.java b/src/main/java/com/hbm/util/CompatEnergyControl.java index ea3ec0683..0de988733 100644 --- a/src/main/java/com/hbm/util/CompatEnergyControl.java +++ b/src/main/java/com/hbm/util/CompatEnergyControl.java @@ -11,8 +11,8 @@ import com.hbm.tileentity.machine.TileEntityMachineGasCent; import com.hbm.tileentity.machine.TileEntityMachineGasCent.PseudoFluidTank; import com.hbm.tileentity.machine.rbmk.TileEntityRBMKBase; -import api.hbm.energy.IBatteryItem; -import api.hbm.energy.IEnergyUser; +import api.hbm.energymk2.IBatteryItem; +import api.hbm.energymk2.IEnergyHandlerMK2; import api.hbm.fluid.IFluidUser; import api.hbm.tile.IInfoProviderEC; import net.minecraft.item.ItemStack; @@ -47,8 +47,8 @@ public class CompatEnergyControl { data.setString(KEY_EUTYPE, "HE"); - if(tile instanceof IEnergyUser) { - IEnergyUser user = (IEnergyUser) tile; + if(tile instanceof IEnergyHandlerMK2) { + IEnergyHandlerMK2 user = (IEnergyHandlerMK2) tile; data.setDouble(L_ENERGY_HE, user.getPower()); data.setDouble(L_CAPACITY_HE, user.getMaxPower()); } diff --git a/src/main/java/com/hbm/util/CompatExternal.java b/src/main/java/com/hbm/util/CompatExternal.java index d1c2f1a02..9881ef7fa 100644 --- a/src/main/java/com/hbm/util/CompatExternal.java +++ b/src/main/java/com/hbm/util/CompatExternal.java @@ -12,7 +12,8 @@ import com.hbm.inventory.fluid.tank.FluidTank; import com.hbm.tileentity.machine.TileEntityDummy; import com.hbm.tileentity.turret.TileEntityTurretSentry; -import api.hbm.energy.IEnergyUser; +import api.hbm.energymk2.IEnergyHandlerMK2; +import api.hbm.energymk2.IEnergyReceiverMK2; import api.hbm.fluid.IFluidUser; import net.minecraft.block.Block; import net.minecraft.entity.Entity; @@ -67,8 +68,8 @@ public class CompatExternal { */ public static long getBufferedPowerFromTile(TileEntity tile) { - if(tile instanceof IEnergyUser) { - return ((IEnergyUser) tile).getPower(); + if(tile instanceof IEnergyHandlerMK2) { + return ((IEnergyHandlerMK2) tile).getPower(); } return 0L; @@ -81,8 +82,8 @@ public class CompatExternal { */ public static long getMaxPowerFromTile(TileEntity tile) { - if(tile instanceof IEnergyUser) { - return ((IEnergyUser) tile).getMaxPower(); + if(tile instanceof IEnergyHandlerMK2) { + return ((IEnergyHandlerMK2) tile).getMaxPower(); } return 0L; @@ -95,8 +96,8 @@ public class CompatExternal { */ public static int getEnergyPriorityFromTile(TileEntity tile) { - if(tile instanceof IEnergyUser) { - return ((IEnergyUser) tile).getPriority().ordinal(); + if(tile instanceof IEnergyReceiverMK2) { + return ((IEnergyReceiverMK2) tile).getPriority().ordinal(); } return -1; diff --git a/src/main/java/com/hbm/wiaj/cannery/Dummies.java b/src/main/java/com/hbm/wiaj/cannery/Dummies.java index 879a3fd3a..cf9e23347 100644 --- a/src/main/java/com/hbm/wiaj/cannery/Dummies.java +++ b/src/main/java/com/hbm/wiaj/cannery/Dummies.java @@ -2,19 +2,16 @@ package com.hbm.wiaj.cannery; import com.hbm.inventory.fluid.FluidType; -import api.hbm.energy.IEnergyConnector; +import api.hbm.energymk2.IEnergyConnectorMK2; import api.hbm.fluid.IFluidConnector; import net.minecraft.tileentity.TileEntity; public class Dummies { - public static class JarDummyConnector extends TileEntity implements IEnergyConnector, IFluidConnector { + public static class JarDummyConnector extends TileEntity implements IEnergyConnectorMK2, IFluidConnector { @Override public boolean isLoaded() { return false; } @Override public long transferFluid(FluidType type, int pressure, long fluid) { return 0; } @Override public long getDemand(FluidType type, int pressure) { return 0; } - @Override public long transferPower(long power) { return 0; } - @Override public long getPower() { return 0; } - @Override public long getMaxPower() { return 0; } } } diff --git a/src/main/java/com/hbm/world/feature/BedrockOre.java b/src/main/java/com/hbm/world/feature/BedrockOre.java index fa162e6dd..2f4258234 100644 --- a/src/main/java/com/hbm/world/feature/BedrockOre.java +++ b/src/main/java/com/hbm/world/feature/BedrockOre.java @@ -46,6 +46,7 @@ public class BedrockOre { registerBedrockOre(weightedOres, new BedrockOreDefinition(new ItemStack(Items.coal, 8), 1, 0x202020), WorldConfig.bedrockCoalSpawn); registerBedrockOre(weightedOres, new BedrockOreDefinition(new ItemStack(ModItems.niter, 4), 2, 0x808080, new FluidStack(Fluids.ACID, 500)), WorldConfig.bedrockNiterSpawn); registerBedrockOre(weightedOres, new BedrockOreDefinition(new ItemStack(Items.redstone, 4), 1, 0xd01010), WorldConfig.bedrockRedstoneSpawn); + registerBedrockOre(weightedOres, new BedrockOreDefinition(new ItemStack(Items.emerald, 4), 1, 0x3FDD85), WorldConfig.bedrockEmeraldSpawn); registerBedrockOre(weightedOres, new BedrockOreDefinition(DictFrame.fromOne(ModItems.chunk_ore, EnumChunkType.RARE), 2, 0x8F9999, new FluidStack(Fluids.ACID, 500)), WorldConfig.bedrockRareEarthSpawn); registerBedrockOre(weightedOres, new BedrockOreDefinition(DictFrame.fromOne(ModBlocks.stone_resource, EnumStoneType.BAUXITE, 2),1, 0xEF7213), WorldConfig.bedrockBauxiteSpawn); diff --git a/src/main/java/com/hbm/world/gen/NTMWorldGenerator.java b/src/main/java/com/hbm/world/gen/NTMWorldGenerator.java index 34efa8ea1..6fb9e7fd1 100644 --- a/src/main/java/com/hbm/world/gen/NTMWorldGenerator.java +++ b/src/main/java/com/hbm/world/gen/NTMWorldGenerator.java @@ -49,7 +49,8 @@ public class NTMWorldGenerator implements IWorldGenerator { setRandomSeed(event.world, event.chunkX, event.chunkZ); //Set random for population down the line. hasPopulationEvent = true; - if(!StructureConfig.enableStructures || !event.world.getWorldInfo().isMapFeaturesEnabled()) return; + if(StructureConfig.enableStructures == 0) return; + if(StructureConfig.enableStructures == 2 && !event.world.getWorldInfo().isMapFeaturesEnabled()) return; switch (event.world.provider.dimensionId) { case -1: @@ -94,7 +95,12 @@ public class NTMWorldGenerator implements IWorldGenerator { private void generateSurface(World world, Random rand, IChunkProvider chunkGenerator, IChunkProvider chunkProvider, int chunkX, int chunkZ) { if(!hasPopulationEvent) { //If we've failed to generate any structures (flatlands) setRandomSeed(world, chunkX, chunkZ); //Reset the random seed to compensate - if(StructureConfig.enableStructures) generateOverworldStructures(world, chunkGenerator, chunkX, chunkZ); //Do it through the post-population generation directly + + boolean enableStructures = world.getWorldInfo().isMapFeaturesEnabled(); + if(StructureConfig.enableStructures == 1) enableStructures = true; + if(StructureConfig.enableStructures == 0) enableStructures = false; + + if(enableStructures) generateOverworldStructures(world, chunkGenerator, chunkX, chunkZ); //Do it through the post-population generation directly } /* biome dictionary my beloved <3 diff --git a/src/main/resources/assets/hbm/lang/de_DE.lang b/src/main/resources/assets/hbm/lang/de_DE.lang index 2a1bfc4be..0c131ddb2 100644 --- a/src/main/resources/assets/hbm/lang/de_DE.lang +++ b/src/main/resources/assets/hbm/lang/de_DE.lang @@ -450,8 +450,10 @@ container.watzPowerplant=Watzkraftwerk container.zirnox=ZIRNOX Atomreaktor crucible.aa=Herstellung - Fortgeschrittene Legierung -crucible.cdalloy=Herstellung Cadmiumstahl -crucible.cmb=Herstellung CMB-Stahl +crucible.abronze=Herstellung - Arsennronze +crucible.bbronze=Herstellung - Bismutbronze +crucible.cdalloy=Herstellung - Cadmiumstahl +crucible.cmb=Herstellung - CMB-Stahl crucible.ferro=Herstellung - Ferrouran crucible.hematite=Herstellung - Eisen aus Hämatit crucible.hss=Herstellung - Schnellarbeitsstahl @@ -791,10 +793,12 @@ hbmmat.americiumrg=Reaktorfähiges Armericium hbmmat.americium241=Americium-241 hbmmat.americium242=Americium-242 hbmmat.arsenic=Arsen +hbmmat.arsenicbronze=Arsenbronze hbmmat.asbestos=Asbest hbmmat.bakelite=Bakelit hbmmat.beryllium=Beryllium hbmmat.bismuth=Bismut +hbmmat.bismuthbronze=Bismutbronze hbmmat.borax=Borax hbmmat.boron=Bor hbmmat.cadmium=Cadmium @@ -1306,7 +1310,7 @@ item.bobmazon_machines.name=Bobmazon: Blöcke und Maschinen item.bobmazon_materials.name=Bobmazon: Ressourcen item.bobmazon_tools.name=Bobmazon: Werkzeuge item.bobmazon_weapons.name=Bobmazon: Waffen und Sprengstoffe -item.bolt.name=%sbolzen +item.boltntm.name=%sbolzen item.bolt_compound.name=Verstärkte Turbinenwelle item.bolt_spike.name=Gleisnagel item.boltgun.name=Pneumatische Nietenpistole @@ -2114,6 +2118,7 @@ item.ingot_am241.name=Americium-241-Barren item.ingot_am242.name=Americium-242-Barren item.ingot_americium_fuel.name=Americiumkernbrennstoffbarren item.ingot_arsenic.name=Arsenbarren +item.ingot_arsenic_bronze.name=Arsenbronzebarren item.ingot_asbestos.name=Asbestplatte item.ingot_au198.name=Gold-198-Barren item.ingot_australium.name=Australiumbarren @@ -2121,6 +2126,7 @@ item.ingot_bakelite.name=Bakelittafel item.ingot_beryllium.name=Berylliumbarren item.ingot_biorubber.name=Latextafel item.ingot_bismuth.name=Bismutbarren +item.ingot_bismuth_bronze.name=Bismutbronzebarren item.ingot_boron.name=Borbarren item.ingot_c4.name=C4-Tafel item.ingot_cadmium.name=Cadmiumbarren @@ -2713,7 +2719,7 @@ item.pill_iodine.name=Iodpille item.pill_herbal.name=Kräuterpaste item.pill_red.name=Rote Pille item.pin.name=Haarklammer -item.pipe.name=%srohr +item.pipentm.name=%srohr item.pipes_steel.name=Stahlrohre item.pipes_steel.desc=Auf Recycling-Rezepte wurden wegen$Steuerhinterziehung verzichtet. item.piston_selenium.name=Motorkolben @@ -3165,7 +3171,7 @@ item.serum.name=Serum item.servo_set.name=Servo-Set item.servo_set_desh.name=Deshservo-Set item.shackles.name=Fußschellen -item.shell.name=%smantel +item.shellntm.name=%smantel item.shimmer_axe.name=Shimmer Axe item.shimmer_axe_head.name=Schwerer Axtkopf item.shimmer_handle.name=Verstärketer Polymergriff @@ -3551,7 +3557,10 @@ tile.ams_base.name=AMS-Basis (Deko) tile.ams_emitter.name=AMS-Emitter (Deko) tile.ams_limiter.name=AMS-Stabilisator (Deko) tile.ancient_scrap.name=Antikes Altmetall +tile.anvil_arsenic_bronze.name=Arsenbronzeamboss tile.anvil_bismuth.name=Bismutamboss +tile.anvil_bismuth_bronze.name=Bismuthbronzeamboss +tile.anvil_desh.name=Deshamboss tile.anvil_dnt.name=Dineutroniumamboss tile.anvil_ferrouranium.name=Ferrouranamboss tile.anvil_iron.name=Eisenamboss @@ -3559,6 +3568,7 @@ tile.anvil_lead.name=Bleiamboss tile.anvil_meteorite.name=Meteoritenamboss tile.anvil_murky.name=Düsteramboss tile.anvil_osmiridium.name=Osmiridiumamboss +tile.anvil_saturnite.name=Saturnitamboss tile.anvil_schrabidate.name=Eisenschrabidatamboss tile.anvil_starmetal.name=Sternenmetallamboss tile.anvil_steel.name=Stahlamboss @@ -4482,6 +4492,10 @@ tile.red_cable_paintable.name=Geschirmtes rotes Kupferkabel (Färbbar) tile.red_connector.name=Stromverbindungsstück tile.red_pylon.name=Strommasten tile.red_pylon_large.name=Hochspannungsmasten +tile.red_pylon_medium_steel.name=Stählerner mittelgroßer Strommasten +tile.red_pylon_medium_steel_transformer.name=Stählerner mittelgroßer Strommasten mit Transformator +tile.red_pylon_medium_wood.name=Hölzerner mittelgroßer Strommasten +tile.red_pylon_medium_wood_transformer.name=Hölzerner mittelgroßer Strommasten mit Transformator tile.red_wire_coated.name=Geschirmtes rotes Kupferkabel tile.reinforced_brick.name=Verstärkter Stein tile.reinforced_brick_stairs.name=Verstärkte Steintreppe diff --git a/src/main/resources/assets/hbm/lang/en_US.lang b/src/main/resources/assets/hbm/lang/en_US.lang index 7d74c5a94..872fd2161 100644 --- a/src/main/resources/assets/hbm/lang/en_US.lang +++ b/src/main/resources/assets/hbm/lang/en_US.lang @@ -845,6 +845,8 @@ container.watzPowerplant=Watz Power Plant container.zirnox=ZIRNOX Nuclear Reactor crucible.aa=Advanced Alloy Production +crucible.abronze=Arsenic Bronze Production +crucible.bbronze=Bismuth Bronze Production crucible.cdalloy=Cadmium Steel Production crucible.cmb=CMB Steel Production crucible.ferro=Ferrouranium Production @@ -1482,10 +1484,12 @@ hbmmat.americiumrg=Reactor-Grade Americium hbmmat.americium241=Americium-241 hbmmat.americium242=Americium-242 hbmmat.arsenic=Arsenic +hbmmat.arsenicbronze=Arsenic Bronze hbmmat.asbestos=Asbestos hbmmat.bakelite=Bakelite hbmmat.beryllium=Beryllium hbmmat.bismuth=Bismuth +hbmmat.bismuthbronze=Bismuth Bronze hbmmat.borax=Borax hbmmat.boron=Boron hbmmat.cadmium=Cadmium @@ -2009,7 +2013,7 @@ item.bobmazon_machines.name=Bobmazon: Blocks and Machines item.bobmazon_materials.name=Bobmazon: Materials item.bobmazon_tools.name=Bobmazon: Tools item.bobmazon_weapons.name=Bobmazon: Weapons and Explosives -item.bolt.name=%s Bolt +item.boltntm.name=%s Bolt item.bolt_compound.name=Reinforced Turbine Shaft item.bolt_spike.name=Railroad Spike item.bolt_spike.desc=Radiates a threatening aura, somehow @@ -2889,6 +2893,7 @@ item.ingot_am241.name=Americium-241 Ingot item.ingot_am242.name=Americium-242 Ingot item.ingot_americium_fuel.name=Ingot of Americium Fuel item.ingot_arsenic.name=Arsenic Ingot +item.ingot_arsenic_bronze.name=Arsenic Bronze Ingot item.ingot_asbestos.name=Asbestos Sheet item.ingot_asbestos.desc=§o"Filled with life, self-doubt and asbestos. That comes with the air."§r item.ingot_au198.name=Gold-198 Ingot @@ -2897,6 +2902,7 @@ item.ingot_bakelite.name=Bakelite Bar item.ingot_beryllium.name=Beryllium Ingot item.ingot_biorubber.name=Latex Bar item.ingot_bismuth.name=Bismuth Ingot +item.ingot_bismuth_bronze.name=Bismuth Bronze Ingot item.ingot_boron.name=Boron Ingot item.ingot_c4.name=Bar of Composition C-4 item.ingot_cadmium.name=Cadmium Ingot @@ -3555,7 +3561,7 @@ item.pill_herbal.desc=Effective treatment against lung disease and mild radiatio item.pill_red.name=Red Pill item.pin.name=Bobby Pin item.pin.desc=Standard success rate of picking a regular lock is ~10%%. -item.pipe.name=%s Pipe +item.pipentm.name=%s Pipe item.pipes_steel.name=Steel Pipes item.pipes_steel.desc=Uncrafting was omitted due to tax evasion. item.piston_selenium.name=Combustion Engine Piston @@ -4130,7 +4136,7 @@ item.serum.name=Serum item.servo_set.name=Servo Set item.servo_set_desh.name=Desh Servo Set item.shackles.name=Shackles -item.shell.name=%s Shell +item.shellntm.name=%s Shell item.shimmer_axe.name=Shimmer Axe item.shimmer_axe_head.name=Heavy Axe Head item.shimmer_handle.name=Reinforced Polymer Handle @@ -4560,7 +4566,10 @@ tile.ams_base.name=AMS Base (Deco) tile.ams_emitter.name=AMS Emitter (Deco) tile.ams_limiter.name=AMS Stabilizer (Deco) tile.ancient_scrap.name=Ancient Scrap Metal +tile.anvil_arsenic_bronze.name=Arsenic Bronze Anvil tile.anvil_bismuth.name=Bismuth Anvil +tile.anvil_bismuth_bronze.name=Bismuth Bronze Anvil +tile.anvil_desh.name=Desh Anvil tile.anvil_dnt.name=Dineutronium Anvil tile.anvil_ferrouranium.name=Ferrouranium Anvil tile.anvil_iron.name=Iron Anvil @@ -4568,6 +4577,7 @@ tile.anvil_lead.name=Lead Anvil tile.anvil_meteorite.name=Meteorite Anvil tile.anvil_murky.name=Murky Anvil tile.anvil_osmiridium.name=Osmiridium Anvil +tile.anvil_saturnite.name=Saturnite Anvil tile.anvil_schrabidate.name=Ferric Schrabidate Anvil tile.anvil_starmetal.name=Starmetal Anvil tile.anvil_steel.name=Steel Anvil @@ -5537,8 +5547,12 @@ tile.red_cable_gauge.name=Power Gauge tile.red_cable_gauge.desc=Cable that displays how much power$moves within the network per tick.$Split networks connected by energy$storage blocks are considered as one shared network. tile.red_cable_paintable.name=Paintable Red Copper Cable tile.red_connector.name=Electricity Connector -tile.red_pylon.name=Electricity Pole +tile.red_pylon.name=Electricity Pylon tile.red_pylon_large.name=Large Electricity Pylon +tile.red_pylon_medium_steel.name=Medium Steel Electicity Pylon +tile.red_pylon_medium_steel_transformer.name=Medium Steel Electicity Pylon with Transformer +tile.red_pylon_medium_wood.name=Medium Wooden Electicity Pylon +tile.red_pylon_medium_wood_transformer.name=Medium Wooden Electicity Pylon with Transformer tile.red_wire_coated.name=Coated Red Copper Cable tile.reinforced_brick.name=Reinforced Stone tile.reinforced_brick_stairs.name=Reinforced Stone Stairs diff --git a/src/main/resources/assets/hbm/lang/ru_RU.lang b/src/main/resources/assets/hbm/lang/ru_RU.lang index 6b9614880..effe333e3 100644 --- a/src/main/resources/assets/hbm/lang/ru_RU.lang +++ b/src/main/resources/assets/hbm/lang/ru_RU.lang @@ -229,6 +229,40 @@ cannery.willow.7=Теперь листья ивы можно собирать. cannery.willow.8=Вскоре растение снова начнет расти, давая больше листьев, если землю заменить на нефтянную. Листья могут быть переработаны в порошок кадмия с помощью рудного окислителя. cannery.willow.9=Сбор ивовых листьев можно автоматизировать с помощью автоматической бензопилы, она будет ломать только те растения, которые готовы к сбору урожая. +cannery.hadron=Ускоритель частиц +cannery.hadron.0=Ускоритель частиц состоит из трех основных частей: Ядро, Камера анализа и набор сверхпроводящих катушек. +cannery.hadron.1=Это компонент ядра ускорителя частиц, который выстреливает частицы с релятивистскими скоростями по катушкам в сторону аналитической камеры +cannery.hadron.2=Частицы выбрасываются отсюда +cannery.hadron.3=И в круговых ускорителях возвращаются сюда +cannery.hadron.4=Сегмент катушки строится с помощью 8 плотных катушек, в середине которых ничего нет (или ядро) +cannery.hadron.5= Этот сегмент катушки также должен быть заключен в оболочку ускорителя частиц +cannery.hadron.6=Для доступа к компоненту ядра вам потребуется добавить один или несколько терминалов доступа +cannery.hadron.7=Для работы основного компонента также потребуется питание, добавьте разъем питания на одной из граней +cannery.hadron.8=Ускорителю потребуется достаточное количество штекеров питания, чтобы обеспечить по крайней мере 10KHE электроэнергии на единицу прочности катушки +cannery.hadron.9= Обратите внимание, что сегмент катушки, который оборачивается вокруг основного компонента, не учитывается при расчете прочности катушки +cannery.hadron.10= Для чисто линейных ускорителей этот сегмент катушки также не требуется +cannery.hadron.11=Для круговых ускорителей необходимо добавить углы для изменения направления частицы +cannery.hadron.12= Внешние угловые катушки можно совсем не добавлять +cannery.hadron.13= Последняя часть нашего ускорителя - камера анализа, которая представляет собой пустую камеру 3x3x3, окруженную блоками камеры анализа +cannery.hadron.14=Ваш готовый ускоритель частиц должен выглядеть примерно так! + +cannery.hadron.math.0= Сила неодимовой катушки: 50 +cannery.hadron.math.1=50 x 8 x 10KHE = 400 x 10KHE = 4MHE +cannery.hadron.math.2=Прочность металлической катушки: 1,000 +cannery.hadron.math.3=1,000 x 8 x 10KHE = 8,000 x 10KHE = 80MHE + +cannery.schottky=Диод с частицами Шоттки +cannery.schottky.0=Это диод Шоттки для частиц. Он позволяет создавать более сложные конструкции ускорителей частиц и экономить электроэнергию +cannery.schottky.1=По умолчанию он блокирует все частицы и должен быть настроен с помощью отвертки +cannery.schottky.2=Это лицо теперь будет принимать входящие частицы +cannery.schottky.3=А это лицо будет выбрасывать входящие частицы +cannery.schottky.4=Диод теперь имеет два выхода и будет вести себя квантовым образом, создавая виртуальные частицы для каждого выхода +cannery.schottky.5=Когда все виртуальные частицы достигнут аналитической камеры, будет выбрана частица с наименьшим импульсом, необходимым для текущего рецепта +cannery.schottky.6= Выбранная частица подвергается коллапсу волновой функции и становится реальной, потребляя только ту энергию, которая требуется коллапсирующей частице +cannery.schottky.7= Если какие-либо виртуальные частицы сталкиваются с неправильными сегментами, все виртуальные частицы отбрасываются, а вместо них коллапсирует ошибочная частица +cannery.schottky.8= Обратите внимание, что виртуальные частицы никогда не будут использовать один и тот же выход диода дважды. Бесконечные циклы будут неудачными, но повторный вход в диод в остальном будет нормальным +cannery.schottky.9= Ваш диод Шоттки для частиц должен быть правильно заключен, со свободными путями для каждого выхода пересечения + potion.hbm_taint=Порча potion.hbm_mutation=Заражённое порчей сердце potion.hbm_radiation=Излучение @@ -455,6 +489,8 @@ shape.ingot=Слиток shape.dust=Порошок shape.plate=Пластина shape.plateTriple=Литая пластина +shape.ntmpipe=Труба +shape.shell=Оболочка shape.quart=Четверть блока shape.block=Блок shape.wireDense=Плотный провод @@ -1949,8 +1985,10 @@ tile.machine_large_turbine.name=Промышленная паровая турб container.machineLargeTurbine=Промышленная паровая турбина tile.machine_chungus.name=Паровая турбина "Левиафан" tile.launch_pad.name=Силосная пусковая площадка +container.launchPadRusted=Пусковая площадка container.launchPad=Пусковая площадка tile.launch_pad_large.name=Пусковая площадка +tile.launch_pad_rusted.name=Старая пусковая площадка tile.compact_launcher.name=Компактная пусковая площадка container.compactLauncher=Компактная пусковая площадка tile.launch_table.name=Большая пусковая площадка @@ -2020,6 +2058,7 @@ tile.fluid_duct_neo.name=Универсальная жидкостная тру tile.fluid_duct_gauge.name=Труба с измерителем потока tile.fluid_duct_gauge.desc=Труба которая показывает сколько жидкости$перемещается внутри сети за тик.$Разделенные сети, соединенные бочками$или резервуары рассматриваются как одна общая сеть. tile.fluid_duct_exhaust.name=Выхлопная труба +tile.machine_drain.name=Сливная труба tile.fluid_switch.name=Редстоун-Жидкостный клапан tile.fluid_valve.name=Жидкостный клапан tile.fluid_duct_solid.name=Покрытая универсальная жидкостная труба (Устаревшее) @@ -2102,6 +2141,7 @@ tile.turret_jeremy.name=Автопушка "Джереми" tile.turret_tauon.name=Прототип турели XVL1456 "Тауон" tile.turret_richard.name=Ракетная турель "Ричард" tile.turret_sentry.name=Сторожевая турель "Браун" +tile.turret_sentry_damaged.name=Сторожевая турель "Эдвин" container.turretHoward=Говард tile.turret_howard.name=Двойная турель Гатлинга CIWS "Говард" container.turretMaxwell=Максвелл @@ -2157,54 +2197,63 @@ container.hydrotreater=Гидроочиститель tile.machine_hydrotreater.name=Гидроочиститель tile.conveyor.name=Конвейер -tile.conveyor.desc=Moves items dropped on it$Can be rotated clockwise with a screwdriver$Shift-click with screwdriver to bend +tile.conveyor.desc=Перемещает предметы, упавшие на него$Может вращаться по часовой стрелке с помощью отвертки$Нажмите на отвертку для сгибания tile.conveyor_express.name=Быстрый конвейер -tile.conveyor_express.desc=Moves items dropped on it very fast$Can be rotated clockwise with a screwdriver$Shift-click with screwdriver to bend +tile.conveyor_express.desc=Перемещает предметы, упавшие на него, очень быстро$Может вращаться по часовой стрелке с помощью отвертки$Нажмите на отвертку, чтобы согнуть container.craneExtractor=Конвейерный извлекатель container.craneInserter=Конвейерный вставщик tile.crane_extractor.name=Конвейерный извлекатель -tile.crane_extractor.desc=Takes items from inventories and places them on covneyor belts$Has up to 9 filter slots with black and whitelist$Right-click with screwdriver to set output side$Shift-click with screwdriver to set the input side$Click twice to set the opposite side +tile.crane_extractor.desc=Забирает предметы из инвентаря и помещает их на конвейерные ленты$Имеет до 9 слотов фильтрации с черным и белым списком$Правый клик отверткой для установки выходной стороны$Shift-клик отверткой для установки входной стороны$Кликните дважды для установки противоположной стороны tile.crane_inserter.name=Конвейерный вставщик -tile.crane_inserter.desc=Accepts items from conveyors and places them into containers$Right-click with screwdriver to set input side$Shift-click with screwdriver to set the output side$Click twice to set the opposite side +tile.crane_inserter.desc=Принимает предметы с конвейеров и помещает их в контейнеры$Правый щелчок отверткой для установки входной стороны$Shift-щелчок отверткой для установки выходной стороны$Кликните дважды для установки противоположной стороны container.craneBoxer=Конвейерный упаковщик container.craneRouter=Конвейерный сортировщик container.craneUnboxer=Конвейерный распаковщик tile.crane_boxer.name=Конвейерный упаковщик -tile.crane_boxer.desc=Loads a configurable amount of stacks into boxes which move along conveyor belts$Right-click with screwdriver to set input side$Shift-click with screwdriver to set the output side$Click twice to set the opposite side +tile.crane_boxer.desc=Загружает настраиваемое количество стопок в ящики, которые перемещаются по конвейерным лентам$Правый клик отверткой для установки входной стороны$Шифтовый клик отверткой для установки выходной стороны$Кликните дважды для установки противоположной стороны tile.crane_router.name=Конвейерный сортировщик -tile.crane_router.desc=Sorts item based on defined criteria$Sides can be defined as blacklist, whitelist or wildcard$Wildcard sides are only chosen if no other filter matches +tile.crane_router.desc=Сортирует элемент на основе заданных критериев$Стороны могут быть определены как черный список, белый список или подстановочный знак$Стороны подстановочного знака выбираются только в том случае, если ни один другой фильтр не подходит tile.crane_unboxer.name=Конвейерный распаковщик -tile.crane_unboxer.desc=Receives boxes and extracts their contents$Right-click with screwdriver to set output side$Shift-click with screwdriver to set the input side$Click twice to set the opposite side +tile.crane_unboxer.desc=Прием коробок и извлечение их содержимого$Правый щелчок отверткой для установки выходной стороны$Shift-щелчок отверткой для установки входной стороны$Дважды щелкните для установки противоположной стороны tile.conveyor_chute.name=Конвейерный желоб -tile.conveyor_chute.desc=Moves items down$The bottom-most chute will act like a regular conveyor belt +tile.conveyor_chute.desc=Перемещает предметы вниз$Самый нижний желоб будет действовать как обычный конвейер tile.conveyor_double.name=Двухполосный конвейер -tile.conveyor_double.desc=Moves items dropped on it$Can be rotated clockwise with a screwdriver$Shift-click with screwdriver to bend +tile.conveyor_double.desc=Перемещает предметы, опущенные на него$Может поворачиваться по часовой стрелке с помощью отвертки$Нажмите на отвертку для сгибания tile.conveyor_lift.name=Конвейерный цепной лифт -tile.conveyor_lift.desc=Moves items up$Requires at least two blocks on top of each other to work properly +tile.conveyor_lift.desc=Перемещает предметы вверх$Для правильной работы требуется не менее двух блоков друг на друге tile.conveyor_triple.name=Трёхполосный конвейер -tile.conveyor_triple.desc=Moves items dropped on it$Can be rotated clockwise with a screwdriver$Shift-click with screwdriver to bend +tile.conveyor_triple.desc=Перемещает предметы, упавшие на него$Может вращаться по часовой стрелке с помощью отвертки$Нажмите на отвертку для сгибания container.craneGrabber=Конвейерный сборщик tile.crane_grabber.name=Конвейерный сборщик -tile.crane_grabber.desc=Takes items from passing conveyors and places them into containers$Will only take items from the closest lane$Has up to 9 filter slots with black and whitelist$Right-click with screwdriver to set input side$Shift-click with screwdriver to set the output side$Click twice to set the opposite side +tile.crane_grabber.desc=Принимает предметы с проходящих конвейеров и помещает их в контейнеры$Принимает предметы только с ближайшей дорожки$Имеет до 9 слотов фильтрации с черным и белым списком$Правый клик отверткой для установки стороны входа$Сменный клик отверткой для установки стороны выхода$Кликните дважды для установки противоположной стороны tile.crane_splitter.name=Конвейерный разделитель -tile.crane_splitter.desc=Splits items and stacks evenly onto two conveyor belts$Is a conveyor belt itself, so it can directly input into an inserter or sorter +tile.crane_splitter.desc=Разделяет предметы и равномерно укладывает их на две конвейерные ленты$Сама является конвейерной лентой, поэтому может напрямую входить в инсертер или сортировщик container.droneCrate=Пассивный ящик для дронов container.droneDock=Дрон-станция container.droneProvider=Ящик снабжения для дронов container.droneRequester=Ящик запроса для дронов tile.drone_crate.name=Пассивный ящик для дронов +tile.drone_crate.desc=Погрузочно-разгрузочная точка для транспортных дронов.$Действует как путевая точка, должна быть связана с линкером дронов.$Дроны должны приближаться под большим углом, иначе они застрянут. tile.drone_crate_provider.name=Ящик снабжения для дронов +tile.drone_crate_provider.desc=Предлагает предметы логистической сети.$Логистические дроны будут пытаться переместить предметы от поставщиков в ящики покупателей. tile.drone_crate_requester.name=Ящик запроса для дронов +tile.drone_crate_requester.desc=Запрашивает предметы из логистической сети.$Предметы, добавленные в фильтр, будут запрошены, если отсутствуют в его инвентаре. tile.drone_dock.name=Дрон-станция +tile.drone_dock.desc=Точка спауна для логистических дронов.$Может обнаруживать поставщиков и заказчиков только в радиусе 5 чанков.$Дроны будут следовать только до 10 путевых точек за соединение. tile.drone_waypoint.name=Путевая точка для дронов -tile.drone_waypoint.desc=Путевая точка для дронов$Use a transport drone linker to set the path$Click on each waypoint and crate in sequence to create the path,$then shift-click to clear the saved position$Right-click or shift-click the waypoint to change the waypoint's offset +tile.drone_waypoint.desc=Путевая точка для дронов$Используйте линкер транспортного дрона, чтобы задать путь$Нажимайте на каждую путевую точку и крейт последовательно, чтобы создать путь,$ затем нажмите shift, чтобы очистить сохраненную позицию$ Щелкните правой кнопкой мыши или shift, чтобы изменить смещение путевой точки tile.drone_waypoint_request.name=Логистическая путевая точка для дронов item.drone.patrol.name=Транспортный дрон +item.drone.patrol.desc=Путешествует по маршруту с путевыми точками$Пытается загрузиться/разгрузиться каждый раз, когда достигает ящика с дронами$Правый клик на ящике с дронами для размещения. item.drone.patrol_chunkloading.name=Транспортный дрон (Чанклоадер) +item.drone.patrol_chunkloading.desc=Путешествует по маршруту с путевыми точками$Пытается загрузиться/разгрузиться каждый раз, когда достигает ящика с дронами$Правый клик на ящике с дронами для размещения.$Загружает куски! item.drone.patrol_express.name=Быстрый транспортный дрон +item.drone.patrol_express.desc=Путешествует по маршруту с путевыми точками$Пытается загрузиться/разгрузиться каждый раз, когда достигает ящика с дронами$Правый клик на ящике с дронами для размещения. item.drone.patrol_express_chunkloading.name=Быстрый транспортный дрон (Чанклоадер) +item.drone.patrol_express_chunkloading.desc=Путешествует по маршруту с путевыми точками$Пытается загрузиться/разгрузиться каждый раз, когда достигает ящика с дронами$Правый клик поверх ящика с дронами для размещения.$Загружает куски! item.drone.request.name=Логистический дрон +item.drone.request.desc=Используется доками логистических дронов для порождения логистических дронов$Дроны следуют по путевым точкам логистических дронов$После выполнения запроса дрон возвращается в док. item.drone_linker.name=Соединитель пассивных ящиков для дронов container.turretArty=Грег @@ -2397,6 +2446,8 @@ tile.pwr_port.name=Люк доступа ВВЭР tile.pwr_port.desc=Ввод/вывод жидкостей и предметов$Размещение: Обшивка tile.pwr_reflector.name=Нейтронный отражатель ВВЭР tile.pwr_reflector.desc=Отражает нейтроны обратно к топливным стержням$Размещение: Внутри, повышает реактивность$Подходит для обшивки +tile.pwr_heatsink.name=Радиатор ВВЭР +tile.pwr_heatsink.desc=Увеличивает теплоемкость активной зоны на 5%%$Делает каналы охлаждающей жидкости и теплообменники чуть менее эффективными$Размещение: Любое container.hadron=Ускоритель частиц tile.hadron_access.name=Терминал доступа ускорителя частиц @@ -2496,6 +2547,7 @@ tile.rbmk_absorber.name=Борный поглотитель нейтронов tile.rbmk_blank.name=Структурная колонна РБМК tile.rbmk_boiler.name=Паровой канал РБМК tile.rbmk_loader.name=Паровой проводник РБМК +tile.rbmk_loader.desc=Позволяет РБМК иметь внизу соединения для воды и пара$Поместите одну водную трубу под колонной РБМК, затем проводник,$потом подключите паропровод к проводнику. tile.rbmk_control.name=Регулирующие стержни РБМК tile.rbmk_control_auto.name=Автоматические регулирующие стержни РБМК tile.rbmk_moderator.name=Графитовый замедлитель РБМК @@ -2509,7 +2561,9 @@ tile.rbmk_control_mod.name=Замедляющие регулирующие ст tile.rbmk_rod_mod.name=Замедляющие топливные стержни РБМК tile.rbmk_rod_reasim_mod.name=Замедляющие топливные стержни РБМК (РеаСим) tile.rbmk_steam_inlet.name=Порт ввода воды РБМК РеаСим +tile.rbmk_steam_inlet.desc=Подает воду в колонны RBMK, если включены ReaSim бойлеры$Подключается к колоннам RBMK сбоку tile.rbmk_steam_outlet.name=Порт вывода пара РБМК РеаСим +tile.rbmk_steam_outlet.desc=Извлекает перегретый пар из колонн РБМК, если включены ReaSim бойлеры$Подключается к колоннам RBMK сбоку tile.deco_rbmk.name=Деко-блоки РБМК tile.deco_rbmk_smooth.name=Гладкие деко-блоки РБМК container.rbmkBoiler=Паровой канал РБМК @@ -2687,6 +2741,7 @@ item.ingot_steel_dusted.name=Запылённой стальной слиток item.ingot_chainsteel.name=Тяжёлая цепная сталь item.ingot_tcalloy.name=Слиток технециевой стали item.plate_steel.name=Стальная пластина +item.plate_dura_steel.name=Пластина высокоскоростной стали item.ingot_beryllium.name=Бериллевый слиток item.plate_schrabidium.name=Шрабидиевая пластина item.ingot_schraranium.name=Шрараниевый слиток @@ -2790,10 +2845,11 @@ item.ingot_polymer.name=Полимер item.ingot_rubber.name=Резина item.ingot_biorubber.name=Брусок латекса item.ingot_polonium.name=Слиток полония-210 +item.pipentm.name=%s трубы item.pipes_steel.name=Стальные трубы item.pipes_steel.desc=Раскрафт был исключен из-за уклонения от уплаты налогов item.drill_titanium.name=Титановый бур -item.bolt.name=Стержень из %s +item.boltntm.name=Стержень из %s item.bolt_spike.name=Железнодорожный гвоздь item.bolt_spike.desc=Излучает угрожающую ауру, как-то item.bolt_compound.name=Укрепленный вал турбины @@ -2980,6 +3036,10 @@ item.circuit_star.desc=Не используется сейчас из-за от item.circuit_star_component.chipset.name=Чипсет Звёздного Диспетчера item.circuit_star_component.cpu.name=Процессор Звёздного Диспетчера item.circuit_star_component.ram.name=Оперативная память Звёздного Диспетчера +item.circuit_star_component.card.name=Карта расширения Звёздного Диспетчера +item.circuit_star_piece.board_converter.name=ЗД - Преобразователь напряжения +item.circuit_star_piece.card_board.name=ЗД - Плата карты расширения +item.circuit_star_piece.card_processor.name=ЗД - Процессор платы расширения item.circuit_star_piece.board_blank.name=ЗД - Печатная плата item.circuit_star_piece.board_transistor.name=ЗД - Транзисторы item.circuit_star_piece.bridge_bios.name=ЗД - Чип БИОС @@ -3075,6 +3135,7 @@ tile.balefire.name=Жар-пламя tile.block_waste_painted.name=Покрашенный блок ядерных отходов tile.block_scrap.name=Блок металлолома tile.block_slag.name=Блок шлака +tile.oil_spill.name=Разлитая нефть tile.pribris.name=Обломки РБМК tile.pribris_digamma.name=Почерневшие обломки РБМК tile.pribris_burning.name=Горящие обломки РБМК @@ -3271,6 +3332,7 @@ item.ore_byproduct.b_uranium.name=Урановый побочный продук item.ammonium_nitrate.name=Нитрат аммония tile.bobblehead.name=Болванчик +tile.snowglobe.name=Снежный шар tile.deco_titanium.name=Титановый декоративный блок tile.deco_red_copper.name=Красномедный декоративный блок tile.deco_tungsten.name=Вольфрамовый декоративный блок @@ -3474,7 +3536,7 @@ tile.barbed_wire_fire.name=Пылающая колючая проволока tile.barbed_wire_poison.name=Отравленная колючая проволока tile.barbed_wire_acid.name=Кислотная колючая проволока tile.barbed_wire_wither.name=Иссушающая колючая проволока -tile.barbed_wire_ultradeath.name=Розовооблачная колючая проволока +tile.barbed_wire_ultradeath.name=Радиоактивная колючая проволока tile.fence_metal.name=Проволочная сетка tile.sand_uranium.name=Урановый песок tile.glass_uranium.name=Урановое стекло @@ -4269,7 +4331,7 @@ item.grenade_nuke.name=Буровая граната “Марк VI” item.grenade_nuclear.name=Ядерная граната item.grenade_zomg.name=Граната аннигиляции пар отрицательной энергии item.grenade_black_hole.name=Граната сингулярности -item.grenade_cloud.name=Колба с облаком +item.grenade_cloud.name=Колба с кислотным облаком item.grenade_pink_cloud.name=Колба с розовым облаком item.ullapool_caber.name=Аллапульское бревно item.grenade_smart.name=Смарт-граната @@ -4419,6 +4481,8 @@ tile.tape_recorder.name=Магнитофон tile.steel_poles.name=Стальные опоры tile.pole_top.name=Антенна tile.deco_computer.ibm_300pl.name=Персональный компьютер IBM 300PL +tile.deco_crt.name=Старый ЭЛТ-экран +tile.deco_toaster.name=Сломанный тостер tile.filing_cabinet.green.name=Пыльный карточеный шкафчик tile.filing_cabinet.steel.name=Стальной карточеный шкафчик container.fileCabinet=Карточеный шкафчик @@ -4442,7 +4506,7 @@ item.gun_revolver_cursed.name=Проклятый револьвер item.gun_revolver_nightmare.name=Кошмарный револьвер (Оригинал) item.gun_revolver_nightmare2.name=Кошмарный револьвер (Тёмный) item.gun_revolver_pip.name=Лил' Пипсквик -item.gun_revolver_nopip.name=Новак +item.gun_revolver_nopip.name=Тяжёлый револьвер item.gun_revolver_blackjack.name=Пятизарядный револьвер Блэкджек item.gun_revolver_silver.name=Одолженный пистолет item.gun_revolver_red.name=Револьвер с красным ключом @@ -4808,7 +4872,7 @@ item.syringe_metal_psycho.name=Психо item.syringe_metal_super.name=Супер-стимулятор item.syringe_taint.name=Водянистая инъекция порчи item.syringe_mkunicorn.name=MKUNICORN -item.med_bag.name=Докторский саквояж +item.med_bag.name=Аптечка первой помощи item.radaway.name=Антирадин item.radaway_strong.name=Усиленный антирадин item.radaway_flush.name=Супер-антирадин @@ -4902,6 +4966,7 @@ eye.speakTo=Вы говорите Оку: §o%s item.plastic_bag.name=Пластиковый пакетик item.cap_aluminium.name=Алюминиевый колпачок +item.shellntm.name=%s оболочка item.hull_small_steel.name=Небольшая стальная оболочка item.hull_small_aluminium.name=Небольшая алюминиевая оболочка item.hull_small_aluminium.desc=Может быть вставлен в просверленный графит @@ -5045,6 +5110,7 @@ item.missile_nuclear_cluster.name=Термоядерная ракета item.missile_endo.name=Эндотермическая ракета item.missile_exo.name=Экзотермическая ракета item.missile_doomsday.name=Ракета Судного Дня +item.missile_doomsday_rusted.name=Повреждённая ракета Судного Дня item.missile_taint.name=Зараженная ракета item.missile_micro.name=Микро-ядерная ракета item.missile_bhole.name=Ракета "Черная Дыра" @@ -5471,6 +5537,10 @@ item.meteorite_sword_fused.name=Метеоритовый меч (Сплавле item.meteorite_sword_baleful.name=Метеоритовый меч (Зловещий) item.crucible.name="Горнило Палача" item.bismuth_pickaxe.name=Висмутовая кирка +item.bismuth_axe.name=Висмутовый топор +item.chlorophyte_axe.name=Хлорофитовый топор +item.mese_axe.name=Месе топор +item.volcanic_axe.name=Литой топор tile.red_cable.name=Провод из красной меди tile.red_cable_paintable.name=Окрашиваемый провод из красной меди @@ -5554,6 +5624,9 @@ item.detonator_de.name=Взрывчатка мертвеца item.crate_caller.name=Запросчик поставки припасов item.bomb_caller.name=Устройство для обозначения авиаудара item.meteor_remote.name=Устройство для вызова метеоритов +item.launch_code.name=Код запуска +item.launch_code_piece.name=Кусок кода запуска +item.launch_key.name=Ключ запуска item.ingot_hes.name=Высокообогащенный слиток шрабидиевого топлива item.ingot_les.name=Низкообогащенный слиток шрабидиевого топлива diff --git a/src/main/resources/assets/hbm/lang/zh_CN.lang b/src/main/resources/assets/hbm/lang/zh_CN.lang index 555afa11d..1dae36e7c 100644 --- a/src/main/resources/assets/hbm/lang/zh_CN.lang +++ b/src/main/resources/assets/hbm/lang/zh_CN.lang @@ -1907,7 +1907,7 @@ item.bobmazon_machines.name=Bobmazon: 方块和机器 item.bobmazon_materials.name=Bobmazon: 材料 item.bobmazon_tools.name=Bobmazon: 工具 item.bobmazon_weapons.name=Bobmazon: 武器和爆炸物 -item.bolt.name=%s螺栓 +item.boltntm.name=%s螺栓 item.bolt_compound.name=加强涡轮机轴 item.bolt_dura_steel.name=高速钢螺栓 item.bolt_tungsten.name=钨螺栓 diff --git a/src/main/resources/assets/hbm/models/network/pylon_medium.obj b/src/main/resources/assets/hbm/models/network/pylon_medium.obj new file mode 100644 index 000000000..750e781b9 --- /dev/null +++ b/src/main/resources/assets/hbm/models/network/pylon_medium.obj @@ -0,0 +1,1023 @@ +# Blender v2.79 (sub 0) OBJ File: 'pylon_medium.blend' +# www.blender.org +o Transformer +v -0.187500 0.312500 -0.250000 +v 0.187500 0.312500 -0.250000 +v -0.187500 0.687500 -0.250000 +v 0.187500 0.687500 -0.250000 +v -0.187500 0.687500 -0.500000 +v -0.187500 0.312500 -0.500000 +v 0.187500 0.312500 -0.500000 +v 0.187500 0.687500 -0.500000 +v -0.250000 5.500000 -0.125000 +v 0.250000 5.500000 -0.125000 +v -0.250000 6.500000 -0.125000 +v 0.250000 6.500000 -0.125000 +v -0.250000 6.500000 -0.625000 +v -0.250000 5.500000 -0.625000 +v 0.250000 5.500000 -0.625000 +v 0.250000 6.500000 -0.625000 +v -0.062500 1.000000 -0.125000 +v 0.062500 1.000000 -0.125000 +v -0.062500 1.000000 -0.187500 +v 0.062500 1.000000 -0.187500 +v -0.062500 5.500000 -0.125000 +v 0.062500 5.500000 -0.125000 +v -0.062500 5.500000 -0.187500 +v 0.062500 5.500000 -0.187500 +v -0.062500 6.500000 -0.125000 +v 0.062500 6.500000 -0.125000 +v -0.062500 6.500000 -0.187500 +v 0.062500 6.500000 -0.187500 +v -0.062500 6.937500 -0.125000 +v 0.062500 6.937500 -0.125000 +v -0.062500 6.875000 -0.187500 +v 0.062500 6.875000 -0.187500 +v -0.187500 5.562500 0.187500 +v 0.187500 5.562500 0.187500 +v -0.187500 5.562500 -0.125000 +v 0.187500 5.562500 -0.125000 +v -0.187500 5.687500 -0.125000 +v -0.187500 5.687500 0.187500 +v 0.187500 5.687500 0.187500 +v 0.187500 5.687500 -0.125000 +v -0.187500 6.312500 0.187500 +v 0.187500 6.312500 0.187500 +v -0.187500 6.312500 -0.125000 +v 0.187500 6.312500 -0.125000 +v -0.187500 6.437500 -0.125000 +v -0.187500 6.437500 0.187500 +v 0.187500 6.437500 0.187500 +v 0.187500 6.437500 -0.125000 +vt 0.846154 0.312500 +vt 0.692308 0.437500 +vt 0.692308 0.312500 +vt 0.730769 0.265625 +vt 0.615385 0.218750 +vt 0.730769 0.218750 +vt 0.538462 0.218750 +vt 0.615385 0.265625 +vt 0.538462 0.265625 +vt 0.807692 0.265625 +vt 0.807692 0.218750 +vt 0.615385 0.296875 +vt 0.730769 0.296875 +vt 0.730769 0.187500 +vt 0.615385 0.187500 +vt 0.538462 0.437500 +vt 0.384615 0.312500 +vt 0.538462 0.312500 +vt 0.384615 0.500000 +vt 0.538462 0.500000 +vt 0.538462 0.250000 +vt 0.384615 0.250000 +vt 1.000000 0.437500 +vt 0.846154 0.437500 +vt 0.057692 0.562500 +vt 0.019231 0.000000 +vt 0.057692 0.000000 +vt 0.019231 0.562500 +vt -0.000000 0.000000 +vt 0.076923 0.562500 +vt 0.076923 0.000000 +vt 0.057692 0.859375 +vt 0.019231 0.812500 +vt 0.057692 0.812500 +vt 0.019231 0.859375 +vt 0.000000 0.812500 +vt 0.076923 0.812500 +vt 0.057692 0.867188 +vt 0.788462 0.437500 +vt 0.903846 0.476562 +vt 0.788462 0.476562 +vt 0.903846 0.492188 +vt 0.788462 0.531250 +vt 0.788462 0.492188 +vt 0.788462 0.437500 +vt 0.903846 0.476562 +vt 0.788462 0.476562 +vt 1.000000 0.476562 +vt 0.692308 0.492188 +vt 0.692308 0.476562 +vt 0.903846 0.492188 +vt 0.788462 0.531250 +vt 0.788462 0.492188 +vt 1.000000 0.476562 +vt 0.692308 0.492188 +vt 0.692308 0.476562 +vt 0.384615 0.437500 +vt 1.000000 0.312500 +vt -0.000000 0.562500 +vt 0.000000 0.867188 +vt 0.076923 0.867188 +vt 0.019231 0.867188 +vt 0.903846 0.437500 +vt 0.903846 0.531250 +vt 0.903846 0.437500 +vt 1.000000 0.492188 +vt 0.903846 0.531250 +vt 1.000000 0.492188 +vn 0.0000 0.0000 1.0000 +vn 0.0000 0.0000 -1.0000 +vn 1.0000 0.0000 0.0000 +vn -1.0000 0.0000 0.0000 +vn 0.0000 1.0000 0.0000 +vn 0.0000 -1.0000 0.0000 +vn 0.0000 0.7071 -0.7071 +s off +f 10/1/1 11/2/1 9/3/1 +f 5/4/2 7/5/2 6/6/2 +f 2/7/3 8/8/3 4/9/3 +f 3/10/4 6/6/4 1/11/4 +f 4/12/5 5/4/5 3/13/5 +f 1/14/6 7/5/6 2/15/6 +f 13/16/2 15/17/2 14/18/2 +f 12/19/5 13/16/5 11/20/5 +f 9/21/6 15/17/6 10/22/6 +f 10/1/3 16/23/3 12/24/3 +f 11/2/4 14/18/4 9/3/4 +f 23/25/2 20/26/2 19/27/2 +f 24/28/3 18/29/3 20/26/3 +f 21/30/4 19/27/4 17/31/4 +f 31/32/2 28/33/2 27/34/2 +f 32/35/3 26/36/3 28/33/3 +f 25/37/4 31/32/4 27/34/4 +f 29/38/7 32/35/7 31/32/7 +f 35/39/6 34/40/6 33/41/6 +f 39/42/5 37/43/5 38/44/5 +f 43/45/6 42/46/6 41/47/6 +f 34/40/1 38/44/1 33/41/1 +f 36/48/3 39/42/3 34/40/3 +f 33/41/4 37/49/4 35/50/4 +f 47/51/5 45/52/5 46/53/5 +f 42/46/1 46/53/1 41/47/1 +f 44/54/3 47/51/3 42/46/3 +f 41/47/4 45/55/4 43/56/4 +f 10/1/1 12/24/1 11/2/1 +f 5/4/2 8/8/2 7/5/2 +f 2/7/3 7/5/3 8/8/3 +f 3/10/4 5/4/4 6/6/4 +f 4/12/5 8/8/5 5/4/5 +f 1/14/6 6/6/6 7/5/6 +f 13/16/2 16/57/2 15/17/2 +f 12/19/5 16/57/5 13/16/5 +f 9/21/6 14/18/6 15/17/6 +f 10/1/3 15/58/3 16/23/3 +f 11/2/4 13/16/4 14/18/4 +f 23/25/2 24/28/2 20/26/2 +f 24/28/3 22/59/3 18/29/3 +f 21/30/4 23/25/4 19/27/4 +f 31/32/2 32/35/2 28/33/2 +f 32/35/3 30/60/3 26/36/3 +f 25/37/4 29/61/4 31/32/4 +f 29/38/7 30/62/7 32/35/7 +f 35/39/6 36/63/6 34/40/6 +f 39/42/5 40/64/5 37/43/5 +f 43/45/6 44/65/6 42/46/6 +f 34/40/1 39/42/1 38/44/1 +f 36/48/3 40/66/3 39/42/3 +f 33/41/4 38/44/4 37/49/4 +f 47/51/5 48/67/5 45/52/5 +f 42/46/1 47/51/1 46/53/1 +f 44/54/3 48/68/3 47/51/3 +f 41/47/4 46/53/4 45/55/4 +o Pylon +v -0.250000 0.000000 0.250000 +v 0.250000 0.000000 0.250000 +v -0.250000 0.000000 -0.250000 +v 0.250000 0.000000 -0.250000 +v -0.250000 1.000000 0.250000 +v 0.250000 1.000000 0.250000 +v -0.250000 1.000000 -0.250000 +v 0.250000 1.000000 -0.250000 +v -0.125000 1.000000 0.125000 +v 0.125000 1.000000 0.125000 +v -0.125000 1.000000 -0.125000 +v 0.125000 1.000000 -0.125000 +v -0.125000 7.000000 0.125000 +v 0.125000 7.000000 0.125000 +v -0.125000 7.000000 -0.125000 +v 0.125000 7.000000 -0.125000 +v -0.125000 7.000000 0.125000 +v 0.125000 7.000000 0.125000 +v -0.125000 7.000000 -0.125000 +v 0.125000 7.000000 -0.125000 +v -0.125000 7.062500 -0.125000 +v -0.125000 7.062500 0.125000 +v 0.125000 7.062500 0.125000 +v 0.125000 7.062500 -0.125000 +v -0.187500 7.062500 -0.187500 +v -0.187500 7.062500 0.187500 +v 0.187500 7.062500 0.187500 +v 0.187500 7.062500 -0.187500 +v -0.187500 7.187500 -0.187500 +v -0.187500 7.187500 0.187500 +v 0.187500 7.187500 0.187500 +v 0.187500 7.187500 -0.187500 +v -0.125000 7.187500 0.125000 +v 0.125000 7.187500 0.125000 +v -0.125000 7.187500 -0.125000 +v 0.125000 7.187500 -0.125000 +v -0.125000 7.250000 -0.125000 +v -0.125000 7.250000 0.125000 +v 0.125000 7.250000 0.125000 +v 0.125000 7.250000 -0.125000 +v -0.187500 7.250000 -0.187500 +v -0.187500 7.250000 0.187500 +v 0.187500 7.250000 0.187500 +v 0.187500 7.250000 -0.187500 +v -0.187500 7.375000 -0.187500 +v -0.187500 7.375000 0.187500 +v 0.187500 7.375000 0.187500 +v 0.187500 7.375000 -0.187500 +v -0.125000 7.375000 0.125000 +v 0.125000 7.375000 0.125000 +v -0.125000 7.375000 -0.125000 +v 0.125000 7.375000 -0.125000 +v -0.125000 7.437500 -0.125000 +v -0.125000 7.437500 0.125000 +v 0.125000 7.437500 0.125000 +v 0.125000 7.437500 -0.125000 +v -0.062500 7.437500 -0.062500 +v -0.062500 7.437500 0.062500 +v 0.062500 7.437500 0.062500 +v 0.062500 7.437500 -0.062500 +v -0.062500 7.562500 -0.062500 +v -0.062500 7.562500 0.062500 +v 0.062500 7.562500 0.062500 +v 0.062500 7.562500 -0.062500 +v -0.125000 7.000000 2.125000 +v 0.125000 7.000000 2.125000 +v -0.125000 6.750000 2.125000 +v 0.125000 6.750000 2.125000 +v -0.125000 7.000000 0.125000 +v 0.125000 7.000000 0.125000 +v -0.125000 6.750000 0.125000 +v 0.125000 6.750000 0.125000 +v -0.062500 5.750000 0.125000 +v 0.062500 5.750000 0.125000 +v -0.062500 6.000000 0.125000 +v 0.062500 6.000000 0.125000 +v -0.062500 6.750000 1.125000 +v 0.062500 6.750000 1.125000 +v -0.062500 6.750000 0.875000 +v 0.062500 6.750000 0.875000 +v -0.125000 7.000000 1.125000 +v 0.125000 7.000000 1.125000 +v -0.125000 7.000000 0.875000 +v 0.125000 7.000000 0.875000 +v -0.125000 7.062500 0.875000 +v -0.125000 7.062500 1.125000 +v 0.125000 7.062500 1.125000 +v 0.125000 7.062500 0.875000 +v -0.187500 7.062500 0.812500 +v -0.187500 7.062500 1.187500 +v 0.187500 7.062500 1.187500 +v 0.187500 7.062500 0.812500 +v -0.187500 7.187500 0.812500 +v -0.187500 7.187500 1.187500 +v 0.187500 7.187500 1.187500 +v 0.187500 7.187500 0.812500 +v -0.125000 7.187500 1.125000 +v 0.125000 7.187500 1.125000 +v -0.125000 7.187500 0.875000 +v 0.125000 7.187500 0.875000 +v -0.125000 7.250000 0.875000 +v -0.125000 7.250000 1.125000 +v 0.125000 7.250000 1.125000 +v 0.125000 7.250000 0.875000 +v -0.187500 7.250000 0.812500 +v -0.187500 7.250000 1.187500 +v 0.187500 7.250000 1.187500 +v 0.187500 7.250000 0.812500 +v -0.187500 7.375000 0.812500 +v -0.187500 7.375000 1.187500 +v 0.187500 7.375000 1.187500 +v 0.187500 7.375000 0.812500 +v -0.125000 7.375000 1.125000 +v 0.125000 7.375000 1.125000 +v -0.125000 7.375000 0.875000 +v 0.125000 7.375000 0.875000 +v -0.125000 7.437500 0.875000 +v -0.125000 7.437500 1.125000 +v 0.125000 7.437500 1.125000 +v 0.125000 7.437500 0.875000 +v -0.062500 7.437500 0.937500 +v -0.062500 7.437500 1.062500 +v 0.062500 7.437500 1.062500 +v 0.062500 7.437500 0.937500 +v -0.062500 7.562500 0.937500 +v -0.062500 7.562500 1.062500 +v 0.062500 7.562500 1.062500 +v 0.062500 7.562500 0.937500 +v -0.125000 7.000000 2.125000 +v 0.125000 7.000000 2.125000 +v -0.125000 7.000000 1.875000 +v 0.125000 7.000000 1.875000 +v -0.125000 7.062500 1.875000 +v -0.125000 7.062500 2.125000 +v 0.125000 7.062500 2.125000 +v 0.125000 7.062500 1.875000 +v -0.187500 7.062500 1.812500 +v -0.187500 7.062500 2.187500 +v 0.187500 7.062500 2.187500 +v 0.187500 7.062500 1.812500 +v -0.187500 7.187500 1.812500 +v -0.187500 7.187500 2.187500 +v 0.187500 7.187500 2.187500 +v 0.187500 7.187500 1.812500 +v -0.125000 7.187500 2.125000 +v 0.125000 7.187500 2.125000 +v -0.125000 7.187500 1.875000 +v 0.125000 7.187500 1.875000 +v -0.125000 7.250000 1.875000 +v -0.125000 7.250000 2.125000 +v 0.125000 7.250000 2.125000 +v 0.125000 7.250000 1.875000 +v -0.187500 7.250000 1.812500 +v -0.187500 7.250000 2.187500 +v 0.187500 7.250000 2.187500 +v 0.187500 7.250000 1.812500 +v -0.187500 7.375000 1.812500 +v -0.187500 7.375000 2.187500 +v 0.187500 7.375000 2.187500 +v 0.187500 7.375000 1.812500 +v -0.125000 7.375000 2.125000 +v 0.125000 7.375000 2.125000 +v -0.125000 7.375000 1.875000 +v 0.125000 7.375000 1.875000 +v -0.125000 7.437500 1.875000 +v -0.125000 7.437500 2.125000 +v 0.125000 7.437500 2.125000 +v 0.125000 7.437500 1.875000 +v -0.062500 7.437500 1.937500 +v -0.062500 7.437500 2.062500 +v 0.062500 7.437500 2.062500 +v 0.062500 7.437500 1.937500 +v -0.062500 7.562500 1.937500 +v -0.062500 7.562500 2.062500 +v 0.062500 7.562500 2.062500 +v 0.062500 7.562500 1.937500 +vt 0.538462 -0.000000 +vt 0.384615 0.062500 +vt 0.384615 -0.000000 +vt 0.538462 0.062500 +vt 0.384615 0.187500 +vt 0.846154 0.062500 +vt 0.692308 0.187500 +vt 0.692308 0.062500 +vt 0.538462 0.187500 +vt 1.000000 0.062500 +vt 0.846154 0.187500 +vt 0.230769 0.000000 +vt 0.153846 0.750000 +vt 0.153846 0.000000 +vt 0.384615 0.250000 +vt 0.538462 0.250000 +vt 0.480769 0.820312 +vt 0.403846 0.828125 +vt 0.403846 0.820312 +vt 0.384615 0.000000 +vt 0.307692 0.750000 +vt 0.307692 0.000000 +vt 0.076923 0.750000 +vt 0.076923 0.000000 +vt 0.230769 0.750000 +vt 0.480769 0.820312 +vt 0.403846 0.828125 +vt 0.403846 0.820312 +vt 0.480769 0.789062 +vt 0.384615 0.796875 +vt 0.403846 0.789062 +vt 0.480769 0.781250 +vt 0.403846 0.789062 +vt 0.403846 0.781250 +vt 0.480769 0.781250 +vt 0.403846 0.789062 +vt 0.403846 0.781250 +vt 0.480769 0.781250 +vt 0.403846 0.781250 +vt 0.480769 0.781250 +vt 0.403846 0.789062 +vt 0.403846 0.781250 +vt 0.500000 0.796875 +vt 0.384615 0.812500 +vt 0.384615 0.796875 +vt 0.480769 0.789062 +vt 0.384615 0.796875 +vt 0.480769 0.789062 +vt 0.480769 0.789062 +vt 0.384615 0.796875 +vt 0.480769 0.828125 +vt 0.384615 0.835938 +vt 0.403846 0.828125 +vt 0.500000 0.796875 +vt 0.384615 0.812500 +vt 0.500000 0.796875 +vt 0.384615 0.812500 +vt 0.500000 0.796875 +vt 0.384615 0.812500 +vt 0.480769 0.820312 +vt 0.403846 0.820312 +vt 0.480769 0.820312 +vt 0.403846 0.828125 +vt 0.403846 0.820312 +vt 0.500000 0.835938 +vt 0.384615 0.851562 +vt 0.384615 0.835938 +vt 0.480769 0.828125 +vt 0.384615 0.835938 +vt 0.480769 0.828125 +vt 0.480769 0.828125 +vt 0.384615 0.835938 +vt 0.500000 0.835938 +vt 0.384615 0.851562 +vt 0.500000 0.835938 +vt 0.384615 0.851562 +vt 0.500000 0.835938 +vt 0.384615 0.851562 +vt 0.500000 0.812500 +vt 0.500000 0.812500 +vt 0.500000 0.812500 +vt 0.500000 0.812500 +vt 0.480769 0.859375 +vt 0.403846 0.867188 +vt 0.403846 0.859375 +vt 0.480769 0.859375 +vt 0.403846 0.867188 +vt 0.403846 0.859375 +vt 0.480769 0.859375 +vt 0.403846 0.867188 +vt 0.403846 0.859375 +vt 0.480769 0.859375 +vt 0.403846 0.867188 +vt 0.403846 0.859375 +vt 0.500000 0.851562 +vt 0.500000 0.851562 +vt 0.500000 0.851562 +vt 0.500000 0.851562 +vt 0.480769 0.867188 +vt 0.423077 0.875000 +vt 0.461538 0.875000 +vt 0.423077 0.890625 +vt 0.423077 0.875000 +vt 0.480769 0.867188 +vt 0.423077 0.875000 +vt 0.480769 0.867188 +vt 0.423077 0.875000 +vt 0.480769 0.867188 +vt 0.423077 0.906250 +vt 0.461538 0.890625 +vt 0.461538 0.906250 +vt 0.461538 0.875000 +vt 0.423077 0.890625 +vt 0.461538 0.875000 +vt 0.423077 0.890625 +vt 0.461538 0.875000 +vt 0.423077 0.890625 +vt 0.461538 0.750000 +vt 0.384615 0.781250 +vt 0.384615 0.750000 +vt 0.615385 0.750000 +vt 0.692308 0.500000 +vt 0.692308 0.750000 +vt 0.461538 0.500000 +vt 0.538462 0.500000 +vt 0.538462 0.750000 +vt 0.615385 0.500000 +vt 0.961538 0.875000 +vt 0.923077 0.781250 +vt 0.961538 0.781250 +vt 0.769231 0.656250 +vt 1.000000 0.531250 +vt 1.000000 0.562500 +vt 1.000000 0.906250 +vt 0.961538 0.781250 +vt 1.000000 0.781250 +vt 1.000000 0.781250 +vt 0.692308 0.687500 +vt 0.692308 0.656250 +vt 0.480769 0.820312 +vt 0.403846 0.828125 +vt 0.403846 0.820312 +vt 0.480769 0.820312 +vt 0.403846 0.828125 +vt 0.403846 0.820312 +vt 0.480769 0.789062 +vt 0.384615 0.796875 +vt 0.403846 0.789062 +vt 0.480769 0.781250 +vt 0.403846 0.789062 +vt 0.403846 0.781250 +vt 0.480769 0.781250 +vt 0.403846 0.789062 +vt 0.403846 0.781250 +vt 0.480769 0.781250 +vt 0.403846 0.781250 +vt 0.480769 0.781250 +vt 0.403846 0.789062 +vt 0.403846 0.781250 +vt 0.500000 0.796875 +vt 0.384615 0.812500 +vt 0.384615 0.796875 +vt 0.480769 0.789062 +vt 0.384615 0.796875 +vt 0.480769 0.789062 +vt 0.480769 0.789062 +vt 0.384615 0.796875 +vt 0.480769 0.828125 +vt 0.384615 0.835938 +vt 0.403846 0.828125 +vt 0.500000 0.796875 +vt 0.384615 0.812500 +vt 0.500000 0.796875 +vt 0.384615 0.812500 +vt 0.500000 0.796875 +vt 0.384615 0.812500 +vt 0.480769 0.820312 +vt 0.403846 0.820312 +vt 0.480769 0.820312 +vt 0.403846 0.828125 +vt 0.403846 0.820312 +vt 0.500000 0.835938 +vt 0.384615 0.851562 +vt 0.384615 0.835938 +vt 0.480769 0.828125 +vt 0.384615 0.835938 +vt 0.480769 0.828125 +vt 0.480769 0.828125 +vt 0.384615 0.835938 +vt 0.500000 0.835938 +vt 0.384615 0.851562 +vt 0.500000 0.835938 +vt 0.384615 0.851562 +vt 0.500000 0.835938 +vt 0.384615 0.851562 +vt 0.500000 0.812500 +vt 0.500000 0.812500 +vt 0.500000 0.812500 +vt 0.500000 0.812500 +vt 0.480769 0.859375 +vt 0.403846 0.867188 +vt 0.403846 0.859375 +vt 0.480769 0.859375 +vt 0.403846 0.867188 +vt 0.403846 0.859375 +vt 0.480769 0.859375 +vt 0.403846 0.867188 +vt 0.403846 0.859375 +vt 0.480769 0.859375 +vt 0.403846 0.867188 +vt 0.403846 0.859375 +vt 0.500000 0.851562 +vt 0.500000 0.851562 +vt 0.500000 0.851562 +vt 0.500000 0.851562 +vt 0.480769 0.867188 +vt 0.423077 0.875000 +vt 0.461538 0.875000 +vt 0.423077 0.890625 +vt 0.423077 0.875000 +vt 0.480769 0.867188 +vt 0.423077 0.875000 +vt 0.480769 0.867188 +vt 0.423077 0.875000 +vt 0.480769 0.867188 +vt 0.423077 0.906250 +vt 0.461538 0.890625 +vt 0.461538 0.906250 +vt 0.461538 0.875000 +vt 0.423077 0.890625 +vt 0.461538 0.875000 +vt 0.423077 0.890625 +vt 0.461538 0.875000 +vt 0.423077 0.890625 +vt 0.480769 0.820312 +vt 0.403846 0.828125 +vt 0.403846 0.820312 +vt 0.480769 0.820312 +vt 0.403846 0.828125 +vt 0.403846 0.820312 +vt 0.480769 0.789062 +vt 0.384615 0.796875 +vt 0.403846 0.789062 +vt 0.480769 0.781250 +vt 0.403846 0.789062 +vt 0.403846 0.781250 +vt 0.480769 0.781250 +vt 0.403846 0.789062 +vt 0.403846 0.781250 +vt 0.480769 0.781250 +vt 0.403846 0.781250 +vt 0.480769 0.781250 +vt 0.403846 0.789062 +vt 0.403846 0.781250 +vt 0.500000 0.796875 +vt 0.384615 0.812500 +vt 0.384615 0.796875 +vt 0.480769 0.789062 +vt 0.384615 0.796875 +vt 0.480769 0.789062 +vt 0.480769 0.789062 +vt 0.384615 0.796875 +vt 0.480769 0.828125 +vt 0.384615 0.835938 +vt 0.403846 0.828125 +vt 0.500000 0.796875 +vt 0.384615 0.812500 +vt 0.500000 0.796875 +vt 0.384615 0.812500 +vt 0.500000 0.796875 +vt 0.384615 0.812500 +vt 0.480769 0.820312 +vt 0.403846 0.820312 +vt 0.480769 0.820312 +vt 0.403846 0.828125 +vt 0.403846 0.820312 +vt 0.500000 0.835938 +vt 0.384615 0.851562 +vt 0.384615 0.835938 +vt 0.480769 0.828125 +vt 0.384615 0.835938 +vt 0.480769 0.828125 +vt 0.480769 0.828125 +vt 0.384615 0.835938 +vt 0.500000 0.835938 +vt 0.384615 0.851562 +vt 0.500000 0.835938 +vt 0.384615 0.851562 +vt 0.500000 0.835938 +vt 0.384615 0.851562 +vt 0.500000 0.812500 +vt 0.500000 0.812500 +vt 0.500000 0.812500 +vt 0.500000 0.812500 +vt 0.480769 0.859375 +vt 0.403846 0.867188 +vt 0.403846 0.859375 +vt 0.480769 0.859375 +vt 0.403846 0.867188 +vt 0.403846 0.859375 +vt 0.480769 0.859375 +vt 0.403846 0.867188 +vt 0.403846 0.859375 +vt 0.480769 0.859375 +vt 0.403846 0.867188 +vt 0.403846 0.859375 +vt 0.500000 0.851562 +vt 0.500000 0.851562 +vt 0.500000 0.851562 +vt 0.500000 0.851562 +vt 0.480769 0.867188 +vt 0.423077 0.875000 +vt 0.461538 0.875000 +vt 0.423077 0.890625 +vt 0.423077 0.875000 +vt 0.480769 0.867188 +vt 0.423077 0.875000 +vt 0.480769 0.867188 +vt 0.423077 0.875000 +vt 0.480769 0.867188 +vt 0.423077 0.906250 +vt 0.461538 0.890625 +vt 0.461538 0.906250 +vt 0.461538 0.875000 +vt 0.423077 0.890625 +vt 0.461538 0.875000 +vt 0.423077 0.890625 +vt 0.461538 0.875000 +vt 0.423077 0.890625 +vt 1.000000 0.187500 +vt 0.384615 0.750000 +vt 0.461538 0.890625 +vt 0.461538 0.890625 +vt 0.461538 0.890625 +vt 0.461538 0.781250 +vt 0.384615 0.500000 +vt 0.923077 0.875000 +vt 0.692308 0.656250 +vt 0.961538 0.906250 +vt 0.923077 0.781250 +vt 0.461538 0.890625 +vt 0.461538 0.890625 +vt 0.461538 0.890625 +vt 0.461538 0.890625 +vt 0.461538 0.890625 +vt 0.461538 0.890625 +vn 0.0000 -1.0000 0.0000 +vn 1.0000 0.0000 0.0000 +vn -1.0000 0.0000 0.0000 +vn 0.0000 0.0000 -1.0000 +vn 0.0000 0.0000 1.0000 +vn 0.0000 1.0000 0.0000 +vn 0.0000 0.7071 -0.7071 +vn 0.0000 -0.7071 0.7071 +s off +f 51/69/8 50/70/8 49/71/8 +f 52/72/9 54/73/9 50/70/9 +f 49/74/10 55/75/10 51/76/10 +f 51/76/11 56/77/11 52/72/11 +f 50/78/12 53/79/12 49/74/12 +f 59/80/11 64/81/11 60/82/11 +f 53/83/13 56/77/13 55/84/13 +f 84/85/9 87/86/9 82/87/9 +f 58/88/12 61/89/12 57/90/12 +f 60/82/9 62/91/9 58/92/9 +f 57/90/10 63/93/10 59/80/10 +f 81/94/10 85/95/10 83/96/10 +f 69/97/8 76/98/8 72/99/8 +f 68/100/9 71/101/9 66/102/9 +f 65/103/10 69/104/10 67/105/10 +f 67/106/11 72/99/11 68/107/11 +f 66/108/12 70/109/12 65/110/12 +f 76/111/9 79/112/9 75/113/9 +f 71/114/8 74/115/8 70/109/8 +f 72/116/8 75/113/8 71/101/8 +f 70/117/8 73/118/8 69/104/8 +f 85/119/8 92/120/8 88/121/8 +f 74/122/10 77/123/10 73/118/10 +f 73/124/11 80/125/11 76/98/11 +f 75/126/12 78/127/12 74/115/12 +f 83/128/11 88/121/11 84/129/11 +f 82/130/12 86/131/12 81/132/12 +f 92/133/9 95/134/9 91/135/9 +f 87/136/8 90/137/8 86/131/8 +f 88/138/8 91/135/8 87/86/8 +f 86/139/8 89/140/8 85/95/8 +f 90/141/10 93/142/10 89/140/10 +f 89/143/11 96/144/11 92/120/11 +f 91/145/12 94/146/12 90/137/12 +f 82/130/13 78/127/13 79/147/13 +f 84/85/13 79/112/13 80/148/13 +f 83/128/13 80/125/13 77/149/13 +f 81/94/13 77/123/13 78/150/13 +f 100/151/9 103/152/9 98/153/9 +f 97/154/10 101/155/10 99/156/10 +f 99/157/11 104/158/11 100/159/11 +f 98/160/12 102/161/12 97/162/12 +f 98/160/13 94/146/13 95/163/13 +f 100/151/13 95/134/13 96/164/13 +f 99/157/13 96/144/13 93/165/13 +f 97/154/13 93/142/13 94/166/13 +f 102/167/13 105/168/13 101/155/13 +f 108/169/9 111/170/9 107/171/9 +f 101/172/13 108/173/13 104/158/13 +f 103/174/13 106/175/13 102/161/13 +f 104/176/13 107/171/13 103/152/13 +f 110/177/13 112/178/13 109/179/13 +f 106/180/10 109/181/10 105/168/10 +f 105/182/11 112/183/11 108/173/11 +f 107/184/12 110/185/12 106/175/12 +f 113/186/12 116/187/12 114/188/12 +f 116/189/9 118/190/9 114/191/9 +f 114/188/13 117/192/13 113/186/13 +f 113/186/10 119/193/10 115/194/10 +f 115/194/8 120/195/8 116/189/8 +f 127/196/14 124/197/14 123/198/14 +f 128/199/9 122/200/9 124/201/9 +f 126/202/15 121/203/15 122/204/15 +f 125/205/10 123/206/10 121/207/10 +f 148/208/9 151/209/9 146/210/9 +f 145/211/10 149/212/10 147/213/10 +f 133/214/8 140/215/8 136/216/8 +f 132/217/9 135/218/9 130/219/9 +f 129/220/10 133/221/10 131/222/10 +f 131/223/11 136/216/11 132/224/11 +f 130/225/12 134/226/12 129/227/12 +f 140/228/9 143/229/9 139/230/9 +f 135/231/8 138/232/8 134/226/8 +f 136/233/8 139/230/8 135/218/8 +f 134/234/8 137/235/8 133/221/8 +f 149/236/8 156/237/8 152/238/8 +f 138/239/10 141/240/10 137/235/10 +f 137/241/11 144/242/11 140/215/11 +f 139/243/12 142/244/12 138/232/12 +f 147/245/11 152/238/11 148/246/11 +f 146/247/12 150/248/12 145/249/12 +f 156/250/9 159/251/9 155/252/9 +f 151/253/8 154/254/8 150/248/8 +f 152/255/8 155/252/8 151/209/8 +f 150/256/8 153/257/8 149/212/8 +f 154/258/10 157/259/10 153/257/10 +f 153/260/11 160/261/11 156/237/11 +f 155/262/12 158/263/12 154/254/12 +f 146/247/13 142/244/13 143/264/13 +f 148/208/13 143/229/13 144/265/13 +f 147/245/13 144/242/13 141/266/13 +f 145/211/13 141/240/13 142/267/13 +f 164/268/9 167/269/9 162/270/9 +f 161/271/10 165/272/10 163/273/10 +f 163/274/11 168/275/11 164/276/11 +f 162/277/12 166/278/12 161/279/12 +f 162/277/13 158/263/13 159/280/13 +f 164/268/13 159/251/13 160/281/13 +f 163/274/13 160/261/13 157/282/13 +f 161/271/13 157/259/13 158/283/13 +f 166/284/13 169/285/13 165/272/13 +f 172/286/9 175/287/9 171/288/9 +f 165/289/13 172/290/13 168/275/13 +f 167/291/13 170/292/13 166/278/13 +f 168/293/13 171/288/13 167/269/13 +f 174/294/13 176/295/13 173/296/13 +f 170/297/10 173/298/10 169/285/10 +f 169/299/11 176/300/11 172/290/11 +f 171/301/12 174/302/12 170/292/12 +f 196/303/9 199/304/9 194/305/9 +f 193/306/10 197/307/10 195/308/10 +f 181/309/8 188/310/8 184/311/8 +f 180/312/9 183/313/9 178/314/9 +f 177/315/10 181/316/10 179/317/10 +f 179/318/11 184/311/11 180/319/11 +f 178/320/12 182/321/12 177/322/12 +f 188/323/9 191/324/9 187/325/9 +f 183/326/8 186/327/8 182/321/8 +f 184/328/8 187/325/8 183/313/8 +f 182/329/8 185/330/8 181/316/8 +f 197/331/8 204/332/8 200/333/8 +f 186/334/10 189/335/10 185/330/10 +f 185/336/11 192/337/11 188/310/11 +f 187/338/12 190/339/12 186/327/12 +f 195/340/11 200/333/11 196/341/11 +f 194/342/12 198/343/12 193/344/12 +f 204/345/9 207/346/9 203/347/9 +f 199/348/8 202/349/8 198/343/8 +f 200/350/8 203/347/8 199/304/8 +f 198/351/8 201/352/8 197/307/8 +f 202/353/10 205/354/10 201/352/10 +f 201/355/11 208/356/11 204/332/11 +f 203/357/12 206/358/12 202/349/12 +f 194/342/13 190/339/13 191/359/13 +f 196/303/13 191/324/13 192/360/13 +f 195/340/13 192/337/13 189/361/13 +f 193/306/13 189/335/13 190/362/13 +f 212/363/9 215/364/9 210/365/9 +f 209/366/10 213/367/10 211/368/10 +f 211/369/11 216/370/11 212/371/11 +f 210/372/12 214/373/12 209/374/12 +f 210/372/13 206/358/13 207/375/13 +f 212/363/13 207/346/13 208/376/13 +f 211/369/13 208/356/13 205/377/13 +f 209/366/13 205/354/13 206/378/13 +f 214/379/13 217/380/13 213/367/13 +f 220/381/9 223/382/9 219/383/9 +f 213/384/13 220/385/13 216/370/13 +f 215/386/13 218/387/13 214/373/13 +f 216/388/13 219/383/13 215/364/13 +f 222/389/13 224/390/13 221/391/13 +f 218/392/10 221/393/10 217/380/10 +f 217/394/11 224/395/11 220/385/11 +f 219/396/12 222/397/12 218/387/12 +f 51/69/8 52/72/8 50/70/8 +f 52/72/9 56/77/9 54/73/9 +f 49/74/10 53/79/10 55/75/10 +f 51/76/11 55/75/11 56/77/11 +f 50/78/12 54/398/12 53/79/12 +f 59/80/11 63/93/11 64/81/11 +f 53/83/13 54/73/13 56/77/13 +f 84/85/9 88/138/9 87/86/9 +f 58/88/12 62/399/12 61/89/12 +f 60/82/9 64/81/9 62/91/9 +f 57/90/10 61/89/10 63/93/10 +f 81/94/10 86/139/10 85/95/10 +f 69/97/8 73/124/8 76/98/8 +f 68/100/9 72/116/9 71/101/9 +f 65/103/10 70/117/10 69/104/10 +f 67/106/11 69/97/11 72/99/11 +f 66/108/12 71/114/12 70/109/12 +f 76/111/9 80/148/9 79/112/9 +f 71/114/8 75/126/8 74/115/8 +f 72/116/8 76/111/8 75/113/8 +f 70/117/8 74/122/8 73/118/8 +f 85/119/8 89/143/8 92/120/8 +f 74/122/10 78/150/10 77/123/10 +f 73/124/11 77/149/11 80/125/11 +f 75/126/12 79/147/12 78/127/12 +f 83/128/11 85/119/11 88/121/11 +f 82/130/12 87/136/12 86/131/12 +f 92/133/9 96/164/9 95/134/9 +f 87/136/8 91/145/8 90/137/8 +f 88/138/8 92/133/8 91/135/8 +f 86/139/8 90/141/8 89/140/8 +f 90/141/10 94/166/10 93/142/10 +f 89/143/11 93/165/11 96/144/11 +f 91/145/12 95/163/12 94/146/12 +f 82/130/13 81/132/13 78/127/13 +f 84/85/13 82/87/13 79/112/13 +f 83/128/13 84/129/13 80/125/13 +f 81/94/13 83/96/13 77/123/13 +f 100/151/9 104/176/9 103/152/9 +f 97/154/10 102/167/10 101/155/10 +f 99/157/11 101/172/11 104/158/11 +f 98/160/12 103/174/12 102/161/12 +f 98/160/13 97/162/13 94/146/13 +f 100/151/13 98/153/13 95/134/13 +f 99/157/13 100/159/13 96/144/13 +f 97/154/13 99/156/13 93/142/13 +f 102/167/13 106/180/13 105/168/13 +f 108/169/9 112/178/9 111/170/9 +f 101/172/13 105/182/13 108/173/13 +f 103/174/13 107/184/13 106/175/13 +f 104/176/13 108/169/13 107/171/13 +f 110/177/13 111/170/13 112/178/13 +f 106/180/10 110/400/10 109/181/10 +f 105/182/11 109/401/11 112/183/11 +f 107/184/12 111/402/12 110/185/12 +f 113/186/12 115/403/12 116/187/12 +f 116/189/9 120/195/9 118/190/9 +f 114/188/13 118/404/13 117/192/13 +f 113/186/10 117/192/10 119/193/10 +f 115/194/8 119/193/8 120/195/8 +f 127/196/14 128/405/14 124/197/14 +f 128/199/9 126/406/9 122/200/9 +f 126/202/15 125/407/15 121/203/15 +f 125/205/10 127/408/10 123/206/10 +f 148/208/9 152/255/9 151/209/9 +f 145/211/10 150/256/10 149/212/10 +f 133/214/8 137/241/8 140/215/8 +f 132/217/9 136/233/9 135/218/9 +f 129/220/10 134/234/10 133/221/10 +f 131/223/11 133/214/11 136/216/11 +f 130/225/12 135/231/12 134/226/12 +f 140/228/9 144/265/9 143/229/9 +f 135/231/8 139/243/8 138/232/8 +f 136/233/8 140/228/8 139/230/8 +f 134/234/8 138/239/8 137/235/8 +f 149/236/8 153/260/8 156/237/8 +f 138/239/10 142/267/10 141/240/10 +f 137/241/11 141/266/11 144/242/11 +f 139/243/12 143/264/12 142/244/12 +f 147/245/11 149/236/11 152/238/11 +f 146/247/12 151/253/12 150/248/12 +f 156/250/9 160/281/9 159/251/9 +f 151/253/8 155/262/8 154/254/8 +f 152/255/8 156/250/8 155/252/8 +f 150/256/8 154/258/8 153/257/8 +f 154/258/10 158/283/10 157/259/10 +f 153/260/11 157/282/11 160/261/11 +f 155/262/12 159/280/12 158/263/12 +f 146/247/13 145/249/13 142/244/13 +f 148/208/13 146/210/13 143/229/13 +f 147/245/13 148/246/13 144/242/13 +f 145/211/13 147/213/13 141/240/13 +f 164/268/9 168/293/9 167/269/9 +f 161/271/10 166/284/10 165/272/10 +f 163/274/11 165/289/11 168/275/11 +f 162/277/12 167/291/12 166/278/12 +f 162/277/13 161/279/13 158/263/13 +f 164/268/13 162/270/13 159/251/13 +f 163/274/13 164/276/13 160/261/13 +f 161/271/13 163/273/13 157/259/13 +f 166/284/13 170/297/13 169/285/13 +f 172/286/9 176/295/9 175/287/9 +f 165/289/13 169/299/13 172/290/13 +f 167/291/13 171/301/13 170/292/13 +f 168/293/13 172/286/13 171/288/13 +f 174/294/13 175/287/13 176/295/13 +f 170/297/10 174/409/10 173/298/10 +f 169/299/11 173/410/11 176/300/11 +f 171/301/12 175/411/12 174/302/12 +f 196/303/9 200/350/9 199/304/9 +f 193/306/10 198/351/10 197/307/10 +f 181/309/8 185/336/8 188/310/8 +f 180/312/9 184/328/9 183/313/9 +f 177/315/10 182/329/10 181/316/10 +f 179/318/11 181/309/11 184/311/11 +f 178/320/12 183/326/12 182/321/12 +f 188/323/9 192/360/9 191/324/9 +f 183/326/8 187/338/8 186/327/8 +f 184/328/8 188/323/8 187/325/8 +f 182/329/8 186/334/8 185/330/8 +f 197/331/8 201/355/8 204/332/8 +f 186/334/10 190/362/10 189/335/10 +f 185/336/11 189/361/11 192/337/11 +f 187/338/12 191/359/12 190/339/12 +f 195/340/11 197/331/11 200/333/11 +f 194/342/12 199/348/12 198/343/12 +f 204/345/9 208/376/9 207/346/9 +f 199/348/8 203/357/8 202/349/8 +f 200/350/8 204/345/8 203/347/8 +f 198/351/8 202/353/8 201/352/8 +f 202/353/10 206/378/10 205/354/10 +f 201/355/11 205/377/11 208/356/11 +f 203/357/12 207/375/12 206/358/12 +f 194/342/13 193/344/13 190/339/13 +f 196/303/13 194/305/13 191/324/13 +f 195/340/13 196/341/13 192/337/13 +f 193/306/13 195/308/13 189/335/13 +f 212/363/9 216/388/9 215/364/9 +f 209/366/10 214/379/10 213/367/10 +f 211/369/11 213/384/11 216/370/11 +f 210/372/12 215/386/12 214/373/12 +f 210/372/13 209/374/13 206/358/13 +f 212/363/13 210/365/13 207/346/13 +f 211/369/13 212/371/13 208/356/13 +f 209/366/13 211/368/13 205/354/13 +f 214/379/13 218/392/13 217/380/13 +f 220/381/9 224/390/9 223/382/9 +f 213/384/13 217/394/13 220/385/13 +f 215/386/13 219/396/13 218/387/13 +f 216/388/13 220/381/13 219/383/13 +f 222/389/13 223/382/13 224/390/13 +f 218/392/10 222/412/10 221/393/10 +f 217/394/11 221/413/11 224/395/11 +f 219/396/12 223/414/12 222/397/12 diff --git a/src/main/resources/assets/hbm/sounds.json b/src/main/resources/assets/hbm/sounds.json index 220cd1fdf..d2eb9f458 100644 --- a/src/main/resources/assets/hbm/sounds.json +++ b/src/main/resources/assets/hbm/sounds.json @@ -209,6 +209,7 @@ "weapon.glShoot": {"category": "player", "sounds": [{"name": "weapon/glShoot", "stream": false}]}, "weapon.44Shoot": {"category": "player", "sounds": [{"name": "weapon/44Shoot", "stream": false}]}, "weapon.trainImpact": {"category": "player", "sounds": [{"name": "weapon/trainImpact", "stream": false}]}, + "weapon.nuclearExplosion": {"category": "player", "sounds": [{"name": "weapon/nuclearExplosion", "stream": true}]}, "weapon.dFlash": {"category": "player", "sounds": [{"name": "weapon/dFlash", "stream": false}]}, diff --git a/src/main/resources/assets/hbm/sounds/weapon/nuclearExplosion.ogg b/src/main/resources/assets/hbm/sounds/weapon/nuclearExplosion.ogg new file mode 100644 index 000000000..6dddc621b Binary files /dev/null and b/src/main/resources/assets/hbm/sounds/weapon/nuclearExplosion.ogg differ diff --git a/src/main/resources/assets/hbm/textures/blocks/anvil_arsenic_bronze.png b/src/main/resources/assets/hbm/textures/blocks/anvil_arsenic_bronze.png new file mode 100644 index 000000000..8f27fa83f Binary files /dev/null and b/src/main/resources/assets/hbm/textures/blocks/anvil_arsenic_bronze.png differ diff --git a/src/main/resources/assets/hbm/textures/blocks/anvil_bismuth_bronze.png b/src/main/resources/assets/hbm/textures/blocks/anvil_bismuth_bronze.png new file mode 100644 index 000000000..cb16ba9cc Binary files /dev/null and b/src/main/resources/assets/hbm/textures/blocks/anvil_bismuth_bronze.png differ diff --git a/src/main/resources/assets/hbm/textures/blocks/anvil_desh.png b/src/main/resources/assets/hbm/textures/blocks/anvil_desh.png new file mode 100644 index 000000000..6c18116de Binary files /dev/null and b/src/main/resources/assets/hbm/textures/blocks/anvil_desh.png differ diff --git a/src/main/resources/assets/hbm/textures/blocks/anvil_saturnite.png b/src/main/resources/assets/hbm/textures/blocks/anvil_saturnite.png new file mode 100644 index 000000000..5e7c92930 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/blocks/anvil_saturnite.png differ diff --git a/src/main/resources/assets/hbm/textures/gui/processing/gui_hydrotreater.png b/src/main/resources/assets/hbm/textures/gui/processing/gui_hydrotreater.png index 451e33555..9a96ab43f 100644 Binary files a/src/main/resources/assets/hbm/textures/gui/processing/gui_hydrotreater.png and b/src/main/resources/assets/hbm/textures/gui/processing/gui_hydrotreater.png differ diff --git a/src/main/resources/assets/hbm/textures/gui/processing/gui_vacuum_distill.png b/src/main/resources/assets/hbm/textures/gui/processing/gui_vacuum_distill.png index 2685f3e4e..bdbd36818 100644 Binary files a/src/main/resources/assets/hbm/textures/gui/processing/gui_vacuum_distill.png and b/src/main/resources/assets/hbm/textures/gui/processing/gui_vacuum_distill.png differ diff --git a/src/main/resources/assets/hbm/textures/items/card_hbm.png b/src/main/resources/assets/hbm/textures/items/card_hbm.png new file mode 100644 index 000000000..c273750fd Binary files /dev/null and b/src/main/resources/assets/hbm/textures/items/card_hbm.png differ diff --git a/src/main/resources/assets/hbm/textures/items/ingot_arsenic_bronze.png b/src/main/resources/assets/hbm/textures/items/ingot_arsenic_bronze.png new file mode 100644 index 000000000..003192056 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/items/ingot_arsenic_bronze.png differ diff --git a/src/main/resources/assets/hbm/textures/items/ingot_bismuth_bronze.png b/src/main/resources/assets/hbm/textures/items/ingot_bismuth_bronze.png new file mode 100644 index 000000000..bd343c80e Binary files /dev/null and b/src/main/resources/assets/hbm/textures/items/ingot_bismuth_bronze.png differ diff --git a/src/main/resources/assets/hbm/textures/items/item_secret.canister b/src/main/resources/assets/hbm/textures/items/item_secret.canister new file mode 100644 index 000000000..5f648f819 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/items/item_secret.canister differ diff --git a/src/main/resources/assets/hbm/textures/items/kit_hbm.png b/src/main/resources/assets/hbm/textures/items/kit_hbm.png new file mode 100644 index 000000000..eb11c3cb4 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/items/kit_hbm.png differ diff --git a/src/main/resources/assets/hbm/textures/models/network/pylon_medium.png b/src/main/resources/assets/hbm/textures/models/network/pylon_medium.png new file mode 100644 index 000000000..84abea964 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/models/network/pylon_medium.png differ diff --git a/src/main/resources/assets/hbm/textures/models/network/pylon_medium_steel.png b/src/main/resources/assets/hbm/textures/models/network/pylon_medium_steel.png new file mode 100644 index 000000000..0665da1e7 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/models/network/pylon_medium_steel.png differ diff --git a/src/main/resources/assets/hbm/textures/models/network/wire_greyscale.png b/src/main/resources/assets/hbm/textures/models/network/wire_greyscale.png new file mode 100644 index 000000000..6aa158ed6 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/models/network/wire_greyscale.png differ