Merge branch 'master' into METADATA
28
changelog
@ -1,14 +1,20 @@
|
|||||||
|
## Added
|
||||||
|
* Creative klystron
|
||||||
|
* Always outputs as much KyU as the most demanding existing recipe needs
|
||||||
|
|
||||||
## Changed
|
## Changed
|
||||||
* After not being part of worldgen for a long time, oily coal is finally being removed
|
* Updated chinese and russian localization
|
||||||
* The rare metal blocks that had been unobtainable and unused for the longest time have been removed
|
* Increased density of osmiridium ores in tom craters considerably (from 1:500 to 1:200)
|
||||||
* The schrabidium transmutator's grace period is over, it is finally being destroyed
|
* Added a new server setting called `ENABLE_MKU` to toggle contageon effects, spread and save (part of `/ntmserver`)
|
||||||
* Most of the legacy fusion reactor components, which were unobtainable and unusable, have been removed
|
* Extended logging now logs uses of MKU
|
||||||
* The block ID economy is looking better than ever
|
* Mass storage units now display their held item on a display
|
||||||
|
* Improved HUD gauges, electric chestplates with jetpacks installed now two gauges side by side
|
||||||
|
|
||||||
## Fixed
|
## Fixed
|
||||||
* Fixed meteors using a nonexistant keepalive timer, causing potential audio flickering in certain cases
|
* Fixed missing battery socket tooltip
|
||||||
* Fixed 528 coltan deposit config misspelling
|
* Potentially fixed an issue in regards to some hidden structures spawning
|
||||||
* Potentially fixed a performance issue caused by transmission networks not being deleted when they have no active links
|
* Fixed FEnSU not immediately applying the muffler effect when used
|
||||||
* Fixed multi output recipe objects not deserializing right, causing the precision assembler config to not load
|
* Fixed fluid counter valve not having a recipe
|
||||||
* Fixed pedestal recipes not using the correct register option, making custom config files wipe all clay tablets
|
* Fixed issue where `/ntmreload` would break registered fluids from addons
|
||||||
* Fixed custom fluids breaking when using the `/ntmreload` command
|
* Fixed yet another issue regarding crates
|
||||||
|
* Fixed RBMK fluid heaters losing their tank types when unable to boil anything
|
||||||
@ -1,15 +1,15 @@
|
|||||||
mod_version=1.0.27
|
mod_version=1.0.27
|
||||||
# Empty build number makes a release type
|
# Empty build number makes a release type
|
||||||
mod_build_number=5546
|
mod_build_number=5570
|
||||||
|
|
||||||
credits=HbMinecraft,\
|
credits=HbMinecraft,\
|
||||||
\ rodolphito (explosion algorithms),\
|
\ rodolphito (explosion algorithms),\
|
||||||
\ grangerave (explosion algorithms),\
|
\ grangerave (explosion algorithms),\
|
||||||
\ Hoboy (textures, models),\
|
\ Hoboy (textures, models),\
|
||||||
\ Drillgon200 (effects, models, porting),\
|
\ Drillgon200 (effects, models),\
|
||||||
\ MartinTheDragon (calculator, chunk-based fallout, bendable cranes, pipe improvements, PWR sounds),\
|
\ MartinTheDragon (calculator, chunk-based fallout, bendable cranes, pipe improvements, PWR sounds),\
|
||||||
\ Alcater (GUI textures, porting),\
|
\ Alcater (GUI textures),\
|
||||||
\ MellowArpeggiation (new animation system, turbine sounds, sound fixes, industrial lights, conveyor wand, NBT structures),\
|
\ MellowArpeggiation (new animation system, turbine sounds, sound fixes, industrial lights, conveyor wand, NBT structures, MSU displays),\
|
||||||
\ Pheo (textures, various machines, models, weapons),\
|
\ Pheo (textures, various machines, models, weapons),\
|
||||||
\ Vær (gas centrifuges, better worldgen, ZIRNOX, CP-1 parts, starter guide, new cyclotron, weapon animations),\
|
\ Vær (gas centrifuges, better worldgen, ZIRNOX, CP-1 parts, starter guide, new cyclotron, weapon animations),\
|
||||||
\ UFFR (RTG pellets, guns, casings, euphemium capacitor, nucleartech.wiki),\
|
\ UFFR (RTG pellets, guns, casings, euphemium capacitor, nucleartech.wiki),\
|
||||||
@ -22,6 +22,7 @@ credits=HbMinecraft,\
|
|||||||
\ Doctor17 (russian localization)),\
|
\ Doctor17 (russian localization)),\
|
||||||
\ Pashtet (russian localization),\
|
\ Pashtet (russian localization),\
|
||||||
\ 7H40 (russian localization),\
|
\ 7H40 (russian localization),\
|
||||||
|
\ RayzerHan (russian localization),\
|
||||||
\ Bismarck (chinese localization),\
|
\ Bismarck (chinese localization),\
|
||||||
\ Creeper-banner (chinese localization),\
|
\ Creeper-banner (chinese localization),\
|
||||||
\ 5467864 (chinese localization),\
|
\ 5467864 (chinese localization),\
|
||||||
@ -34,8 +35,10 @@ credits=HbMinecraft,\
|
|||||||
\ Herobrine 457985 (chinese localization),\
|
\ Herobrine 457985 (chinese localization),\
|
||||||
\ xxwinhere (chinese localization),\
|
\ xxwinhere (chinese localization),\
|
||||||
\ Nycticoraxnightheron (chinese localization),\
|
\ Nycticoraxnightheron (chinese localization),\
|
||||||
|
\ NarekoMichigami810 (chinese localization),\
|
||||||
\ Maksymisio (polish localization)\
|
\ Maksymisio (polish localization)\
|
||||||
\ el3ctro4ndre (italian localization),\
|
\ el3ctro4ndre (italian localization),\
|
||||||
|
\ Goaty1208 (italian localization),\
|
||||||
\ Pu-238 (Tom impact effects),\
|
\ Pu-238 (Tom impact effects),\
|
||||||
\ Frooz (gun models),\
|
\ Frooz (gun models),\
|
||||||
\ VT-6/24 (models, textures),\
|
\ VT-6/24 (models, textures),\
|
||||||
@ -55,18 +58,22 @@ credits=HbMinecraft,\
|
|||||||
\ Silly541 (config for safe ME drives),\
|
\ Silly541 (config for safe ME drives),\
|
||||||
\ Voxelstice (OpenComputers integration, turbine spinup),\
|
\ Voxelstice (OpenComputers integration, turbine spinup),\
|
||||||
\ BallOfEnergy1 (OpenComputers integration, RBMK and packet optimization, crate backpacks),\
|
\ BallOfEnergy1 (OpenComputers integration, RBMK and packet optimization, crate backpacks),\
|
||||||
|
\ PewPewCricket (OpenComputers integration),\
|
||||||
|
\ kelllllen (OpenComputers integration),\
|
||||||
\ sdddddf80 (recipe configs, chinese localization, custom machine holograms),\
|
\ sdddddf80 (recipe configs, chinese localization, custom machine holograms),\
|
||||||
\ Abel1502 (abilities GUI, optimization, crate upgrade recipes, strand caster improvements, varous tweaks),\
|
\ Abel1502 (abilities GUI, optimization, crate upgrade recipes, strand caster improvements, varous tweaks),\
|
||||||
\ Darek505 (armor rendering compatibility fix),\
|
\ Darek505 (armor rendering compatibility fix),\
|
||||||
|
\ ranch21 (improved HUD gauges),\
|
||||||
\ SuperCraftAlex (tooltips)\
|
\ SuperCraftAlex (tooltips)\
|
||||||
\ Ice-Arrow (research reactor tweaks),\
|
\ Ice-Arrow (research reactor tweaks),\
|
||||||
\ 245tt (anvil GUI improvements),\
|
\ 245tt (anvil GUI improvements),\
|
||||||
\ KoblizekXD (doors),\
|
\ KoblizekXD (doors),\
|
||||||
\ FOlkvangrField (custom machine parts),\
|
\ FOlkvangrField (custom machine parts),\
|
||||||
\ RosaTryp (centrifuge config),\
|
\ RosaTryp (centrifuge config),\
|
||||||
\ Toshayo (satellite loot system, project settings, gradle curse task, OpenComputers integration),\
|
\ Toshayo (satellite loot system, project settings, gradle curse task, OpenComputers integration, fluid counter valve),\
|
||||||
\ Dash (PA particle serialization fix),\
|
\ Dash (PA particle serialization fix),\
|
||||||
\ archiecarrot123 (armor rendering compatibility fix),\
|
\ archiecarrot123 (armor rendering compatibility fix),\
|
||||||
|
\ mikkerlo (mining laser & builder's jetpack improvements),\
|
||||||
\ icomet (refactoring),\
|
\ icomet (refactoring),\
|
||||||
\ martemen (project settings),\
|
\ martemen (project settings),\
|
||||||
\ OvermindDL1 (project settings),\
|
\ OvermindDL1 (project settings),\
|
||||||
|
|||||||
@ -3,6 +3,7 @@ package api.hbm.block;
|
|||||||
import net.minecraft.item.ItemStack;
|
import net.minecraft.item.ItemStack;
|
||||||
import net.minecraft.world.World;
|
import net.minecraft.world.World;
|
||||||
|
|
||||||
|
@Deprecated
|
||||||
public interface IDrillInteraction {
|
public interface IDrillInteraction {
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
@ -1,5 +1,6 @@
|
|||||||
package api.hbm.block;
|
package api.hbm.block;
|
||||||
|
|
||||||
|
@Deprecated
|
||||||
public interface IMiningDrill {
|
public interface IMiningDrill {
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
@ -2,7 +2,6 @@ package api.hbm.energymk2;
|
|||||||
|
|
||||||
import com.hbm.handler.threading.PacketThreading;
|
import com.hbm.handler.threading.PacketThreading;
|
||||||
import com.hbm.packet.toclient.AuxParticlePacketNT;
|
import com.hbm.packet.toclient.AuxParticlePacketNT;
|
||||||
import com.hbm.util.Compat;
|
|
||||||
|
|
||||||
import api.hbm.energymk2.Nodespace.PowerNode;
|
import api.hbm.energymk2.Nodespace.PowerNode;
|
||||||
import cpw.mods.fml.common.network.NetworkRegistry.TargetPoint;
|
import cpw.mods.fml.common.network.NetworkRegistry.TargetPoint;
|
||||||
@ -25,7 +24,7 @@ public interface IEnergyProviderMK2 extends IEnergyHandlerMK2 {
|
|||||||
|
|
||||||
public default void tryProvide(World world, int x, int y, int z, ForgeDirection dir) {
|
public default void tryProvide(World world, int x, int y, int z, ForgeDirection dir) {
|
||||||
|
|
||||||
TileEntity te = Compat.getTileStandard(world, x, y, z);
|
TileEntity te = TileAccessCache.getTileOrCache(world, x, y, z);
|
||||||
boolean red = false;
|
boolean red = false;
|
||||||
|
|
||||||
if(te instanceof IEnergyConductorMK2) {
|
if(te instanceof IEnergyConductorMK2) {
|
||||||
|
|||||||
@ -3,7 +3,6 @@ package api.hbm.energymk2;
|
|||||||
import com.hbm.handler.threading.PacketThreading;
|
import com.hbm.handler.threading.PacketThreading;
|
||||||
import com.hbm.interfaces.NotableComments;
|
import com.hbm.interfaces.NotableComments;
|
||||||
import com.hbm.packet.toclient.AuxParticlePacketNT;
|
import com.hbm.packet.toclient.AuxParticlePacketNT;
|
||||||
import com.hbm.util.Compat;
|
|
||||||
import com.hbm.util.fauxpointtwelve.DirPos;
|
import com.hbm.util.fauxpointtwelve.DirPos;
|
||||||
|
|
||||||
import api.hbm.energymk2.Nodespace.PowerNode;
|
import api.hbm.energymk2.Nodespace.PowerNode;
|
||||||
@ -39,7 +38,7 @@ public interface IEnergyReceiverMK2 extends IEnergyHandlerMK2 {
|
|||||||
|
|
||||||
public default void trySubscribe(World world, int x, int y, int z, ForgeDirection dir) {
|
public default void trySubscribe(World world, int x, int y, int z, ForgeDirection dir) {
|
||||||
|
|
||||||
TileEntity te = Compat.getTileStandard(world, x, y, z);
|
TileEntity te = TileAccessCache.getTileOrCache(world, x, y, z);
|
||||||
boolean red = false;
|
boolean red = false;
|
||||||
|
|
||||||
if(te instanceof IEnergyConductorMK2) {
|
if(te instanceof IEnergyConductorMK2) {
|
||||||
|
|||||||
@ -5,7 +5,6 @@ import com.hbm.packet.PacketDispatcher;
|
|||||||
import com.hbm.packet.toclient.AuxParticlePacketNT;
|
import com.hbm.packet.toclient.AuxParticlePacketNT;
|
||||||
import com.hbm.uninos.GenNode;
|
import com.hbm.uninos.GenNode;
|
||||||
import com.hbm.uninos.UniNodespace;
|
import com.hbm.uninos.UniNodespace;
|
||||||
import com.hbm.util.Compat;
|
|
||||||
import com.hbm.util.fauxpointtwelve.DirPos;
|
import com.hbm.util.fauxpointtwelve.DirPos;
|
||||||
|
|
||||||
import api.hbm.energymk2.IEnergyReceiverMK2.ConnectionPriority;
|
import api.hbm.energymk2.IEnergyReceiverMK2.ConnectionPriority;
|
||||||
@ -28,7 +27,7 @@ public interface IFluidReceiverMK2 extends IFluidUserMK2 {
|
|||||||
|
|
||||||
public default void trySubscribe(FluidType type, World world, int x, int y, int z, ForgeDirection dir) {
|
public default void trySubscribe(FluidType type, World world, int x, int y, int z, ForgeDirection dir) {
|
||||||
|
|
||||||
TileEntity te = Compat.getTileStandard(world, x, y, z);
|
TileEntity te = TileAccessCache.getTileOrCache(world, x, y, z);
|
||||||
boolean red = false;
|
boolean red = false;
|
||||||
|
|
||||||
if(te instanceof IFluidConnectorMK2) {
|
if(te instanceof IFluidConnectorMK2) {
|
||||||
|
|||||||
@ -6,7 +6,6 @@ import com.hbm.packet.PacketDispatcher;
|
|||||||
import com.hbm.packet.toclient.AuxParticlePacketNT;
|
import com.hbm.packet.toclient.AuxParticlePacketNT;
|
||||||
import com.hbm.uninos.GenNode;
|
import com.hbm.uninos.GenNode;
|
||||||
import com.hbm.uninos.UniNodespace;
|
import com.hbm.uninos.UniNodespace;
|
||||||
import com.hbm.util.Compat;
|
|
||||||
import com.hbm.util.fauxpointtwelve.DirPos;
|
import com.hbm.util.fauxpointtwelve.DirPos;
|
||||||
|
|
||||||
import cpw.mods.fml.common.network.NetworkRegistry.TargetPoint;
|
import cpw.mods.fml.common.network.NetworkRegistry.TargetPoint;
|
||||||
@ -30,7 +29,7 @@ public interface IFluidStandardSenderMK2 extends IFluidProviderMK2 {
|
|||||||
|
|
||||||
public default void tryProvide(FluidType type, int pressure, World world, int x, int y, int z, ForgeDirection dir) {
|
public default void tryProvide(FluidType type, int pressure, World world, int x, int y, int z, ForgeDirection dir) {
|
||||||
|
|
||||||
TileEntity te = Compat.getTileStandard(world, x, y, z);
|
TileEntity te = TileAccessCache.getTileOrCache(world, x, y, z);
|
||||||
boolean red = false;
|
boolean red = false;
|
||||||
|
|
||||||
if(te instanceof IFluidConnectorMK2) {
|
if(te instanceof IFluidConnectorMK2) {
|
||||||
|
|||||||
@ -1,7 +1,55 @@
|
|||||||
package api.hbm.tile;
|
package api.hbm.tile;
|
||||||
|
|
||||||
|
import java.util.HashMap;
|
||||||
|
import java.util.Map;
|
||||||
|
|
||||||
|
import com.hbm.util.Compat;
|
||||||
|
import com.hbm.util.Tuple.Quartet;
|
||||||
|
|
||||||
|
import net.minecraft.tileentity.TileEntity;
|
||||||
|
import net.minecraft.world.World;
|
||||||
|
|
||||||
/** For anything that should be removed off networks when considered unloaded, only affects providers and receivers, not links. Must not necessarily be a tile. */
|
/** For anything that should be removed off networks when considered unloaded, only affects providers and receivers, not links. Must not necessarily be a tile. */
|
||||||
public interface ILoadedTile {
|
public interface ILoadedTile {
|
||||||
|
|
||||||
public boolean isLoaded();
|
public boolean isLoaded();
|
||||||
|
|
||||||
|
// should we gunk this into the API? no, but i don't care
|
||||||
|
public static class TileAccessCache {
|
||||||
|
|
||||||
|
public static Map<Quartet, TileAccessCache> cache = new HashMap();
|
||||||
|
|
||||||
|
public static int NULL_CACHE = 20;
|
||||||
|
public static int NONNULL_CACHE = 60;
|
||||||
|
|
||||||
|
public TileEntity tile;
|
||||||
|
public long expiresOn;
|
||||||
|
|
||||||
|
public TileAccessCache(TileEntity tile, long expiresOn) {
|
||||||
|
this.tile = tile;
|
||||||
|
this.expiresOn = expiresOn;
|
||||||
|
}
|
||||||
|
|
||||||
|
public boolean hasExpired(long worldTime) {
|
||||||
|
if(tile != null && tile.isInvalid()) return true;
|
||||||
|
if(worldTime >= expiresOn) return true;
|
||||||
|
if(tile instanceof ILoadedTile && !((ILoadedTile) tile).isLoaded()) return true;
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static Quartet publicCumRag = new Quartet(0, 0, 0, 0);
|
||||||
|
public static TileEntity getTileOrCache(World world, int x, int y, int z) {
|
||||||
|
publicCumRag.mangle(x, y, z, world.provider.dimensionId);
|
||||||
|
TileAccessCache cache = TileAccessCache.cache.get(publicCumRag);
|
||||||
|
|
||||||
|
if(cache == null || cache.hasExpired(world.getTotalWorldTime())) {
|
||||||
|
TileEntity tile = Compat.getTileStandard(world, x, y, z);
|
||||||
|
cache = new TileAccessCache(tile, world.getTotalWorldTime() + (tile == null ? NULL_CACHE : NONNULL_CACHE));
|
||||||
|
TileAccessCache.cache.put(publicCumRag.clone(), cache);
|
||||||
|
return tile;
|
||||||
|
} else {
|
||||||
|
return cache.tile;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -13,6 +13,7 @@ import com.hbm.blocks.machine.fusion.MachineFusionBreeder;
|
|||||||
import com.hbm.blocks.machine.fusion.MachineFusionCollector;
|
import com.hbm.blocks.machine.fusion.MachineFusionCollector;
|
||||||
import com.hbm.blocks.machine.fusion.MachineFusionCoupler;
|
import com.hbm.blocks.machine.fusion.MachineFusionCoupler;
|
||||||
import com.hbm.blocks.machine.fusion.MachineFusionKlystron;
|
import com.hbm.blocks.machine.fusion.MachineFusionKlystron;
|
||||||
|
import com.hbm.blocks.machine.fusion.MachineFusionKlystronCreative;
|
||||||
import com.hbm.blocks.machine.fusion.MachineFusionMHDT;
|
import com.hbm.blocks.machine.fusion.MachineFusionMHDT;
|
||||||
import com.hbm.blocks.machine.fusion.MachineFusionTorus;
|
import com.hbm.blocks.machine.fusion.MachineFusionTorus;
|
||||||
import com.hbm.blocks.machine.pile.*;
|
import com.hbm.blocks.machine.pile.*;
|
||||||
@ -743,13 +744,14 @@ public class ModBlocks {
|
|||||||
public static Block machine_microwave;
|
public static Block machine_microwave;
|
||||||
|
|
||||||
public static Block machine_battery_socket;
|
public static Block machine_battery_socket;
|
||||||
|
public static Block machine_battery_redd;
|
||||||
|
|
||||||
@Deprecated public static Block machine_battery_potato;
|
@Deprecated public static Block machine_battery_potato;
|
||||||
@Deprecated public static Block machine_battery;
|
@Deprecated public static Block machine_battery;
|
||||||
@Deprecated public static Block machine_lithium_battery;
|
@Deprecated public static Block machine_lithium_battery;
|
||||||
@Deprecated public static Block machine_schrabidium_battery;
|
@Deprecated public static Block machine_schrabidium_battery;
|
||||||
@Deprecated public static Block machine_dineutronium_battery;
|
@Deprecated public static Block machine_dineutronium_battery;
|
||||||
public static Block machine_fensu;
|
@Deprecated public static Block machine_fensu;
|
||||||
|
|
||||||
@Deprecated public static Block capacitor_bus;
|
@Deprecated public static Block capacitor_bus;
|
||||||
public static Block capacitor_copper; // neat for structures
|
public static Block capacitor_copper; // neat for structures
|
||||||
@ -787,6 +789,7 @@ public class ModBlocks {
|
|||||||
public static Block pipe_anchor;
|
public static Block pipe_anchor;
|
||||||
public static Block fluid_valve;
|
public static Block fluid_valve;
|
||||||
public static Block fluid_switch;
|
public static Block fluid_switch;
|
||||||
|
public static Block fluid_counter_valve;
|
||||||
public static Block fluid_pump;
|
public static Block fluid_pump;
|
||||||
public static Block machine_drain;
|
public static Block machine_drain;
|
||||||
public static Block radio_torch_sender;
|
public static Block radio_torch_sender;
|
||||||
@ -899,6 +902,7 @@ public class ModBlocks {
|
|||||||
public static Block fusion_component;
|
public static Block fusion_component;
|
||||||
public static Block fusion_torus;
|
public static Block fusion_torus;
|
||||||
public static Block fusion_klystron;
|
public static Block fusion_klystron;
|
||||||
|
public static Block fusion_klystron_creative;
|
||||||
public static Block fusion_breeder;
|
public static Block fusion_breeder;
|
||||||
public static Block fusion_collector;
|
public static Block fusion_collector;
|
||||||
public static Block fusion_boiler;
|
public static Block fusion_boiler;
|
||||||
@ -1864,12 +1868,14 @@ public class ModBlocks {
|
|||||||
machine_microwave = new MachineMicrowave(Material.iron).setBlockName("machine_microwave").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":machine_microwave");
|
machine_microwave = new MachineMicrowave(Material.iron).setBlockName("machine_microwave").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":machine_microwave");
|
||||||
|
|
||||||
machine_battery_socket = new MachineBatterySocket().setBlockName("machine_battery_socket").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":block_steel");
|
machine_battery_socket = new MachineBatterySocket().setBlockName("machine_battery_socket").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":block_steel");
|
||||||
machine_battery_potato = new MachineBattery(Material.iron, 10_000).setBlockName("machine_battery_potato").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab);
|
machine_battery_redd = new MachineBatteryREDD().setBlockName("machine_battery_redd").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":block_steel");
|
||||||
machine_battery = new MachineBattery(Material.iron, 1_000_000).setBlockName("machine_battery").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab);
|
|
||||||
machine_lithium_battery = new MachineBattery(Material.iron, 50_000_000).setBlockName("machine_lithium_battery").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab);
|
machine_battery_potato = new MachineBattery(Material.iron, 10_000).setBlockName("machine_battery_potato").setHardness(5.0F).setResistance(10.0F).setCreativeTab(null);
|
||||||
machine_schrabidium_battery = new MachineBattery(Material.iron, 25_000_000_000L).setBlockName("machine_schrabidium_battery").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab);
|
machine_battery = new MachineBattery(Material.iron, 1_000_000).setBlockName("machine_battery").setHardness(5.0F).setResistance(10.0F).setCreativeTab(null);
|
||||||
machine_dineutronium_battery = new MachineBattery(Material.iron, 1_000_000_000_000L).setBlockName("machine_dineutronium_battery").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab);
|
machine_lithium_battery = new MachineBattery(Material.iron, 50_000_000).setBlockName("machine_lithium_battery").setHardness(5.0F).setResistance(10.0F).setCreativeTab(null);
|
||||||
machine_fensu = new MachineFENSU(Material.iron).setBlockName("machine_fensu").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":machine_fensu");
|
machine_schrabidium_battery = new MachineBattery(Material.iron, 25_000_000_000L).setBlockName("machine_schrabidium_battery").setHardness(5.0F).setResistance(10.0F).setCreativeTab(null);
|
||||||
|
machine_dineutronium_battery = new MachineBattery(Material.iron, 1_000_000_000_000L).setBlockName("machine_dineutronium_battery").setHardness(5.0F).setResistance(10.0F).setCreativeTab(null);
|
||||||
|
machine_fensu = new MachineFENSU(Material.iron).setBlockName("machine_fensu").setHardness(5.0F).setResistance(10.0F).setCreativeTab(null).setBlockTextureName(RefStrings.MODID + ":machine_fensu");
|
||||||
|
|
||||||
capacitor_bus = new MachineCapacitorBus(Material.iron).setBlockName("capacitor_bus").setHardness(5.0F).setResistance(10.0F).setCreativeTab(null);
|
capacitor_bus = new MachineCapacitorBus(Material.iron).setBlockName("capacitor_bus").setHardness(5.0F).setResistance(10.0F).setCreativeTab(null);
|
||||||
capacitor_copper = new MachineCapacitor(Material.iron, 1_000_000L, "copper").setBlockName("capacitor_copper").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":block_copper");
|
capacitor_copper = new MachineCapacitor(Material.iron, 1_000_000L, "copper").setBlockName("capacitor_copper").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":block_copper");
|
||||||
@ -1921,6 +1927,7 @@ public class ModBlocks {
|
|||||||
fluid_duct_gauge = new FluidDuctGauge().setBlockName("fluid_duct_gauge").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab);
|
fluid_duct_gauge = new FluidDuctGauge().setBlockName("fluid_duct_gauge").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab);
|
||||||
fluid_valve = new FluidValve(Material.iron).setBlockName("fluid_valve").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab);
|
fluid_valve = new FluidValve(Material.iron).setBlockName("fluid_valve").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab);
|
||||||
fluid_switch = new FluidSwitch(Material.iron).setBlockName("fluid_switch").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab);
|
fluid_switch = new FluidSwitch(Material.iron).setBlockName("fluid_switch").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab);
|
||||||
|
fluid_counter_valve = new FluidCounterValve(Material.iron).setBlockName("fluid_counter_valve").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab);
|
||||||
fluid_pump = new FluidPump(Material.iron).setBlockName("fluid_pump").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":block_steel");
|
fluid_pump = new FluidPump(Material.iron).setBlockName("fluid_pump").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":block_steel");
|
||||||
machine_drain = new MachineDrain(Material.iron).setBlockName("machine_drain").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":concrete");
|
machine_drain = new MachineDrain(Material.iron).setBlockName("machine_drain").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":concrete");
|
||||||
radio_torch_sender = new RadioTorchSender().setBlockName("radio_torch_sender").setHardness(0.1F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab);
|
radio_torch_sender = new RadioTorchSender().setBlockName("radio_torch_sender").setHardness(0.1F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab);
|
||||||
@ -2035,6 +2042,7 @@ public class ModBlocks {
|
|||||||
fusion_component = new BlockFusionComponent().setBlockName("fusion_component").setHardness(5.0F).setResistance(30.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":fusion_component");
|
fusion_component = new BlockFusionComponent().setBlockName("fusion_component").setHardness(5.0F).setResistance(30.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":fusion_component");
|
||||||
fusion_torus = new MachineFusionTorus().setBlockName("fusion_torus").setHardness(5.0F).setResistance(60.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":block_steel");
|
fusion_torus = new MachineFusionTorus().setBlockName("fusion_torus").setHardness(5.0F).setResistance(60.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":block_steel");
|
||||||
fusion_klystron = new MachineFusionKlystron().setBlockName("fusion_klystron").setHardness(5.0F).setResistance(60.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":block_steel");
|
fusion_klystron = new MachineFusionKlystron().setBlockName("fusion_klystron").setHardness(5.0F).setResistance(60.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":block_steel");
|
||||||
|
fusion_klystron_creative = new MachineFusionKlystronCreative().setBlockName("fusion_klystron_creative").setHardness(5.0F).setResistance(60.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":block_steel");
|
||||||
fusion_breeder = new MachineFusionBreeder().setBlockName("fusion_breeder").setHardness(5.0F).setResistance(60.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":block_steel");
|
fusion_breeder = new MachineFusionBreeder().setBlockName("fusion_breeder").setHardness(5.0F).setResistance(60.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":block_steel");
|
||||||
fusion_collector = new MachineFusionCollector().setBlockName("fusion_collector").setHardness(5.0F).setResistance(60.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":block_steel");
|
fusion_collector = new MachineFusionCollector().setBlockName("fusion_collector").setHardness(5.0F).setResistance(60.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":block_steel");
|
||||||
fusion_boiler = new MachineFusionBoiler().setBlockName("fusion_boiler").setHardness(5.0F).setResistance(60.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":block_steel");
|
fusion_boiler = new MachineFusionBoiler().setBlockName("fusion_boiler").setHardness(5.0F).setResistance(60.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":block_steel");
|
||||||
@ -3210,6 +3218,7 @@ public class ModBlocks {
|
|||||||
register(pipe_anchor);
|
register(pipe_anchor);
|
||||||
register(fluid_duct_gauge);
|
register(fluid_duct_gauge);
|
||||||
register(fluid_valve);
|
register(fluid_valve);
|
||||||
|
register(fluid_counter_valve);
|
||||||
register(fluid_switch);
|
register(fluid_switch);
|
||||||
register(fluid_pump);
|
register(fluid_pump);
|
||||||
register(machine_drain);
|
register(machine_drain);
|
||||||
@ -3266,6 +3275,7 @@ public class ModBlocks {
|
|||||||
register(barrel_tcalloy);
|
register(barrel_tcalloy);
|
||||||
register(barrel_antimatter);
|
register(barrel_antimatter);
|
||||||
register(machine_battery_socket);
|
register(machine_battery_socket);
|
||||||
|
register(machine_battery_redd);
|
||||||
register(machine_battery_potato);
|
register(machine_battery_potato);
|
||||||
register(machine_battery);
|
register(machine_battery);
|
||||||
register(machine_lithium_battery);
|
register(machine_lithium_battery);
|
||||||
@ -3418,6 +3428,7 @@ public class ModBlocks {
|
|||||||
register(fusion_component);
|
register(fusion_component);
|
||||||
register(fusion_torus);
|
register(fusion_torus);
|
||||||
register(fusion_klystron);
|
register(fusion_klystron);
|
||||||
|
register(fusion_klystron_creative);
|
||||||
register(fusion_breeder);
|
register(fusion_breeder);
|
||||||
register(fusion_collector);
|
register(fusion_collector);
|
||||||
register(fusion_boiler);
|
register(fusion_boiler);
|
||||||
|
|||||||
@ -1,26 +1,15 @@
|
|||||||
package com.hbm.blocks.generic;
|
package com.hbm.blocks.generic;
|
||||||
|
|
||||||
import java.util.List;
|
|
||||||
import java.util.Random;
|
import java.util.Random;
|
||||||
|
|
||||||
import com.hbm.blocks.ITooltipProvider;
|
|
||||||
import com.hbm.blocks.ModBlocks;
|
import com.hbm.blocks.ModBlocks;
|
||||||
import com.hbm.items.ModItems;
|
import com.hbm.items.ModItems;
|
||||||
import com.hbm.util.i18n.I18nUtil;
|
|
||||||
|
|
||||||
import api.hbm.block.IDrillInteraction;
|
|
||||||
import api.hbm.block.IMiningDrill;
|
|
||||||
import net.minecraft.block.Block;
|
import net.minecraft.block.Block;
|
||||||
import net.minecraft.block.material.Material;
|
import net.minecraft.block.material.Material;
|
||||||
import net.minecraft.entity.item.EntityItem;
|
|
||||||
import net.minecraft.entity.player.EntityPlayer;
|
|
||||||
import net.minecraft.item.Item;
|
import net.minecraft.item.Item;
|
||||||
import net.minecraft.item.ItemStack;
|
|
||||||
import net.minecraft.util.EnumChatFormatting;
|
|
||||||
import net.minecraft.world.World;
|
|
||||||
import net.minecraftforge.common.util.FakePlayer;
|
|
||||||
|
|
||||||
public class BlockCluster extends Block implements IDrillInteraction, ITooltipProvider {
|
public class BlockCluster extends Block {
|
||||||
|
|
||||||
public BlockCluster(Material mat) {
|
public BlockCluster(Material mat) {
|
||||||
super(mat);
|
super(mat);
|
||||||
@ -28,32 +17,7 @@ public class BlockCluster extends Block implements IDrillInteraction, ITooltipPr
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Item getItemDropped(int i, Random rand, int j) {
|
public Item getItemDropped(int i, Random rand, int j) {
|
||||||
return null;
|
return getDrop();
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void harvestBlock(World world, EntityPlayer player, int x, int y, int z, int meta) {
|
|
||||||
|
|
||||||
if(player instanceof FakePlayer || player == null) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
if(!world.isRemote && world.getGameRules().getGameRuleBooleanValue("doTileDrops") && !world.restoringBlockSnapshots) {
|
|
||||||
|
|
||||||
Item drop = getDrop();
|
|
||||||
|
|
||||||
if(drop == null)
|
|
||||||
return;
|
|
||||||
|
|
||||||
float f = 0.7F;
|
|
||||||
double mX = (double) (world.rand.nextFloat() * f) + (double) (1.0F - f) * 0.5D;
|
|
||||||
double mY = (double) (world.rand.nextFloat() * f) + (double) (1.0F - f) * 0.5D;
|
|
||||||
double mZ = (double) (world.rand.nextFloat() * f) + (double) (1.0F - f) * 0.5D;
|
|
||||||
|
|
||||||
EntityItem entityitem = new EntityItem(world, (double) x + mX, (double) y + mY, (double) z + mZ, new ItemStack(drop));
|
|
||||||
entityitem.delayBeforeCanPickup = 10;
|
|
||||||
world.spawnEntityInWorld(entityitem);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private Item getDrop() {
|
private Item getDrop() {
|
||||||
@ -65,24 +29,4 @@ public class BlockCluster extends Block implements IDrillInteraction, ITooltipPr
|
|||||||
|
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
|
||||||
public boolean canBreak(World world, int x, int y, int z, int meta, IMiningDrill drill) {
|
|
||||||
return drill.getDrillRating() > 70 || world.rand.nextFloat() < 0.05;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public ItemStack extractResource(World world, int x, int y, int z, int meta, IMiningDrill drill) {
|
|
||||||
return drill.getDrillRating() <= 70 ? new ItemStack(getDrop()) : null;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public float getRelativeHardness(World world, int x, int y, int z, int meta, IMiningDrill drill) {
|
|
||||||
return this.getBlockHardness(world, x, y, z);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void addInformation(ItemStack stack, EntityPlayer player, List list, boolean ext) {
|
|
||||||
list.add(EnumChatFormatting.YELLOW + I18nUtil.resolveKey("trait.tile.cluster"));
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|||||||
@ -33,6 +33,7 @@ import net.minecraft.nbt.NBTTagCompound;
|
|||||||
import net.minecraft.tileentity.TileEntity;
|
import net.minecraft.tileentity.TileEntity;
|
||||||
import net.minecraft.util.EnumChatFormatting;
|
import net.minecraft.util.EnumChatFormatting;
|
||||||
import net.minecraft.util.IIcon;
|
import net.minecraft.util.IIcon;
|
||||||
|
import net.minecraft.util.MathHelper;
|
||||||
import net.minecraft.world.World;
|
import net.minecraft.world.World;
|
||||||
import net.minecraftforge.client.event.RenderGameOverlayEvent.Pre;
|
import net.minecraftforge.client.event.RenderGameOverlayEvent.Pre;
|
||||||
|
|
||||||
@ -40,6 +41,7 @@ public class BlockMassStorage extends BlockContainer implements IBlockMulti, ILo
|
|||||||
|
|
||||||
@SideOnly(Side.CLIENT) private IIcon[] iconTop;
|
@SideOnly(Side.CLIENT) private IIcon[] iconTop;
|
||||||
@SideOnly(Side.CLIENT) private IIcon[] iconSide;
|
@SideOnly(Side.CLIENT) private IIcon[] iconSide;
|
||||||
|
@SideOnly(Side.CLIENT) private IIcon[] iconFront;
|
||||||
|
|
||||||
public BlockMassStorage() {
|
public BlockMassStorage() {
|
||||||
super(Material.iron);
|
super(Material.iron);
|
||||||
@ -50,15 +52,23 @@ public class BlockMassStorage extends BlockContainer implements IBlockMulti, ILo
|
|||||||
public void registerBlockIcons(IIconRegister iconRegister) {
|
public void registerBlockIcons(IIconRegister iconRegister) {
|
||||||
this.iconTop = new IIcon[4];
|
this.iconTop = new IIcon[4];
|
||||||
this.iconSide = new IIcon[4];
|
this.iconSide = new IIcon[4];
|
||||||
|
this.iconFront = new IIcon[4];
|
||||||
|
|
||||||
this.iconTop[0] = iconRegister.registerIcon(RefStrings.MODID + ":mass_storage_top_iron");
|
this.iconTop[0] = iconRegister.registerIcon(RefStrings.MODID + ":mass_storage_top_iron");
|
||||||
this.iconSide[0] = iconRegister.registerIcon(RefStrings.MODID + ":mass_storage_side_iron");
|
this.iconSide[0] = iconRegister.registerIcon(RefStrings.MODID + ":mass_storage_side_iron");
|
||||||
|
this.iconFront[0] = iconRegister.registerIcon(RefStrings.MODID + ":mass_storage_front_iron");
|
||||||
|
|
||||||
this.iconTop[1] = iconRegister.registerIcon(RefStrings.MODID + ":mass_storage_top_desh");
|
this.iconTop[1] = iconRegister.registerIcon(RefStrings.MODID + ":mass_storage_top_desh");
|
||||||
this.iconSide[1] = iconRegister.registerIcon(RefStrings.MODID + ":mass_storage_side_desh");
|
this.iconSide[1] = iconRegister.registerIcon(RefStrings.MODID + ":mass_storage_side_desh");
|
||||||
|
this.iconFront[1] = iconRegister.registerIcon(RefStrings.MODID + ":mass_storage_front_desh");
|
||||||
|
|
||||||
this.iconTop[2] = iconRegister.registerIcon(RefStrings.MODID + ":mass_storage_top");
|
this.iconTop[2] = iconRegister.registerIcon(RefStrings.MODID + ":mass_storage_top");
|
||||||
this.iconSide[2] = iconRegister.registerIcon(RefStrings.MODID + ":mass_storage_side");
|
this.iconSide[2] = iconRegister.registerIcon(RefStrings.MODID + ":mass_storage_side");
|
||||||
|
this.iconFront[2] = iconRegister.registerIcon(RefStrings.MODID + ":mass_storage_front");
|
||||||
|
|
||||||
this.iconTop[3] = iconRegister.registerIcon(RefStrings.MODID + ":mass_storage_top_wood");
|
this.iconTop[3] = iconRegister.registerIcon(RefStrings.MODID + ":mass_storage_top_wood");
|
||||||
this.iconSide[3] = iconRegister.registerIcon(RefStrings.MODID + ":mass_storage_side_wood");
|
this.iconSide[3] = iconRegister.registerIcon(RefStrings.MODID + ":mass_storage_side_wood");
|
||||||
|
this.iconFront[3] = iconRegister.registerIcon(RefStrings.MODID + ":mass_storage_front_wood");
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@ -74,12 +84,15 @@ public class BlockMassStorage extends BlockContainer implements IBlockMulti, ILo
|
|||||||
@SideOnly(Side.CLIENT)
|
@SideOnly(Side.CLIENT)
|
||||||
public IIcon getIcon(int side, int metadata) {
|
public IIcon getIcon(int side, int metadata) {
|
||||||
int meta = this.rectify(metadata);
|
int meta = this.rectify(metadata);
|
||||||
return side == 1 ? this.iconTop[meta] : (side == 0 ? this.iconTop[meta] : this.iconSide[meta]);
|
int dir = (metadata / getSubCount()) + 2;
|
||||||
|
if(side == 0 || side == 1) return iconTop[meta];
|
||||||
|
if(side == dir) return iconFront[meta];
|
||||||
|
return iconSide[meta];
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public int damageDropped(int meta) {
|
public int damageDropped(int meta) {
|
||||||
return meta;
|
return rectify(meta);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@ -88,6 +101,7 @@ public class BlockMassStorage extends BlockContainer implements IBlockMulti, ILo
|
|||||||
}
|
}
|
||||||
|
|
||||||
public int getCapacity(int meta) {
|
public int getCapacity(int meta) {
|
||||||
|
meta = rectify(meta);
|
||||||
return meta == 3 ? 100 : meta == 0 ? 10_000 : meta == 1 ? 100_000 : meta == 2 ? 1_000_000 : 0;
|
return meta == 3 ? 100 : meta == 0 ? 10_000 : meta == 1 ? 100_000 : meta == 2 ? 1_000_000 : 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -116,7 +130,7 @@ public class BlockMassStorage extends BlockContainer implements IBlockMulti, ILo
|
|||||||
|
|
||||||
if(!player.capabilities.isCreativeMode && !world.isRemote && willHarvest) {
|
if(!player.capabilities.isCreativeMode && !world.isRemote && willHarvest) {
|
||||||
|
|
||||||
ItemStack drop = new ItemStack(this, 1, world.getBlockMetadata(x, y, z));
|
ItemStack drop = new ItemStack(this, 1, rectify(world.getBlockMetadata(x, y, z)));
|
||||||
ISidedInventory inv = (ISidedInventory)world.getTileEntity(x, y, z);
|
ISidedInventory inv = (ISidedInventory)world.getTileEntity(x, y, z);
|
||||||
|
|
||||||
NBTTagCompound nbt = new NBTTagCompound();
|
NBTTagCompound nbt = new NBTTagCompound();
|
||||||
@ -188,6 +202,14 @@ public class BlockMassStorage extends BlockContainer implements IBlockMulti, ILo
|
|||||||
}
|
}
|
||||||
|
|
||||||
super.onBlockPlacedBy(world, x, y, z, player, stack);
|
super.onBlockPlacedBy(world, x, y, z, player, stack);
|
||||||
|
|
||||||
|
int i = MathHelper.floor_double(player.rotationYaw * 4.0F / 360.0F + 0.5D) & 3;
|
||||||
|
int meta = stack.getItemDamage();
|
||||||
|
|
||||||
|
if(i == 0) world.setBlockMetadataWithNotify(x, y, z, meta, 2);
|
||||||
|
if(i == 1) world.setBlockMetadataWithNotify(x, y, z, meta + 3 * getSubCount(), 2);
|
||||||
|
if(i == 2) world.setBlockMetadataWithNotify(x, y, z, meta + 1 * getSubCount(), 2);
|
||||||
|
if(i == 3) world.setBlockMetadataWithNotify(x, y, z, meta + 2 * getSubCount(), 2);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|||||||
@ -1,7 +1,6 @@
|
|||||||
package com.hbm.blocks.machine;
|
package com.hbm.blocks.machine;
|
||||||
|
|
||||||
import com.hbm.items.ModItems;
|
import com.hbm.items.ModItems;
|
||||||
import com.hbm.items.machine.ItemBattery;
|
|
||||||
import com.hbm.tileentity.machine.TileEntityRadiobox;
|
import com.hbm.tileentity.machine.TileEntityRadiobox;
|
||||||
|
|
||||||
import net.minecraft.block.Block;
|
import net.minecraft.block.Block;
|
||||||
@ -47,31 +46,17 @@ public class Radiobox extends BlockContainer {
|
|||||||
public void onBlockPlacedBy(World world, int x, int y, int z, EntityLivingBase player, ItemStack itemStack) {
|
public void onBlockPlacedBy(World world, int x, int y, int z, EntityLivingBase player, ItemStack itemStack) {
|
||||||
int i = MathHelper.floor_double(player.rotationYaw * 4.0F / 360.0F + 0.5D) & 3;
|
int i = MathHelper.floor_double(player.rotationYaw * 4.0F / 360.0F + 0.5D) & 3;
|
||||||
|
|
||||||
if(i == 0)
|
if(i == 0) world.setBlockMetadataWithNotify(x, y, z, 2, 2);
|
||||||
{
|
if(i == 1) world.setBlockMetadataWithNotify(x, y, z, 5, 2);
|
||||||
world.setBlockMetadataWithNotify(x, y, z, 2, 2);
|
if(i == 2) world.setBlockMetadataWithNotify(x, y, z, 3, 2);
|
||||||
}
|
if(i == 3) world.setBlockMetadataWithNotify(x, y, z, 4, 2);
|
||||||
if(i == 1)
|
|
||||||
{
|
|
||||||
world.setBlockMetadataWithNotify(x, y, z, 5, 2);
|
|
||||||
}
|
|
||||||
if(i == 2)
|
|
||||||
{
|
|
||||||
world.setBlockMetadataWithNotify(x, y, z, 3, 2);
|
|
||||||
}
|
|
||||||
if(i == 3)
|
|
||||||
{
|
|
||||||
world.setBlockMetadataWithNotify(x, y, z, 4, 2);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean onBlockActivated(World world, int x, int y, int z, EntityPlayer player, int side, float hitX, float hitY, float hitZ) {
|
public boolean onBlockActivated(World world, int x, int y, int z, EntityPlayer player, int side, float hitX, float hitY, float hitZ) {
|
||||||
if(world.isRemote)
|
if(world.isRemote) {
|
||||||
{
|
|
||||||
return true;
|
return true;
|
||||||
} else if(!player.isSneaking())
|
} else if(!player.isSneaking()) {
|
||||||
{
|
|
||||||
TileEntityRadiobox box = (TileEntityRadiobox)world.getTileEntity(x, y, z);
|
TileEntityRadiobox box = (TileEntityRadiobox)world.getTileEntity(x, y, z);
|
||||||
|
|
||||||
if(player.getHeldItem() != null && player.getHeldItem().getItem() == ModItems.battery_spark && !box.infinite) {
|
if(player.getHeldItem() != null && player.getHeldItem().getItem() == ModItems.battery_spark && !box.infinite) {
|
||||||
@ -93,78 +78,53 @@ public class Radiobox extends BlockContainer {
|
|||||||
|
|
||||||
return true;
|
return true;
|
||||||
} else {
|
} else {
|
||||||
//FMLNetworkHandler.openGui(player, MainRegistry.instance, ModBlocks.guiID_radiobox, world, x, y, z);
|
|
||||||
//return true;
|
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void setBlockBoundsBasedOnState(IBlockAccess p_149719_1_, int p_149719_2_, int p_149719_3_, int p_149719_4_)
|
public void setBlockBoundsBasedOnState(IBlockAccess p_149719_1_, int p_149719_2_, int p_149719_3_, int p_149719_4_) {
|
||||||
{
|
|
||||||
int te = p_149719_1_.getBlockMetadata(p_149719_2_, p_149719_3_, p_149719_4_);
|
int te = p_149719_1_.getBlockMetadata(p_149719_2_, p_149719_3_, p_149719_4_);
|
||||||
float f = 0.0625F;
|
float f = 0.0625F;
|
||||||
|
|
||||||
this.setBlockBounds(0.0F, 0.0F, 2*f, 1.0F, 1.0F, 14*f);
|
this.setBlockBounds(0.0F, 0.0F, 2 * f, 1.0F, 1.0F, 14 * f);
|
||||||
switch(te)
|
switch(te) {
|
||||||
{
|
|
||||||
case 4:
|
case 4:
|
||||||
case 8:
|
case 8: this.setBlockBounds(11 * f, 1 * f, 4 * f, 16 * f, 15 * f, 12 * f); break;
|
||||||
this.setBlockBounds(11*f, 1*f, 4*f, 16*f, 15*f, 12*f);
|
|
||||||
break;
|
|
||||||
case 2:
|
case 2:
|
||||||
case 6:
|
case 6: this.setBlockBounds(4 * f, 1 * f, 11 * f, 12 * f, 15 * f, 16 * f); break;
|
||||||
this.setBlockBounds(4*f, 1*f, 11*f, 12*f, 15*f, 16*f);
|
|
||||||
break;
|
|
||||||
case 5:
|
case 5:
|
||||||
case 9:
|
case 9: this.setBlockBounds(0 * f, 1 * f, 4 * f, 5 * f, 15 * f, 12 * f); break;
|
||||||
this.setBlockBounds(0*f, 1*f, 4*f, 5*f, 15*f, 12*f);
|
|
||||||
break;
|
|
||||||
case 3:
|
case 3:
|
||||||
case 7:
|
case 7: this.setBlockBounds(4 * f, 1 * f, 0 * f, 12 * f, 15 * f, 5 * f); break;
|
||||||
this.setBlockBounds(4*f, 1*f, 0*f, 12*f, 15*f, 5*f);
|
|
||||||
break;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public AxisAlignedBB getCollisionBoundingBoxFromPool(World world, int x, int y, int z) {
|
public AxisAlignedBB getCollisionBoundingBoxFromPool(World world, int x, int y, int z) {
|
||||||
|
|
||||||
int te = world.getBlockMetadata(x, y, z);
|
int te = world.getBlockMetadata(x, y, z);
|
||||||
float f = 0.0625F;
|
float f = 0.0625F;
|
||||||
|
|
||||||
this.setBlockBounds(0.0F, 0.0F, 2*f, 1.0F, 1.0F, 14*f);
|
this.setBlockBounds(0.0F, 0.0F, 2 * f, 1.0F, 1.0F, 14 * f);
|
||||||
switch(te)
|
switch(te) {
|
||||||
{
|
|
||||||
case 4:
|
case 4:
|
||||||
case 8:
|
case 8: this.setBlockBounds(11 * f, 1 * f, 4 * f, 16 * f, 15 * f, 12 * f); break;
|
||||||
this.setBlockBounds(11*f, 1*f, 4*f, 16*f, 15*f, 12*f);
|
|
||||||
break;
|
|
||||||
case 2:
|
case 2:
|
||||||
case 6:
|
case 6: this.setBlockBounds(4 * f, 1 * f, 11 * f, 12 * f, 15 * f, 16 * f); break;
|
||||||
this.setBlockBounds(4*f, 1*f, 11*f, 12*f, 15*f, 16*f);
|
|
||||||
break;
|
|
||||||
case 5:
|
case 5:
|
||||||
case 9:
|
case 9: this.setBlockBounds(0 * f, 1 * f, 4 * f, 5 * f, 15 * f, 12 * f); break;
|
||||||
this.setBlockBounds(0*f, 1*f, 4*f, 5*f, 15*f, 12*f);
|
|
||||||
break;
|
|
||||||
case 3:
|
case 3:
|
||||||
case 7:
|
case 7: this.setBlockBounds(4 * f, 1 * f, 0 * f, 12 * f, 15 * f, 5 * f); break;
|
||||||
this.setBlockBounds(4*f, 1*f, 0*f, 12*f, 15*f, 5*f);
|
|
||||||
break;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return AxisAlignedBB.getBoundingBox(x + this.minX, y + this.minY, z + this.minZ, x + this.maxX, y + this.maxY, z + this.maxZ);
|
return AxisAlignedBB.getBoundingBox(x + this.minX, y + this.minY, z + this.minZ, x + this.maxX, y + this.maxY, z + this.maxZ);
|
||||||
}
|
}
|
||||||
|
|
||||||
public void breakBlock(World world, int x, int y, int z, Block b, int m) {
|
public void breakBlock(World world, int x, int y, int z, Block b, int m) {
|
||||||
|
|
||||||
TileEntityRadiobox box = (TileEntityRadiobox)world.getTileEntity(x, y, z);
|
TileEntityRadiobox box = (TileEntityRadiobox)world.getTileEntity(x, y, z);
|
||||||
|
if(box.infinite) world.spawnEntityInWorld(new EntityItem(world, x + 0.5, y + 0.5, z + 0.5, new ItemStack(ModItems.battery_spark)));
|
||||||
|
|
||||||
if(box.infinite) {
|
super.breakBlock(world, x, y, z, b, m);
|
||||||
world.spawnEntityInWorld(new EntityItem(world, x + 0.5, y + 0.5, z + 0.5, ItemBattery.getEmptyBattery(ModItems.battery_spark)));
|
}
|
||||||
}
|
|
||||||
|
|
||||||
super.breakBlock(world, x, y, z, b, m);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|||||||
@ -33,15 +33,8 @@ public class MachineFusionKlystron extends BlockDummyable implements ITooltipPro
|
|||||||
return super.standardOpenBehavior(world, x, y, z, player, 0);
|
return super.standardOpenBehavior(world, x, y, z, player, 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override public int[] getDimensions() { return new int[] { 3, 0, 4, 3, 2, 2 }; }
|
||||||
public int[] getDimensions() {
|
@Override public int getOffset() { return 3; }
|
||||||
return new int[] { 3, 0, 4, 3, 2, 2 };
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public int getOffset() {
|
|
||||||
return 3;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean checkRequirement(World world, int x, int y, int z, ForgeDirection dir, int o) {
|
public boolean checkRequirement(World world, int x, int y, int z, ForgeDirection dir, int o) {
|
||||||
|
|||||||
@ -0,0 +1,48 @@
|
|||||||
|
package com.hbm.blocks.machine.fusion;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
import com.hbm.blocks.BlockDummyable;
|
||||||
|
import com.hbm.blocks.ITooltipProvider;
|
||||||
|
import com.hbm.handler.MultiblockHandlerXR;
|
||||||
|
import com.hbm.tileentity.machine.fusion.TileEntityFusionKlystronCreative;
|
||||||
|
|
||||||
|
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.world.World;
|
||||||
|
import net.minecraftforge.common.util.ForgeDirection;
|
||||||
|
|
||||||
|
public class MachineFusionKlystronCreative extends BlockDummyable implements ITooltipProvider {
|
||||||
|
|
||||||
|
public MachineFusionKlystronCreative() {
|
||||||
|
super(Material.iron);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public TileEntity createNewTileEntity(World world, int meta) {
|
||||||
|
if(meta >= 12) return new TileEntityFusionKlystronCreative();
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override public int[] getDimensions() { return new int[] { 3, 0, 4, 3, 2, 2 }; }
|
||||||
|
@Override public int getOffset() { return 3; }
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean checkRequirement(World world, int x, int y, int z, ForgeDirection dir, int o) {
|
||||||
|
return super.checkRequirement(world, x, y, z, dir, o) &&
|
||||||
|
MultiblockHandlerXR.checkSpace(world, x + dir.offsetX * o, y + dir.offsetY * o, z + dir.offsetZ * o, new int[] {4, -3, 4, 3, 1, 1}, x, y, z, dir);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void fillSpace(World world, int x, int y, int z, ForgeDirection dir, int o) {
|
||||||
|
super.fillSpace(world, x, y, z, dir, o);
|
||||||
|
MultiblockHandlerXR.fillSpace(world, x + dir.offsetX * o, y, z + dir.offsetZ * o, new int[] {4, -3, 4, 3, 1, 1}, this, dir);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void addInformation(ItemStack stack, EntityPlayer player, List list, boolean ext) {
|
||||||
|
addStandardInfo(stack, player, list, ext);
|
||||||
|
}
|
||||||
|
}
|
||||||
68
src/main/java/com/hbm/blocks/network/FluidCounterValve.java
Normal file
@ -0,0 +1,68 @@
|
|||||||
|
package com.hbm.blocks.network;
|
||||||
|
|
||||||
|
import com.hbm.blocks.ILookOverlay;
|
||||||
|
import com.hbm.blocks.ITooltipProvider;
|
||||||
|
import com.hbm.lib.RefStrings;
|
||||||
|
import com.hbm.tileentity.network.TileEntityFluidCounterValve;
|
||||||
|
import com.hbm.util.i18n.I18nUtil;
|
||||||
|
import cpw.mods.fml.relauncher.Side;
|
||||||
|
import cpw.mods.fml.relauncher.SideOnly;
|
||||||
|
import net.minecraft.block.material.Material;
|
||||||
|
import net.minecraft.client.renderer.texture.IIconRegister;
|
||||||
|
import net.minecraft.entity.player.EntityPlayer;
|
||||||
|
import net.minecraft.item.ItemStack;
|
||||||
|
import net.minecraft.tileentity.TileEntity;
|
||||||
|
import net.minecraft.util.IIcon;
|
||||||
|
import net.minecraft.world.World;
|
||||||
|
import net.minecraftforge.client.event.RenderGameOverlayEvent.Pre;
|
||||||
|
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
public class FluidCounterValve extends FluidDuctBase implements ILookOverlay, ITooltipProvider {
|
||||||
|
|
||||||
|
@SideOnly(Side.CLIENT)
|
||||||
|
private IIcon iconOn;
|
||||||
|
|
||||||
|
public FluidCounterValve(Material mat) {
|
||||||
|
super(mat);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
@SideOnly(Side.CLIENT)
|
||||||
|
public void registerBlockIcons(IIconRegister iconRegister) {
|
||||||
|
this.iconOn = iconRegister.registerIcon(RefStrings.MODID + ":fluid_counter_valve_on");
|
||||||
|
this.blockIcon = iconRegister.registerIcon(RefStrings.MODID + ":fluid_counter_valve_off");
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
@SideOnly(Side.CLIENT)
|
||||||
|
public IIcon getIcon(int side, int metadata) {
|
||||||
|
return metadata == 1 ? iconOn : blockIcon;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public TileEntity createNewTileEntity(World p_149915_1_, int p_149915_2_) {
|
||||||
|
return new TileEntityFluidCounterValve();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void printHook(Pre event, World world, int x, int y, int z) {
|
||||||
|
TileEntity te = world.getTileEntity(x, y, z);
|
||||||
|
|
||||||
|
if(!(te instanceof TileEntityFluidCounterValve))
|
||||||
|
return;
|
||||||
|
|
||||||
|
TileEntityFluidCounterValve duct = (TileEntityFluidCounterValve) te;
|
||||||
|
|
||||||
|
List<String> text = new ArrayList<>();
|
||||||
|
text.add("&[" + duct.getType().getColor() + "&]" + duct.getType().getLocalizedName());
|
||||||
|
text.add("Counter: " + duct.getCounter());
|
||||||
|
ILookOverlay.printGeneric(event, I18nUtil.resolveKey(getUnlocalizedName() + ".name"), 0xffff00, 0x404000, text);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void addInformation(ItemStack stack, EntityPlayer player, List list, boolean ext) {
|
||||||
|
this.addStandardInfo(stack, player, list, ext);
|
||||||
|
}
|
||||||
|
}
|
||||||
50
src/main/java/com/hbm/blocks/network/MachineBatteryREDD.java
Normal file
@ -0,0 +1,50 @@
|
|||||||
|
package com.hbm.blocks.network;
|
||||||
|
|
||||||
|
import com.hbm.blocks.BlockDummyable;
|
||||||
|
import com.hbm.tileentity.TileEntityProxyCombo;
|
||||||
|
import com.hbm.tileentity.machine.storage.TileEntityBatteryREDD;
|
||||||
|
|
||||||
|
import net.minecraft.block.material.Material;
|
||||||
|
import net.minecraft.entity.player.EntityPlayer;
|
||||||
|
import net.minecraft.tileentity.TileEntity;
|
||||||
|
import net.minecraft.world.World;
|
||||||
|
import net.minecraftforge.common.util.ForgeDirection;
|
||||||
|
|
||||||
|
public class MachineBatteryREDD extends BlockDummyable {
|
||||||
|
|
||||||
|
public MachineBatteryREDD() {
|
||||||
|
super(Material.iron);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public TileEntity createNewTileEntity(World world, int meta) {
|
||||||
|
if(meta >= 12) return new TileEntityBatteryREDD();
|
||||||
|
if(meta >= 6) return new TileEntityProxyCombo().power().conductor();
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean onBlockActivated(World world, int x, int y, int z, EntityPlayer player, int side, float hitX, float hitY, float hitZ) {
|
||||||
|
return standardOpenBehavior(world, x, y, z, player, side);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override public int[] getDimensions() { return new int[] {9, 0, 2, 2, 4, 4}; }
|
||||||
|
@Override public int getOffset() { return 2; }
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected void fillSpace(World world, int x, int y, int z, ForgeDirection dir, int o) {
|
||||||
|
super.fillSpace(world, x, y, z, dir, o);
|
||||||
|
|
||||||
|
x += dir.offsetX * o;
|
||||||
|
z += dir.offsetZ * o;
|
||||||
|
|
||||||
|
ForgeDirection rot = dir.getRotation(ForgeDirection.UP);
|
||||||
|
|
||||||
|
this.makeExtra(world, x + dir.offsetX * 2 + rot.offsetX * 2, y, z + dir.offsetZ * 2 + rot.offsetZ * 2);
|
||||||
|
this.makeExtra(world, x + dir.offsetX * 2 - rot.offsetX * 2, y, z + dir.offsetZ * 2 - rot.offsetZ * 2);
|
||||||
|
this.makeExtra(world, x - dir.offsetX * 2 + rot.offsetX * 2, y, z - dir.offsetZ * 2 + rot.offsetZ * 2);
|
||||||
|
this.makeExtra(world, x - dir.offsetX * 2 - rot.offsetX * 2, y, z - dir.offsetZ * 2 - rot.offsetZ * 2);
|
||||||
|
this.makeExtra(world, x + rot.offsetX * 4, y, z + rot.offsetZ * 4);
|
||||||
|
this.makeExtra(world, x - rot.offsetX * 4, y, z - rot.offsetZ * 4);
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -35,6 +35,7 @@ public class MachineBatterySocket extends BlockDummyable implements ITooltipProv
|
|||||||
@Override public int[] getDimensions() { return new int[] {1, 0, 1, 0, 1, 0}; }
|
@Override public int[] getDimensions() { return new int[] {1, 0, 1, 0, 1, 0}; }
|
||||||
@Override public int getOffset() { return 0; }
|
@Override public int getOffset() { return 0; }
|
||||||
|
|
||||||
|
@Override
|
||||||
protected void fillSpace(World world, int x, int y, int z, ForgeDirection dir, int o) {
|
protected void fillSpace(World world, int x, int y, int z, ForgeDirection dir, int o) {
|
||||||
super.fillSpace(world, x, y, z, dir, o);
|
super.fillSpace(world, x, y, z, dir, o);
|
||||||
|
|
||||||
|
|||||||
49
src/main/java/com/hbm/commands/CommandReapNetworks.java
Normal file
@ -0,0 +1,49 @@
|
|||||||
|
package com.hbm.commands;
|
||||||
|
|
||||||
|
import com.hbm.uninos.GenNode;
|
||||||
|
import com.hbm.uninos.UniNodespace;
|
||||||
|
import com.hbm.util.ChatBuilder;
|
||||||
|
|
||||||
|
import net.minecraft.command.CommandBase;
|
||||||
|
import net.minecraft.command.ICommandSender;
|
||||||
|
import net.minecraft.util.ChatComponentText;
|
||||||
|
import net.minecraft.util.EnumChatFormatting;
|
||||||
|
|
||||||
|
public class CommandReapNetworks extends CommandBase {
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String getCommandName() {
|
||||||
|
return "ntmreapnetworks";
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String getCommandUsage(ICommandSender sender) {
|
||||||
|
return "/ntmreapnetworks";
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void processCommand(ICommandSender sender, String[] args) {
|
||||||
|
|
||||||
|
try {
|
||||||
|
|
||||||
|
UniNodespace.activeNodeNets.forEach((net) -> {
|
||||||
|
net.links.forEach((link) -> { ((GenNode)link).expired = true; });
|
||||||
|
net.links.clear();
|
||||||
|
net.providerEntries.clear();
|
||||||
|
net.receiverEntries.clear();
|
||||||
|
});
|
||||||
|
UniNodespace.activeNodeNets.clear();
|
||||||
|
UniNodespace.worlds.clear();
|
||||||
|
|
||||||
|
sender.addChatMessage(new ChatComponentText(EnumChatFormatting.YELLOW + "Nodespace cleared :)"));
|
||||||
|
|
||||||
|
} catch(Exception ex) {
|
||||||
|
sender.addChatMessage(ChatBuilder.start("----------------------------------").color(EnumChatFormatting.GRAY).flush());
|
||||||
|
sender.addChatMessage(ChatBuilder.start("An error has occoured during network reap, consult the log for details.").color(EnumChatFormatting.RED).flush());
|
||||||
|
sender.addChatMessage(ChatBuilder.start(ex.getLocalizedMessage()).color(EnumChatFormatting.RED).flush());
|
||||||
|
sender.addChatMessage(ChatBuilder.start(ex.getStackTrace()[0].toString()).color(EnumChatFormatting.RED).flush());
|
||||||
|
sender.addChatMessage(ChatBuilder.start("----------------------------------").color(EnumChatFormatting.GRAY).flush());
|
||||||
|
throw ex;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -20,6 +20,7 @@ public class ServerConfig extends RunningConfig {
|
|||||||
public static ConfigWrapper<Boolean> CRATE_OPEN_HELD = new ConfigWrapper(true);
|
public static ConfigWrapper<Boolean> CRATE_OPEN_HELD = new ConfigWrapper(true);
|
||||||
public static ConfigWrapper<Boolean> CRATE_KEEP_CONTENTS = new ConfigWrapper(true);
|
public static ConfigWrapper<Boolean> CRATE_KEEP_CONTENTS = new ConfigWrapper(true);
|
||||||
public static ConfigWrapper<Integer> ITEM_HAZARD_DROP_TICKRATE = new ConfigWrapper(2);
|
public static ConfigWrapper<Integer> ITEM_HAZARD_DROP_TICKRATE = new ConfigWrapper(2);
|
||||||
|
public static ConfigWrapper<Boolean> ENABLE_MKU = new ConfigWrapper(true);
|
||||||
|
|
||||||
private static void initDefaults() {
|
private static void initDefaults() {
|
||||||
configMap.put("DAMAGE_COMPATIBILITY_MODE", DAMAGE_COMPATIBILITY_MODE);
|
configMap.put("DAMAGE_COMPATIBILITY_MODE", DAMAGE_COMPATIBILITY_MODE);
|
||||||
@ -32,6 +33,7 @@ public class ServerConfig extends RunningConfig {
|
|||||||
configMap.put("CRATE_OPEN_HELD", CRATE_OPEN_HELD);
|
configMap.put("CRATE_OPEN_HELD", CRATE_OPEN_HELD);
|
||||||
configMap.put("CRATE_KEEP_CONTENTS", CRATE_KEEP_CONTENTS);
|
configMap.put("CRATE_KEEP_CONTENTS", CRATE_KEEP_CONTENTS);
|
||||||
configMap.put("ITEM_HAZARD_DROP_TICKRATE", ITEM_HAZARD_DROP_TICKRATE);
|
configMap.put("ITEM_HAZARD_DROP_TICKRATE", ITEM_HAZARD_DROP_TICKRATE);
|
||||||
|
configMap.put("ENABLE_MKU", ENABLE_MKU);
|
||||||
}
|
}
|
||||||
|
|
||||||
/** Initializes defaults, then reads the config file if it exists, then writes the config file. */
|
/** Initializes defaults, then reads the config file if it exists, then writes the config file. */
|
||||||
|
|||||||
@ -9,6 +9,7 @@ import static com.hbm.inventory.OreDictManager.*;
|
|||||||
import com.hbm.items.ItemEnums.EnumPlantType;
|
import com.hbm.items.ItemEnums.EnumPlantType;
|
||||||
import com.hbm.items.ItemGenericPart.EnumPartType;
|
import com.hbm.items.ItemGenericPart.EnumPartType;
|
||||||
import com.hbm.items.ModItems;
|
import com.hbm.items.ModItems;
|
||||||
|
import com.hbm.items.machine.ItemBatteryPack.EnumBatteryPack;
|
||||||
import com.hbm.items.machine.ItemCircuit.EnumCircuitType;
|
import com.hbm.items.machine.ItemCircuit.EnumCircuitType;
|
||||||
import com.hbm.items.tool.ItemBlowtorch;
|
import com.hbm.items.tool.ItemBlowtorch;
|
||||||
import com.hbm.items.tool.ItemModMinecart;
|
import com.hbm.items.tool.ItemModMinecart;
|
||||||
@ -62,10 +63,10 @@ public class ToolRecipes {
|
|||||||
addShovel( DESH.ingot(), ModItems.desh_shovel);
|
addShovel( DESH.ingot(), ModItems.desh_shovel);
|
||||||
addHoe( DESH.ingot(), ModItems.desh_hoe);
|
addHoe( DESH.ingot(), ModItems.desh_hoe);
|
||||||
|
|
||||||
CraftingManager.addRecipeAuto(new ItemStack(ModItems.elec_sword, 1), new Object[] { "RPR", "RPR", " B ", 'P', ANY_PLASTIC.ingot(), 'D', DURA.ingot(), 'R', DURA.bolt(), 'M', ModItems.motor, 'B', ModItems.battery_lithium });
|
CraftingManager.addRecipeAuto(new ItemStack(ModItems.elec_sword, 1), new Object[] { "RPR", "RPR", " B ", 'P', ANY_PLASTIC.ingot(), 'D', DURA.ingot(), 'R', DURA.bolt(), 'M', ModItems.motor, 'B', EnumBatteryPack.BATTERY_LEAD.stack() });
|
||||||
CraftingManager.addRecipeAuto(new ItemStack(ModItems.elec_pickaxe, 1), new Object[] { "RDM", " PB", " P ", 'P', ANY_PLASTIC.ingot(), 'D', DURA.ingot(), 'R', DURA.bolt(), 'M', ModItems.motor, 'B', ModItems.battery_lithium });
|
CraftingManager.addRecipeAuto(new ItemStack(ModItems.elec_pickaxe, 1), new Object[] { "RDM", " PB", " P ", 'P', ANY_PLASTIC.ingot(), 'D', DURA.ingot(), 'R', DURA.bolt(), 'M', ModItems.motor, 'B', EnumBatteryPack.BATTERY_LEAD.stack() });
|
||||||
CraftingManager.addRecipeAuto(new ItemStack(ModItems.elec_axe, 1), new Object[] { " DP", "RRM", " PB", 'P', ANY_PLASTIC.ingot(), 'D', DURA.ingot(), 'R', DURA.bolt(), 'M', ModItems.motor, 'B', ModItems.battery_lithium });
|
CraftingManager.addRecipeAuto(new ItemStack(ModItems.elec_axe, 1), new Object[] { " DP", "RRM", " PB", 'P', ANY_PLASTIC.ingot(), 'D', DURA.ingot(), 'R', DURA.bolt(), 'M', ModItems.motor, 'B', EnumBatteryPack.BATTERY_LEAD.stack() });
|
||||||
CraftingManager.addRecipeAuto(new ItemStack(ModItems.elec_shovel, 1), new Object[] { " P", "RRM", " B", 'P', ANY_PLASTIC.ingot(), 'D', DURA.ingot(), 'R', DURA.bolt(), 'M', ModItems.motor, 'B', ModItems.battery_lithium });
|
CraftingManager.addRecipeAuto(new ItemStack(ModItems.elec_shovel, 1), new Object[] { " P", "RRM", " B", 'P', ANY_PLASTIC.ingot(), 'D', DURA.ingot(), 'R', DURA.bolt(), 'M', ModItems.motor, 'B', EnumBatteryPack.BATTERY_LEAD.stack() });
|
||||||
CraftingManager.addShapelessAuto(new ItemStack(ModItems.centri_stick, 1), new Object[] { ModItems.centrifuge_element, ModItems.energy_core, KEY_STICK });
|
CraftingManager.addShapelessAuto(new ItemStack(ModItems.centri_stick, 1), new Object[] { ModItems.centrifuge_element, ModItems.energy_core, KEY_STICK });
|
||||||
CraftingManager.addRecipeAuto(new ItemStack(ModItems.smashing_hammer, 1), new Object[] { "STS", "SPS", " P ", 'S', STEEL.block(), 'T', W.block(), 'P', ANY_PLASTIC.ingot() });
|
CraftingManager.addRecipeAuto(new ItemStack(ModItems.smashing_hammer, 1), new Object[] { "STS", "SPS", " P ", 'S', STEEL.block(), 'T', W.block(), 'P', ANY_PLASTIC.ingot() });
|
||||||
CraftingManager.addRecipeAuto(new ItemStack(ModItems.meteorite_sword, 1), new Object[] { " B", "GB ", "SG ", 'B', ModItems.blade_meteorite, 'G', GOLD.plate(), 'S', KEY_STICK });
|
CraftingManager.addRecipeAuto(new ItemStack(ModItems.meteorite_sword, 1), new Object[] { " B", "GB ", "SG ", 'B', ModItems.blade_meteorite, 'G', GOLD.plate(), 'S', KEY_STICK });
|
||||||
@ -136,7 +137,7 @@ public class ToolRecipes {
|
|||||||
|
|
||||||
CraftingManager.addRecipeAuto(new ItemStack(ModItems.mirror_tool), new Object[] { " A ", " IA", "I ", 'A', AL.ingot(), 'I', IRON.ingot() });
|
CraftingManager.addRecipeAuto(new ItemStack(ModItems.mirror_tool), new Object[] { " A ", " IA", "I ", 'A', AL.ingot(), 'I', IRON.ingot() });
|
||||||
CraftingManager.addRecipeAuto(new ItemStack(ModItems.rbmk_tool), new Object[] { " A ", " IA", "I ", 'A', PB.ingot(), 'I', IRON.ingot() });
|
CraftingManager.addRecipeAuto(new ItemStack(ModItems.rbmk_tool), new Object[] { " A ", " IA", "I ", 'A', PB.ingot(), 'I', IRON.ingot() });
|
||||||
CraftingManager.addRecipeAuto(new ItemStack(ModItems.power_net_tool), new Object[] { "WRW", " I ", " B ", 'W', MINGRADE.wireFine(), 'R', REDSTONE.dust(), 'I', IRON.ingot(), 'B', ModItems.battery_generic });
|
CraftingManager.addRecipeAuto(new ItemStack(ModItems.power_net_tool), new Object[] { "WRW", " I ", " B ", 'W', MINGRADE.wireFine(), 'R', REDSTONE.dust(), 'I', IRON.ingot(), 'B', EnumBatteryPack.BATTERY_LEAD.stack() });
|
||||||
CraftingManager.addRecipeAuto(new ItemStack(ModItems.analysis_tool), new Object[] { " G", " S ", "S ", 'G', KEY_ANYPANE, 'S', STEEL.ingot() });
|
CraftingManager.addRecipeAuto(new ItemStack(ModItems.analysis_tool), new Object[] { " G", " S ", "S ", 'G', KEY_ANYPANE, 'S', STEEL.ingot() });
|
||||||
|
|
||||||
CraftingManager.addRecipeAuto(new ItemStack(ModItems.toolbox), new Object[] { "CCC", "CIC", 'C', CU.plate(), 'I', IRON.ingot() });
|
CraftingManager.addRecipeAuto(new ItemStack(ModItems.toolbox), new Object[] { "CCC", "CIC", 'C', CU.plate(), 'I', IRON.ingot() });
|
||||||
|
|||||||
@ -311,6 +311,9 @@ public class WeaponRecipes {
|
|||||||
|
|
||||||
//Nuke parts
|
//Nuke parts
|
||||||
CraftingManager.addRecipeAuto(new ItemStack(ModItems.n2_charge, 1), new Object[] { " D ", "ERE", " D ", 'D', ModItems.ducttape, 'E', ModBlocks.det_charge, 'R', REDSTONE.block() });
|
CraftingManager.addRecipeAuto(new ItemStack(ModItems.n2_charge, 1), new Object[] { " D ", "ERE", " D ", 'D', ModItems.ducttape, 'E', ModBlocks.det_charge, 'R', REDSTONE.block() });
|
||||||
|
CraftingManager.addRecipeAuto(new ItemStack(ModItems.battery_spark, 1), new Object[] { " W ", "DSD", "DSD", 'W', MAGTUNG.wireDense(), 'D', ModItems.plate_dineutronium, 'S', ModItems.powder_spark_mix });
|
||||||
|
CraftingManager.addRecipeAuto(new ItemStack(ModItems.battery_trixite, 1), new Object[] { " W ", "DSD", "DTD", 'W', MAGTUNG.wireDense(), 'D', BIGMT.plateCast(), 'S', ModItems.powder_power, 'T', ModItems.crystal_trixite });
|
||||||
|
CraftingManager.addRecipeAuto(new ItemStack(ModItems.battery_trixite, 1), new Object[] { " W ", "DTD", "DSD", 'W', MAGTUNG.wireDense(), 'D', BIGMT.plateCast(), 'S', ModItems.powder_power, 'T', ModItems.crystal_trixite });
|
||||||
|
|
||||||
//Custom nuke rods
|
//Custom nuke rods
|
||||||
CraftingManager.addRecipeAuto(new ItemStack(ModItems.custom_tnt, 1), new Object[] { " C ", "TIT", "TIT", 'C', CU.plate(), 'I', IRON.plate(), 'T', ANY_HIGHEXPLOSIVE.ingot() });
|
CraftingManager.addRecipeAuto(new ItemStack(ModItems.custom_tnt, 1), new Object[] { " C ", "TIT", "TIT", 'C', CU.plate(), 'I', IRON.plate(), 'T', ANY_HIGHEXPLOSIVE.ingot() });
|
||||||
|
|||||||
@ -110,7 +110,7 @@ public class ExplosionTom {
|
|||||||
|
|
||||||
if(y <= craterFloor) {
|
if(y <= craterFloor) {
|
||||||
|
|
||||||
if(worldObj.rand.nextInt(499) < 1) {
|
if(worldObj.rand.nextInt(200) == 0) {
|
||||||
worldObj.setBlock(pX, y, pZ, ModBlocks.ore_tektite_osmiridium, 0, 2);
|
worldObj.setBlock(pX, y, pZ, ModBlocks.ore_tektite_osmiridium, 0, 2);
|
||||||
} else {
|
} else {
|
||||||
worldObj.setBlock(pX, y, pZ, ModBlocks.tektite, 0, 2);
|
worldObj.setBlock(pX, y, pZ, ModBlocks.tektite, 0, 2);
|
||||||
|
|||||||
@ -5,6 +5,7 @@ import java.util.List;
|
|||||||
import java.util.UUID;
|
import java.util.UUID;
|
||||||
|
|
||||||
import com.hbm.config.RadiationConfig;
|
import com.hbm.config.RadiationConfig;
|
||||||
|
import com.hbm.config.ServerConfig;
|
||||||
import com.hbm.entity.mob.EntityDuck;
|
import com.hbm.entity.mob.EntityDuck;
|
||||||
import com.hbm.handler.threading.PacketThreading;
|
import com.hbm.handler.threading.PacketThreading;
|
||||||
import com.hbm.lib.ModDamageSource;
|
import com.hbm.lib.ModDamageSource;
|
||||||
@ -261,6 +262,7 @@ public class HbmLivingProps implements IExtendedEntityProperties {
|
|||||||
|
|
||||||
/// CONTAGION ///
|
/// CONTAGION ///
|
||||||
public static int getContagion(EntityLivingBase entity) {
|
public static int getContagion(EntityLivingBase entity) {
|
||||||
|
if(!ServerConfig.ENABLE_MKU.get()) return 0;
|
||||||
return getData(entity).contagion;
|
return getData(entity).contagion;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -315,7 +317,7 @@ public class HbmLivingProps implements IExtendedEntityProperties {
|
|||||||
props.setFloat("hfr_digamma", digamma);
|
props.setFloat("hfr_digamma", digamma);
|
||||||
props.setInteger("hfr_asbestos", asbestos);
|
props.setInteger("hfr_asbestos", asbestos);
|
||||||
props.setInteger("hfr_bomb", bombTimer);
|
props.setInteger("hfr_bomb", bombTimer);
|
||||||
props.setInteger("hfr_contagion", contagion);
|
if(ServerConfig.ENABLE_MKU.get()) props.setInteger("hfr_contagion", contagion);
|
||||||
props.setInteger("hfr_blacklung", blacklung);
|
props.setInteger("hfr_blacklung", blacklung);
|
||||||
props.setInteger("hfr_oil", oil);
|
props.setInteger("hfr_oil", oil);
|
||||||
props.setInteger("hfr_fire", fire);
|
props.setInteger("hfr_fire", fire);
|
||||||
@ -343,7 +345,7 @@ public class HbmLivingProps implements IExtendedEntityProperties {
|
|||||||
digamma = props.getFloat("hfr_digamma");
|
digamma = props.getFloat("hfr_digamma");
|
||||||
asbestos = props.getInteger("hfr_asbestos");
|
asbestos = props.getInteger("hfr_asbestos");
|
||||||
bombTimer = props.getInteger("hfr_bomb");
|
bombTimer = props.getInteger("hfr_bomb");
|
||||||
contagion = props.getInteger("hfr_contagion");
|
if(ServerConfig.ENABLE_MKU.get()) contagion = props.getInteger("hfr_contagion");
|
||||||
blacklung = props.getInteger("hfr_blacklung");
|
blacklung = props.getInteger("hfr_blacklung");
|
||||||
oil = props.getInteger("hfr_oil");
|
oil = props.getInteger("hfr_oil");
|
||||||
fire = props.getInteger("hfr_fire");
|
fire = props.getInteger("hfr_fire");
|
||||||
|
|||||||
@ -6,6 +6,7 @@ import java.util.Random;
|
|||||||
|
|
||||||
import com.hbm.config.GeneralConfig;
|
import com.hbm.config.GeneralConfig;
|
||||||
import com.hbm.config.RadiationConfig;
|
import com.hbm.config.RadiationConfig;
|
||||||
|
import com.hbm.config.ServerConfig;
|
||||||
import com.hbm.config.WorldConfig;
|
import com.hbm.config.WorldConfig;
|
||||||
import com.hbm.entity.mob.EntityCreeperNuclear;
|
import com.hbm.entity.mob.EntityCreeperNuclear;
|
||||||
import com.hbm.entity.mob.EntityDuck;
|
import com.hbm.entity.mob.EntityDuck;
|
||||||
@ -371,6 +372,7 @@ public class EntityEffectHandler {
|
|||||||
}
|
}
|
||||||
|
|
||||||
private static void handleContagion(EntityLivingBase entity) {
|
private static void handleContagion(EntityLivingBase entity) {
|
||||||
|
if(!ServerConfig.ENABLE_MKU.get()) return;
|
||||||
|
|
||||||
World world = entity.worldObj;
|
World world = entity.worldObj;
|
||||||
|
|
||||||
@ -676,7 +678,7 @@ public class EntityEffectHandler {
|
|||||||
FlameCreator.composeEffect(entity.worldObj, x - living.width / 2 + living.width * rand.nextDouble(), y + rand.nextDouble() * living.height, z - living.width / 2 + living.width * rand.nextDouble(), FlameCreator.META_BLACK);
|
FlameCreator.composeEffect(entity.worldObj, x - living.width / 2 + living.width * rand.nextDouble(), y + rand.nextDouble() * living.height, z - living.width / 2 + living.width * rand.nextDouble(), FlameCreator.META_BLACK);
|
||||||
}
|
}
|
||||||
|
|
||||||
if(props.fire > 0 || props.phosphorus > 0 || props.balefire > 0) if(!entity.isEntityAlive()) ConfettiUtil.decideConfetti(living, DamageSource.onFire);
|
if(props.fire > 0 || props.phosphorus > 0 || props.balefire > 0 || props.blackFire > 0) if(!entity.isEntityAlive()) ConfettiUtil.decideConfetti(living, DamageSource.onFire);
|
||||||
}
|
}
|
||||||
|
|
||||||
private static void handleDashing(Entity entity) {
|
private static void handleDashing(Entity entity) {
|
||||||
|
|||||||
@ -0,0 +1,62 @@
|
|||||||
|
package com.hbm.inventory.container;
|
||||||
|
|
||||||
|
import com.hbm.inventory.SlotNonRetarded;
|
||||||
|
import com.hbm.tileentity.machine.storage.TileEntityBatteryREDD;
|
||||||
|
|
||||||
|
import net.minecraft.entity.player.EntityPlayer;
|
||||||
|
import net.minecraft.entity.player.InventoryPlayer;
|
||||||
|
import net.minecraft.inventory.Container;
|
||||||
|
import net.minecraft.inventory.Slot;
|
||||||
|
import net.minecraft.item.ItemStack;
|
||||||
|
|
||||||
|
public class ContainerBatteryREDD extends Container {
|
||||||
|
|
||||||
|
protected TileEntityBatteryREDD socket;
|
||||||
|
|
||||||
|
public ContainerBatteryREDD(InventoryPlayer invPlayer, TileEntityBatteryREDD tedf) {
|
||||||
|
this.socket = tedf;
|
||||||
|
|
||||||
|
this.addSlotToContainer(new SlotNonRetarded(socket, 0, 26, 53));
|
||||||
|
this.addSlotToContainer(new SlotNonRetarded(socket, 1, 80, 53));
|
||||||
|
|
||||||
|
for(int i = 0; i < 3; i++) {
|
||||||
|
for(int j = 0; j < 9; j++) {
|
||||||
|
this.addSlotToContainer(new Slot(invPlayer, j + i * 9 + 9, 8 + j * 18, 99 + i * 18));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
for(int i = 0; i < 9; i++) {
|
||||||
|
this.addSlotToContainer(new Slot(invPlayer, i, 8 + i * 18, 157));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean canInteractWith(EntityPlayer player) {
|
||||||
|
return socket.isUseableByPlayer(player);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public ItemStack transferStackInSlot(EntityPlayer player, int index) {
|
||||||
|
ItemStack copy = null;
|
||||||
|
Slot slot = (Slot) this.inventorySlots.get(index);
|
||||||
|
|
||||||
|
if(slot != null && slot.getHasStack()) {
|
||||||
|
ItemStack stack = slot.getStack();
|
||||||
|
copy = stack.copy();
|
||||||
|
|
||||||
|
if(index <= 1) {
|
||||||
|
if(!this.mergeItemStack(stack, 2, this.inventorySlots.size(), true)) return null;
|
||||||
|
} else {
|
||||||
|
if(!this.mergeItemStack(stack, 0, 2, false)) return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
if(stack.stackSize == 0) {
|
||||||
|
slot.putStack((ItemStack) null);
|
||||||
|
} else {
|
||||||
|
slot.onSlotChanged();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return copy;
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -103,6 +103,13 @@ public class FluidType {
|
|||||||
|
|
||||||
/** For CompatFluidRegistry */
|
/** For CompatFluidRegistry */
|
||||||
public FluidType(String name, int id, int color, int p, int f, int r, EnumSymbol symbol, ResourceLocation texture) {
|
public FluidType(String name, int id, int color, int p, int f, int r, EnumSymbol symbol, ResourceLocation texture) {
|
||||||
|
setupForeign(name, id, color, p, f, r, symbol, texture);
|
||||||
|
|
||||||
|
Fluids.foreignFluids.add(this);
|
||||||
|
Fluids.metaOrder.add(this);
|
||||||
|
}
|
||||||
|
|
||||||
|
public FluidType setupForeign(String name, int id, int color, int p, int f, int r, EnumSymbol symbol, ResourceLocation texture) {
|
||||||
this.stringId = name;
|
this.stringId = name;
|
||||||
this.color = color;
|
this.color = color;
|
||||||
this.unlocalized = "hbmfluid." + name.toLowerCase(Locale.US);
|
this.unlocalized = "hbmfluid." + name.toLowerCase(Locale.US);
|
||||||
@ -115,7 +122,7 @@ public class FluidType {
|
|||||||
|
|
||||||
this.id = id;
|
this.id = id;
|
||||||
Fluids.register(this, id);
|
Fluids.register(this, id);
|
||||||
Fluids.foreignFluids.add(this);
|
return this;
|
||||||
}
|
}
|
||||||
|
|
||||||
public FluidType setTemp(int temperature) {
|
public FluidType setTemp(int temperature) {
|
||||||
|
|||||||
@ -884,7 +884,7 @@ public class Fluids {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private static HashMap<String, FluidType> fluidMigration = new HashMap(); // since reloading would create new fluid instances, and those break existing machines
|
public static HashMap<String, FluidType> fluidMigration = new HashMap(); // since reloading would create new fluid instances, and those break existing machines
|
||||||
|
|
||||||
public static void reloadFluids(){
|
public static void reloadFluids(){
|
||||||
File folder = MainRegistry.configHbmDir;
|
File folder = MainRegistry.configHbmDir;
|
||||||
@ -901,6 +901,7 @@ public class Fluids {
|
|||||||
customFluids.clear();
|
customFluids.clear();
|
||||||
|
|
||||||
for(FluidType type : foreignFluids) {
|
for(FluidType type : foreignFluids) {
|
||||||
|
fluidMigration.put(type.getName(), type);
|
||||||
idMapping.remove(type.getID());
|
idMapping.remove(type.getID());
|
||||||
registerOrder.remove(type);
|
registerOrder.remove(type);
|
||||||
nameMapping.remove(type.getName());
|
nameMapping.remove(type.getName());
|
||||||
|
|||||||
87
src/main/java/com/hbm/inventory/gui/GUIBatteryREDD.java
Normal file
@ -0,0 +1,87 @@
|
|||||||
|
package com.hbm.inventory.gui;
|
||||||
|
|
||||||
|
import java.math.BigInteger;
|
||||||
|
import java.util.Locale;
|
||||||
|
|
||||||
|
import org.lwjgl.opengl.GL11;
|
||||||
|
import org.lwjgl.opengl.GL12;
|
||||||
|
|
||||||
|
import com.hbm.inventory.container.ContainerBatteryREDD;
|
||||||
|
import com.hbm.lib.RefStrings;
|
||||||
|
import com.hbm.packet.PacketDispatcher;
|
||||||
|
import com.hbm.packet.toserver.NBTControlPacket;
|
||||||
|
import com.hbm.tileentity.machine.storage.TileEntityBatteryREDD;
|
||||||
|
|
||||||
|
import net.minecraft.client.Minecraft;
|
||||||
|
import net.minecraft.client.resources.I18n;
|
||||||
|
import net.minecraft.entity.player.InventoryPlayer;
|
||||||
|
import net.minecraft.nbt.NBTTagCompound;
|
||||||
|
import net.minecraft.util.EnumChatFormatting;
|
||||||
|
import net.minecraft.util.ResourceLocation;
|
||||||
|
|
||||||
|
public class GUIBatteryREDD extends GuiInfoContainer {
|
||||||
|
|
||||||
|
private static ResourceLocation texture = new ResourceLocation(RefStrings.MODID + ":textures/gui/storage/gui_battery_redd.png");
|
||||||
|
private TileEntityBatteryREDD battery;
|
||||||
|
|
||||||
|
public GUIBatteryREDD(InventoryPlayer invPlayer, TileEntityBatteryREDD tedf) {
|
||||||
|
super(new ContainerBatteryREDD(invPlayer, tedf));
|
||||||
|
battery = tedf;
|
||||||
|
|
||||||
|
this.xSize = 176;
|
||||||
|
this.ySize = 181;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void drawScreen(int mouseX, int mouseY, float f) {
|
||||||
|
super.drawScreen(mouseX, mouseY, f);
|
||||||
|
}
|
||||||
|
|
||||||
|
protected void mouseClicked(int x, int y, int i) {
|
||||||
|
super.mouseClicked(x, y, i);
|
||||||
|
|
||||||
|
NBTTagCompound data = new NBTTagCompound();
|
||||||
|
|
||||||
|
if(this.checkClick(x, y, 133, 16, 18, 18)) { this.click(); data.setBoolean("low", true); }
|
||||||
|
if(this.checkClick(x, y, 133, 52, 18, 18)) { this.click(); data.setBoolean("high", true); }
|
||||||
|
if(this.checkClick(x, y, 152, 35, 16, 16)) { this.click(); data.setBoolean("priority", true); }
|
||||||
|
|
||||||
|
if(!data.hasNoTags()) PacketDispatcher.wrapper.sendToServer(new NBTControlPacket(data, battery.xCoord, battery.yCoord, battery.zCoord));
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected void drawGuiContainerForegroundLayer(int i, int j) {
|
||||||
|
String name = this.battery.hasCustomInventoryName() ? this.battery.getInventoryName() : I18n.format(this.battery.getInventoryName());
|
||||||
|
this.fontRendererObj.drawString(name, this.xSize / 2 - this.fontRendererObj.getStringWidth(name) / 2, 6, 4210752);
|
||||||
|
this.fontRendererObj.drawString(I18n.format("container.inventory"), 8, this.ySize - 96 + 2, 4210752);
|
||||||
|
|
||||||
|
GL11.glPushMatrix();
|
||||||
|
GL11.glDisable(GL12.GL_RESCALE_NORMAL);
|
||||||
|
GL11.glScaled(0.5, 0.5, 1);
|
||||||
|
|
||||||
|
String label = String.format(Locale.US, "%,d", battery.power) + " HE";
|
||||||
|
this.fontRendererObj.drawString(label, 242 - this.fontRendererObj.getStringWidth(label), 45, 0x00ff00);
|
||||||
|
|
||||||
|
String deltaText = String.format(Locale.US, "%,d", battery.delta) + " HE/s";
|
||||||
|
|
||||||
|
int comp = battery.delta.compareTo(BigInteger.ZERO);
|
||||||
|
if(comp > 0) deltaText = EnumChatFormatting.GREEN + "+" + deltaText;
|
||||||
|
else if(comp < 0) deltaText = EnumChatFormatting.RED + deltaText;
|
||||||
|
else deltaText = EnumChatFormatting.YELLOW + "+" + deltaText;
|
||||||
|
|
||||||
|
this.fontRendererObj.drawString(deltaText, 242 - this.fontRendererObj.getStringWidth(deltaText), 65, 0x00ff00);
|
||||||
|
|
||||||
|
GL11.glPopMatrix();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected void drawGuiContainerBackgroundLayer(float p_146976_1_, int p_146976_2_, int p_146976_3_) {
|
||||||
|
GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F);
|
||||||
|
Minecraft.getMinecraft().getTextureManager().bindTexture(texture);
|
||||||
|
drawTexturedModalRect(guiLeft, guiTop, 0, 0, xSize, ySize);
|
||||||
|
|
||||||
|
drawTexturedModalRect(guiLeft + 133, guiTop + 16, 176, 52 + battery.redLow * 18, 18, 18);
|
||||||
|
drawTexturedModalRect(guiLeft + 133, guiTop + 52, 176, 52 + battery.redHigh * 18, 18, 18);
|
||||||
|
drawTexturedModalRect(guiLeft + 152, guiTop + 35, 194, 52 + battery.priority.ordinal() * 16 - 16, 16, 16);
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -99,6 +99,12 @@ public class GUIBatterySocket extends GuiInfoContainer {
|
|||||||
IBatteryItem item = (IBatteryItem) battery.slots[0].getItem();
|
IBatteryItem item = (IBatteryItem) battery.slots[0].getItem();
|
||||||
long power = item.getCharge(battery.slots[0]);
|
long power = item.getCharge(battery.slots[0]);
|
||||||
long maxPower = item.getMaxCharge(battery.slots[0]);
|
long maxPower = item.getMaxCharge(battery.slots[0]);
|
||||||
|
|
||||||
|
if(power > Long.MAX_VALUE / 100) {
|
||||||
|
power /= 100;
|
||||||
|
maxPower /= 100;
|
||||||
|
}
|
||||||
|
if(maxPower <= 1) maxPower = 1;
|
||||||
int p = (int) (power * 52 / maxPower); // won't work then flying too close to the sun (the limits of the LONG data type)
|
int p = (int) (power * 52 / maxPower); // won't work then flying too close to the sun (the limits of the LONG data type)
|
||||||
drawTexturedModalRect(guiLeft + 62, guiTop + 69 - p, 176, 52 - p, 34, p);
|
drawTexturedModalRect(guiLeft + 62, guiTop + 69 - p, 176, 52 - p, 34, p);
|
||||||
}
|
}
|
||||||
|
|||||||
@ -14,6 +14,7 @@ import com.google.gson.JsonArray;
|
|||||||
import com.google.gson.JsonElement;
|
import com.google.gson.JsonElement;
|
||||||
import com.google.gson.JsonObject;
|
import com.google.gson.JsonObject;
|
||||||
import com.google.gson.stream.JsonWriter;
|
import com.google.gson.stream.JsonWriter;
|
||||||
|
import com.hbm.config.GeneralConfig;
|
||||||
import com.hbm.inventory.RecipesCommon.ComparableStack;
|
import com.hbm.inventory.RecipesCommon.ComparableStack;
|
||||||
import com.hbm.inventory.RecipesCommon.OreDictStack;
|
import com.hbm.inventory.RecipesCommon.OreDictStack;
|
||||||
import com.hbm.inventory.fluid.FluidType;
|
import com.hbm.inventory.fluid.FluidType;
|
||||||
@ -59,23 +60,25 @@ public class AnnihilatorRecipes extends SerializableRecipe {
|
|||||||
@Override
|
@Override
|
||||||
public void registerDefaults() {
|
public void registerDefaults() {
|
||||||
|
|
||||||
recipes.put(STEEL.ingot(), new AnnihilatorRecipe(new Pair(new BigInteger("256"), ItemBlueprints.make(GenericRecipes.POOL_PREFIX_528 + "steel"))));
|
if(GeneralConfig.enable528) {
|
||||||
recipes.put(SI.billet(), new AnnihilatorRecipe(new Pair(new BigInteger("256"), ItemBlueprints.make(GenericRecipes.POOL_PREFIX_528 + "chip"))));
|
recipes.put(STEEL.ingot(), new AnnihilatorRecipe(new Pair(new BigInteger("256"), ItemBlueprints.make(GenericRecipes.POOL_PREFIX_528 + "steel"))));
|
||||||
recipes.put(BI.nugget(), new AnnihilatorRecipe(new Pair(new BigInteger("128"), ItemBlueprints.make(GenericRecipes.POOL_PREFIX_528 + "chip_bismoid"))));
|
recipes.put(SI.billet(), new AnnihilatorRecipe(new Pair(new BigInteger("256"), ItemBlueprints.make(GenericRecipes.POOL_PREFIX_528 + "chip"))));
|
||||||
recipes.put(ModItems.pellet_charged, new AnnihilatorRecipe(new Pair(new BigInteger("1024"), ItemBlueprints.make(GenericRecipes.POOL_PREFIX_528 + "chip_quantum"))));
|
recipes.put(BI.nugget(), new AnnihilatorRecipe(new Pair(new BigInteger("128"), ItemBlueprints.make(GenericRecipes.POOL_PREFIX_528 + "chip_bismoid"))));
|
||||||
|
recipes.put(ModItems.pellet_charged, new AnnihilatorRecipe(new Pair(new BigInteger("1024"), ItemBlueprints.make(GenericRecipes.POOL_PREFIX_528 + "chip_quantum"))));
|
||||||
|
|
||||||
recipes.put(U.billet(), new AnnihilatorRecipe(new Pair(new BigInteger("256"), ItemBlueprints.make(GenericRecipes.POOL_PREFIX_528 + "gascent"))));
|
recipes.put(U.billet(), new AnnihilatorRecipe(new Pair(new BigInteger("256"), ItemBlueprints.make(GenericRecipes.POOL_PREFIX_528 + "gascent"))));
|
||||||
recipes.put(ANY_PLASTIC.ingot(), new AnnihilatorRecipe(new Pair(new BigInteger("512"), ItemBlueprints.make(GenericRecipes.POOL_PREFIX_528 + "plastic"))));
|
recipes.put(ANY_PLASTIC.ingot(), new AnnihilatorRecipe(new Pair(new BigInteger("512"), ItemBlueprints.make(GenericRecipes.POOL_PREFIX_528 + "plastic"))));
|
||||||
recipes.put(RUBBER.ingot(), new AnnihilatorRecipe(new Pair(new BigInteger("512"), ItemBlueprints.make(GenericRecipes.POOL_PREFIX_528 + "rubber"))));
|
recipes.put(RUBBER.ingot(), new AnnihilatorRecipe(new Pair(new BigInteger("512"), ItemBlueprints.make(GenericRecipes.POOL_PREFIX_528 + "rubber"))));
|
||||||
recipes.put(FERRO.ingot(), new AnnihilatorRecipe(new Pair(new BigInteger("1024"), ItemBlueprints.make(GenericRecipes.POOL_PREFIX_528 + "ferrouranium"))));
|
recipes.put(FERRO.ingot(), new AnnihilatorRecipe(new Pair(new BigInteger("1024"), ItemBlueprints.make(GenericRecipes.POOL_PREFIX_528 + "ferrouranium"))));
|
||||||
recipes.put(SR.dust(), new AnnihilatorRecipe(new Pair(new BigInteger("256"), ItemBlueprints.make(GenericRecipes.POOL_PREFIX_528 + "strontium"))));
|
recipes.put(SR.dust(), new AnnihilatorRecipe(new Pair(new BigInteger("256"), ItemBlueprints.make(GenericRecipes.POOL_PREFIX_528 + "strontium"))));
|
||||||
recipes.put(ANY_HARDPLASTIC.ingot(), new AnnihilatorRecipe(new Pair(new BigInteger("1024"), ItemBlueprints.make(GenericRecipes.POOL_PREFIX_528 + "hardplastic"))));
|
recipes.put(ANY_HARDPLASTIC.ingot(), new AnnihilatorRecipe(new Pair(new BigInteger("1024"), ItemBlueprints.make(GenericRecipes.POOL_PREFIX_528 + "hardplastic"))));
|
||||||
recipes.put(ANY_RESISTANTALLOY.ingot(), new AnnihilatorRecipe(new Pair(new BigInteger("1024"), ItemBlueprints.make(GenericRecipes.POOL_PREFIX_528 + "tcalloy"))));
|
recipes.put(ANY_RESISTANTALLOY.ingot(), new AnnihilatorRecipe(new Pair(new BigInteger("1024"), ItemBlueprints.make(GenericRecipes.POOL_PREFIX_528 + "tcalloy"))));
|
||||||
recipes.put(ModItems.powder_chlorophyte, new AnnihilatorRecipe(new Pair(new BigInteger("1024"), ItemBlueprints.make(GenericRecipes.POOL_PREFIX_528 + "chlorophyte"))));
|
recipes.put(ModItems.powder_chlorophyte, new AnnihilatorRecipe(new Pair(new BigInteger("1024"), ItemBlueprints.make(GenericRecipes.POOL_PREFIX_528 + "chlorophyte"))));
|
||||||
|
|
||||||
recipes.put(new ComparableStack(ModItems.ammo_standard, 1, EnumAmmo.BMG50_FMJ), new AnnihilatorRecipe(new Pair(new BigInteger("256"), ItemBlueprints.make(GenericRecipes.POOL_PREFIX_528 + "bmg"))));
|
recipes.put(new ComparableStack(ModItems.ammo_standard, 1, EnumAmmo.BMG50_FMJ), new AnnihilatorRecipe(new Pair(new BigInteger("256"), ItemBlueprints.make(GenericRecipes.POOL_PREFIX_528 + "bmg"))));
|
||||||
recipes.put(new ComparableStack(ModItems.ammo_arty, 1, 0), new AnnihilatorRecipe(new Pair(new BigInteger("128"), ItemBlueprints.make(GenericRecipes.POOL_PREFIX_528 + "arty"))));
|
recipes.put(new ComparableStack(ModItems.ammo_arty, 1, 0), new AnnihilatorRecipe(new Pair(new BigInteger("128"), ItemBlueprints.make(GenericRecipes.POOL_PREFIX_528 + "arty"))));
|
||||||
recipes.put(new ComparableStack(ModItems.circuit, 1, EnumCircuitType.CONTROLLER), new AnnihilatorRecipe(new Pair(new BigInteger("128"), ItemBlueprints.make(GenericRecipes.POOL_PREFIX_528 + "controller"))));
|
recipes.put(new ComparableStack(ModItems.circuit, 1, EnumCircuitType.CONTROLLER), new AnnihilatorRecipe(new Pair(new BigInteger("128"), ItemBlueprints.make(GenericRecipes.POOL_PREFIX_528 + "controller"))));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override public String getFileName() { return "hbmAnnihilator.json"; }
|
@Override public String getFileName() { return "hbmAnnihilator.json"; }
|
||||||
|
|||||||
@ -83,7 +83,7 @@ public class AssemblyMachineRecipes extends GenericRecipes<GenericRecipe> {
|
|||||||
this.register(new GenericRecipe("ass.platebismuth").setup(200, 100).outputItems(new ItemStack(ModItems.plate_bismuth, 1))
|
this.register(new GenericRecipe("ass.platebismuth").setup(200, 100).outputItems(new ItemStack(ModItems.plate_bismuth, 1))
|
||||||
.inputItems(new ComparableStack(ModItems.nugget_bismuth, 2), new OreDictStack(U238.billet(), 2), new OreDictStack(NB.dust(), 1)));
|
.inputItems(new ComparableStack(ModItems.nugget_bismuth, 2), new OreDictStack(U238.billet(), 2), new OreDictStack(NB.dust(), 1)));
|
||||||
this.register(new GenericRecipe("ass.plateeuphemium").setup(600, 100).outputItems(new ItemStack(ModItems.plate_euphemium, 1))
|
this.register(new GenericRecipe("ass.plateeuphemium").setup(600, 100).outputItems(new ItemStack(ModItems.plate_euphemium, 1))
|
||||||
.inputItems(new OreDictStack(EUPH.ingot(), 4), new OreDictStack(AT.dust(), 3), new OreDictStack(BI.dust(), 1), new OreDictStack(VOLCANIC.gem(), 1), new ComparableStack(ModItems.ingot_osmiridium)));
|
.inputItems(new OreDictStack(EUPH.ingot(), 4), new OreDictStack(AT.dust(), 3), new OreDictStack(BI.dust(), 1), new OreDictStack(VOLCANIC.gem(), 1), new OreDictStack(OSMIRIDIUM.ingot())));
|
||||||
this.register(new GenericRecipe("ass.platednt").setup(600, 100).outputItems(new ItemStack(ModItems.plate_dineutronium, 4))
|
this.register(new GenericRecipe("ass.platednt").setup(600, 100).outputItems(new ItemStack(ModItems.plate_dineutronium, 4))
|
||||||
.inputItems(new OreDictStack(DNT.ingot(), 4), new ComparableStack(ModItems.powder_spark_mix, 2), new OreDictStack(DESH.ingot(), 1)));
|
.inputItems(new OreDictStack(DNT.ingot(), 4), new ComparableStack(ModItems.powder_spark_mix, 2), new OreDictStack(DESH.ingot(), 1)));
|
||||||
|
|
||||||
@ -422,16 +422,16 @@ public class AssemblyMachineRecipes extends GenericRecipes<GenericRecipe> {
|
|||||||
.inputFluids(new FluidStack(Fluids.PERFLUOROMETHYL_COLD, 8_000))
|
.inputFluids(new FluidStack(Fluids.PERFLUOROMETHYL_COLD, 8_000))
|
||||||
.outputFluids(new FluidStack(Fluids.PERFLUOROMETHYL, 8_000)));
|
.outputFluids(new FluidStack(Fluids.PERFLUOROMETHYL, 8_000)));
|
||||||
|
|
||||||
this.register(new GenericRecipe("ass.fensusan").setup(1_200, 100).outputItems(new ItemStack(ModBlocks.machine_fensu, 1))
|
this.register(new GenericRecipe("ass.fensusan").setup(1_200, 100).outputItems(new ItemStack(ModBlocks.machine_battery_redd, 1))
|
||||||
.inputItems(new ComparableStack(ModItems.ingot_electronium, 32),
|
.inputItems(new ComparableStack(ModItems.ingot_electronium, 64),
|
||||||
new ComparableStack(ModItems.battery_pack, 16, EnumBatteryPack.BATTERY_QUANTUM),
|
new ComparableStack(ModItems.battery_pack, 16, EnumBatteryPack.BATTERY_QUANTUM),
|
||||||
new OreDictStack(ANY_RESISTANTALLOY.plateWelded(), 64),
|
new OreDictStack(OSMIRIDIUM.plateWelded(), 64),
|
||||||
new OreDictStack(DURA.block(), 16),
|
new OreDictStack(OSMIRIDIUM.plateWelded(), 64),
|
||||||
new OreDictStack(STAR.block(), 64),
|
new OreDictStack(ANY_BISMOIDBRONZE.plateCast(), 64),
|
||||||
new ComparableStack(ModBlocks.machine_transformer_dnt, 8),
|
new OreDictStack(CMB.plateCast(), 32),
|
||||||
new ComparableStack(ModItems.coil_magnetized_tungsten, 24),
|
new OreDictStack(MAGTUNG.wireDense(), 32),
|
||||||
|
new ComparableStack(ModItems.plate_dineutronium, 64),
|
||||||
new ComparableStack(ModItems.powder_magic, 64),
|
new ComparableStack(ModItems.powder_magic, 64),
|
||||||
new ComparableStack(ModItems.plate_dineutronium, 24),
|
|
||||||
new ComparableStack(ModItems.ingot_u238m2),
|
new ComparableStack(ModItems.ingot_u238m2),
|
||||||
new ComparableStack(ModItems.ingot_cft, 64),
|
new ComparableStack(ModItems.ingot_cft, 64),
|
||||||
new ComparableStack(ModItems.ingot_cft, 64))
|
new ComparableStack(ModItems.ingot_cft, 64))
|
||||||
@ -439,11 +439,11 @@ public class AssemblyMachineRecipes extends GenericRecipes<GenericRecipe> {
|
|||||||
new ComparableStack(ModItems.battery_pack, 16, EnumBatteryPack.BATTERY_QUANTUM),
|
new ComparableStack(ModItems.battery_pack, 16, EnumBatteryPack.BATTERY_QUANTUM),
|
||||||
new ComparableStack(ModItems.item_expensive, 64, EnumExpensiveType.BRONZE_TUBES),
|
new ComparableStack(ModItems.item_expensive, 64, EnumExpensiveType.BRONZE_TUBES),
|
||||||
new ComparableStack(ModItems.item_expensive, 64, EnumExpensiveType.FERRO_PLATING),
|
new ComparableStack(ModItems.item_expensive, 64, EnumExpensiveType.FERRO_PLATING),
|
||||||
new OreDictStack(STAR.block(), 64),
|
new OreDictStack(OSMIRIDIUM.plateWelded(), 64),
|
||||||
new ComparableStack(ModBlocks.machine_transformer_dnt, 8),
|
new OreDictStack(OSMIRIDIUM.plateWelded(), 64),
|
||||||
new ComparableStack(ModItems.coil_magnetized_tungsten, 24),
|
new OreDictStack(OSMIRIDIUM.plateWelded(), 64),
|
||||||
new ComparableStack(ModItems.powder_magic, 64),
|
new OreDictStack(ANY_BISMOIDBRONZE.plateCast(), 64),
|
||||||
new ComparableStack(ModItems.plate_dineutronium, 24),
|
new OreDictStack(CMB.plateCast(), 64),
|
||||||
new ComparableStack(ModItems.ingot_u238m2),
|
new ComparableStack(ModItems.ingot_u238m2),
|
||||||
new ComparableStack(ModItems.ingot_cft, 64),
|
new ComparableStack(ModItems.ingot_cft, 64),
|
||||||
new ComparableStack(ModItems.ingot_cft, 64)));
|
new ComparableStack(ModItems.ingot_cft, 64)));
|
||||||
@ -794,7 +794,7 @@ public class AssemblyMachineRecipes extends GenericRecipes<GenericRecipe> {
|
|||||||
.inputItems(new ComparableStack(ModItems.battery_pack, 1, EnumBatteryPack.BATTERY_LEAD), new OreDictStack(STEEL.ingot(), 16), new ComparableStack(ModItems.motor, 2), new ComparableStack(ModItems.circuit, 1, EnumCircuitType.ADVANCED), new ComparableStack(ModItems.motor_desh, 1), new OreDictStack(STEEL.shell(), 3), new OreDictStack(WEAPONSTEEL.mechanism(), 3), new ComparableStack(ModBlocks.crate_steel, 1), new ComparableStack(ModItems.crt_display, 1))
|
.inputItems(new ComparableStack(ModItems.battery_pack, 1, EnumBatteryPack.BATTERY_LEAD), new OreDictStack(STEEL.ingot(), 16), new ComparableStack(ModItems.motor, 2), new ComparableStack(ModItems.circuit, 1, EnumCircuitType.ADVANCED), new ComparableStack(ModItems.motor_desh, 1), new OreDictStack(STEEL.shell(), 3), new OreDictStack(WEAPONSTEEL.mechanism(), 3), new ComparableStack(ModBlocks.crate_steel, 1), new ComparableStack(ModItems.crt_display, 1))
|
||||||
.setPools528(GenericRecipes.POOL_PREFIX_528 + "bmg"));
|
.setPools528(GenericRecipes.POOL_PREFIX_528 + "bmg"));
|
||||||
this.register(new GenericRecipe("ass.turrettauon").setup(200, 100).outputItems(new ItemStack(ModBlocks.turret_tauon, 1))
|
this.register(new GenericRecipe("ass.turrettauon").setup(200, 100).outputItems(new ItemStack(ModBlocks.turret_tauon, 1))
|
||||||
.inputItems(new ComparableStack(ModItems.battery_pack, 1, EnumBatteryPack.BATTERY_LEAD), new OreDictStack(STEEL.ingot(), 16), new OreDictStack(ANY_PLASTIC.ingot(), 4), new ComparableStack(ModItems.motor, 2), new ComparableStack(ModItems.circuit, 1, EnumCircuitType.ADVANCED), new ComparableStack(ModItems.motor_desh, 1), new OreDictStack(CU.ingot(), 32), new OreDictStack(BIGMT.mechanism(), 3), new ComparableStack(ModItems.battery_lithium, 1), new ComparableStack(ModItems.crt_display, 1))
|
.inputItems(new ComparableStack(ModItems.battery_pack, 1, EnumBatteryPack.CAPACITOR_NIOBIUM), new OreDictStack(STEEL.ingot(), 16), new OreDictStack(ANY_PLASTIC.ingot(), 4), new ComparableStack(ModItems.motor, 2), new ComparableStack(ModItems.circuit, 1, EnumCircuitType.ADVANCED), new ComparableStack(ModItems.motor_desh, 1), new OreDictStack(CU.ingot(), 32), new OreDictStack(BIGMT.mechanism(), 3), new ComparableStack(ModItems.crt_display, 1))
|
||||||
.setPools528(GenericRecipes.POOL_PREFIX_528 + "bmg"));
|
.setPools528(GenericRecipes.POOL_PREFIX_528 + "bmg"));
|
||||||
this.register(new GenericRecipe("ass.turretrichard").setup(200, 100).outputItems(new ItemStack(ModBlocks.turret_richard, 1))
|
this.register(new GenericRecipe("ass.turretrichard").setup(200, 100).outputItems(new ItemStack(ModBlocks.turret_richard, 1))
|
||||||
.inputItems(new ComparableStack(ModItems.battery_pack, 1, EnumBatteryPack.BATTERY_LEAD), new OreDictStack(STEEL.ingot(), 16), new ComparableStack(ModItems.motor, 2), new ComparableStack(ModItems.circuit, 1, EnumCircuitType.ADVANCED), new OreDictStack(ANY_PLASTIC.ingot(), 2), new OreDictStack(STEEL.shell(), 8), new OreDictStack(WEAPONSTEEL.mechanism(), 3), new ComparableStack(ModBlocks.crate_steel, 1), new ComparableStack(ModItems.crt_display, 1))
|
.inputItems(new ComparableStack(ModItems.battery_pack, 1, EnumBatteryPack.BATTERY_LEAD), new OreDictStack(STEEL.ingot(), 16), new ComparableStack(ModItems.motor, 2), new ComparableStack(ModItems.circuit, 1, EnumCircuitType.ADVANCED), new OreDictStack(ANY_PLASTIC.ingot(), 2), new OreDictStack(STEEL.shell(), 8), new OreDictStack(WEAPONSTEEL.mechanism(), 3), new ComparableStack(ModBlocks.crate_steel, 1), new ComparableStack(ModItems.crt_display, 1))
|
||||||
@ -803,7 +803,7 @@ public class AssemblyMachineRecipes extends GenericRecipes<GenericRecipe> {
|
|||||||
.inputItems(new ComparableStack(ModItems.battery_pack, 1, EnumBatteryPack.BATTERY_LEAD), new OreDictStack(STEEL.ingot(), 24), new ComparableStack(ModItems.motor, 2), new ComparableStack(ModItems.motor_desh, 2), new ComparableStack(ModItems.circuit, 3, EnumCircuitType.ADVANCED), new OreDictStack(STEEL.pipe(), 10), new OreDictStack(WEAPONSTEEL.mechanism(), 3), new ComparableStack(ModBlocks.crate_steel, 1), new ComparableStack(ModItems.crt_display, 1))
|
.inputItems(new ComparableStack(ModItems.battery_pack, 1, EnumBatteryPack.BATTERY_LEAD), new OreDictStack(STEEL.ingot(), 24), new ComparableStack(ModItems.motor, 2), new ComparableStack(ModItems.motor_desh, 2), new ComparableStack(ModItems.circuit, 3, EnumCircuitType.ADVANCED), new OreDictStack(STEEL.pipe(), 10), new OreDictStack(WEAPONSTEEL.mechanism(), 3), new ComparableStack(ModBlocks.crate_steel, 1), new ComparableStack(ModItems.crt_display, 1))
|
||||||
.setPools528(GenericRecipes.POOL_PREFIX_528 + "bmg"));
|
.setPools528(GenericRecipes.POOL_PREFIX_528 + "bmg"));
|
||||||
this.register(new GenericRecipe("ass.maxwell").setup(200, 100).outputItems(new ItemStack(ModBlocks.turret_maxwell, 1))
|
this.register(new GenericRecipe("ass.maxwell").setup(200, 100).outputItems(new ItemStack(ModBlocks.turret_maxwell, 1))
|
||||||
.inputItems(new ComparableStack(ModItems.battery_pack, 1, EnumBatteryPack.BATTERY_LEAD), new OreDictStack(STEEL.ingot(), 24), new ComparableStack(ModItems.motor, 2), new ComparableStack(ModItems.circuit, 2, EnumCircuitType.ADVANCED), new OreDictStack(STEEL.pipe(), 4), new OreDictStack(BIGMT.mechanism(), 3), new ComparableStack(ModItems.magnetron, 16), new OreDictStack(ANY_RESISTANTALLOY.ingot(), 8), new ComparableStack(ModItems.crt_display, 1))
|
.inputItems(new ComparableStack(ModItems.battery_pack, 1, EnumBatteryPack.CAPACITOR_NIOBIUM), new OreDictStack(STEEL.ingot(), 24), new ComparableStack(ModItems.motor, 2), new ComparableStack(ModItems.circuit, 2, EnumCircuitType.ADVANCED), new OreDictStack(STEEL.pipe(), 4), new OreDictStack(BIGMT.mechanism(), 3), new ComparableStack(ModItems.magnetron, 16), new OreDictStack(ANY_RESISTANTALLOY.ingot(), 8), new ComparableStack(ModItems.crt_display, 1))
|
||||||
.setPools528(GenericRecipes.POOL_PREFIX_528 + "bmg"));
|
.setPools528(GenericRecipes.POOL_PREFIX_528 + "bmg"));
|
||||||
this.register(new GenericRecipe("ass.fritz").setup(200, 100).outputItems(new ItemStack(ModBlocks.turret_fritz, 1))
|
this.register(new GenericRecipe("ass.fritz").setup(200, 100).outputItems(new ItemStack(ModBlocks.turret_fritz, 1))
|
||||||
.inputItems(new ComparableStack(ModItems.battery_pack, 1, EnumBatteryPack.BATTERY_LEAD), new OreDictStack(STEEL.ingot(), 16), new ComparableStack(ModItems.motor, 3), new ComparableStack(ModItems.circuit, 1, EnumCircuitType.ADVANCED), new OreDictStack(STEEL.pipe(), 8), new OreDictStack(GUNMETAL.mechanism(), 3), new ComparableStack(ModBlocks.barrel_steel))
|
.inputItems(new ComparableStack(ModItems.battery_pack, 1, EnumBatteryPack.BATTERY_LEAD), new OreDictStack(STEEL.ingot(), 16), new ComparableStack(ModItems.motor, 3), new ComparableStack(ModItems.circuit, 1, EnumCircuitType.ADVANCED), new OreDictStack(STEEL.pipe(), 8), new OreDictStack(GUNMETAL.mechanism(), 3), new ComparableStack(ModBlocks.barrel_steel))
|
||||||
|
|||||||
@ -16,6 +16,7 @@ import net.minecraft.item.ItemStack;
|
|||||||
public class FusionRecipes extends GenericRecipes<FusionRecipe> {
|
public class FusionRecipes extends GenericRecipes<FusionRecipe> {
|
||||||
|
|
||||||
public static final FusionRecipes INSTANCE = new FusionRecipes();
|
public static final FusionRecipes INSTANCE = new FusionRecipes();
|
||||||
|
public long maxInput;
|
||||||
|
|
||||||
@Override public int inputItemLimit() { return 0; }
|
@Override public int inputItemLimit() { return 0; }
|
||||||
@Override public int inputFluidLimit() { return 3; }
|
@Override public int inputFluidLimit() { return 3; }
|
||||||
@ -120,6 +121,18 @@ public class FusionRecipes extends GenericRecipes<FusionRecipe> {
|
|||||||
.outputItems(new ItemStack(ModItems.powder_gold))); // eough
|
.outputItems(new ItemStack(ModItems.powder_gold))); // eough
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void registerPost() {
|
||||||
|
super.registerPost();
|
||||||
|
|
||||||
|
this.maxInput = 0;
|
||||||
|
|
||||||
|
// set max value for creative klystron
|
||||||
|
for(FusionRecipe recipe : this.recipeOrderedList) {
|
||||||
|
if(recipe.ignitionTemp > this.maxInput) this.maxInput = recipe.ignitionTemp;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// foresight! yeah!
|
// foresight! yeah!
|
||||||
@Override
|
@Override
|
||||||
public void readExtraData(JsonElement element, FusionRecipe recipe) {
|
public void readExtraData(JsonElement element, FusionRecipe recipe) {
|
||||||
|
|||||||
@ -6,6 +6,7 @@ import com.hbm.interfaces.Spaghetti;
|
|||||||
import com.hbm.inventory.FluidContainer;
|
import com.hbm.inventory.FluidContainer;
|
||||||
import com.hbm.inventory.FluidContainerRegistry;
|
import com.hbm.inventory.FluidContainerRegistry;
|
||||||
import com.hbm.items.ModItems;
|
import com.hbm.items.ModItems;
|
||||||
|
import com.hbm.items.machine.ItemBatteryPack.EnumBatteryPack;
|
||||||
import com.hbm.util.Tuple.Triplet;
|
import com.hbm.util.Tuple.Triplet;
|
||||||
|
|
||||||
import net.minecraft.init.Blocks;
|
import net.minecraft.init.Blocks;
|
||||||
@ -48,32 +49,17 @@ public class MachineRecipes {
|
|||||||
ArrayList<ItemStack> fuels = new ArrayList<ItemStack>();
|
ArrayList<ItemStack> fuels = new ArrayList<ItemStack>();
|
||||||
fuels.add(new ItemStack(ModItems.battery_potato));
|
fuels.add(new ItemStack(ModItems.battery_potato));
|
||||||
fuels.add(new ItemStack(ModItems.battery_potatos));
|
fuels.add(new ItemStack(ModItems.battery_potatos));
|
||||||
fuels.add(new ItemStack(ModItems.battery_generic));
|
|
||||||
fuels.add(new ItemStack(ModItems.battery_red_cell));
|
|
||||||
fuels.add(new ItemStack(ModItems.battery_red_cell_6));
|
|
||||||
fuels.add(new ItemStack(ModItems.battery_red_cell_24));
|
|
||||||
fuels.add(new ItemStack(ModItems.battery_advanced));
|
|
||||||
fuels.add(new ItemStack(ModItems.battery_advanced_cell));
|
|
||||||
fuels.add(new ItemStack(ModItems.battery_advanced_cell_4));
|
|
||||||
fuels.add(new ItemStack(ModItems.battery_advanced_cell_12));
|
|
||||||
fuels.add(new ItemStack(ModItems.battery_lithium));
|
|
||||||
fuels.add(new ItemStack(ModItems.battery_lithium_cell));
|
|
||||||
fuels.add(new ItemStack(ModItems.battery_lithium_cell_3));
|
|
||||||
fuels.add(new ItemStack(ModItems.battery_lithium_cell_6));
|
|
||||||
fuels.add(new ItemStack(ModItems.battery_schrabidium));
|
|
||||||
fuels.add(new ItemStack(ModItems.battery_schrabidium_cell));
|
|
||||||
fuels.add(new ItemStack(ModItems.battery_schrabidium_cell_2));
|
|
||||||
fuels.add(new ItemStack(ModItems.battery_schrabidium_cell_4));
|
|
||||||
fuels.add(new ItemStack(ModItems.battery_trixite));
|
|
||||||
fuels.add(new ItemStack(ModItems.battery_spark));
|
|
||||||
fuels.add(new ItemStack(ModItems.battery_spark_cell_6));
|
|
||||||
fuels.add(new ItemStack(ModItems.battery_spark_cell_25));
|
|
||||||
fuels.add(new ItemStack(ModItems.battery_spark_cell_100));
|
|
||||||
fuels.add(new ItemStack(ModItems.battery_spark_cell_1000));
|
|
||||||
fuels.add(new ItemStack(ModItems.battery_spark_cell_10000));
|
|
||||||
fuels.add(new ItemStack(ModItems.battery_spark_cell_power));
|
|
||||||
fuels.add(new ItemStack(ModItems.fusion_core));
|
fuels.add(new ItemStack(ModItems.fusion_core));
|
||||||
fuels.add(new ItemStack(ModItems.energy_core));
|
fuels.add(new ItemStack(ModItems.energy_core));
|
||||||
|
for(EnumBatteryPack num : EnumBatteryPack.values()) fuels.add(new ItemStack(ModItems.battery_pack, 1, num.ordinal()));
|
||||||
|
fuels.add(new ItemStack(ModItems.battery_creative));
|
||||||
|
fuels.add(new ItemStack(ModItems.battery_sc_uranium));
|
||||||
|
fuels.add(new ItemStack(ModItems.battery_sc_technetium));
|
||||||
|
fuels.add(new ItemStack(ModItems.battery_sc_plutonium));
|
||||||
|
fuels.add(new ItemStack(ModItems.battery_sc_polonium));
|
||||||
|
fuels.add(new ItemStack(ModItems.battery_sc_gold));
|
||||||
|
fuels.add(new ItemStack(ModItems.battery_sc_lead));
|
||||||
|
fuels.add(new ItemStack(ModItems.battery_sc_americium));
|
||||||
return fuels;
|
return fuels;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -740,8 +740,6 @@ public class AnvilRecipes extends SerializableRecipe {
|
|||||||
new AnvilOutput(new ItemStack(ModItems.scrap, 1)),
|
new AnvilOutput(new ItemStack(ModItems.scrap, 1)),
|
||||||
new AnvilOutput(new ItemStack(ModItems.coil_tungsten, 1)),
|
new AnvilOutput(new ItemStack(ModItems.coil_tungsten, 1)),
|
||||||
new AnvilOutput(new ItemStack(Items.bread, 1), 0.5F),
|
new AnvilOutput(new ItemStack(Items.bread, 1), 0.5F),
|
||||||
new AnvilOutput(new ItemStack(ModItems.battery_generic, 1), 0.25F),
|
|
||||||
new AnvilOutput(new ItemStack(ModItems.battery_advanced, 1), 0.1F),
|
|
||||||
new AnvilOutput(new ItemStack(ModItems.fusion_core, 1), 0.01F)
|
new AnvilOutput(new ItemStack(ModItems.fusion_core, 1), 0.01F)
|
||||||
|
|
||||||
}
|
}
|
||||||
@ -753,7 +751,6 @@ public class AnvilRecipes extends SerializableRecipe {
|
|||||||
new AnvilOutput(new ItemStack(ModItems.scrap, 1)),
|
new AnvilOutput(new ItemStack(ModItems.scrap, 1)),
|
||||||
new AnvilOutput(new ItemStack(ModItems.coil_tungsten, 2)),
|
new AnvilOutput(new ItemStack(ModItems.coil_tungsten, 2)),
|
||||||
new AnvilOutput(new ItemStack(Items.bread, 1), 0.5F),
|
new AnvilOutput(new ItemStack(Items.bread, 1), 0.5F),
|
||||||
new AnvilOutput(new ItemStack(ModItems.battery_lithium, 1), 0.25F),
|
|
||||||
new AnvilOutput(new ItemStack(ModItems.battery_sc_uranium, 1), 0.1F),
|
new AnvilOutput(new ItemStack(ModItems.battery_sc_uranium, 1), 0.1F),
|
||||||
new AnvilOutput(new ItemStack(ModItems.fusion_core, 1), 0.05F)
|
new AnvilOutput(new ItemStack(ModItems.fusion_core, 1), 0.05F)
|
||||||
|
|
||||||
|
|||||||
@ -9,6 +9,7 @@ import com.hbm.items.ItemEnums.EnumCokeType;
|
|||||||
import com.hbm.items.machine.ItemCircuit.EnumCircuitType;
|
import com.hbm.items.machine.ItemCircuit.EnumCircuitType;
|
||||||
import com.hbm.items.ModItems;
|
import com.hbm.items.ModItems;
|
||||||
import com.hbm.items.machine.ItemRTGPelletDepleted;
|
import com.hbm.items.machine.ItemRTGPelletDepleted;
|
||||||
|
import com.hbm.items.machine.ItemBatteryPack.EnumBatteryPack;
|
||||||
import com.hbm.items.tool.ItemBlowtorch;
|
import com.hbm.items.tool.ItemBlowtorch;
|
||||||
|
|
||||||
import net.minecraft.init.Items;
|
import net.minecraft.init.Items;
|
||||||
@ -45,7 +46,7 @@ public class ItemPoolsComponent {
|
|||||||
weighted(ModItems.coil_copper_torus, 0, 1, 2, 3),
|
weighted(ModItems.coil_copper_torus, 0, 1, 2, 3),
|
||||||
weighted(ModItems.wire_fine, Mats.MAT_MINGRADE.id, 1, 8, 5),
|
weighted(ModItems.wire_fine, Mats.MAT_MINGRADE.id, 1, 8, 5),
|
||||||
weighted(ModItems.piston_selenium, 0, 1, 1, 3),
|
weighted(ModItems.piston_selenium, 0, 1, 1, 3),
|
||||||
weighted(ModItems.battery_advanced_cell, 0, 1, 1, 3),
|
weighted(ModItems.battery_pack, EnumBatteryPack.BATTERY_LEAD.ordinal(), 1, 1, 3),
|
||||||
weighted(ModItems.circuit, EnumCircuitType.VACUUM_TUBE.ordinal(), 1, 2, 4),
|
weighted(ModItems.circuit, EnumCircuitType.VACUUM_TUBE.ordinal(), 1, 2, 4),
|
||||||
weighted(ModItems.circuit, EnumCircuitType.PCB.ordinal(), 1, 3, 5),
|
weighted(ModItems.circuit, EnumCircuitType.PCB.ordinal(), 1, 3, 5),
|
||||||
weighted(ModItems.circuit, EnumCircuitType.CAPACITOR.ordinal(), 1, 1, 3),
|
weighted(ModItems.circuit, EnumCircuitType.CAPACITOR.ordinal(), 1, 1, 3),
|
||||||
@ -81,7 +82,7 @@ public class ItemPoolsComponent {
|
|||||||
weighted(ModItems.missile_generic, 0, 1, 1, 4),
|
weighted(ModItems.missile_generic, 0, 1, 1, 4),
|
||||||
weighted(ModItems.missile_incendiary, 0, 1, 1, 4),
|
weighted(ModItems.missile_incendiary, 0, 1, 1, 4),
|
||||||
weighted(ModItems.gas_mask_m65, 0, 1, 1, 5),
|
weighted(ModItems.gas_mask_m65, 0, 1, 1, 5),
|
||||||
weighted(ModItems.battery_advanced, 0, 1, 1, 5),
|
weighted(ModItems.battery_pack, EnumBatteryPack.BATTERY_LEAD.ordinal(), 1, 1, 3),
|
||||||
weighted(ModItems.designator, 0, 1, 1, 5),
|
weighted(ModItems.designator, 0, 1, 1, 5),
|
||||||
weighted(ModItems.thruster_small, 0, 1, 1, 5),
|
weighted(ModItems.thruster_small, 0, 1, 1, 5),
|
||||||
weighted(ModItems.thruster_medium, 0, 1, 1, 4),
|
weighted(ModItems.thruster_medium, 0, 1, 1, 4),
|
||||||
|
|||||||
@ -4,6 +4,7 @@ import com.hbm.inventory.fluid.Fluids;
|
|||||||
import com.hbm.inventory.material.Mats;
|
import com.hbm.inventory.material.Mats;
|
||||||
import com.hbm.items.ItemEnums.EnumCasingType;
|
import com.hbm.items.ItemEnums.EnumCasingType;
|
||||||
import com.hbm.items.ModItems;
|
import com.hbm.items.ModItems;
|
||||||
|
import com.hbm.items.machine.ItemBatteryPack.EnumBatteryPack;
|
||||||
import com.hbm.items.machine.ItemBreedingRod.BreedingRodType;
|
import com.hbm.items.machine.ItemBreedingRod.BreedingRodType;
|
||||||
import com.hbm.items.machine.ItemCircuit.EnumCircuitType;
|
import com.hbm.items.machine.ItemCircuit.EnumCircuitType;
|
||||||
import com.hbm.items.machine.ItemZirnoxRod.EnumZirnoxType;
|
import com.hbm.items.machine.ItemZirnoxRod.EnumZirnoxType;
|
||||||
@ -52,8 +53,7 @@ public class ItemPoolsLegacy {
|
|||||||
weighted(ModItems.casing, EnumCasingType.SMALL.ordinal(), 4, 10, 3),
|
weighted(ModItems.casing, EnumCasingType.SMALL.ordinal(), 4, 10, 3),
|
||||||
weighted(ModItems.casing, EnumCasingType.SHOTSHELL.ordinal(), 4, 10, 3),
|
weighted(ModItems.casing, EnumCasingType.SHOTSHELL.ordinal(), 4, 10, 3),
|
||||||
weighted(ModItems.cordite, 0, 4, 6, 5),
|
weighted(ModItems.cordite, 0, 4, 6, 5),
|
||||||
weighted(ModItems.battery_generic, 0, 1, 1, 4),
|
weighted(ModItems.battery_pack, EnumBatteryPack.BATTERY_REDSTONE.ordinal(), 1, 1, 1),
|
||||||
weighted(ModItems.battery_advanced, 0, 1, 1, 2),
|
|
||||||
weighted(ModItems.scrap, 0, 1, 3, 10),
|
weighted(ModItems.scrap, 0, 1, 3, 10),
|
||||||
weighted(ModItems.dust, 0, 2, 4, 9),
|
weighted(ModItems.dust, 0, 2, 4, 9),
|
||||||
weighted(ModItems.bottle_opener, 0, 1, 1, 2),
|
weighted(ModItems.bottle_opener, 0, 1, 1, 2),
|
||||||
@ -79,8 +79,7 @@ public class ItemPoolsLegacy {
|
|||||||
weighted(ModItems.wire_fine, Mats.MAT_MINGRADE.id, 2, 3, 7),
|
weighted(ModItems.wire_fine, Mats.MAT_MINGRADE.id, 2, 3, 7),
|
||||||
weighted(ModItems.circuit, EnumCircuitType.VACUUM_TUBE.ordinal(), 1, 1, 4),
|
weighted(ModItems.circuit, EnumCircuitType.VACUUM_TUBE.ordinal(), 1, 1, 4),
|
||||||
weighted(ModItems.circuit, EnumCircuitType.CAPACITOR.ordinal(), 1, 1, 2),
|
weighted(ModItems.circuit, EnumCircuitType.CAPACITOR.ordinal(), 1, 1, 2),
|
||||||
weighted(ModItems.battery_generic, 0, 1, 1, 4),
|
weighted(ModItems.battery_pack, EnumBatteryPack.BATTERY_REDSTONE.ordinal(), 1, 1, 1),
|
||||||
weighted(ModItems.battery_advanced, 0, 1, 1, 3),
|
|
||||||
weighted(ModItems.powder_iodine, 0, 1, 1, 1),
|
weighted(ModItems.powder_iodine, 0, 1, 1, 1),
|
||||||
weighted(ModItems.powder_bromine, 0, 1, 1, 1),
|
weighted(ModItems.powder_bromine, 0, 1, 1, 1),
|
||||||
weighted(ModBlocks.steel_poles, 0, 1, 4, 8),
|
weighted(ModBlocks.steel_poles, 0, 1, 4, 8),
|
||||||
@ -116,9 +115,7 @@ public class ItemPoolsLegacy {
|
|||||||
weighted(ModItems.grenade_smart, 0, 1, 3, 3),
|
weighted(ModItems.grenade_smart, 0, 1, 3, 3),
|
||||||
weighted(ModItems.grenade_mirv, 0, 1, 1, 2),
|
weighted(ModItems.grenade_mirv, 0, 1, 1, 2),
|
||||||
weighted(ModItems.stealth_boy, 0, 1, 1, 2),
|
weighted(ModItems.stealth_boy, 0, 1, 1, 2),
|
||||||
weighted(ModItems.battery_advanced, 0, 1, 1, 3),
|
weighted(ModItems.battery_pack, EnumBatteryPack.BATTERY_LITHIUM.ordinal(), 1, 1, 1),
|
||||||
weighted(ModItems.battery_advanced_cell, 0, 1, 1, 2),
|
|
||||||
weighted(ModItems.battery_schrabidium, 0, 1, 1, 1),
|
|
||||||
weighted(ModItems.syringe_awesome, 0, 1, 1, 1),
|
weighted(ModItems.syringe_awesome, 0, 1, 1, 1),
|
||||||
weighted(ModItems.fusion_core, 0, 1, 1, 4),
|
weighted(ModItems.fusion_core, 0, 1, 1, 4),
|
||||||
weighted(ModItems.bottle_nuka, 0, 1, 3, 6),
|
weighted(ModItems.bottle_nuka, 0, 1, 3, 6),
|
||||||
@ -215,7 +212,7 @@ public class ItemPoolsLegacy {
|
|||||||
//spaceship double chests
|
//spaceship double chests
|
||||||
new ItemPool(POOL_SPACESHIP) {{
|
new ItemPool(POOL_SPACESHIP) {{
|
||||||
this.pool = new WeightedRandomChestContent[] {
|
this.pool = new WeightedRandomChestContent[] {
|
||||||
weighted(ModItems.battery_advanced, 0, 1, 1, 5),
|
weighted(ModItems.battery_pack, EnumBatteryPack.BATTERY_LEAD.ordinal(), 1, 1, 2),
|
||||||
weighted(ModItems.ingot_advanced_alloy, 0, 2, 16, 5),
|
weighted(ModItems.ingot_advanced_alloy, 0, 2, 16, 5),
|
||||||
weighted(ModItems.wire_fine, Mats.MAT_ALLOY.id, 8, 32, 5),
|
weighted(ModItems.wire_fine, Mats.MAT_ALLOY.id, 8, 32, 5),
|
||||||
weighted(ModItems.coil_advanced_alloy, 0, 2, 16, 5),
|
weighted(ModItems.coil_advanced_alloy, 0, 2, 16, 5),
|
||||||
|
|||||||
@ -42,7 +42,6 @@ public class ItemPoolsSingle {
|
|||||||
new ItemPool(POOL_VAULT_STANDARD) {{
|
new ItemPool(POOL_VAULT_STANDARD) {{
|
||||||
this.pool = new WeightedRandomChestContent[] {
|
this.pool = new WeightedRandomChestContent[] {
|
||||||
weighted(ModItems.ingot_desh, 0, 2, 6, 1),
|
weighted(ModItems.ingot_desh, 0, 2, 6, 1),
|
||||||
weighted(ModItems.battery_advanced_cell_4, 0, 1, 1, 1),
|
|
||||||
weighted(ModItems.powder_desh_mix, 0, 1, 5, 1),
|
weighted(ModItems.powder_desh_mix, 0, 1, 5, 1),
|
||||||
weighted(Items.diamond, 0, 3, 6, 1),
|
weighted(Items.diamond, 0, 3, 6, 1),
|
||||||
weighted(ModItems.ammo_standard, EnumAmmo.NUKE_STANDARD.ordinal(), 1, 1, 1),
|
weighted(ModItems.ammo_standard, EnumAmmo.NUKE_STANDARD.ordinal(), 1, 1, 1),
|
||||||
@ -59,7 +58,6 @@ public class ItemPoolsSingle {
|
|||||||
new ItemPool(POOL_VAULT_REINFORCED) {{
|
new ItemPool(POOL_VAULT_REINFORCED) {{
|
||||||
this.pool = new WeightedRandomChestContent[] {
|
this.pool = new WeightedRandomChestContent[] {
|
||||||
weighted(ModItems.ingot_desh, 0, 6, 16, 1),
|
weighted(ModItems.ingot_desh, 0, 6, 16, 1),
|
||||||
weighted(ModItems.battery_lithium, 0, 1, 1, 1),
|
|
||||||
weighted(ModItems.powder_power, 0, 1, 5, 1),
|
weighted(ModItems.powder_power, 0, 1, 5, 1),
|
||||||
weighted(ModItems.sat_chip, 0, 1, 1, 1),
|
weighted(ModItems.sat_chip, 0, 1, 1, 1),
|
||||||
weighted(Items.diamond, 0, 5, 9, 1),
|
weighted(Items.diamond, 0, 5, 9, 1),
|
||||||
@ -81,7 +79,6 @@ public class ItemPoolsSingle {
|
|||||||
weighted(ModItems.gun_carbine, 0, 1, 1, 1),
|
weighted(ModItems.gun_carbine, 0, 1, 1, 1),
|
||||||
weighted(ModItems.ammo_standard, EnumAmmo.R762_DU.ordinal(), 16, 32, 1),
|
weighted(ModItems.ammo_standard, EnumAmmo.R762_DU.ordinal(), 16, 32, 1),
|
||||||
weighted(ModItems.gun_congolake, 0, 1, 1, 1),
|
weighted(ModItems.gun_congolake, 0, 1, 1, 1),
|
||||||
weighted(ModItems.battery_schrabidium_cell, 0, 1, 1, 1),
|
|
||||||
weighted(ModItems.circuit, EnumCircuitType.ADVANCED.ordinal(), 6, 12, 1)
|
weighted(ModItems.circuit, EnumCircuitType.ADVANCED.ordinal(), 6, 12, 1)
|
||||||
};
|
};
|
||||||
}};
|
}};
|
||||||
|
|||||||
@ -1631,8 +1631,6 @@ public class ModItems {
|
|||||||
@Deprecated public static Item battery_advanced;
|
@Deprecated public static Item battery_advanced;
|
||||||
@Deprecated public static Item battery_lithium;
|
@Deprecated public static Item battery_lithium;
|
||||||
@Deprecated public static Item battery_schrabidium;
|
@Deprecated public static Item battery_schrabidium;
|
||||||
@Deprecated public static Item battery_spark;
|
|
||||||
@Deprecated public static Item battery_trixite;
|
|
||||||
@Deprecated public static Item battery_red_cell;
|
@Deprecated public static Item battery_red_cell;
|
||||||
@Deprecated public static Item battery_red_cell_6;
|
@Deprecated public static Item battery_red_cell_6;
|
||||||
@Deprecated public static Item battery_red_cell_24;
|
@Deprecated public static Item battery_red_cell_24;
|
||||||
@ -1656,6 +1654,8 @@ public class ModItems {
|
|||||||
public static Item battery_pack;
|
public static Item battery_pack;
|
||||||
public static Item battery_creative;
|
public static Item battery_creative;
|
||||||
public static Item cube_power;
|
public static Item cube_power;
|
||||||
|
public static Item battery_spark;
|
||||||
|
public static Item battery_trixite;
|
||||||
|
|
||||||
public static Item battery_sc_uranium;
|
public static Item battery_sc_uranium;
|
||||||
public static Item battery_sc_technetium;
|
public static Item battery_sc_technetium;
|
||||||
@ -3873,8 +3873,8 @@ public class ModItems {
|
|||||||
battery_advanced = new ItemBattery(20000, 500, 500).setUnlocalizedName("battery_advanced").setMaxStackSize(1).setCreativeTab(null).setTextureName(RefStrings.MODID + ":battery_advanced_new");
|
battery_advanced = new ItemBattery(20000, 500, 500).setUnlocalizedName("battery_advanced").setMaxStackSize(1).setCreativeTab(null).setTextureName(RefStrings.MODID + ":battery_advanced_new");
|
||||||
battery_lithium = new ItemBattery(250000, 1000, 1000).setUnlocalizedName("battery_lithium").setMaxStackSize(1).setCreativeTab(null).setTextureName(RefStrings.MODID + ":battery_lithium");
|
battery_lithium = new ItemBattery(250000, 1000, 1000).setUnlocalizedName("battery_lithium").setMaxStackSize(1).setCreativeTab(null).setTextureName(RefStrings.MODID + ":battery_lithium");
|
||||||
battery_schrabidium = new ItemBattery(1000000, 5000, 5000).setUnlocalizedName("battery_schrabidium").setMaxStackSize(1).setCreativeTab(null).setTextureName(RefStrings.MODID + ":battery_schrabidium_new");
|
battery_schrabidium = new ItemBattery(1000000, 5000, 5000).setUnlocalizedName("battery_schrabidium").setMaxStackSize(1).setCreativeTab(null).setTextureName(RefStrings.MODID + ":battery_schrabidium_new");
|
||||||
battery_spark = new ItemBattery(100000000, 2000000, 2000000).setUnlocalizedName("battery_spark").setMaxStackSize(1).setCreativeTab(null).setTextureName(RefStrings.MODID + ":battery_spark");
|
battery_spark = new Item().setUnlocalizedName("battery_spark").setMaxStackSize(1).setCreativeTab(MainRegistry.nukeTab).setTextureName(RefStrings.MODID + ":battery_spark");
|
||||||
battery_trixite = new ItemBattery(5000000, 40000, 200000).setUnlocalizedName("battery_trixite").setMaxStackSize(1).setCreativeTab(null).setTextureName(RefStrings.MODID + ":battery_trixite");
|
battery_trixite = new Item().setUnlocalizedName("battery_trixite").setMaxStackSize(1).setCreativeTab(MainRegistry.nukeTab).setTextureName(RefStrings.MODID + ":battery_trixite");
|
||||||
battery_red_cell = new ItemBattery(15000, 100, 100).setUnlocalizedName("battery_red_cell").setMaxStackSize(1).setCreativeTab(null).setTextureName(RefStrings.MODID + ":battery_red_cell");
|
battery_red_cell = new ItemBattery(15000, 100, 100).setUnlocalizedName("battery_red_cell").setMaxStackSize(1).setCreativeTab(null).setTextureName(RefStrings.MODID + ":battery_red_cell");
|
||||||
battery_red_cell_6 = new ItemBattery(15000 * 6, 100, 100).setUnlocalizedName("battery_red_cell_6").setMaxStackSize(1).setCreativeTab(null).setTextureName(RefStrings.MODID + ":battery_red_cell_6");
|
battery_red_cell_6 = new ItemBattery(15000 * 6, 100, 100).setUnlocalizedName("battery_red_cell_6").setMaxStackSize(1).setCreativeTab(null).setTextureName(RefStrings.MODID + ":battery_red_cell_6");
|
||||||
battery_red_cell_24 = new ItemBattery(15000 * 24, 100, 100).setUnlocalizedName("battery_red_cell_24").setMaxStackSize(1).setCreativeTab(null).setTextureName(RefStrings.MODID + ":battery_red_cell_24");
|
battery_red_cell_24 = new ItemBattery(15000 * 24, 100, 100).setUnlocalizedName("battery_red_cell_24").setMaxStackSize(1).setCreativeTab(null).setTextureName(RefStrings.MODID + ":battery_red_cell_24");
|
||||||
@ -3896,7 +3896,7 @@ public class ModItems {
|
|||||||
battery_spark_cell_power = new ItemBattery(100000000L * 1000000L, 200000000, 200000000).setUnlocalizedName("battery_spark_cell_power").setMaxStackSize(1).setCreativeTab(null).setTextureName(RefStrings.MODID + ":battery_spark_cell_power");
|
battery_spark_cell_power = new ItemBattery(100000000L * 1000000L, 200000000, 200000000).setUnlocalizedName("battery_spark_cell_power").setMaxStackSize(1).setCreativeTab(null).setTextureName(RefStrings.MODID + ":battery_spark_cell_power");
|
||||||
|
|
||||||
battery_pack = new ItemBatteryPack().setUnlocalizedName("battery_pack").setTextureName(RefStrings.MODID + ":battery_generic_new");
|
battery_pack = new ItemBatteryPack().setUnlocalizedName("battery_pack").setTextureName(RefStrings.MODID + ":battery_generic_new");
|
||||||
battery_creative = new Item().setUnlocalizedName("battery_creative").setMaxStackSize(1).setCreativeTab(MainRegistry.controlTab).setTextureName(RefStrings.MODID + ":battery_creative_new");
|
battery_creative = new ItemBatteryCreative().setUnlocalizedName("battery_creative").setMaxStackSize(1).setCreativeTab(MainRegistry.controlTab).setTextureName(RefStrings.MODID + ":battery_creative_new");
|
||||||
cube_power = new ItemBattery(1000000000000000000L, 1000000000000000L, 1000000000000000L).setUnlocalizedName("cube_power").setMaxStackSize(1).setCreativeTab(MainRegistry.controlTab).setTextureName(RefStrings.MODID + ":cube_power");
|
cube_power = new ItemBattery(1000000000000000000L, 1000000000000000L, 1000000000000000L).setUnlocalizedName("cube_power").setMaxStackSize(1).setCreativeTab(MainRegistry.controlTab).setTextureName(RefStrings.MODID + ":cube_power");
|
||||||
|
|
||||||
battery_sc_uranium = new ItemSelfcharger(5).setUnlocalizedName("battery_sc_uranium").setMaxStackSize(1).setCreativeTab(MainRegistry.controlTab).setTextureName(RefStrings.MODID + ":battery_sc_uranium");
|
battery_sc_uranium = new ItemSelfcharger(5).setUnlocalizedName("battery_sc_uranium").setMaxStackSize(1).setCreativeTab(MainRegistry.controlTab).setTextureName(RefStrings.MODID + ":battery_sc_uranium");
|
||||||
|
|||||||
@ -20,6 +20,8 @@ import net.minecraft.item.ItemStack;
|
|||||||
import net.minecraft.nbt.NBTTagCompound;
|
import net.minecraft.nbt.NBTTagCompound;
|
||||||
import net.minecraft.world.World;
|
import net.minecraft.world.World;
|
||||||
|
|
||||||
|
import java.util.Random;
|
||||||
|
|
||||||
import javax.annotation.Nonnull;
|
import javax.annotation.Nonnull;
|
||||||
|
|
||||||
public class ItemBlockStorageCrate extends ItemBlockBase implements IGUIProvider {
|
public class ItemBlockStorageCrate extends ItemBlockBase implements IGUIProvider {
|
||||||
@ -90,6 +92,8 @@ public class ItemBlockStorageCrate extends ItemBlockBase implements IGUIProvider
|
|||||||
|
|
||||||
public static class InventoryCrate extends ItemInventory {
|
public static class InventoryCrate extends ItemInventory {
|
||||||
|
|
||||||
|
public static Random rand = new Random();
|
||||||
|
|
||||||
public InventoryCrate(EntityPlayer player, ItemStack crate) {
|
public InventoryCrate(EntityPlayer player, ItemStack crate) {
|
||||||
this.player = player;
|
this.player = player;
|
||||||
this.target = crate;
|
this.target = crate;
|
||||||
@ -134,6 +138,11 @@ public class ItemBlockStorageCrate extends ItemBlockBase implements IGUIProvider
|
|||||||
return target.hasDisplayName();
|
return target.hasDisplayName();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean isUseableByPlayer(EntityPlayer player) {
|
||||||
|
return player.getHeldItem() == this.target;
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void markDirty() { // You have been blessed by the unfuck
|
public void markDirty() { // You have been blessed by the unfuck
|
||||||
|
|
||||||
@ -141,6 +150,8 @@ public class ItemBlockStorageCrate extends ItemBlockBase implements IGUIProvider
|
|||||||
NBTTagCompound nbt = target.stackTagCompound != null ? target.stackTagCompound : new NBTTagCompound();
|
NBTTagCompound nbt = target.stackTagCompound != null ? target.stackTagCompound : new NBTTagCompound();
|
||||||
int invSize = this.getSizeInventory();
|
int invSize = this.getSizeInventory();
|
||||||
|
|
||||||
|
nbt.removeTag("stacklock");
|
||||||
|
|
||||||
for(int i = 0; i < invSize; i++) {
|
for(int i = 0; i < invSize; i++) {
|
||||||
|
|
||||||
ItemStack stack = this.getStackInSlot(i);
|
ItemStack stack = this.getStackInSlot(i);
|
||||||
@ -154,8 +165,10 @@ public class ItemBlockStorageCrate extends ItemBlockBase implements IGUIProvider
|
|||||||
nbt.setTag("slot" + i, slot);
|
nbt.setTag("slot" + i, slot);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (nbt.hasNoTags()) {
|
if(nbt.hasNoTags()) {
|
||||||
nbt = null;
|
nbt = null;
|
||||||
|
} else {
|
||||||
|
nbt.setLong("stacklock", rand.nextLong()); // add shit that prevents crates from stacking
|
||||||
}
|
}
|
||||||
|
|
||||||
target.setTagCompound(nbt);
|
target.setTagCompound(nbt);
|
||||||
|
|||||||
18
src/main/java/com/hbm/items/machine/ItemBatteryCreative.java
Normal file
@ -0,0 +1,18 @@
|
|||||||
|
package com.hbm.items.machine;
|
||||||
|
|
||||||
|
import api.hbm.energymk2.IBatteryItem;
|
||||||
|
import net.minecraft.item.Item;
|
||||||
|
import net.minecraft.item.ItemStack;
|
||||||
|
|
||||||
|
public class ItemBatteryCreative extends Item implements IBatteryItem {
|
||||||
|
|
||||||
|
@Override public void chargeBattery(ItemStack stack, long i) { }
|
||||||
|
@Override public void setCharge(ItemStack stack, long i) { }
|
||||||
|
@Override public void dischargeBattery(ItemStack stack, long i) { }
|
||||||
|
|
||||||
|
@Override public long getCharge(ItemStack stack) { return Long.MAX_VALUE / 2L; }
|
||||||
|
@Override public long getMaxCharge(ItemStack stack) { return Long.MAX_VALUE; }
|
||||||
|
|
||||||
|
@Override public long getChargeRate(ItemStack stack) { return Long.MAX_VALUE / 100L; }
|
||||||
|
@Override public long getDischargeRate(ItemStack stack) { return Long.MAX_VALUE / 100L; }
|
||||||
|
}
|
||||||
@ -4,6 +4,7 @@ import java.util.List;
|
|||||||
|
|
||||||
import com.hbm.interfaces.IOrderedEnum;
|
import com.hbm.interfaces.IOrderedEnum;
|
||||||
import com.hbm.items.ItemEnumMulti;
|
import com.hbm.items.ItemEnumMulti;
|
||||||
|
import com.hbm.items.ModItems;
|
||||||
import com.hbm.lib.RefStrings;
|
import com.hbm.lib.RefStrings;
|
||||||
import com.hbm.main.MainRegistry;
|
import com.hbm.main.MainRegistry;
|
||||||
import com.hbm.util.BobMathUtil;
|
import com.hbm.util.BobMathUtil;
|
||||||
@ -67,6 +68,7 @@ public class ItemBatteryPack extends ItemEnumMulti implements IBatteryItem {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public boolean isCapacitor() { return this.ordinal() > BATTERY_QUANTUM.ordinal(); }
|
public boolean isCapacitor() { return this.ordinal() > BATTERY_QUANTUM.ordinal(); }
|
||||||
|
public ItemStack stack() { return new ItemStack(ModItems.battery_pack, 1, this.ordinal()); }
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@ -95,7 +97,7 @@ public class ItemBatteryPack extends ItemEnumMulti implements IBatteryItem {
|
|||||||
stack.stackTagCompound.setLong("charge", stack.stackTagCompound.getLong("charge") - i);
|
stack.stackTagCompound.setLong("charge", stack.stackTagCompound.getLong("charge") - i);
|
||||||
} else {
|
} else {
|
||||||
stack.stackTagCompound = new NBTTagCompound();
|
stack.stackTagCompound = new NBTTagCompound();
|
||||||
stack.stackTagCompound.setLong("charge", this.getMaxCharge(stack) - i);
|
stack.stackTagCompound.setLong("charge", 0);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -105,7 +107,7 @@ public class ItemBatteryPack extends ItemEnumMulti implements IBatteryItem {
|
|||||||
return stack.stackTagCompound.getLong("charge");
|
return stack.stackTagCompound.getLong("charge");
|
||||||
} else {
|
} else {
|
||||||
stack.stackTagCompound = new NBTTagCompound();
|
stack.stackTagCompound = new NBTTagCompound();
|
||||||
stack.stackTagCompound.setLong("charge", getMaxCharge(stack));
|
stack.stackTagCompound.setLong("charge", 0);
|
||||||
return stack.stackTagCompound.getLong("charge");
|
return stack.stackTagCompound.getLong("charge");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -181,10 +181,6 @@ public class ItemStarterKit extends Item {
|
|||||||
player.inventory.addItemStackToInventory(new ItemStack(ModItems.piston_selenium, 1));
|
player.inventory.addItemStackToInventory(new ItemStack(ModItems.piston_selenium, 1));
|
||||||
player.inventory.addItemStackToInventory(new ItemStack(ModItems.canister_full, 16, Fluids.DIESEL.getID()));
|
player.inventory.addItemStackToInventory(new ItemStack(ModItems.canister_full, 16, Fluids.DIESEL.getID()));
|
||||||
player.inventory.addItemStackToInventory(new ItemStack(ModItems.canister_full, 16, Fluids.BIOFUEL.getID()));
|
player.inventory.addItemStackToInventory(new ItemStack(ModItems.canister_full, 16, Fluids.BIOFUEL.getID()));
|
||||||
player.inventory.addItemStackToInventory(new ItemStack(ModItems.battery_advanced_cell_4, 1));
|
|
||||||
player.inventory.addItemStackToInventory(new ItemStack(ModItems.battery_advanced_cell_4, 1));
|
|
||||||
player.inventory.addItemStackToInventory(new ItemStack(ModItems.battery_lithium, 1));
|
|
||||||
player.inventory.addItemStackToInventory(new ItemStack(ModItems.battery_lithium, 1));
|
|
||||||
player.inventory.addItemStackToInventory(new ItemStack(ModItems.battery_potato, 1));
|
player.inventory.addItemStackToInventory(new ItemStack(ModItems.battery_potato, 1));
|
||||||
player.inventory.addItemStackToInventory(new ItemStack(ModItems.screwdriver, 1));
|
player.inventory.addItemStackToInventory(new ItemStack(ModItems.screwdriver, 1));
|
||||||
player.inventory.addItemStackToInventory(new ItemStack(ModBlocks.machine_excavator, 1));
|
player.inventory.addItemStackToInventory(new ItemStack(ModBlocks.machine_excavator, 1));
|
||||||
@ -383,7 +379,6 @@ public class ItemStarterKit extends Item {
|
|||||||
player.inventory.addItemStackToInventory(new ItemStack(ModItems.designator, 1));
|
player.inventory.addItemStackToInventory(new ItemStack(ModItems.designator, 1));
|
||||||
player.inventory.addItemStackToInventory(new ItemStack(ModItems.designator_range, 1));
|
player.inventory.addItemStackToInventory(new ItemStack(ModItems.designator_range, 1));
|
||||||
player.inventory.addItemStackToInventory(new ItemStack(ModItems.designator_manual, 1));
|
player.inventory.addItemStackToInventory(new ItemStack(ModItems.designator_manual, 1));
|
||||||
player.inventory.addItemStackToInventory(new ItemStack(ModItems.battery_schrabidium_cell_4, 1));
|
|
||||||
player.inventory.addItemStackToInventory(new ItemStack(ModItems.missile_generic, 1));
|
player.inventory.addItemStackToInventory(new ItemStack(ModItems.missile_generic, 1));
|
||||||
player.inventory.addItemStackToInventory(new ItemStack(ModItems.missile_strong, 1));
|
player.inventory.addItemStackToInventory(new ItemStack(ModItems.missile_strong, 1));
|
||||||
player.inventory.addItemStackToInventory(new ItemStack(ModItems.missile_burst, 1));
|
player.inventory.addItemStackToInventory(new ItemStack(ModItems.missile_burst, 1));
|
||||||
|
|||||||
@ -3,12 +3,16 @@ package com.hbm.items.special;
|
|||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Random;
|
import java.util.Random;
|
||||||
|
|
||||||
|
import org.apache.logging.log4j.Level;
|
||||||
|
|
||||||
|
import com.hbm.config.GeneralConfig;
|
||||||
import com.hbm.config.VersatileConfig;
|
import com.hbm.config.VersatileConfig;
|
||||||
import com.hbm.extprop.HbmLivingProps;
|
import com.hbm.extprop.HbmLivingProps;
|
||||||
import com.hbm.handler.ArmorModHandler;
|
import com.hbm.handler.ArmorModHandler;
|
||||||
import com.hbm.interfaces.Spaghetti;
|
import com.hbm.interfaces.Spaghetti;
|
||||||
import com.hbm.inventory.fluid.Fluids;
|
import com.hbm.inventory.fluid.Fluids;
|
||||||
import com.hbm.items.ModItems;
|
import com.hbm.items.ModItems;
|
||||||
|
import com.hbm.main.MainRegistry;
|
||||||
import com.hbm.potion.HbmPotion;
|
import com.hbm.potion.HbmPotion;
|
||||||
|
|
||||||
import api.hbm.fluidmk2.IFillableItem;
|
import api.hbm.fluidmk2.IFillableItem;
|
||||||
@ -336,6 +340,9 @@ public class ItemSyringe extends Item {
|
|||||||
HbmLivingProps.setContagion(entity, 3 * 60 * 60 * 20);
|
HbmLivingProps.setContagion(entity, 3 * 60 * 60 * 20);
|
||||||
world.playSoundAtEntity(entity, "hbm:item.syringe", 1.0F, 1.0F);
|
world.playSoundAtEntity(entity, "hbm:item.syringe", 1.0F, 1.0F);
|
||||||
stack.stackSize--;
|
stack.stackSize--;
|
||||||
|
|
||||||
|
if(GeneralConfig.enableExtendedLogging)
|
||||||
|
MainRegistry.logger.log(Level.INFO, "[MKU] " + entityPlayer.getCommandSenderName() + " used an MKU syringe!");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -443,7 +443,7 @@ public class LegoClient {
|
|||||||
double age = MathHelper.clamp_double(1D - ((double) bullet.ticksExisted - 2 + interp) / (double) bullet.getBulletConfig().expires, 0, 1);
|
double age = MathHelper.clamp_double(1D - ((double) bullet.ticksExisted - 2 + interp) / (double) bullet.getBulletConfig().expires, 0, 1);
|
||||||
GL11.glScaled(age / 2 + 0.5, 1, age / 2 + 0.5);
|
GL11.glScaled(age / 2 + 0.5, 1, age / 2 + 0.5);
|
||||||
int colorInner = ((int)(r * age) << 16) | ((int)(g * age) << 8) | (int) (b * age);
|
int colorInner = ((int)(r * age) << 16) | ((int)(g * age) << 8) | (int) (b * age);
|
||||||
BeamPronter.prontBeam(delta, EnumWaveType.RANDOM, EnumBeamType.SOLID, colorInner, colorInner, bullet.ticksExisted / 3, (int)(bullet.beamLength / 2 + 1), 0F, 8, 0.0625F);
|
BeamPronter.prontBeam(delta, EnumWaveType.RANDOM, EnumBeamType.SOLID, colorInner, colorInner, bullet.ticksExisted / 3, (int)(bullet.beamLength / 2 + 1), 0F, 4, 0.025F);
|
||||||
GL11.glPopMatrix();
|
GL11.glPopMatrix();
|
||||||
RenderArcFurnace.fullbright(false);
|
RenderArcFurnace.fullbright(false);
|
||||||
}
|
}
|
||||||
|
|||||||
@ -42,7 +42,7 @@ public class MagazineElectricEngine implements IMagazine {
|
|||||||
@Override public void reloadAction(ItemStack stack, IInventory inventory) { }
|
@Override public void reloadAction(ItemStack stack, IInventory inventory) { }
|
||||||
@Override public SpentCasing getCasing(ItemStack stack, IInventory inventory) { return null; }
|
@Override public SpentCasing getCasing(ItemStack stack, IInventory inventory) { return null; }
|
||||||
|
|
||||||
@Override public ItemStack getIconForHUD(ItemStack stack, EntityPlayer player) { return new ItemStack(ModItems.battery_generic); }
|
@Override public ItemStack getIconForHUD(ItemStack stack, EntityPlayer player) { return new ItemStack(ModItems.battery_creative); }
|
||||||
@Override public String reportAmmoStateForHUD(ItemStack stack, EntityPlayer player) { return BobMathUtil.getShortNumber(getAmount(stack, player.inventory)) + "/" + BobMathUtil.getShortNumber(this.capacity) + "HE"; }
|
@Override public String reportAmmoStateForHUD(ItemStack stack, EntityPlayer player) { return BobMathUtil.getShortNumber(getAmount(stack, player.inventory)) + "/" + BobMathUtil.getShortNumber(this.capacity) + "HE"; }
|
||||||
|
|
||||||
@Override public void setAmountBeforeReload(ItemStack stack, int amount) { ItemGunBaseNT.setValueInt(stack, KEY_MAG_PREV + index, amount); }
|
@Override public void setAmountBeforeReload(ItemStack stack, int amount) { ItemGunBaseNT.setValueInt(stack, KEY_MAG_PREV + index, amount); }
|
||||||
|
|||||||
@ -522,12 +522,12 @@ public class HbmWorldGen implements IWorldGenerator {
|
|||||||
|
|
||||||
private static void genBlueprintChest(World world, Random rand, int i, int j, int boundsX, int boundsZ) {
|
private static void genBlueprintChest(World world, Random rand, int i, int j, int boundsX, int boundsZ) {
|
||||||
if(Math.abs(i) < 100 && Math.abs(j) < 100) return;
|
if(Math.abs(i) < 100 && Math.abs(j) < 100) return;
|
||||||
if(rand.nextBoolean()) return;
|
if(rand.nextInt(20) < 10) return; // nextBoolean would have weird periodicity to it, hoping that a larger int range has more variance
|
||||||
|
|
||||||
int cX = Math.abs(i) % boundsX;
|
int cX = Math.abs(i) % boundsX;
|
||||||
int cZ = Math.abs(j) % boundsZ;
|
int cZ = Math.abs(j) % boundsZ;
|
||||||
|
|
||||||
if(cX <= 0 && cX + 16 >= 0 && cZ <= 0 && cZ + 16 >= 0) {
|
if(cX >= 0 && cX < 16 && cZ >= 0 && cZ < 16) {
|
||||||
int x = i + 8;
|
int x = i + 8;
|
||||||
int z = j + 8;
|
int z = j + 8;
|
||||||
int y = world.getHeightValue(x, z) - rand.nextInt(2);
|
int y = world.getHeightValue(x, z) - rand.nextInt(2);
|
||||||
|
|||||||
@ -3,7 +3,7 @@ package com.hbm.lib;
|
|||||||
public class RefStrings {
|
public class RefStrings {
|
||||||
public static final String MODID = "hbm";
|
public static final String MODID = "hbm";
|
||||||
public static final String NAME = "Hbm's Nuclear Tech Mod";
|
public static final String NAME = "Hbm's Nuclear Tech Mod";
|
||||||
public static final String VERSION = "1.0.27 BETA (5546)";
|
public static final String VERSION = "1.0.27 BETA (5570)";
|
||||||
//HBM's Beta Naming Convention:
|
//HBM's Beta Naming Convention:
|
||||||
//V T (X)
|
//V T (X)
|
||||||
//V -> next release version
|
//V -> next release version
|
||||||
|
|||||||
@ -307,6 +307,7 @@ public class ClientProxy extends ServerProxy {
|
|||||||
ClientRegistry.bindTileEntitySpecialRenderer(TileEntityForceField.class, new RenderMachineForceField());
|
ClientRegistry.bindTileEntitySpecialRenderer(TileEntityForceField.class, new RenderMachineForceField());
|
||||||
ClientRegistry.bindTileEntitySpecialRenderer(TileEntityMachineFENSU.class, new RenderFENSU());
|
ClientRegistry.bindTileEntitySpecialRenderer(TileEntityMachineFENSU.class, new RenderFENSU());
|
||||||
ClientRegistry.bindTileEntitySpecialRenderer(TileEntityBatterySocket.class, new RenderBatterySocket());
|
ClientRegistry.bindTileEntitySpecialRenderer(TileEntityBatterySocket.class, new RenderBatterySocket());
|
||||||
|
ClientRegistry.bindTileEntitySpecialRenderer(TileEntityBatteryREDD.class, new RenderBatteryREDD());
|
||||||
ClientRegistry.bindTileEntitySpecialRenderer(TileEntityMachineLargeTurbine.class, new RenderBigTurbine());
|
ClientRegistry.bindTileEntitySpecialRenderer(TileEntityMachineLargeTurbine.class, new RenderBigTurbine());
|
||||||
ClientRegistry.bindTileEntitySpecialRenderer(TileEntityMachineReactorBreeding.class, new RenderBreeder());
|
ClientRegistry.bindTileEntitySpecialRenderer(TileEntityMachineReactorBreeding.class, new RenderBreeder());
|
||||||
ClientRegistry.bindTileEntitySpecialRenderer(TileEntitySolarBoiler.class, new RenderSolarBoiler());
|
ClientRegistry.bindTileEntitySpecialRenderer(TileEntitySolarBoiler.class, new RenderSolarBoiler());
|
||||||
@ -429,6 +430,7 @@ public class ClientProxy extends ServerProxy {
|
|||||||
ClientRegistry.bindTileEntitySpecialRenderer(TileEntityFusionTorusStruct.class, new RenderFusionTorusMultiblock());
|
ClientRegistry.bindTileEntitySpecialRenderer(TileEntityFusionTorusStruct.class, new RenderFusionTorusMultiblock());
|
||||||
ClientRegistry.bindTileEntitySpecialRenderer(TileEntityFusionTorus.class, new RenderFusionTorus());
|
ClientRegistry.bindTileEntitySpecialRenderer(TileEntityFusionTorus.class, new RenderFusionTorus());
|
||||||
ClientRegistry.bindTileEntitySpecialRenderer(TileEntityFusionKlystron.class, new RenderFusionKlystron());
|
ClientRegistry.bindTileEntitySpecialRenderer(TileEntityFusionKlystron.class, new RenderFusionKlystron());
|
||||||
|
ClientRegistry.bindTileEntitySpecialRenderer(TileEntityFusionKlystronCreative.class, new RenderFusionKlystronCreative());
|
||||||
ClientRegistry.bindTileEntitySpecialRenderer(TileEntityFusionBreeder.class, new RenderFusionBreeder());
|
ClientRegistry.bindTileEntitySpecialRenderer(TileEntityFusionBreeder.class, new RenderFusionBreeder());
|
||||||
ClientRegistry.bindTileEntitySpecialRenderer(TileEntityFusionCollector.class, new RenderFusionCollector());
|
ClientRegistry.bindTileEntitySpecialRenderer(TileEntityFusionCollector.class, new RenderFusionCollector());
|
||||||
ClientRegistry.bindTileEntitySpecialRenderer(TileEntityFusionBoiler.class, new RenderFusionBoiler());
|
ClientRegistry.bindTileEntitySpecialRenderer(TileEntityFusionBoiler.class, new RenderFusionBoiler());
|
||||||
@ -441,6 +443,8 @@ public class ClientProxy extends ServerProxy {
|
|||||||
ClientRegistry.bindTileEntitySpecialRenderer(TileEntityVaultDoor.class, new RenderVaultDoor());
|
ClientRegistry.bindTileEntitySpecialRenderer(TileEntityVaultDoor.class, new RenderVaultDoor());
|
||||||
ClientRegistry.bindTileEntitySpecialRenderer(TileEntityBlastDoor.class, new RenderBlastDoor());
|
ClientRegistry.bindTileEntitySpecialRenderer(TileEntityBlastDoor.class, new RenderBlastDoor());
|
||||||
ClientRegistry.bindTileEntitySpecialRenderer(TileEntityDoorGeneric.class, new RenderDoorGeneric());
|
ClientRegistry.bindTileEntitySpecialRenderer(TileEntityDoorGeneric.class, new RenderDoorGeneric());
|
||||||
|
//storage
|
||||||
|
ClientRegistry.bindTileEntitySpecialRenderer(TileEntityMassStorage.class, new RenderMassStorage());
|
||||||
//NBTStructure
|
//NBTStructure
|
||||||
ClientRegistry.bindTileEntitySpecialRenderer(TileEntityWandStructure.class, new RenderWandStructure());
|
ClientRegistry.bindTileEntitySpecialRenderer(TileEntityWandStructure.class, new RenderWandStructure());
|
||||||
}
|
}
|
||||||
|
|||||||
@ -526,18 +526,6 @@ public class CraftingManager {
|
|||||||
addShapelessAuto(new ItemStack(ModBlocks.charge_semtex, 1), new Object[] { ModItems.stick_semtex, ModItems.stick_semtex, ModItems.stick_semtex, ModItems.ducttape });
|
addShapelessAuto(new ItemStack(ModBlocks.charge_semtex, 1), new Object[] { ModItems.stick_semtex, ModItems.stick_semtex, ModItems.stick_semtex, ModItems.ducttape });
|
||||||
addShapelessAuto(new ItemStack(ModBlocks.charge_c4, 1), new Object[] { ModItems.stick_c4, ModItems.stick_c4, ModItems.stick_c4, ModItems.ducttape });
|
addShapelessAuto(new ItemStack(ModBlocks.charge_c4, 1), new Object[] { ModItems.stick_c4, ModItems.stick_c4, ModItems.stick_c4, ModItems.ducttape });
|
||||||
|
|
||||||
addRecipeAuto(ItemBattery.getEmptyBattery(ModItems.battery_generic), new Object[] { " A ", "PRP", "PRP", 'A', AL.wireFine(), 'P', AL.plate(), 'R', REDSTONE.dust() });
|
|
||||||
addRecipeAuto(ItemBattery.getEmptyBattery(ModItems.battery_advanced), new Object[] { " A ", "PSP", "PLP", 'A', MINGRADE.wireFine(), 'P', CU.plate(), 'S', "sulfur", 'L', PB.dust() });
|
|
||||||
addRecipeAuto(ItemBattery.getEmptyBattery(ModItems.battery_advanced), new Object[] { " A ", "PLP", "PSP", 'A', MINGRADE.wireFine(), 'P', CU.plate(), 'S', "sulfur", 'L', PB.dust() });
|
|
||||||
addRecipeAuto(ItemBattery.getEmptyBattery(ModItems.battery_advanced), new Object[] { " A ", "PSP", "PLP", 'A', MINGRADE.wireFine(), 'P', CU.plate(), 'S', "dustSulfur", 'L', PB.dust() });
|
|
||||||
addRecipeAuto(ItemBattery.getEmptyBattery(ModItems.battery_advanced), new Object[] { " A ", "PLP", "PSP", 'A', MINGRADE.wireFine(), 'P', CU.plate(), 'S', "dustSulfur", 'L', PB.dust() });
|
|
||||||
addRecipeAuto(ItemBattery.getEmptyBattery(ModItems.battery_lithium), new Object[] { "A A", "PSP", "PLP", 'A', GOLD.wireFine(), 'P', TI.plate(), 'S', LI.dust(), 'L', CO.dust() });
|
|
||||||
addRecipeAuto(ItemBattery.getEmptyBattery(ModItems.battery_lithium), new Object[] { "A A", "PLP", "PSP", 'A', GOLD.wireFine(), 'P', TI.plate(), 'S', LI.dust(), 'L', CO.dust() });
|
|
||||||
addRecipeAuto(ItemBattery.getEmptyBattery(ModItems.battery_schrabidium), new Object[] { " A ", "PNP", "PSP", 'A', SA326.wireFine(), 'P', SA326.plate(), 'S', SA326.dust(), 'N', NP237.dust() });
|
|
||||||
addRecipeAuto(ItemBattery.getEmptyBattery(ModItems.battery_schrabidium), new Object[] { " A ", "PSP", "PNP", 'A', SA326.wireFine(), 'P', SA326.plate(), 'S', SA326.dust(), 'N', NP237.dust() });
|
|
||||||
addRecipeAuto(ItemBattery.getEmptyBattery(ModItems.battery_spark), new Object[] { "P", "S", "S", 'P', ModItems.plate_dineutronium, 'S', ModItems.powder_spark_mix });
|
|
||||||
addRecipeAuto(ItemBattery.getEmptyBattery(ModItems.battery_trixite), new Object[] { " A ", "PSP", "PTP", 'A', AL.wireFine(), 'P', AL.plate(), 'S', ModItems.powder_power, 'T', ModItems.crystal_trixite });
|
|
||||||
addRecipeAuto(ItemBattery.getEmptyBattery(ModItems.battery_trixite), new Object[] { " A ", "PTP", "PSP", 'A', AL.wireFine(), 'P', AL.plate(), 'S', ModItems.powder_power, 'T', ModItems.crystal_trixite });
|
|
||||||
addRecipeAuto(ItemBattery.getFullBattery(ModItems.energy_core), new Object[] { "PCW", "TRD", "PCW", 'P', ALLOY.plate(), 'C', ModItems.coil_advanced_alloy, 'W', ALLOY.wireFine(), 'R', ModItems.cell_tritium, 'D', ModItems.cell_deuterium, 'T', W.ingot() });
|
addRecipeAuto(ItemBattery.getFullBattery(ModItems.energy_core), new Object[] { "PCW", "TRD", "PCW", 'P', ALLOY.plate(), 'C', ModItems.coil_advanced_alloy, 'W', ALLOY.wireFine(), 'R', ModItems.cell_tritium, 'D', ModItems.cell_deuterium, 'T', W.ingot() });
|
||||||
addRecipeAuto(ItemBattery.getFullBattery(ModItems.energy_core), new Object[] { "PCW", "TDR", "PCW", 'P', ALLOY.plate(), 'C', ModItems.coil_advanced_alloy, 'W', ALLOY.wireFine(), 'R', ModItems.cell_tritium, 'D', ModItems.cell_deuterium, 'T', W.ingot() });
|
addRecipeAuto(ItemBattery.getFullBattery(ModItems.energy_core), new Object[] { "PCW", "TDR", "PCW", 'P', ALLOY.plate(), 'C', ModItems.coil_advanced_alloy, 'W', ALLOY.wireFine(), 'R', ModItems.cell_tritium, 'D', ModItems.cell_deuterium, 'T', W.ingot() });
|
||||||
addRecipeAuto(new ItemStack(ModItems.hev_battery, 4), new Object[] { " W ", "IEI", "ICI", 'W', GOLD.wireFine(), 'I', ModItems.plate_polymer, 'E', REDSTONE.dust(), 'C', CO.dust() });
|
addRecipeAuto(new ItemStack(ModItems.hev_battery, 4), new Object[] { " W ", "IEI", "ICI", 'W', GOLD.wireFine(), 'I', ModItems.plate_polymer, 'E', REDSTONE.dust(), 'C', CO.dust() });
|
||||||
@ -545,26 +533,6 @@ public class CraftingManager {
|
|||||||
addShapelessAuto(new ItemStack(ModItems.hev_battery, 1), new Object[] { ModBlocks.hev_battery });
|
addShapelessAuto(new ItemStack(ModItems.hev_battery, 1), new Object[] { ModBlocks.hev_battery });
|
||||||
addShapelessAuto(new ItemStack(ModBlocks.hev_battery, 1), new Object[] { ModItems.hev_battery });
|
addShapelessAuto(new ItemStack(ModBlocks.hev_battery, 1), new Object[] { ModItems.hev_battery });
|
||||||
|
|
||||||
addRecipeAuto(ItemBattery.getEmptyBattery(ModItems.battery_red_cell), new Object[] { "WBW", "PBP", "WBW", 'W', AL.wireFine(), 'P', AL.plate(), 'B', ItemBattery.getEmptyBattery(ModItems.battery_generic) });
|
|
||||||
addRecipeAuto(ItemBattery.getEmptyBattery(ModItems.battery_advanced_cell), new Object[] { "WBW", "PBP", "WBW", 'W', MINGRADE.wireFine(), 'P', CU.plate(), 'B', ItemBattery.getEmptyBattery(ModItems.battery_advanced) });
|
|
||||||
addRecipeAuto(ItemBattery.getEmptyBattery(ModItems.battery_lithium_cell), new Object[] { "WBW", "PBP", "WBW", 'W', GOLD.wireFine(), 'P', TI.plate(), 'B', ItemBattery.getEmptyBattery(ModItems.battery_lithium) });
|
|
||||||
addRecipeAuto(ItemBattery.getEmptyBattery(ModItems.battery_schrabidium_cell), new Object[] { "WBW", "PBP", "WBW", 'W', SA326.wireFine(), 'P', SA326.plate(), 'B', ItemBattery.getEmptyBattery(ModItems.battery_schrabidium) });
|
|
||||||
addRecipeAuto(ItemBattery.getEmptyBattery(ModItems.battery_red_cell_6), new Object[] { "BBB", "WPW", "BBB", 'W', AL.wireFine(), 'P', AL.plate(), 'B', ItemBattery.getEmptyBattery(ModItems.battery_red_cell) });
|
|
||||||
addRecipeAuto(ItemBattery.getEmptyBattery(ModItems.battery_advanced_cell_4), new Object[] { "BWB", "WPW", "BWB", 'W', MINGRADE.wireFine(), 'P', CU.plate(), 'B', ItemBattery.getEmptyBattery(ModItems.battery_advanced_cell) });
|
|
||||||
addRecipeAuto(ItemBattery.getEmptyBattery(ModItems.battery_lithium_cell_3), new Object[] { "WPW", "BBB", "WPW", 'W', GOLD.wireFine(), 'P', TI.plate(), 'B', ItemBattery.getEmptyBattery(ModItems.battery_lithium_cell) });
|
|
||||||
addRecipeAuto(ItemBattery.getEmptyBattery(ModItems.battery_schrabidium_cell_2), new Object[] { "WPW", "BWB", "WPW", 'W', SA326.wireFine(), 'P', SA326.plate(), 'B', ItemBattery.getEmptyBattery(ModItems.battery_schrabidium_cell) });
|
|
||||||
addRecipeAuto(ItemBattery.getEmptyBattery(ModItems.battery_red_cell_24), new Object[] { "BWB", "WPW", "BWB", 'W', AL.wireFine(), 'P', AL.plate(), 'B', ItemBattery.getEmptyBattery(ModItems.battery_red_cell_6) });
|
|
||||||
addRecipeAuto(ItemBattery.getEmptyBattery(ModItems.battery_advanced_cell_12), new Object[] { "WPW", "BBB", "WPW", 'W', MINGRADE.wireFine(), 'P', CU.plate(), 'B', ItemBattery.getEmptyBattery(ModItems.battery_advanced_cell_4) });
|
|
||||||
addRecipeAuto(ItemBattery.getEmptyBattery(ModItems.battery_lithium_cell_6), new Object[] { "WPW", "BWB", "WPW", 'W', GOLD.wireFine(), 'P', TI.plate(), 'B', ItemBattery.getEmptyBattery(ModItems.battery_lithium_cell_3) });
|
|
||||||
addRecipeAuto(ItemBattery.getEmptyBattery(ModItems.battery_schrabidium_cell_4), new Object[] { "WPW", "BWB", "WPW", 'W', SA326.wireFine(), 'P', SA326.plate(), 'B', ItemBattery.getEmptyBattery(ModItems.battery_schrabidium_cell_2) });
|
|
||||||
addRecipeAuto(ItemBattery.getEmptyBattery(ModItems.battery_spark_cell_6), new Object[] { "BW", "PW", "BW", 'W', MAGTUNG.wireFine(), 'P', ModItems.powder_spark_mix, 'B', ItemBattery.getEmptyBattery(ModItems.battery_spark) });
|
|
||||||
addRecipeAuto(ItemBattery.getEmptyBattery(ModItems.battery_spark_cell_25), new Object[] { "W W", "SCS", "PSP", 'W', MAGTUNG.wireFine(), 'P', ModItems.plate_dineutronium, 'S', ModItems.powder_spark_mix, 'C', ItemBattery.getEmptyBattery(ModItems.battery_spark_cell_6) });
|
|
||||||
addRecipeAuto(ItemBattery.getEmptyBattery(ModItems.battery_spark_cell_100), new Object[] { "W W", "BPB", "SSS", 'W', MAGTUNG.wireFine(), 'P', ModItems.plate_dineutronium, 'S', ModItems.powder_spark_mix, 'B', ItemBattery.getEmptyBattery(ModItems.battery_spark_cell_25) });
|
|
||||||
addRecipeAuto(ItemBattery.getEmptyBattery(ModItems.battery_spark_cell_1000), new Object[] { "PCP", "CSC", "PCP", 'S', ModItems.singularity_spark, 'P', ModItems.powder_spark_mix, 'C', ItemBattery.getEmptyBattery(ModItems.battery_spark_cell_100) });
|
|
||||||
addRecipeAuto(ItemBattery.getEmptyBattery(ModItems.battery_spark_cell_2500), new Object[] { "SCS", "CVC", "SCS", 'C', ItemBattery.getEmptyBattery(ModItems.battery_spark_cell_100), 'V', ItemBattery.getEmptyBattery(ModItems.battery_spark_cell_1000), 'S', ModItems.powder_spark_mix });
|
|
||||||
addRecipeAuto(ItemBattery.getEmptyBattery(ModItems.battery_spark_cell_10000), new Object[] { "OSO", "SVS", "OSO", 'S', ModItems.singularity_spark, 'V', ItemBattery.getEmptyBattery(ModItems.battery_spark_cell_2500), 'O', ModItems.ingot_osmiridium });
|
|
||||||
addRecipeAuto(ItemBattery.getEmptyBattery(ModItems.battery_spark_cell_power), new Object[] { "YSY", "SCS", "YSY", 'S', ModItems.singularity_spark, 'C', ItemBattery.getEmptyBattery(ModItems.battery_spark_cell_10000), 'Y', ModItems.billet_yharonite });
|
|
||||||
|
|
||||||
addShapelessAuto(ItemBattery.getFullBattery(ModItems.battery_potato), new Object[] { Items.potato, AL.wireFine(), CU.wireFine() });
|
addShapelessAuto(ItemBattery.getFullBattery(ModItems.battery_potato), new Object[] { Items.potato, AL.wireFine(), CU.wireFine() });
|
||||||
addShapelessAuto(ItemBattery.getFullBattery(ModItems.battery_potatos), new Object[] { ItemBattery.getFullBattery(ModItems.battery_potato), ModItems.turret_chip, REDSTONE.dust() });
|
addShapelessAuto(ItemBattery.getFullBattery(ModItems.battery_potatos), new Object[] { ItemBattery.getFullBattery(ModItems.battery_potato), ModItems.turret_chip, REDSTONE.dust() });
|
||||||
|
|
||||||
@ -613,6 +581,7 @@ public class CraftingManager {
|
|||||||
addShapelessAuto(new ItemStack(ModBlocks.fluid_duct_gauge), new Object[] { ModBlocks.fluid_duct_paintable, STEEL.ingot(), DictFrame.fromOne(ModItems.circuit, EnumCircuitType.BASIC) });
|
addShapelessAuto(new ItemStack(ModBlocks.fluid_duct_gauge), new Object[] { ModBlocks.fluid_duct_paintable, STEEL.ingot(), DictFrame.fromOne(ModItems.circuit, EnumCircuitType.BASIC) });
|
||||||
addRecipeAuto(new ItemStack(ModBlocks.fluid_valve, 1), new Object[] { "S", "W", 'S', Blocks.lever, 'W', ModBlocks.fluid_duct_paintable });
|
addRecipeAuto(new ItemStack(ModBlocks.fluid_valve, 1), new Object[] { "S", "W", 'S', Blocks.lever, 'W', ModBlocks.fluid_duct_paintable });
|
||||||
addRecipeAuto(new ItemStack(ModBlocks.fluid_switch, 1), new Object[] { "S", "W", 'S', REDSTONE.dust(), 'W', ModBlocks.fluid_duct_paintable });
|
addRecipeAuto(new ItemStack(ModBlocks.fluid_switch, 1), new Object[] { "S", "W", 'S', REDSTONE.dust(), 'W', ModBlocks.fluid_duct_paintable });
|
||||||
|
addRecipeAuto(new ItemStack(ModBlocks.fluid_counter_valve, 1), new Object[] { "S", "W", 'S', DictFrame.fromOne(ModItems.circuit, EnumCircuitType.CHIP), 'W', ModBlocks.fluid_switch });
|
||||||
addRecipeAuto(new ItemStack(ModBlocks.fluid_pump, 1), new Object[] { " S ", "PGP", "IMI", 'S', STEEL.shell(), 'P', STEEL.pipe(), 'G', GRAPHITE.ingot(), 'I', STEEL.ingot(), 'M', ModItems.motor });
|
addRecipeAuto(new ItemStack(ModBlocks.fluid_pump, 1), new Object[] { " S ", "PGP", "IMI", 'S', STEEL.shell(), 'P', STEEL.pipe(), 'G', GRAPHITE.ingot(), 'I', STEEL.ingot(), 'M', ModItems.motor });
|
||||||
addRecipeAuto(new ItemStack(ModBlocks.pneumatic_tube, 8), new Object[] { "CRC", 'C', CU.plateCast(), 'R', ANY_RUBBER.ingot() });
|
addRecipeAuto(new ItemStack(ModBlocks.pneumatic_tube, 8), new Object[] { "CRC", 'C', CU.plateCast(), 'R', ANY_RUBBER.ingot() });
|
||||||
addRecipeAuto(new ItemStack(ModBlocks.pneumatic_tube, 24), new Object[] { "CRC", 'C', CU.plateWelded(), 'R', ANY_RUBBER.ingot() });
|
addRecipeAuto(new ItemStack(ModBlocks.pneumatic_tube, 24), new Object[] { "CRC", 'C', CU.plateWelded(), 'R', ANY_RUBBER.ingot() });
|
||||||
@ -638,7 +607,7 @@ public class CraftingManager {
|
|||||||
addRecipeAuto(new ItemStack(ModItems.ams_core_sing, 1), new Object[] { "EAE", "ASA", "EAE", 'E', ModItems.plate_euphemium, 'A', ModItems.cell_anti_schrabidium, 'S', ModItems.singularity });
|
addRecipeAuto(new ItemStack(ModItems.ams_core_sing, 1), new Object[] { "EAE", "ASA", "EAE", 'E', ModItems.plate_euphemium, 'A', ModItems.cell_anti_schrabidium, 'S', ModItems.singularity });
|
||||||
addRecipeAuto(new ItemStack(ModItems.ams_core_wormhole, 1), new Object[] { "DPD", "PSP", "DPD", 'D', ModItems.plate_dineutronium, 'P', ModItems.powder_spark_mix, 'S', ModItems.singularity });
|
addRecipeAuto(new ItemStack(ModItems.ams_core_wormhole, 1), new Object[] { "DPD", "PSP", "DPD", 'D', ModItems.plate_dineutronium, 'P', ModItems.powder_spark_mix, 'S', ModItems.singularity });
|
||||||
addRecipeAuto(new ItemStack(ModItems.ams_core_eyeofharmony, 1), new Object[] { "ALA", "LSL", "ALA", 'A', ModItems.plate_dalekanium, 'L', new ItemStack(ModItems.fluid_barrel_full, 1, Fluids.LAVA.getID()), 'S', ModItems.black_hole });
|
addRecipeAuto(new ItemStack(ModItems.ams_core_eyeofharmony, 1), new Object[] { "ALA", "LSL", "ALA", 'A', ModItems.plate_dalekanium, 'L', new ItemStack(ModItems.fluid_barrel_full, 1, Fluids.LAVA.getID()), 'S', ModItems.black_hole });
|
||||||
addRecipeAuto(new ItemStack(ModItems.ams_core_thingy), new Object[] { "NSN", "NGN", "G G", 'N', GOLD.nugget(), 'G', GOLD.ingot(), 'S', ModItems.battery_spark_cell_10000 });
|
addRecipeAuto(new ItemStack(ModItems.ams_core_thingy), new Object[] { "NSN", "NGN", "G G", 'N', GOLD.nugget(), 'G', GOLD.ingot(), 'S', new ItemStack(ModItems.battery_pack, 1, EnumBatteryPack.BATTERY_QUANTUM.ordinal()) });
|
||||||
addRecipeAuto(new ItemStack(ModItems.photo_panel), new Object[] { " G ", "IPI", " C ", 'G', KEY_ANYPANE, 'I', ModItems.plate_polymer, 'P', NETHERQUARTZ.dust(), 'C', DictFrame.fromOne(ModItems.circuit, EnumCircuitType.PCB) });
|
addRecipeAuto(new ItemStack(ModItems.photo_panel), new Object[] { " G ", "IPI", " C ", 'G', KEY_ANYPANE, 'I', ModItems.plate_polymer, 'P', NETHERQUARTZ.dust(), 'C', DictFrame.fromOne(ModItems.circuit, EnumCircuitType.PCB) });
|
||||||
addRecipeAuto(new ItemStack(ModBlocks.machine_satlinker), new Object[] { "PSP", "SCS", "PSP", 'P', STEEL.plate(), 'S', STAR.ingot(), 'C', ModItems.sat_chip });
|
addRecipeAuto(new ItemStack(ModBlocks.machine_satlinker), new Object[] { "PSP", "SCS", "PSP", 'P', STEEL.plate(), 'S', STAR.ingot(), 'C', ModItems.sat_chip });
|
||||||
addRecipeAuto(new ItemStack(ModBlocks.machine_keyforge), new Object[] { "PCP", "WSW", "WSW", 'P', STEEL.plate(), 'S', W.ingot(), 'C', ModItems.padlock, 'W', KEY_PLANKS });
|
addRecipeAuto(new ItemStack(ModBlocks.machine_keyforge), new Object[] { "PCP", "WSW", "WSW", 'P', STEEL.plate(), 'S', W.ingot(), 'C', ModItems.padlock, 'W', KEY_PLANKS });
|
||||||
|
|||||||
@ -664,6 +664,7 @@ public class MainRegistry {
|
|||||||
event.registerServerCommand(new CommandReloadServer());
|
event.registerServerCommand(new CommandReloadServer());
|
||||||
event.registerServerCommand(new CommandLocate());
|
event.registerServerCommand(new CommandLocate());
|
||||||
event.registerServerCommand(new CommandCustomize());
|
event.registerServerCommand(new CommandCustomize());
|
||||||
|
event.registerServerCommand(new CommandReapNetworks());
|
||||||
ArcFurnaceRecipes.registerFurnaceSmeltables(); // because we have to wait for other mods to take their merry ass time to register recipes
|
ArcFurnaceRecipes.registerFurnaceSmeltables(); // because we have to wait for other mods to take their merry ass time to register recipes
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -59,6 +59,7 @@ import com.hbm.tileentity.bomb.TileEntityNukeCustom;
|
|||||||
import com.hbm.tileentity.bomb.TileEntityNukeCustom.CustomNukeEntry;
|
import com.hbm.tileentity.bomb.TileEntityNukeCustom.CustomNukeEntry;
|
||||||
import com.hbm.tileentity.bomb.TileEntityNukeCustom.EnumEntryType;
|
import com.hbm.tileentity.bomb.TileEntityNukeCustom.EnumEntryType;
|
||||||
import com.hbm.util.*;
|
import com.hbm.util.*;
|
||||||
|
import com.hbm.util.Tuple;
|
||||||
import com.hbm.util.ArmorRegistry.HazardClass;
|
import com.hbm.util.ArmorRegistry.HazardClass;
|
||||||
import com.hbm.util.i18n.I18nUtil;
|
import com.hbm.util.i18n.I18nUtil;
|
||||||
import com.hbm.wiaj.GuiWorldInAJar;
|
import com.hbm.wiaj.GuiWorldInAJar;
|
||||||
@ -395,6 +396,26 @@ public class ModEventHandlerClient {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private List<Tuple.Pair<Float, Integer>> getBars(ItemStack stack, EntityPlayer player) {
|
||||||
|
|
||||||
|
List<Tuple.Pair<Float, Integer>> bars = new ArrayList<>();
|
||||||
|
|
||||||
|
if(stack.getItem() instanceof ArmorFSBPowered && ArmorFSBPowered.hasFSBArmorIgnoreCharge(player)) {
|
||||||
|
float charge = 1F - (float) ((ArmorFSBPowered) stack.getItem()).getDurabilityForDisplay(stack);
|
||||||
|
|
||||||
|
bars.add(new Tuple.Pair<Float, Integer>(charge, 0x00FF00));
|
||||||
|
}
|
||||||
|
|
||||||
|
if(stack.getItem() instanceof JetpackFueledBase) {
|
||||||
|
JetpackFueledBase jetpack = (JetpackFueledBase) stack.getItem();
|
||||||
|
float fuel = (float) JetpackFueledBase.getFuel(stack) / jetpack.maxFuel;
|
||||||
|
|
||||||
|
bars.add(new Tuple.Pair<Float, Integer>(fuel, jetpack.fuel.getColor()));
|
||||||
|
}
|
||||||
|
|
||||||
|
return bars;
|
||||||
|
}
|
||||||
|
|
||||||
@SubscribeEvent(receiveCanceled = true, priority = EventPriority.LOW)
|
@SubscribeEvent(receiveCanceled = true, priority = EventPriority.LOW)
|
||||||
public void onHUDRenderBar(RenderGameOverlayEvent.Post event) {
|
public void onHUDRenderBar(RenderGameOverlayEvent.Post event) {
|
||||||
|
|
||||||
@ -405,6 +426,32 @@ public class ModEventHandlerClient {
|
|||||||
|
|
||||||
if(event.type == event.type.ARMOR) {
|
if(event.type == event.type.ARMOR) {
|
||||||
|
|
||||||
|
List<List<Tuple.Pair<Float, Integer>>> barsList = new ArrayList<>();
|
||||||
|
|
||||||
|
for (int i = 0; i < 4; i++) {
|
||||||
|
|
||||||
|
barsList.add(new ArrayList<>());
|
||||||
|
|
||||||
|
ItemStack stack = player.inventory.armorInventory[i];
|
||||||
|
|
||||||
|
if(stack == null)
|
||||||
|
continue;
|
||||||
|
|
||||||
|
barsList.get(i).addAll(getBars(stack, player));
|
||||||
|
|
||||||
|
if (!(ArmorModHandler.hasMods(stack)))
|
||||||
|
continue;
|
||||||
|
|
||||||
|
for (ItemStack mod : ArmorModHandler.pryMods(stack)) {
|
||||||
|
if (mod == null) continue;
|
||||||
|
|
||||||
|
barsList.get(i).addAll(getBars(mod, player));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
GL11.glDisable(GL11.GL_TEXTURE_2D);
|
||||||
|
tess.startDrawingQuads();
|
||||||
|
|
||||||
if(ForgeHooks.getTotalArmorValue(player) == 0) {
|
if(ForgeHooks.getTotalArmorValue(player) == 0) {
|
||||||
GuiIngameForge.left_height -= 10;
|
GuiIngameForge.left_height -= 10;
|
||||||
}
|
}
|
||||||
@ -413,69 +460,55 @@ public class ModEventHandlerClient {
|
|||||||
int height = event.resolution.getScaledHeight();
|
int height = event.resolution.getScaledHeight();
|
||||||
int left = width / 2 - 91;
|
int left = width / 2 - 91;
|
||||||
|
|
||||||
if(ArmorFSB.hasFSBArmorIgnoreCharge(player)) {
|
for (List<Tuple.Pair<Float, Integer>> bars : barsList) {
|
||||||
ArmorFSB chestplate = (ArmorFSB) player.inventory.armorInventory[2].getItem();
|
|
||||||
boolean noHelmet = chestplate.noHelmet;
|
|
||||||
|
|
||||||
GL11.glDisable(GL11.GL_TEXTURE_2D);
|
if (bars.isEmpty())
|
||||||
tess.startDrawingQuads();
|
continue;
|
||||||
|
|
||||||
for(int i = 0; i < (noHelmet ? 3 : 4); i++) {
|
int top = height - GuiIngameForge.left_height + 7;
|
||||||
|
|
||||||
int top = height - GuiIngameForge.left_height + 7;
|
for (int i = 0; i < bars.size(); i++) {
|
||||||
|
|
||||||
ItemStack stack = player.inventory.armorInventory[i];
|
float val = bars.get(i).key;
|
||||||
|
int hstart, hend;
|
||||||
|
|
||||||
if(!(stack != null && stack.getItem() instanceof ArmorFSBPowered))
|
if (i == 0) {
|
||||||
break;
|
hstart = left;
|
||||||
|
hend = hstart + (bars.size() == 1 ? 81 : 40);
|
||||||
|
} else {
|
||||||
|
int bl = (int) Math.ceil(40F / (bars.size() - 1));
|
||||||
|
// :(
|
||||||
|
hstart = left + 41 + bl * (i - 1);
|
||||||
|
hend = i == bars.size() - 1 ? left + 81 : hstart + bl;
|
||||||
|
|
||||||
float tot = 1F - (float) ((ArmorFSBPowered) stack.getItem()).getDurabilityForDisplay(stack);
|
if (i != 1) hstart += 1;
|
||||||
|
}
|
||||||
|
|
||||||
tess.setColorOpaque_F(0.25F, 0.25F, 0.25F);
|
tess.setColorOpaque_F(0.25F, 0.25F, 0.25F);
|
||||||
tess.addVertex(left - 0.5, top - 0.5, 0);
|
tess.addVertex(hstart, top - 1, 0);
|
||||||
tess.addVertex(left - 0.5, top + 1.5, 0);
|
tess.addVertex(hstart, top + 2, 0);
|
||||||
tess.addVertex(left + 81.5, top + 1.5, 0);
|
tess.addVertex(hend, top + 2, 0);
|
||||||
tess.addVertex(left + 81.5, top - 0.5, 0);
|
tess.addVertex(hend, top - 1, 0);
|
||||||
|
|
||||||
tess.setColorOpaque_F(1F - tot, tot, 0F);
|
float valx = hstart + (hend - hstart - 1) * val;
|
||||||
tess.addVertex(left, top, 0);
|
|
||||||
tess.addVertex(left, top + 1, 0);
|
|
||||||
tess.addVertex(left + 81 * tot, top + 1, 0);
|
|
||||||
tess.addVertex(left + 81 * tot, top, 0);
|
|
||||||
|
|
||||||
GuiIngameForge.left_height += 3;
|
int color = bars.get(i).value;
|
||||||
|
float r = ((color >> 16) & 0xFF) / 255F;
|
||||||
|
float g = ((color >> 8) & 0xFF) / 255F;
|
||||||
|
float b = (color & 0xFF) / 255F;
|
||||||
|
|
||||||
|
tess.setColorOpaque_F(r, g, b);
|
||||||
|
tess.addVertex(hstart+1, top, 0);
|
||||||
|
tess.addVertex(hstart+1, top + 1, 0);
|
||||||
|
tess.addVertex(valx, top + 1, 0);
|
||||||
|
tess.addVertex(valx, top, 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
tess.draw();
|
GuiIngameForge.left_height += 4;
|
||||||
|
|
||||||
GL11.glEnable(GL11.GL_TEXTURE_2D);
|
|
||||||
|
|
||||||
} else if(player.inventory.armorInventory[2] != null && player.inventory.armorInventory[2].getItem() instanceof JetpackFueledBase) {
|
|
||||||
|
|
||||||
ItemStack stack = player.inventory.armorInventory[2];
|
|
||||||
|
|
||||||
float tot = (float) ((JetpackFueledBase) stack.getItem()).getFuel(stack) / (float) ((JetpackFueledBase) stack.getItem()).getMaxFill(stack);
|
|
||||||
|
|
||||||
int top = height - GuiIngameForge.left_height + 3;
|
|
||||||
|
|
||||||
GL11.glDisable(GL11.GL_TEXTURE_2D);
|
|
||||||
tess.startDrawingQuads();
|
|
||||||
tess.setColorOpaque_F(0.25F, 0.25F, 0.25F);
|
|
||||||
tess.addVertex(left - 0.5, top - 0.5, 0);
|
|
||||||
tess.addVertex(left - 0.5, top + 4.5, 0);
|
|
||||||
tess.addVertex(left + 81.5, top + 4.5, 0);
|
|
||||||
tess.addVertex(left + 81.5, top - 0.5, 0);
|
|
||||||
|
|
||||||
tess.setColorOpaque_F(1F - tot, tot, 0F);
|
|
||||||
tess.addVertex(left, top, 0);
|
|
||||||
tess.addVertex(left, top + 4, 0);
|
|
||||||
tess.addVertex(left + 81 * tot, top + 4, 0);
|
|
||||||
tess.addVertex(left + 81 * tot, top, 0);
|
|
||||||
tess.draw();
|
|
||||||
|
|
||||||
GL11.glEnable(GL11.GL_TEXTURE_2D);
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
tess.draw();
|
||||||
|
GL11.glEnable(GL11.GL_TEXTURE_2D);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -271,6 +271,7 @@ public class ResourceManager {
|
|||||||
|
|
||||||
//FENSU
|
//FENSU
|
||||||
public static final IModelCustom battery_socket = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/machines/battery.obj")).asVBO();
|
public static final IModelCustom battery_socket = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/machines/battery.obj")).asVBO();
|
||||||
|
public static final IModelCustom battery_redd = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/machines/fensu2.obj")).asVBO();
|
||||||
public static final IModelCustom fensu = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/machines/fensu.obj")).asVBO();
|
public static final IModelCustom fensu = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/machines/fensu.obj")).asVBO();
|
||||||
|
|
||||||
//Radar
|
//Radar
|
||||||
@ -719,6 +720,7 @@ public class ResourceManager {
|
|||||||
public static final ResourceLocation fusion_plasma_glow_tex = new ResourceLocation(RefStrings.MODID, "textures/models/fusion/plasma_glow.png");
|
public static final ResourceLocation fusion_plasma_glow_tex = new ResourceLocation(RefStrings.MODID, "textures/models/fusion/plasma_glow.png");
|
||||||
public static final ResourceLocation fusion_plasma_sparkle_tex = new ResourceLocation(RefStrings.MODID, "textures/models/fusion/plasma_sparkle.png");
|
public static final ResourceLocation fusion_plasma_sparkle_tex = new ResourceLocation(RefStrings.MODID, "textures/models/fusion/plasma_sparkle.png");
|
||||||
public static final ResourceLocation fusion_klystron_tex = new ResourceLocation(RefStrings.MODID, "textures/models/fusion/klystron.png");
|
public static final ResourceLocation fusion_klystron_tex = new ResourceLocation(RefStrings.MODID, "textures/models/fusion/klystron.png");
|
||||||
|
public static final ResourceLocation fusion_klystron_creative_tex = new ResourceLocation(RefStrings.MODID, "textures/models/fusion/klystron_creative.png");
|
||||||
public static final ResourceLocation fusion_breeder_tex = new ResourceLocation(RefStrings.MODID, "textures/models/fusion/breeder.png");
|
public static final ResourceLocation fusion_breeder_tex = new ResourceLocation(RefStrings.MODID, "textures/models/fusion/breeder.png");
|
||||||
public static final ResourceLocation fusion_collector_tex = new ResourceLocation(RefStrings.MODID, "textures/models/fusion/collector.png");
|
public static final ResourceLocation fusion_collector_tex = new ResourceLocation(RefStrings.MODID, "textures/models/fusion/collector.png");
|
||||||
public static final ResourceLocation fusion_boiler_tex = new ResourceLocation(RefStrings.MODID, "textures/models/fusion/boiler.png");
|
public static final ResourceLocation fusion_boiler_tex = new ResourceLocation(RefStrings.MODID, "textures/models/fusion/boiler.png");
|
||||||
@ -739,6 +741,7 @@ public class ResourceManager {
|
|||||||
|
|
||||||
//FENSU
|
//FENSU
|
||||||
public static final ResourceLocation battery_socket_tex = new ResourceLocation(RefStrings.MODID, "textures/models/machines/battery_socket.png");
|
public static final ResourceLocation battery_socket_tex = new ResourceLocation(RefStrings.MODID, "textures/models/machines/battery_socket.png");
|
||||||
|
public static final ResourceLocation battery_redd_tex = new ResourceLocation(RefStrings.MODID, "textures/models/machines/fensu2.png");
|
||||||
public static final ResourceLocation fensu_tex = new ResourceLocation(RefStrings.MODID, "textures/models/machines/fensu.png");
|
public static final ResourceLocation fensu_tex = new ResourceLocation(RefStrings.MODID, "textures/models/machines/fensu.png");
|
||||||
|
|
||||||
//Radar
|
//Radar
|
||||||
|
|||||||
264
src/main/java/com/hbm/render/tileentity/RenderBatteryREDD.java
Normal file
@ -0,0 +1,264 @@
|
|||||||
|
package com.hbm.render.tileentity;
|
||||||
|
|
||||||
|
import java.util.Random;
|
||||||
|
|
||||||
|
import org.lwjgl.opengl.GL11;
|
||||||
|
|
||||||
|
import com.hbm.blocks.ModBlocks;
|
||||||
|
import com.hbm.main.MainRegistry;
|
||||||
|
import com.hbm.main.ResourceManager;
|
||||||
|
import com.hbm.render.item.ItemRenderBase;
|
||||||
|
import com.hbm.render.util.BeamPronter;
|
||||||
|
import com.hbm.render.util.BeamPronter.EnumBeamType;
|
||||||
|
import com.hbm.render.util.BeamPronter.EnumWaveType;
|
||||||
|
import com.hbm.tileentity.machine.storage.TileEntityBatteryREDD;
|
||||||
|
import com.hbm.util.BobMathUtil;
|
||||||
|
import com.hbm.util.Clock;
|
||||||
|
import com.hbm.util.Vec3NT;
|
||||||
|
|
||||||
|
import net.minecraft.client.renderer.OpenGlHelper;
|
||||||
|
import net.minecraft.client.renderer.Tessellator;
|
||||||
|
import net.minecraft.client.renderer.tileentity.TileEntitySpecialRenderer;
|
||||||
|
import net.minecraft.item.Item;
|
||||||
|
import net.minecraft.tileentity.TileEntity;
|
||||||
|
import net.minecraft.util.Vec3;
|
||||||
|
import net.minecraftforge.client.IItemRenderer;
|
||||||
|
|
||||||
|
public class RenderBatteryREDD extends TileEntitySpecialRenderer 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() - 10) {
|
||||||
|
case 2: GL11.glRotatef(270, 0F, 1F, 0F); break;
|
||||||
|
case 4: GL11.glRotatef(0, 0F, 1F, 0F); break;
|
||||||
|
case 3: GL11.glRotatef(90, 0F, 1F, 0F); break;
|
||||||
|
case 5: GL11.glRotatef(180, 0F, 1F, 0F); break;
|
||||||
|
}
|
||||||
|
|
||||||
|
GL11.glShadeModel(GL11.GL_SMOOTH);
|
||||||
|
|
||||||
|
bindTexture(ResourceManager.battery_redd_tex);
|
||||||
|
ResourceManager.battery_redd.renderPart("Base");
|
||||||
|
|
||||||
|
GL11.glPushMatrix();
|
||||||
|
|
||||||
|
GL11.glTranslated(0, 5.5, 0);
|
||||||
|
TileEntityBatteryREDD redd = (TileEntityBatteryREDD) tile;
|
||||||
|
float speed = redd.getSpeed();
|
||||||
|
double rot = redd.prevRotation + (redd.rotation - redd.prevRotation) * interp;
|
||||||
|
GL11.glRotated(rot, 1, 0, 0);
|
||||||
|
GL11.glTranslated(0, -5.5, 0);
|
||||||
|
|
||||||
|
ResourceManager.battery_redd.renderPart("Wheel");
|
||||||
|
|
||||||
|
RenderArcFurnace.fullbright(true);
|
||||||
|
ResourceManager.battery_redd.renderPart("Lights");
|
||||||
|
|
||||||
|
RenderArcFurnace.fullbright(false);
|
||||||
|
|
||||||
|
GL11.glPushMatrix();
|
||||||
|
GL11.glTranslated(0, 5.5, 0);
|
||||||
|
|
||||||
|
OpenGlHelper.setLightmapTextureCoords(OpenGlHelper.lightmapTexUnit, 240F, 240F);
|
||||||
|
GL11.glDisable(GL11.GL_CULL_FACE);
|
||||||
|
GL11.glDisable(GL11.GL_TEXTURE_2D);
|
||||||
|
|
||||||
|
GL11.glDisable(GL11.GL_LIGHTING);
|
||||||
|
GL11.glPushAttrib(GL11.GL_LIGHTING_BIT);
|
||||||
|
GL11.glDisable(GL11.GL_ALPHA_TEST);
|
||||||
|
GL11.glEnable(GL11.GL_BLEND);
|
||||||
|
GL11.glBlendFunc(GL11.GL_SRC_ALPHA, GL11.GL_ONE);
|
||||||
|
GL11.glDepthMask(false);
|
||||||
|
|
||||||
|
Vec3NT vec = new Vec3NT(0, 0, 4);
|
||||||
|
|
||||||
|
Tessellator tess = Tessellator.instance;
|
||||||
|
tess.startDrawingQuads();
|
||||||
|
|
||||||
|
double len = 4.25D;
|
||||||
|
double width = 0.125D;
|
||||||
|
double span = speed * 0.75;
|
||||||
|
|
||||||
|
if(span > 0) for(int j = -1; j <= 1; j += 2) {
|
||||||
|
for(int i = 0; i < 8; i++) {
|
||||||
|
double xOffset = 0.8125 * j;
|
||||||
|
vec.setComponents(0, 1, 0);
|
||||||
|
vec.rotateAroundXDeg(i * 45D);
|
||||||
|
|
||||||
|
tess.setColorRGBA_F(1F, 1F, 0F, 0.75F);
|
||||||
|
tess.addVertex(xOffset, vec.yCoord * len - vec.yCoord * width, vec.zCoord * len - vec.zCoord * width);
|
||||||
|
tess.addVertex(xOffset, vec.yCoord * len + vec.yCoord * width, vec.zCoord * len + vec.zCoord * width);
|
||||||
|
vec.rotateAroundXDeg(span);
|
||||||
|
tess.setColorRGBA_F(1F, 1F, 0F, 0.5F);
|
||||||
|
tess.addVertex(xOffset, vec.yCoord * len + vec.yCoord * width, vec.zCoord * len + vec.zCoord * width);
|
||||||
|
tess.addVertex(xOffset, vec.yCoord * len - vec.yCoord * width, vec.zCoord * len - vec.zCoord * width);
|
||||||
|
|
||||||
|
tess.setColorRGBA_F(1F, 1F, 0F, 0.5F);
|
||||||
|
tess.addVertex(xOffset, vec.yCoord * len - vec.yCoord * width, vec.zCoord * len - vec.zCoord * width);
|
||||||
|
tess.addVertex(xOffset, vec.yCoord * len + vec.yCoord * width, vec.zCoord * len + vec.zCoord * width);
|
||||||
|
vec.rotateAroundXDeg(span);
|
||||||
|
tess.setColorRGBA_F(1F, 1F, 0F, 0.25F);
|
||||||
|
tess.addVertex(xOffset, vec.yCoord * len + vec.yCoord * width, vec.zCoord * len + vec.zCoord * width);
|
||||||
|
tess.addVertex(xOffset, vec.yCoord * len - vec.yCoord * width, vec.zCoord * len - vec.zCoord * width);
|
||||||
|
|
||||||
|
tess.setColorRGBA_F(1F, 1F, 0F, 0.25F);
|
||||||
|
tess.addVertex(xOffset, vec.yCoord * len - vec.yCoord * width, vec.zCoord * len - vec.zCoord * width);
|
||||||
|
tess.addVertex(xOffset, vec.yCoord * len + vec.yCoord * width, vec.zCoord * len + vec.zCoord * width);
|
||||||
|
vec.rotateAroundXDeg(span);
|
||||||
|
tess.setColorRGBA_F(1F, 1F, 0F, 0F);
|
||||||
|
tess.addVertex(xOffset, vec.yCoord * len + vec.yCoord * width, vec.zCoord * len + vec.zCoord * width);
|
||||||
|
tess.addVertex(xOffset, vec.yCoord * len - vec.yCoord * width, vec.zCoord * len - vec.zCoord * width);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
tess.draw();
|
||||||
|
|
||||||
|
GL11.glEnable(GL11.GL_LIGHTING);
|
||||||
|
GL11.glEnable(GL11.GL_ALPHA_TEST);
|
||||||
|
GL11.glDisable(GL11.GL_BLEND);
|
||||||
|
GL11.glDepthMask(true);
|
||||||
|
GL11.glPopAttrib();
|
||||||
|
GL11.glEnable(GL11.GL_CULL_FACE);
|
||||||
|
GL11.glEnable(GL11.GL_TEXTURE_2D);
|
||||||
|
|
||||||
|
GL11.glPopMatrix();
|
||||||
|
|
||||||
|
renderSparkle(tile);
|
||||||
|
|
||||||
|
GL11.glPopMatrix();
|
||||||
|
|
||||||
|
if(speed > 0) renderZaps(tile);
|
||||||
|
|
||||||
|
GL11.glShadeModel(GL11.GL_FLAT);
|
||||||
|
|
||||||
|
GL11.glPopMatrix();
|
||||||
|
}
|
||||||
|
|
||||||
|
protected void renderSparkle(TileEntity tile) {
|
||||||
|
TileEntityBatteryREDD redd = (TileEntityBatteryREDD) tile;
|
||||||
|
|
||||||
|
long time = Clock.get_ms();
|
||||||
|
float alpha = 0.45F + (float) (Math.sin(time / 1000D) * 0.15F);
|
||||||
|
float alphaMult = redd.getSpeed() / 15F;
|
||||||
|
float r = 1.0F;
|
||||||
|
float g = 0.25F;
|
||||||
|
float b = 0.75F;
|
||||||
|
|
||||||
|
double mainOsc = BobMathUtil.sps(time / 1000D) % 1D;
|
||||||
|
double sparkleSpin = time / 250D * -1 % 1D;
|
||||||
|
double sparkleOsc = Math.sin(time / 1000D) * 0.5D % 1D;
|
||||||
|
|
||||||
|
OpenGlHelper.setLightmapTextureCoords(OpenGlHelper.lightmapTexUnit, 240F, 240F);
|
||||||
|
GL11.glDisable(GL11.GL_CULL_FACE);
|
||||||
|
|
||||||
|
GL11.glDisable(GL11.GL_LIGHTING);
|
||||||
|
GL11.glPushAttrib(GL11.GL_LIGHTING_BIT);
|
||||||
|
GL11.glDisable(GL11.GL_ALPHA_TEST);
|
||||||
|
GL11.glEnable(GL11.GL_BLEND);
|
||||||
|
GL11.glBlendFunc(GL11.GL_SRC_ALPHA, GL11.GL_ONE);
|
||||||
|
GL11.glDepthMask(false);
|
||||||
|
|
||||||
|
GL11.glColor4f(r, g, b, alpha * alphaMult);
|
||||||
|
|
||||||
|
GL11.glMatrixMode(GL11.GL_TEXTURE);
|
||||||
|
GL11.glLoadIdentity();
|
||||||
|
bindTexture(ResourceManager.fusion_plasma_tex);
|
||||||
|
GL11.glTranslated(0, mainOsc, 0);
|
||||||
|
ResourceManager.battery_redd.renderPart("Plasma");
|
||||||
|
GL11.glMatrixMode(GL11.GL_TEXTURE);
|
||||||
|
GL11.glLoadIdentity();
|
||||||
|
GL11.glMatrixMode(GL11.GL_MODELVIEW);
|
||||||
|
|
||||||
|
// cost-cutting measure, don't render extra layers from more than 100m away
|
||||||
|
if(MainRegistry.proxy.me().getDistanceSq(tile.xCoord + 0.5, tile.yCoord + 2.5, tile.zCoord + 0.5) < 100 * 100) {
|
||||||
|
|
||||||
|
GL11.glColor4f(r * 2, g * 2, b * 2, 0.75F * alphaMult);
|
||||||
|
|
||||||
|
GL11.glMatrixMode(GL11.GL_TEXTURE);
|
||||||
|
GL11.glLoadIdentity();
|
||||||
|
bindTexture(ResourceManager.fusion_plasma_sparkle_tex);
|
||||||
|
GL11.glTranslated(sparkleSpin, sparkleOsc, 0);
|
||||||
|
ResourceManager.battery_redd.renderPart("Plasma");
|
||||||
|
GL11.glMatrixMode(GL11.GL_TEXTURE);
|
||||||
|
GL11.glLoadIdentity();
|
||||||
|
GL11.glMatrixMode(GL11.GL_MODELVIEW);
|
||||||
|
}
|
||||||
|
|
||||||
|
GL11.glEnable(GL11.GL_LIGHTING);
|
||||||
|
GL11.glEnable(GL11.GL_ALPHA_TEST);
|
||||||
|
GL11.glDisable(GL11.GL_BLEND);
|
||||||
|
GL11.glDepthMask(true);
|
||||||
|
GL11.glPopAttrib();
|
||||||
|
|
||||||
|
GL11.glEnable(GL11.GL_CULL_FACE);
|
||||||
|
}
|
||||||
|
|
||||||
|
protected void renderZaps(TileEntity tile) {
|
||||||
|
|
||||||
|
Random rand = new Random(tile.getWorldObj().getTotalWorldTime() / 5);
|
||||||
|
rand.nextBoolean();
|
||||||
|
|
||||||
|
if(rand.nextBoolean()) {
|
||||||
|
GL11.glPushMatrix();
|
||||||
|
GL11.glTranslated(3.125, 5.5, 0);
|
||||||
|
BeamPronter.prontBeam(Vec3.createVectorHelper(-1.375, -2.625, 3.75), EnumWaveType.RANDOM, EnumBeamType.SOLID, 0x404040, 0x002040, (int)(System.currentTimeMillis() % 1000) / 50, 15, 0.25F, 3, 0.0625F);
|
||||||
|
BeamPronter.prontBeam(Vec3.createVectorHelper(-1.375, -2.625, 3.75), EnumWaveType.RANDOM, EnumBeamType.SOLID, 0x404040, 0x002040, (int)(System.currentTimeMillis() % 1000) / 50, 1, 0, 3, 0.0625F);
|
||||||
|
GL11.glPopMatrix();
|
||||||
|
}
|
||||||
|
|
||||||
|
if(rand.nextBoolean()) {
|
||||||
|
GL11.glPushMatrix();
|
||||||
|
GL11.glTranslated(-3.125, 5.5, 0);
|
||||||
|
BeamPronter.prontBeam(Vec3.createVectorHelper(1.375, -2.625, 3.75), EnumWaveType.RANDOM, EnumBeamType.SOLID, 0x404040, 0x002040, (int)(System.currentTimeMillis() % 1000) / 50, 15, 0.25F, 3, 0.0625F);
|
||||||
|
BeamPronter.prontBeam(Vec3.createVectorHelper(1.375, -2.625, 3.75), EnumWaveType.RANDOM, EnumBeamType.SOLID, 0x404040, 0x002040, (int)(System.currentTimeMillis() % 1000) / 50, 1, 0, 3, 0.0625F);
|
||||||
|
GL11.glPopMatrix();
|
||||||
|
}
|
||||||
|
|
||||||
|
if(rand.nextBoolean()) {
|
||||||
|
GL11.glPushMatrix();
|
||||||
|
GL11.glTranslated(3.125, 5.5, 0);
|
||||||
|
BeamPronter.prontBeam(Vec3.createVectorHelper(-1.375, -2.625, -3.75), EnumWaveType.RANDOM, EnumBeamType.SOLID, 0x404040, 0x002040, (int)(System.currentTimeMillis() % 1000) / 50, 15, 0.25F, 3, 0.0625F);
|
||||||
|
BeamPronter.prontBeam(Vec3.createVectorHelper(-1.375, -2.625, -3.75), EnumWaveType.RANDOM, EnumBeamType.SOLID, 0x404040, 0x002040, (int)(System.currentTimeMillis() % 1000) / 50, 1, 0, 3, 0.0625F);
|
||||||
|
GL11.glPopMatrix();
|
||||||
|
}
|
||||||
|
|
||||||
|
if(rand.nextBoolean()) {
|
||||||
|
GL11.glPushMatrix();
|
||||||
|
GL11.glTranslated(-3.125, 5.5, 0);
|
||||||
|
BeamPronter.prontBeam(Vec3.createVectorHelper(1.375, -2.625, -3.75), EnumWaveType.RANDOM, EnumBeamType.SOLID, 0x404040, 0x002040, (int)(System.currentTimeMillis() % 1000) / 50, 15, 0.25F, 3, 0.0625F);
|
||||||
|
BeamPronter.prontBeam(Vec3.createVectorHelper(1.375, -2.625, -3.75), EnumWaveType.RANDOM, EnumBeamType.SOLID, 0x404040, 0x002040, (int)(System.currentTimeMillis() % 1000) / 50, 1, 0, 3, 0.0625F);
|
||||||
|
GL11.glPopMatrix();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public Item getItemForRenderer() {
|
||||||
|
return Item.getItemFromBlock(ModBlocks.machine_battery_redd);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public IItemRenderer getRenderer() {
|
||||||
|
return new ItemRenderBase() {
|
||||||
|
public void renderInventory() {
|
||||||
|
GL11.glTranslated(0, -3, 0);
|
||||||
|
GL11.glScaled(2.5, 2.5, 2.5);
|
||||||
|
}
|
||||||
|
public void renderCommon() {
|
||||||
|
GL11.glRotated(-90, 0, 1, 0);
|
||||||
|
GL11.glScaled(0.5, 0.5, 0.5);
|
||||||
|
GL11.glShadeModel(GL11.GL_SMOOTH);
|
||||||
|
bindTexture(ResourceManager.battery_redd_tex);
|
||||||
|
ResourceManager.battery_redd.renderPart("Base");
|
||||||
|
ResourceManager.battery_redd.renderPart("Wheel");
|
||||||
|
GL11.glDisable(GL11.GL_LIGHTING);
|
||||||
|
ResourceManager.battery_redd.renderPart("Lights");
|
||||||
|
GL11.glEnable(GL11.GL_LIGHTING);
|
||||||
|
GL11.glShadeModel(GL11.GL_FLAT);
|
||||||
|
}};
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
@ -0,0 +1,79 @@
|
|||||||
|
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.machine.fusion.TileEntityFusionKlystronCreative;
|
||||||
|
|
||||||
|
import net.minecraft.client.renderer.tileentity.TileEntitySpecialRenderer;
|
||||||
|
import net.minecraft.item.Item;
|
||||||
|
import net.minecraft.tileentity.TileEntity;
|
||||||
|
import net.minecraftforge.client.IItemRenderer;
|
||||||
|
|
||||||
|
public class RenderFusionKlystronCreative extends TileEntitySpecialRenderer 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(90, 0F, 1F, 0F); break;
|
||||||
|
case 4: GL11.glRotatef(180, 0F, 1F, 0F); break;
|
||||||
|
case 3: GL11.glRotatef(270, 0F, 1F, 0F); break;
|
||||||
|
case 5: GL11.glRotatef(0, 0F, 1F, 0F); break;
|
||||||
|
}
|
||||||
|
|
||||||
|
TileEntityFusionKlystronCreative klystron = (TileEntityFusionKlystronCreative) tile;
|
||||||
|
|
||||||
|
GL11.glTranslated(-1, 0, 0);
|
||||||
|
|
||||||
|
GL11.glShadeModel(GL11.GL_SMOOTH);
|
||||||
|
bindTexture(ResourceManager.fusion_klystron_creative_tex);
|
||||||
|
ResourceManager.fusion_klystron.renderPart("Klystron");
|
||||||
|
|
||||||
|
GL11.glPushMatrix();
|
||||||
|
float rot = klystron.prevFan + (klystron.fan - klystron.prevFan) * interp;
|
||||||
|
GL11.glTranslated(0, 2.5, 0);
|
||||||
|
GL11.glRotated(rot, 1, 0, 0);
|
||||||
|
GL11.glTranslated(0, -2.5, 0);
|
||||||
|
ResourceManager.fusion_klystron.renderPart("Rotor");
|
||||||
|
GL11.glShadeModel(GL11.GL_FLAT);
|
||||||
|
GL11.glPopMatrix();
|
||||||
|
|
||||||
|
GL11.glPopMatrix();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public Item getItemForRenderer() {
|
||||||
|
return Item.getItemFromBlock(ModBlocks.fusion_klystron_creative);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public IItemRenderer getRenderer() {
|
||||||
|
return new ItemRenderBase() {
|
||||||
|
public void renderInventory() {
|
||||||
|
GL11.glTranslated(0, -3, 1);
|
||||||
|
GL11.glScaled(3.5, 3.5, 3.5);
|
||||||
|
GL11.glRotated(90, 0, 1, 0);
|
||||||
|
}
|
||||||
|
public void renderCommon() {
|
||||||
|
GL11.glScaled(0.5, 0.5, 0.5);
|
||||||
|
GL11.glRotatef(90, 0F, 1F, 0F);
|
||||||
|
GL11.glShadeModel(GL11.GL_SMOOTH);
|
||||||
|
bindTexture(ResourceManager.fusion_klystron_creative_tex);
|
||||||
|
ResourceManager.fusion_klystron.renderPart("Klystron");
|
||||||
|
double rot = (System.currentTimeMillis() / 10) % 360D;
|
||||||
|
GL11.glTranslated(0, 2.5, 0);
|
||||||
|
GL11.glRotated(rot, 1, 0, 0);
|
||||||
|
GL11.glTranslated(0, -2.5, 0);
|
||||||
|
ResourceManager.fusion_klystron.renderPart("Rotor");
|
||||||
|
GL11.glShadeModel(GL11.GL_FLAT);
|
||||||
|
}};
|
||||||
|
}
|
||||||
|
}
|
||||||
136
src/main/java/com/hbm/render/tileentity/RenderMassStorage.java
Normal file
@ -0,0 +1,136 @@
|
|||||||
|
package com.hbm.render.tileentity;
|
||||||
|
|
||||||
|
import org.lwjgl.opengl.GL11;
|
||||||
|
import org.lwjgl.opengl.GL12;
|
||||||
|
|
||||||
|
import com.hbm.render.util.RenderDecoItem;
|
||||||
|
import com.hbm.tileentity.machine.storage.TileEntityMassStorage;
|
||||||
|
|
||||||
|
import cpw.mods.fml.relauncher.Side;
|
||||||
|
import cpw.mods.fml.relauncher.SideOnly;
|
||||||
|
import net.minecraft.client.Minecraft;
|
||||||
|
import net.minecraft.client.renderer.OpenGlHelper;
|
||||||
|
import net.minecraft.client.renderer.Tessellator;
|
||||||
|
import net.minecraft.client.renderer.entity.RenderItem;
|
||||||
|
import net.minecraft.client.renderer.tileentity.TileEntitySpecialRenderer;
|
||||||
|
import net.minecraft.tileentity.TileEntity;
|
||||||
|
|
||||||
|
@SideOnly(Side.CLIENT)
|
||||||
|
public class RenderMassStorage extends TileEntitySpecialRenderer {
|
||||||
|
|
||||||
|
private RenderItem itemRenderer = new RenderDecoItem(this);
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void renderTileEntityAt(TileEntity tile, double x, double y, double z, float interp) {
|
||||||
|
if(!(tile instanceof TileEntityMassStorage)) return;
|
||||||
|
TileEntityMassStorage storage = (TileEntityMassStorage) tile;
|
||||||
|
|
||||||
|
if(storage.type == null) return;
|
||||||
|
|
||||||
|
Minecraft mc = Minecraft.getMinecraft();
|
||||||
|
int dir = storage.getBlockMetadata() / 4;
|
||||||
|
|
||||||
|
// fuck this shit, push pop the whole ass lighting state then for all I fucken care
|
||||||
|
GL11.glPushAttrib(GL11.GL_ENABLE_BIT | GL11.GL_LIGHTING_BIT | GL11.GL_COLOR_BUFFER_BIT | GL11.GL_TRANSFORM_BIT);
|
||||||
|
|
||||||
|
GL11.glDisable(GL12.GL_RESCALE_NORMAL);
|
||||||
|
GL11.glDisable(GL11.GL_NORMALIZE);
|
||||||
|
|
||||||
|
OpenGlHelper.setLightmapTextureCoords(OpenGlHelper.lightmapTexUnit, 240, 240);
|
||||||
|
|
||||||
|
GL11.glPushMatrix();
|
||||||
|
{
|
||||||
|
|
||||||
|
// align to block
|
||||||
|
GL11.glTranslated(x, y, z);
|
||||||
|
|
||||||
|
// align item (and flip)
|
||||||
|
GL11.glTranslatef(0.5F, 0.5F, 0.5F);
|
||||||
|
GL11.glRotatef(180.0F, 0, 0, 1);
|
||||||
|
switch(dir) {
|
||||||
|
case 1: GL11.glRotatef(180.0F, 0, 1, 0); break;
|
||||||
|
case 2: GL11.glRotatef(-90.0F, 0, 1, 0); break;
|
||||||
|
case 3: GL11.glRotatef(90.0F, 0, 1, 0); break;
|
||||||
|
}
|
||||||
|
GL11.glTranslatef(-0.5F, -0.5F, -0.5F);
|
||||||
|
|
||||||
|
|
||||||
|
GL11.glTranslatef(0, 0, -0.005F); // offset to prevent z-fighting
|
||||||
|
GL11.glScalef(1.0F / 16.0F, 1.0F / 16.0F, -0.0001F); // scale to block size
|
||||||
|
|
||||||
|
|
||||||
|
GL11.glPushMatrix();
|
||||||
|
{
|
||||||
|
|
||||||
|
GL11.glTranslatef(4.0F, 2.5F, 0); // adjust to centered location
|
||||||
|
GL11.glScalef(8.0F / 16.0F, 8.0F / 16.0F, 1); // scale to 8 pixels across
|
||||||
|
|
||||||
|
if(mc.gameSettings.fancyGraphics) {
|
||||||
|
itemRenderer.renderItemAndEffectIntoGUI(mc.fontRenderer, mc.renderEngine, storage.type, 0, 0);
|
||||||
|
} else {
|
||||||
|
itemRenderer.renderItemIntoGUI(mc.fontRenderer, mc.renderEngine, storage.type, 0, 0, true);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
GL11.glPopMatrix();
|
||||||
|
|
||||||
|
GL11.glColor3f(1, 1, 1);
|
||||||
|
|
||||||
|
String text = getTextForCount(storage.getStockpile(), mc.fontRenderer.getUnicodeFlag());
|
||||||
|
|
||||||
|
int textX = 32 - mc.fontRenderer.getStringWidth(text) / 2;
|
||||||
|
int textY = 44;
|
||||||
|
|
||||||
|
GL11.glDisable(GL11.GL_LIGHTING);
|
||||||
|
GL11.glPushMatrix();
|
||||||
|
{
|
||||||
|
|
||||||
|
GL11.glScalef(4.0F / 16.0F, 4.0F / 16.0F, 4.0F / 16.0F);
|
||||||
|
|
||||||
|
int fontColor = 0x00FF00;
|
||||||
|
|
||||||
|
// funky text shadow rendering with no z-fighting and alpha testing still enabled
|
||||||
|
mc.fontRenderer.drawString(text, textX + 1, textY + 1, (fontColor & 16579836) >> 2 | fontColor & -16777216);
|
||||||
|
GL11.glTranslatef(0, 0, 1);
|
||||||
|
mc.fontRenderer.drawString(text, textX, textY, 0x00FF00);
|
||||||
|
|
||||||
|
}
|
||||||
|
GL11.glPopMatrix();
|
||||||
|
|
||||||
|
GL11.glDisable(GL11.GL_TEXTURE_2D);
|
||||||
|
|
||||||
|
double fraction = (double) storage.getStockpile() / (double) storage.getCapacity();
|
||||||
|
|
||||||
|
GL11.glColor3d(1.0 - fraction, fraction, 0.0);
|
||||||
|
|
||||||
|
double bMinX = 2;
|
||||||
|
double bMaxX = 2 + fraction * 12;
|
||||||
|
double bMinY = 13.5;
|
||||||
|
double bMaxY = 14;
|
||||||
|
|
||||||
|
Tessellator tessellator = Tessellator.instance;
|
||||||
|
tessellator.startDrawingQuads();
|
||||||
|
tessellator.addVertex(bMinX, bMaxY, 0);
|
||||||
|
tessellator.addVertex(bMaxX, bMaxY, 0);
|
||||||
|
tessellator.addVertex(bMaxX, bMinY, 0);
|
||||||
|
tessellator.addVertex(bMinX, bMinY, 0);
|
||||||
|
tessellator.draw();
|
||||||
|
|
||||||
|
GL11.glEnable(GL11.GL_TEXTURE_2D);
|
||||||
|
GL11.glEnable(GL11.GL_LIGHTING);
|
||||||
|
|
||||||
|
}
|
||||||
|
GL11.glPopMatrix();
|
||||||
|
|
||||||
|
GL11.glPopAttrib();
|
||||||
|
}
|
||||||
|
|
||||||
|
private String getTextForCount(int stackSize, boolean isUnicode) {
|
||||||
|
if(stackSize >= 100000000 || (stackSize >= 1000000 && isUnicode)) return String.format("%.0fM", stackSize / 1000000f);
|
||||||
|
if(stackSize >= 1000000) return String.format("%.1fM", stackSize / 1000000f);
|
||||||
|
if(stackSize >= 100000 || (stackSize >= 10000 && isUnicode)) return String.format("%.0fK", stackSize / 1000f);
|
||||||
|
if(stackSize >= 10000) return String.format("%.1fK", stackSize / 1000f);
|
||||||
|
return String.valueOf(stackSize);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
@ -10,6 +10,8 @@ import net.minecraft.util.Vec3;
|
|||||||
|
|
||||||
public class BeamPronter {
|
public class BeamPronter {
|
||||||
|
|
||||||
|
public static Random rand = new Random();
|
||||||
|
|
||||||
public static enum EnumWaveType {
|
public static enum EnumWaveType {
|
||||||
RANDOM, SPIRAL
|
RANDOM, SPIRAL
|
||||||
}
|
}
|
||||||
@ -51,7 +53,7 @@ public class BeamPronter {
|
|||||||
Tessellator tessellator = Tessellator.instance;
|
Tessellator tessellator = Tessellator.instance;
|
||||||
|
|
||||||
Vec3 unit = Vec3.createVectorHelper(0, 1, 0);
|
Vec3 unit = Vec3.createVectorHelper(0, 1, 0);
|
||||||
Random rand = new Random(start);
|
rand.setSeed(start);
|
||||||
double length = skeleton.lengthVector();
|
double length = skeleton.lengthVector();
|
||||||
double segLength = length / segments;
|
double segLength = length / segments;
|
||||||
double lastX = 0;
|
double lastX = 0;
|
||||||
|
|||||||
@ -1,9 +1,22 @@
|
|||||||
package com.hbm.render.util;
|
package com.hbm.render.util;
|
||||||
|
|
||||||
|
import org.lwjgl.opengl.GL11;
|
||||||
|
|
||||||
|
import net.minecraft.block.Block;
|
||||||
|
import net.minecraft.client.Minecraft;
|
||||||
|
import net.minecraft.client.gui.FontRenderer;
|
||||||
|
import net.minecraft.client.renderer.OpenGlHelper;
|
||||||
|
import net.minecraft.client.renderer.RenderBlocks;
|
||||||
|
import net.minecraft.client.renderer.Tessellator;
|
||||||
import net.minecraft.client.renderer.entity.RenderItem;
|
import net.minecraft.client.renderer.entity.RenderItem;
|
||||||
import net.minecraft.client.renderer.entity.RenderManager;
|
import net.minecraft.client.renderer.entity.RenderManager;
|
||||||
|
import net.minecraft.client.renderer.texture.TextureManager;
|
||||||
|
import net.minecraft.client.renderer.texture.TextureMap;
|
||||||
import net.minecraft.client.renderer.tileentity.TileEntitySpecialRenderer;
|
import net.minecraft.client.renderer.tileentity.TileEntitySpecialRenderer;
|
||||||
|
import net.minecraft.item.Item;
|
||||||
import net.minecraft.item.ItemStack;
|
import net.minecraft.item.ItemStack;
|
||||||
|
import net.minecraft.util.IIcon;
|
||||||
|
import net.minecraft.util.ResourceLocation;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* For small items as part of a TESR, e.g. items in a press
|
* For small items as part of a TESR, e.g. items in a press
|
||||||
@ -34,4 +47,147 @@ public class RenderDecoItem extends RenderItem {
|
|||||||
public boolean shouldSpreadItems() {
|
public boolean shouldSpreadItems() {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Fixes z-fighting issues with item glints when using GUI (flat) rendering in world, from StorageDrawers 1.7.10
|
||||||
|
*/
|
||||||
|
|
||||||
|
private static final ResourceLocation RES_ITEM_GLINT = new ResourceLocation("textures/misc/enchanted_item_glint.png");
|
||||||
|
private RenderBlocks renderBlocksRi = new RenderBlocks();
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void renderItemIntoGUI(FontRenderer fontRenderer, TextureManager texManager, ItemStack itemStack, int x, int y, boolean renderEffect) {
|
||||||
|
if(itemStack.getItemSpriteNumber() == 0 && RenderBlocks.renderItemIn3d(Block.getBlockFromItem(itemStack.getItem()).getRenderType())) {
|
||||||
|
renderItemIntoGUIBlock(fontRenderer, texManager, itemStack, x, y, renderEffect);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
Item item = itemStack.getItem();
|
||||||
|
int meta = itemStack.getItemDamage();
|
||||||
|
|
||||||
|
ResourceLocation loc = itemStack.getItem().requiresMultipleRenderPasses()
|
||||||
|
? (item.getSpriteNumber() == 0 ? TextureMap.locationBlocksTexture : TextureMap.locationItemsTexture)
|
||||||
|
: (texManager.getResourceLocation(itemStack.getItemSpriteNumber()));
|
||||||
|
|
||||||
|
for(int i = 0; i < item.getRenderPasses(meta); ++i) {
|
||||||
|
OpenGlHelper.glBlendFunc(770, 771, 1, 0);
|
||||||
|
texManager.bindTexture(loc);
|
||||||
|
|
||||||
|
IIcon icon = itemStack.getItem().requiresMultipleRenderPasses()
|
||||||
|
? item.getIcon(itemStack, i)
|
||||||
|
: itemStack.getIconIndex();
|
||||||
|
|
||||||
|
if(icon == null) continue;
|
||||||
|
|
||||||
|
int color = itemStack.getItem().getColorFromItemStack(itemStack, i);
|
||||||
|
float r = (float)(color >> 16 & 255) / 255.0F;
|
||||||
|
float g = (float)(color >> 8 & 255) / 255.0F;
|
||||||
|
float b = (float)(color & 255) / 255.0F;
|
||||||
|
|
||||||
|
if(renderWithColor)
|
||||||
|
GL11.glColor4f(r, g, b, 1.0F);
|
||||||
|
|
||||||
|
GL11.glEnable(GL11.GL_POLYGON_OFFSET_FILL);
|
||||||
|
GL11.glPolygonOffset(-1f, -1);
|
||||||
|
|
||||||
|
GL11.glDisable(GL11.GL_LIGHTING);
|
||||||
|
GL11.glEnable(GL11.GL_BLEND);
|
||||||
|
GL11.glEnable(GL11.GL_ALPHA_TEST);
|
||||||
|
|
||||||
|
renderIcon(x, y, icon, 16, 16);
|
||||||
|
|
||||||
|
GL11.glDisable(GL11.GL_ALPHA_TEST);
|
||||||
|
GL11.glDisable(GL11.GL_BLEND);
|
||||||
|
GL11.glEnable(GL11.GL_LIGHTING);
|
||||||
|
|
||||||
|
if(renderEffect && itemStack.hasEffect(i))
|
||||||
|
renderEffect(texManager, x, y);
|
||||||
|
|
||||||
|
GL11.glDisable(GL11.GL_POLYGON_OFFSET_FILL);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void renderEffect(TextureManager manager, int x, int y) {
|
||||||
|
GL11.glDepthFunc(GL11.GL_EQUAL);
|
||||||
|
GL11.glDisable(GL11.GL_LIGHTING);
|
||||||
|
GL11.glDepthMask(false);
|
||||||
|
manager.bindTexture(RES_ITEM_GLINT);
|
||||||
|
GL11.glEnable(GL11.GL_ALPHA_TEST);
|
||||||
|
GL11.glEnable(GL11.GL_BLEND);
|
||||||
|
GL11.glColor4f(0.5F, 0.25F, 0.8F, 1.0F);
|
||||||
|
renderGlint(x, y, 16, 16);
|
||||||
|
GL11.glDepthMask(true);
|
||||||
|
GL11.glDisable(GL11.GL_BLEND);
|
||||||
|
GL11.glDisable(GL11.GL_ALPHA_TEST);
|
||||||
|
GL11.glEnable(GL11.GL_LIGHTING);
|
||||||
|
GL11.glDepthFunc(GL11.GL_LEQUAL);
|
||||||
|
}
|
||||||
|
|
||||||
|
private void renderGlint(int x, int y, int w, int h) {
|
||||||
|
for(int i = 0; i < 2; ++i) {
|
||||||
|
OpenGlHelper.glBlendFunc(772, 1, 0, 0);
|
||||||
|
float uScale = 0.00390625F;
|
||||||
|
float vScale = 0.00390625F;
|
||||||
|
float u = (Minecraft.getSystemTime() % (3000 + i * 1873)) / (3000.0F + i * 1873) * 256.0F;
|
||||||
|
float v = 0.0F;
|
||||||
|
|
||||||
|
float hScale = (i < 1) ? 4.0F : -1.0F;
|
||||||
|
|
||||||
|
Tessellator tessellator = Tessellator.instance;
|
||||||
|
tessellator.startDrawingQuads();
|
||||||
|
tessellator.addVertexWithUV(x + 0, y + h, 0, (u + (float)h * hScale) * uScale, (v + (float)h) * vScale);
|
||||||
|
tessellator.addVertexWithUV(x + w, y + h, 0, (u + (float)w + (float)h * hScale) * uScale, (v + (float)h) * vScale);
|
||||||
|
tessellator.addVertexWithUV(x + w, y + 0, 0, (u + (float)w) * uScale, (v + 0.0F) * vScale);
|
||||||
|
tessellator.addVertexWithUV(x + 0, y + 0, 0, (u + 0.0F) * uScale, (v + 0.0F) * vScale);
|
||||||
|
tessellator.draw();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private void renderItemIntoGUIBlock(FontRenderer fontRenderer, TextureManager texManager, ItemStack itemStack, int x, int y, boolean renderEffect) {
|
||||||
|
texManager.bindTexture(TextureMap.locationBlocksTexture);
|
||||||
|
Block block = Block.getBlockFromItem(itemStack.getItem());
|
||||||
|
|
||||||
|
if(block.getRenderBlockPass() != 0) {
|
||||||
|
GL11.glAlphaFunc(GL11.GL_GREATER, 0.1F);
|
||||||
|
GL11.glEnable(GL11.GL_BLEND);
|
||||||
|
OpenGlHelper.glBlendFunc(770, 771, 1, 0);
|
||||||
|
} else {
|
||||||
|
GL11.glAlphaFunc(GL11.GL_GREATER, 0.5F);
|
||||||
|
GL11.glDisable(GL11.GL_BLEND);
|
||||||
|
}
|
||||||
|
|
||||||
|
GL11.glPushMatrix();
|
||||||
|
GL11.glTranslatef(x - 2, y + 3, zLevel - 3);
|
||||||
|
GL11.glScalef(10, 10, 10);
|
||||||
|
GL11.glTranslatef(1, 0.5f, 1);
|
||||||
|
GL11.glScalef(1, 1, -1);
|
||||||
|
GL11.glRotatef(210, 1, 0, 0);
|
||||||
|
GL11.glRotatef(45, 0, 1, 0);
|
||||||
|
|
||||||
|
int color = itemStack.getItem().getColorFromItemStack(itemStack, 0);
|
||||||
|
float r = (float)(color >> 16 & 255) / 255.0F;
|
||||||
|
float g = (float)(color >> 8 & 255) / 255.0F;
|
||||||
|
float b = (float)(color & 255) / 255.0F;
|
||||||
|
|
||||||
|
if(this.renderWithColor)
|
||||||
|
GL11.glColor4f(r * 1, g * 1, b * 1, 1.0F);
|
||||||
|
|
||||||
|
GL11.glRotatef(-90, 0, 1, 0);
|
||||||
|
GL11.glEnable(GL11.GL_POLYGON_OFFSET_FILL);
|
||||||
|
GL11.glPolygonOffset(-1f, -1f);
|
||||||
|
|
||||||
|
this.renderBlocksRi.useInventoryTint = this.renderWithColor;
|
||||||
|
this.renderBlocksRi.renderBlockAsItem(block, itemStack.getItemDamage(), 1);
|
||||||
|
this.renderBlocksRi.useInventoryTint = true;
|
||||||
|
|
||||||
|
GL11.glDisable(GL11.GL_POLYGON_OFFSET_FILL);
|
||||||
|
|
||||||
|
if(block.getRenderBlockPass() == 0)
|
||||||
|
GL11.glAlphaFunc(GL11.GL_GREATER, 0.1F);
|
||||||
|
|
||||||
|
GL11.glPopMatrix();
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@ -82,6 +82,7 @@ public class TileMappings {
|
|||||||
put(TileEntityDecoPoleSatelliteReceiver.class, "tileentity_satellitereceicer");
|
put(TileEntityDecoPoleSatelliteReceiver.class, "tileentity_satellitereceicer");
|
||||||
put(TileEntityMachineBattery.class, "tileentity_battery");
|
put(TileEntityMachineBattery.class, "tileentity_battery");
|
||||||
put(TileEntityBatterySocket.class, "tileentity_battery_socket");
|
put(TileEntityBatterySocket.class, "tileentity_battery_socket");
|
||||||
|
put(TileEntityBatteryREDD.class, "tileentity_battery_redd");
|
||||||
put(TileEntityCapacitor.class, "tileentity_capacitor");
|
put(TileEntityCapacitor.class, "tileentity_capacitor");
|
||||||
put(TileEntityMachineWoodBurner.class, "tileentity_wood_burner");
|
put(TileEntityMachineWoodBurner.class, "tileentity_wood_burner");
|
||||||
put(TileEntityRedBarrel.class, "tileentity_barrel");
|
put(TileEntityRedBarrel.class, "tileentity_barrel");
|
||||||
@ -417,6 +418,7 @@ public class TileMappings {
|
|||||||
put(TileEntityFusionTorusStruct.class, "tileentity_fusion_torus_struct");
|
put(TileEntityFusionTorusStruct.class, "tileentity_fusion_torus_struct");
|
||||||
put(TileEntityFusionTorus.class, "tileentity_fusion_torus");
|
put(TileEntityFusionTorus.class, "tileentity_fusion_torus");
|
||||||
put(TileEntityFusionKlystron.class, "tileentity_fusion_klystron");
|
put(TileEntityFusionKlystron.class, "tileentity_fusion_klystron");
|
||||||
|
put(TileEntityFusionKlystronCreative.class, "tileentity_fusion_klystron_creative");
|
||||||
put(TileEntityFusionBreeder.class, "tileentity_fusion_breeder");
|
put(TileEntityFusionBreeder.class, "tileentity_fusion_breeder");
|
||||||
put(TileEntityFusionCollector.class, "tileentity_fusion_collector");
|
put(TileEntityFusionCollector.class, "tileentity_fusion_collector");
|
||||||
put(TileEntityFusionBoiler.class, "tileentity_fusion_boiler");
|
put(TileEntityFusionBoiler.class, "tileentity_fusion_boiler");
|
||||||
@ -443,6 +445,7 @@ public class TileMappings {
|
|||||||
put(TileEntityPipeExhaust.class, "tileentity_pipe_exhaust");
|
put(TileEntityPipeExhaust.class, "tileentity_pipe_exhaust");
|
||||||
put(TileEntityPipeExhaustPaintable.class, "tileentity_pipe_exhaust_paintable");
|
put(TileEntityPipeExhaustPaintable.class, "tileentity_pipe_exhaust_paintable");
|
||||||
put(TileEntityFluidValve.class, "tileentity_pipe_valve");
|
put(TileEntityFluidValve.class, "tileentity_pipe_valve");
|
||||||
|
put(TileEntityFluidCounterValve.class, "tileentity_pipe_counter_valve");
|
||||||
put(TileEntityFluidPump.class, "tileentity_pipe_pump");
|
put(TileEntityFluidPump.class, "tileentity_pipe_pump");
|
||||||
|
|
||||||
put(TileEntityPipeAnchor.class, "tileentity_pioe_anchor");
|
put(TileEntityPipeAnchor.class, "tileentity_pioe_anchor");
|
||||||
|
|||||||
@ -97,6 +97,8 @@ public class TileEntityChungus extends TileEntityLoadedBase implements IEnergyPr
|
|||||||
|
|
||||||
if(!worldObj.isRemote) {
|
if(!worldObj.isRemote) {
|
||||||
|
|
||||||
|
this.power *= 0.95;
|
||||||
|
|
||||||
this.info = new double[3];
|
this.info = new double[3];
|
||||||
|
|
||||||
boolean operational = false;
|
boolean operational = false;
|
||||||
|
|||||||
@ -394,7 +394,7 @@ public class TileEntityMachineArcFurnaceLarge extends TileEntityMachineBase impl
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean canInsertItem(int slot, ItemStack stack, int side) {
|
public boolean canInsertItem(int slot, ItemStack stack, int side) {
|
||||||
if(slot < 3) return lid >= 1 && stack.getItem() == ModItems.arc_electrode;
|
if(slot < 3) return stack.getItem() == ModItems.arc_electrode;
|
||||||
if(slot >= 25) {
|
if(slot >= 25) {
|
||||||
ArcFurnaceRecipe recipe = ArcFurnaceRecipes.getOutput(stack, this.liquidMode);
|
ArcFurnaceRecipe recipe = ArcFurnaceRecipes.getOutput(stack, this.liquidMode);
|
||||||
if(recipe == null) return false;
|
if(recipe == null) return false;
|
||||||
@ -405,7 +405,7 @@ public class TileEntityMachineArcFurnaceLarge extends TileEntityMachineBase impl
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean isItemValidForSlot(int slot, ItemStack stack) {
|
public boolean isItemValidForSlot(int slot, ItemStack stack) {
|
||||||
if(slot < 3) return lid >= 1 && stack.getItem() == ModItems.arc_electrode;
|
if(slot < 3) return stack.getItem() == ModItems.arc_electrode;
|
||||||
if(slot > 4) {
|
if(slot > 4) {
|
||||||
ArcFurnaceRecipe recipe = ArcFurnaceRecipes.getOutput(stack, this.liquidMode);
|
ArcFurnaceRecipe recipe = ArcFurnaceRecipes.getOutput(stack, this.liquidMode);
|
||||||
if(recipe == null) return false;
|
if(recipe == null) return false;
|
||||||
|
|||||||
@ -121,6 +121,8 @@ public class TileEntityMachineLargeTurbine extends TileEntityMachineBase impleme
|
|||||||
tanks[0].loadTank(2, 3, slots);
|
tanks[0].loadTank(2, 3, slots);
|
||||||
power = Library.chargeItemsFromTE(slots, 4, power, maxPower);
|
power = Library.chargeItemsFromTE(slots, 4, power, maxPower);
|
||||||
|
|
||||||
|
this.power *= 0.95;
|
||||||
|
|
||||||
FluidType in = tanks[0].getTankType();
|
FluidType in = tanks[0].getTankType();
|
||||||
boolean valid = false;
|
boolean valid = false;
|
||||||
if(in.hasTrait(FT_Coolable.class)) {
|
if(in.hasTrait(FT_Coolable.class)) {
|
||||||
|
|||||||
@ -28,8 +28,6 @@ import com.hbm.util.fauxpointtwelve.BlockPos;
|
|||||||
import com.hbm.util.fauxpointtwelve.DirPos;
|
import com.hbm.util.fauxpointtwelve.DirPos;
|
||||||
import com.hbm.util.i18n.I18nUtil;
|
import com.hbm.util.i18n.I18nUtil;
|
||||||
|
|
||||||
import api.hbm.block.IDrillInteraction;
|
|
||||||
import api.hbm.block.IMiningDrill;
|
|
||||||
import api.hbm.energymk2.IEnergyReceiverMK2;
|
import api.hbm.energymk2.IEnergyReceiverMK2;
|
||||||
import api.hbm.fluid.IFluidStandardSender;
|
import api.hbm.fluid.IFluidStandardSender;
|
||||||
import cpw.mods.fml.relauncher.Side;
|
import cpw.mods.fml.relauncher.Side;
|
||||||
@ -53,7 +51,7 @@ import net.minecraft.util.EnumChatFormatting;
|
|||||||
import net.minecraft.world.World;
|
import net.minecraft.world.World;
|
||||||
import net.minecraftforge.common.util.ForgeDirection;
|
import net.minecraftforge.common.util.ForgeDirection;
|
||||||
|
|
||||||
public class TileEntityMachineMiningLaser extends TileEntityMachineBase implements IEnergyReceiverMK2, IMiningDrill, IFluidStandardSender, IGUIProvider, IUpgradeInfoProvider {
|
public class TileEntityMachineMiningLaser extends TileEntityMachineBase implements IEnergyReceiverMK2, IFluidStandardSender, IGUIProvider, IUpgradeInfoProvider {
|
||||||
|
|
||||||
public long power;
|
public long power;
|
||||||
public int age = 0;
|
public int age = 0;
|
||||||
@ -325,17 +323,6 @@ public class TileEntityMachineMiningLaser extends TileEntityMachineBase implemen
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if(normal && b instanceof IDrillInteraction) {
|
|
||||||
IDrillInteraction in = (IDrillInteraction) b;
|
|
||||||
ItemStack drop = in.extractResource(worldObj, targetX, targetY, targetZ, meta, this);
|
|
||||||
|
|
||||||
if(drop != null) {
|
|
||||||
worldObj.spawnEntityInWorld(new EntityItem(worldObj, targetX + 0.5, targetY + 0.5, targetZ + 0.5, drop.copy()));
|
|
||||||
}
|
|
||||||
|
|
||||||
doesBreak = in.canBreak(worldObj, targetX, targetY, targetZ, meta, this);
|
|
||||||
}
|
|
||||||
|
|
||||||
if(doesBreak) {
|
if(doesBreak) {
|
||||||
if(normal) b.dropBlockAsItem(worldObj, targetX, targetY, targetZ, meta, fortune);
|
if(normal) b.dropBlockAsItem(worldObj, targetX, targetY, targetZ, meta, fortune);
|
||||||
worldObj.func_147480_a(targetX, targetY, targetZ, false);
|
worldObj.func_147480_a(targetX, targetY, targetZ, false);
|
||||||
@ -464,106 +451,68 @@ public class TileEntityMachineMiningLaser extends TileEntityMachineBase implemen
|
|||||||
}
|
}
|
||||||
|
|
||||||
public int getRange() {
|
public int getRange() {
|
||||||
|
|
||||||
int range = 1;
|
int range = 1;
|
||||||
|
|
||||||
for(int i = 1; i < 9; i++) {
|
for(int i = 1; i < 9; i++) {
|
||||||
|
|
||||||
if(slots[i] != null) {
|
if(slots[i] != null) {
|
||||||
|
if(slots[i].getItem() == ModItems.upgrade_effect_1) range += 2;
|
||||||
if(slots[i].getItem() == ModItems.upgrade_effect_1)
|
else if(slots[i].getItem() == ModItems.upgrade_effect_2) range += 4;
|
||||||
range += 2;
|
else if(slots[i].getItem() == ModItems.upgrade_effect_3) range += 6;
|
||||||
else if(slots[i].getItem() == ModItems.upgrade_effect_2)
|
|
||||||
range += 4;
|
|
||||||
else if(slots[i].getItem() == ModItems.upgrade_effect_3)
|
|
||||||
range += 6;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return Math.min(range, 25);
|
return Math.min(range, 25);
|
||||||
}
|
}
|
||||||
|
|
||||||
public boolean hasNullifier() {
|
public boolean hasNullifier() {
|
||||||
|
|
||||||
for(int i = 1; i < 9; i++) {
|
for(int i = 1; i < 9; i++) {
|
||||||
|
|
||||||
if(slots[i] != null) {
|
if(slots[i] != null) {
|
||||||
|
if(slots[i].getItem() == ModItems.upgrade_nullifier) return true;
|
||||||
if(slots[i].getItem() == ModItems.upgrade_nullifier)
|
|
||||||
return true;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
public boolean hasSmelter() {
|
public boolean hasSmelter() {
|
||||||
|
|
||||||
for(int i = 1; i < 9; i++) {
|
for(int i = 1; i < 9; i++) {
|
||||||
|
|
||||||
if(slots[i] != null) {
|
if(slots[i] != null) {
|
||||||
|
if(slots[i].getItem() == ModItems.upgrade_smelter) return true;
|
||||||
if(slots[i].getItem() == ModItems.upgrade_smelter)
|
|
||||||
return true;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
public boolean hasShredder() {
|
public boolean hasShredder() {
|
||||||
|
|
||||||
for(int i = 1; i < 9; i++) {
|
for(int i = 1; i < 9; i++) {
|
||||||
|
|
||||||
if(slots[i] != null) {
|
if(slots[i] != null) {
|
||||||
|
if(slots[i].getItem() == ModItems.upgrade_shredder) return true;
|
||||||
if(slots[i].getItem() == ModItems.upgrade_shredder)
|
|
||||||
return true;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
public boolean hasCentrifuge() {
|
public boolean hasCentrifuge() {
|
||||||
|
|
||||||
for(int i = 1; i < 9; i++) {
|
for(int i = 1; i < 9; i++) {
|
||||||
|
|
||||||
if(slots[i] != null) {
|
if(slots[i] != null) {
|
||||||
|
if(slots[i].getItem() == ModItems.upgrade_centrifuge) return true;
|
||||||
if(slots[i].getItem() == ModItems.upgrade_centrifuge)
|
|
||||||
return true;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
public boolean hasCrystallizer() {
|
public boolean hasCrystallizer() {
|
||||||
|
|
||||||
for(int i = 1; i < 9; i++) {
|
for(int i = 1; i < 9; i++) {
|
||||||
|
|
||||||
if(slots[i] != null) {
|
if(slots[i] != null) {
|
||||||
|
if(slots[i].getItem() == ModItems.upgrade_crystallizer) return true;
|
||||||
if(slots[i].getItem() == ModItems.upgrade_crystallizer)
|
|
||||||
return true;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
public boolean doesScream() {
|
public boolean doesScream() {
|
||||||
|
|
||||||
for(int i = 1; i < 9; i++) {
|
for(int i = 1; i < 9; i++) {
|
||||||
|
|
||||||
if(slots[i] != null) {
|
if(slots[i] != null) {
|
||||||
|
if(slots[i].getItem() == ModItems.upgrade_screm) return true;
|
||||||
if(slots[i].getItem() == ModItems.upgrade_screm)
|
|
||||||
return true;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -646,6 +595,7 @@ public class TileEntityMachineMiningLaser extends TileEntityMachineBase implemen
|
|||||||
super.readFromNBT(nbt);
|
super.readFromNBT(nbt);
|
||||||
|
|
||||||
tank.readFromNBT(nbt, "oil");
|
tank.readFromNBT(nbt, "oil");
|
||||||
|
power = nbt.getLong("power");
|
||||||
isOn = nbt.getBoolean("isOn");
|
isOn = nbt.getBoolean("isOn");
|
||||||
redstonePowered = false;
|
redstonePowered = false;
|
||||||
}
|
}
|
||||||
@ -655,19 +605,10 @@ public class TileEntityMachineMiningLaser extends TileEntityMachineBase implemen
|
|||||||
super.writeToNBT(nbt);
|
super.writeToNBT(nbt);
|
||||||
|
|
||||||
tank.writeToNBT(nbt, "oil");
|
tank.writeToNBT(nbt, "oil");
|
||||||
|
nbt.setLong("power", power);
|
||||||
nbt.setBoolean("isOn", isOn);
|
nbt.setBoolean("isOn", isOn);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
|
||||||
public DrillType getDrillTier() {
|
|
||||||
return DrillType.HITECH;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public int getDrillRating() {
|
|
||||||
return 100;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public FluidTank[] getSendingTanks() {
|
public FluidTank[] getSendingTanks() {
|
||||||
return new FluidTank[] { tank };
|
return new FluidTank[] { tank };
|
||||||
|
|||||||
@ -283,6 +283,8 @@ public class TileEntityMachineTurbine extends TileEntityLoadedBase implements IS
|
|||||||
tanks[0].loadTank(2, 3, slots);
|
tanks[0].loadTank(2, 3, slots);
|
||||||
power = Library.chargeItemsFromTE(slots, 4, power, maxPower);
|
power = Library.chargeItemsFromTE(slots, 4, power, maxPower);
|
||||||
|
|
||||||
|
this.power *= 0.95;
|
||||||
|
|
||||||
FluidType in = tanks[0].getTankType();
|
FluidType in = tanks[0].getTankType();
|
||||||
boolean valid = false;
|
boolean valid = false;
|
||||||
if(in.hasTrait(FT_Coolable.class)) {
|
if(in.hasTrait(FT_Coolable.class)) {
|
||||||
|
|||||||
@ -34,6 +34,7 @@ import net.minecraft.entity.player.EntityPlayer;
|
|||||||
import net.minecraft.inventory.Container;
|
import net.minecraft.inventory.Container;
|
||||||
import net.minecraft.item.ItemStack;
|
import net.minecraft.item.ItemStack;
|
||||||
import net.minecraft.nbt.NBTTagCompound;
|
import net.minecraft.nbt.NBTTagCompound;
|
||||||
|
import net.minecraft.tileentity.TileEntity;
|
||||||
import net.minecraft.util.AxisAlignedBB;
|
import net.minecraft.util.AxisAlignedBB;
|
||||||
import net.minecraft.util.MathHelper;
|
import net.minecraft.util.MathHelper;
|
||||||
import net.minecraft.world.World;
|
import net.minecraft.world.World;
|
||||||
@ -102,36 +103,8 @@ public class TileEntityFusionKlystron extends TileEntityMachineBase implements I
|
|||||||
|
|
||||||
if(output < outputTarget / 50) output = 0;
|
if(output < outputTarget / 50) output = 0;
|
||||||
|
|
||||||
if(klystronNode == null || klystronNode.expired) {
|
this.klystronNode = handleKNode(klystronNode, this);
|
||||||
ForgeDirection dir = ForgeDirection.getOrientation(this.getBlockMetadata() - 10).getOpposite();
|
provideKyU(klystronNode, this.output);
|
||||||
klystronNode = UniNodespace.getNode(worldObj, xCoord + dir.offsetX * 4, yCoord + 2, zCoord + dir.offsetZ * 4, KlystronNetworkProvider.THE_PROVIDER);
|
|
||||||
|
|
||||||
if(klystronNode == null) {
|
|
||||||
klystronNode = new GenNode(KlystronNetworkProvider.THE_PROVIDER,
|
|
||||||
new BlockPos(xCoord + dir.offsetX * 4, yCoord + 2, zCoord + dir.offsetZ * 4))
|
|
||||||
.setConnections(new DirPos(xCoord + dir.offsetX * 5, yCoord + 2, zCoord + dir.offsetZ * 5, dir));
|
|
||||||
|
|
||||||
UniNodespace.createNode(worldObj, klystronNode);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if(klystronNode.net != null) klystronNode.net.addProvider(this);
|
|
||||||
|
|
||||||
if(klystronNode != null && klystronNode.net != null) {
|
|
||||||
KlystronNetwork net = (KlystronNetwork) klystronNode.net;
|
|
||||||
|
|
||||||
for(Object o : net.receiverEntries.entrySet()) {
|
|
||||||
Entry e = (Entry) o;
|
|
||||||
if(e.getKey() instanceof TileEntityFusionTorus) { // replace this with an interface should we ever get more acceptors
|
|
||||||
TileEntityFusionTorus torus = (TileEntityFusionTorus) e.getKey();
|
|
||||||
|
|
||||||
if(torus.isLoaded() && !torus.isInvalid()) { // check against zombie network members
|
|
||||||
torus.klystronEnergy += this.output;
|
|
||||||
break; // we only do one anyway
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
this.networkPackNT(100);
|
this.networkPackNT(100);
|
||||||
|
|
||||||
@ -174,6 +147,56 @@ public class TileEntityFusionKlystron extends TileEntityMachineBase implements I
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/** Ensures the k-node exists, is loaded, and the klystron is a provider in the k-net. Returns a new klystron node if none existed, or the previous one. */
|
||||||
|
public static GenNode handleKNode(GenNode klystronNode, TileEntity that) {
|
||||||
|
|
||||||
|
World worldObj = that.getWorldObj();
|
||||||
|
int xCoord = that.xCoord;
|
||||||
|
int yCoord = that.yCoord;
|
||||||
|
int zCoord = that.zCoord;
|
||||||
|
|
||||||
|
if(klystronNode == null || klystronNode.expired) {
|
||||||
|
ForgeDirection dir = ForgeDirection.getOrientation(that.getBlockMetadata() - 10).getOpposite();
|
||||||
|
klystronNode = UniNodespace.getNode(worldObj, xCoord + dir.offsetX * 4, yCoord + 2, zCoord + dir.offsetZ * 4, KlystronNetworkProvider.THE_PROVIDER);
|
||||||
|
|
||||||
|
if(klystronNode == null) {
|
||||||
|
klystronNode = new GenNode(KlystronNetworkProvider.THE_PROVIDER,
|
||||||
|
new BlockPos(xCoord + dir.offsetX * 4, yCoord + 2, zCoord + dir.offsetZ * 4))
|
||||||
|
.setConnections(new DirPos(xCoord + dir.offsetX * 5, yCoord + 2, zCoord + dir.offsetZ * 5, dir));
|
||||||
|
|
||||||
|
UniNodespace.createNode(worldObj, klystronNode);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if(klystronNode.net != null) klystronNode.net.addProvider(that);
|
||||||
|
|
||||||
|
return klystronNode;
|
||||||
|
}
|
||||||
|
|
||||||
|
/** Provides klystron energy to the k-net of the supplied k-node, returns true is a connection is established */
|
||||||
|
public static boolean provideKyU(GenNode klystronNode, long output) {
|
||||||
|
boolean connected = false;
|
||||||
|
|
||||||
|
if(klystronNode != null && klystronNode.net != null) {
|
||||||
|
KlystronNetwork net = (KlystronNetwork) klystronNode.net;
|
||||||
|
|
||||||
|
for(Object o : net.receiverEntries.entrySet()) {
|
||||||
|
Entry e = (Entry) o;
|
||||||
|
if(e.getKey() instanceof TileEntityFusionTorus) { // replace this with an interface should we ever get more acceptors
|
||||||
|
TileEntityFusionTorus torus = (TileEntityFusionTorus) e.getKey();
|
||||||
|
|
||||||
|
if(torus.isLoaded() && !torus.isInvalid()) { // check against zombie network members
|
||||||
|
torus.klystronEnergy += output;
|
||||||
|
connected = true;
|
||||||
|
break; // we only do one anyway
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return connected;
|
||||||
|
}
|
||||||
|
|
||||||
public DirPos[] getConPos() {
|
public DirPos[] getConPos() {
|
||||||
ForgeDirection dir = ForgeDirection.getOrientation(this.getBlockMetadata() - 10);
|
ForgeDirection dir = ForgeDirection.getOrientation(this.getBlockMetadata() - 10);
|
||||||
ForgeDirection rot = dir.getRotation(ForgeDirection.UP);
|
ForgeDirection rot = dir.getRotation(ForgeDirection.UP);
|
||||||
|
|||||||
@ -0,0 +1,137 @@
|
|||||||
|
package com.hbm.tileentity.machine.fusion;
|
||||||
|
|
||||||
|
import com.hbm.inventory.recipes.FusionRecipes;
|
||||||
|
import com.hbm.main.MainRegistry;
|
||||||
|
import com.hbm.sound.AudioWrapper;
|
||||||
|
import com.hbm.tileentity.TileEntityLoadedBase;
|
||||||
|
import com.hbm.uninos.GenNode;
|
||||||
|
import com.hbm.uninos.UniNodespace;
|
||||||
|
|
||||||
|
import cpw.mods.fml.relauncher.Side;
|
||||||
|
import cpw.mods.fml.relauncher.SideOnly;
|
||||||
|
import io.netty.buffer.ByteBuf;
|
||||||
|
import net.minecraft.util.AxisAlignedBB;
|
||||||
|
import net.minecraft.util.MathHelper;
|
||||||
|
|
||||||
|
public class TileEntityFusionKlystronCreative extends TileEntityLoadedBase {
|
||||||
|
|
||||||
|
protected GenNode klystronNode;
|
||||||
|
|
||||||
|
public float fan;
|
||||||
|
public float prevFan;
|
||||||
|
public float fanSpeed;
|
||||||
|
public static final float FAN_ACCELERATION = 0.125F;
|
||||||
|
|
||||||
|
public boolean isConnected = false;
|
||||||
|
|
||||||
|
private AudioWrapper audio;
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void updateEntity() {
|
||||||
|
|
||||||
|
if(!worldObj.isRemote) {
|
||||||
|
|
||||||
|
this.klystronNode = TileEntityFusionKlystron.handleKNode(klystronNode, this);
|
||||||
|
this.isConnected = TileEntityFusionKlystron.provideKyU(klystronNode, FusionRecipes.INSTANCE.maxInput);
|
||||||
|
|
||||||
|
this.networkPackNT(100);
|
||||||
|
|
||||||
|
} else {
|
||||||
|
|
||||||
|
if(this.isConnected) this.fanSpeed += FAN_ACCELERATION;
|
||||||
|
else this.fanSpeed -= FAN_ACCELERATION;
|
||||||
|
|
||||||
|
this.fanSpeed = MathHelper.clamp_float(this.fanSpeed, 0F, 5F);
|
||||||
|
|
||||||
|
this.prevFan = this.fan;
|
||||||
|
this.fan += this.fanSpeed;
|
||||||
|
|
||||||
|
if(this.fan >= 360F) {
|
||||||
|
this.fan -= 360F;
|
||||||
|
this.prevFan -= 360F;
|
||||||
|
}
|
||||||
|
|
||||||
|
if(this.fanSpeed > 0 && MainRegistry.proxy.me().getDistanceSq(xCoord + 0.5, yCoord + 2.5, zCoord + 0.5) < 30 * 30) {
|
||||||
|
|
||||||
|
float speed = this.fanSpeed / 5F;
|
||||||
|
|
||||||
|
if(audio == null) {
|
||||||
|
audio = MainRegistry.proxy.getLoopedSound("hbm:block.fel", xCoord + 0.5F, yCoord + 2.5F, zCoord + 0.5F, getVolume(speed), 15F, speed, 20);
|
||||||
|
audio.startSound();
|
||||||
|
} else {
|
||||||
|
audio.updateVolume(getVolume(speed));
|
||||||
|
audio.updatePitch(speed);
|
||||||
|
audio.keepAlive();
|
||||||
|
}
|
||||||
|
|
||||||
|
} else {
|
||||||
|
|
||||||
|
if(audio != null) {
|
||||||
|
if(audio.isPlaying()) audio.stopSound();
|
||||||
|
audio = null;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onChunkUnload() {
|
||||||
|
super.onChunkUnload();
|
||||||
|
|
||||||
|
if(audio != null) {
|
||||||
|
audio.stopSound();
|
||||||
|
audio = null;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void invalidate() {
|
||||||
|
super.invalidate();
|
||||||
|
|
||||||
|
if(audio != null) {
|
||||||
|
audio.stopSound();
|
||||||
|
audio = null;
|
||||||
|
}
|
||||||
|
|
||||||
|
if(!worldObj.isRemote) {
|
||||||
|
if(this.klystronNode != null) UniNodespace.destroyNode(worldObj, klystronNode);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void serialize(ByteBuf buf) {
|
||||||
|
super.serialize(buf);
|
||||||
|
buf.writeBoolean(isConnected);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void deserialize(ByteBuf buf) {
|
||||||
|
super.deserialize(buf);
|
||||||
|
this.isConnected = buf.readBoolean();
|
||||||
|
}
|
||||||
|
|
||||||
|
AxisAlignedBB bb = null;
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public AxisAlignedBB getRenderBoundingBox() {
|
||||||
|
|
||||||
|
if(bb == null) {
|
||||||
|
bb = AxisAlignedBB.getBoundingBox(
|
||||||
|
xCoord - 4,
|
||||||
|
yCoord,
|
||||||
|
zCoord - 4,
|
||||||
|
xCoord + 5,
|
||||||
|
yCoord + 5,
|
||||||
|
zCoord + 5
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
return bb;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
@SideOnly(Side.CLIENT)
|
||||||
|
public double getMaxRenderDistanceSquared() {
|
||||||
|
return 65536.0D;
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -70,7 +70,13 @@ public class TileEntityRBMKHeater extends TileEntityRBMKSlottedBase implements I
|
|||||||
this.heat -= (step.heatReq * ops / TU_PER_DEGREE) * trait.getEfficiency(HeatingType.HEATEXCHANGER);
|
this.heat -= (step.heatReq * ops / TU_PER_DEGREE) * trait.getEfficiency(HeatingType.HEATEXCHANGER);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if(eff <= 0) {
|
||||||
|
feed.setTankType(Fluids.NONE);
|
||||||
|
steam.setTankType(Fluids.NONE);
|
||||||
|
}
|
||||||
|
|
||||||
} else {
|
} else {
|
||||||
|
feed.setTankType(Fluids.NONE);
|
||||||
steam.setTankType(Fluids.NONE);
|
steam.setTankType(Fluids.NONE);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -0,0 +1,184 @@
|
|||||||
|
package com.hbm.tileentity.machine.storage;
|
||||||
|
|
||||||
|
import com.hbm.interfaces.IControlReceiver;
|
||||||
|
import com.hbm.tileentity.IGUIProvider;
|
||||||
|
import com.hbm.tileentity.TileEntityMachineBase;
|
||||||
|
import com.hbm.uninos.UniNodespace;
|
||||||
|
import com.hbm.util.EnumUtil;
|
||||||
|
import com.hbm.util.fauxpointtwelve.BlockPos;
|
||||||
|
import com.hbm.util.fauxpointtwelve.DirPos;
|
||||||
|
|
||||||
|
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 cpw.mods.fml.relauncher.Side;
|
||||||
|
import cpw.mods.fml.relauncher.SideOnly;
|
||||||
|
import io.netty.buffer.ByteBuf;
|
||||||
|
import net.minecraft.entity.player.EntityPlayer;
|
||||||
|
import net.minecraft.item.ItemStack;
|
||||||
|
import net.minecraft.nbt.NBTTagCompound;
|
||||||
|
import net.minecraft.util.MathHelper;
|
||||||
|
|
||||||
|
public abstract class TileEntityBatteryBase extends TileEntityMachineBase implements IEnergyConductorMK2, IEnergyProviderMK2, IEnergyReceiverMK2, IControlReceiver, IGUIProvider {
|
||||||
|
|
||||||
|
public byte lastRedstone = 0;
|
||||||
|
public long prevPowerState = 0;
|
||||||
|
|
||||||
|
public static final int mode_input = 0;
|
||||||
|
public static final int mode_buffer = 1;
|
||||||
|
public static final int mode_output = 2;
|
||||||
|
public static final int mode_none = 3;
|
||||||
|
public short redLow = 0;
|
||||||
|
public short redHigh = 2;
|
||||||
|
public ConnectionPriority priority = ConnectionPriority.LOW;
|
||||||
|
|
||||||
|
protected PowerNode node;
|
||||||
|
|
||||||
|
public TileEntityBatteryBase(int slotCount) {
|
||||||
|
super(slotCount);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void updateEntity() {
|
||||||
|
|
||||||
|
if(!worldObj.isRemote) {
|
||||||
|
|
||||||
|
if(priority == null || priority.ordinal() == 0 || priority.ordinal() == 4) {
|
||||||
|
priority = ConnectionPriority.LOW;
|
||||||
|
}
|
||||||
|
|
||||||
|
if(this.node == null || this.node.expired) {
|
||||||
|
this.node = (PowerNode) UniNodespace.getNode(worldObj, xCoord, yCoord, zCoord, Nodespace.THE_POWER_PROVIDER);
|
||||||
|
|
||||||
|
if(this.node == null || this.node.expired) {
|
||||||
|
this.node = this.createNode();
|
||||||
|
UniNodespace.createNode(worldObj, this.node);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if(this.node != null && this.node.hasValidNet()) switch(this.getRelevantMode(false)) {
|
||||||
|
case mode_input: this.node.net.removeProvider(this); this.node.net.addReceiver(this); break;
|
||||||
|
case mode_output: this.node.net.addProvider(this); this.node.net.removeReceiver(this); break;
|
||||||
|
case mode_buffer: this.node.net.addProvider(this); this.node.net.addReceiver(this); break;
|
||||||
|
case mode_none: this.node.net.removeProvider(this); this.node.net.removeReceiver(this); break;
|
||||||
|
}
|
||||||
|
|
||||||
|
byte comp = this.getComparatorPower();
|
||||||
|
if(comp != this.lastRedstone) this.markDirty();
|
||||||
|
this.lastRedstone = comp;
|
||||||
|
|
||||||
|
prevPowerState = this.getPower();
|
||||||
|
|
||||||
|
this.networkPackNT(100);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public byte getComparatorPower() {
|
||||||
|
double frac = (double) this.getPower() / (double) this.getMaxPower() * 15D;
|
||||||
|
return (byte) (MathHelper.clamp_int((int) frac + 1, 0, 15)); //to combat eventual rounding errors with the FEnSU's stupid maxPower
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public PowerNode createNode() {
|
||||||
|
return new PowerNode(this.getPortPos()).setConnections(this.getConPos());
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void invalidate() {
|
||||||
|
super.invalidate();
|
||||||
|
|
||||||
|
if(!worldObj.isRemote) {
|
||||||
|
if(this.node != null) {
|
||||||
|
UniNodespace.destroyNode(worldObj, xCoord, yCoord, zCoord, Nodespace.THE_POWER_PROVIDER);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean isItemValidForSlot(int i, ItemStack stack) {
|
||||||
|
return stack.getItem() instanceof IBatteryItem;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void serialize(ByteBuf buf) {
|
||||||
|
super.serialize(buf);
|
||||||
|
|
||||||
|
buf.writeShort(redLow);
|
||||||
|
buf.writeShort(redHigh);
|
||||||
|
buf.writeByte(priority.ordinal());
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void deserialize(ByteBuf buf) {
|
||||||
|
super.deserialize(buf);
|
||||||
|
|
||||||
|
redLow = buf.readShort();
|
||||||
|
redHigh = buf.readShort();
|
||||||
|
priority = EnumUtil.grabEnumSafely(ConnectionPriority.class, buf.readByte());
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void readFromNBT(NBTTagCompound nbt) {
|
||||||
|
super.readFromNBT(nbt);
|
||||||
|
|
||||||
|
this.redLow = nbt.getShort("redLow");
|
||||||
|
this.redHigh = nbt.getShort("redHigh");
|
||||||
|
this.lastRedstone = nbt.getByte("lastRedstone");
|
||||||
|
this.priority = EnumUtil.grabEnumSafely(ConnectionPriority.class, nbt.getByte("priority"));
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void writeToNBT(NBTTagCompound nbt) {
|
||||||
|
super.writeToNBT(nbt);
|
||||||
|
|
||||||
|
nbt.setShort("redLow", redLow);
|
||||||
|
nbt.setShort("redHigh", redHigh);
|
||||||
|
nbt.setByte("lastRedstone", lastRedstone);
|
||||||
|
nbt.setByte("priority", (byte) this.priority.ordinal());
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override public boolean allowDirectProvision() { return false; }
|
||||||
|
@Override public ConnectionPriority getPriority() { return this.priority; }
|
||||||
|
|
||||||
|
public abstract BlockPos[] getPortPos();
|
||||||
|
public abstract DirPos[] getConPos();
|
||||||
|
|
||||||
|
private short modeCache = 0;
|
||||||
|
|
||||||
|
public short getRelevantMode(boolean useCache) {
|
||||||
|
if(useCache) return this.modeCache;
|
||||||
|
boolean powered = false;
|
||||||
|
for(BlockPos pos : getPortPos()) if(worldObj.isBlockIndirectlyGettingPowered(pos.getX(), pos.getY(), pos.getZ())) { powered = true; break; }
|
||||||
|
this.modeCache = powered ? this.redHigh : this.redLow;
|
||||||
|
return this.modeCache;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override public boolean hasPermission(EntityPlayer player) { return this.isUseableByPlayer(player); }
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void receiveControl(NBTTagCompound data) {
|
||||||
|
if(data.hasKey("low")) {
|
||||||
|
this.redLow++;
|
||||||
|
if(this.redLow > 3) this.redLow = 0;
|
||||||
|
}
|
||||||
|
if(data.hasKey("high")) {
|
||||||
|
this.redHigh++;
|
||||||
|
if(this.redHigh > 3) this.redHigh = 0;
|
||||||
|
}
|
||||||
|
if(data.hasKey("priority")) {
|
||||||
|
int ordinal = this.priority.ordinal();
|
||||||
|
ordinal++;
|
||||||
|
if(ordinal > ConnectionPriority.HIGH.ordinal()) ordinal = ConnectionPriority.LOW.ordinal();
|
||||||
|
this.priority = EnumUtil.grabEnumSafely(ConnectionPriority.class, ordinal);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
@SideOnly(Side.CLIENT)
|
||||||
|
public double getMaxRenderDistanceSquared() {
|
||||||
|
return 65536.0D;
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -0,0 +1,221 @@
|
|||||||
|
package com.hbm.tileentity.machine.storage;
|
||||||
|
|
||||||
|
import java.math.BigInteger;
|
||||||
|
|
||||||
|
import com.hbm.inventory.container.ContainerBatteryREDD;
|
||||||
|
import com.hbm.inventory.gui.GUIBatteryREDD;
|
||||||
|
import com.hbm.lib.Library;
|
||||||
|
import com.hbm.main.MainRegistry;
|
||||||
|
import com.hbm.sound.AudioWrapper;
|
||||||
|
import com.hbm.util.fauxpointtwelve.BlockPos;
|
||||||
|
import com.hbm.util.fauxpointtwelve.DirPos;
|
||||||
|
|
||||||
|
import io.netty.buffer.ByteBuf;
|
||||||
|
import net.minecraft.entity.player.EntityPlayer;
|
||||||
|
import net.minecraft.inventory.Container;
|
||||||
|
import net.minecraft.nbt.NBTTagCompound;
|
||||||
|
import net.minecraft.util.AxisAlignedBB;
|
||||||
|
import net.minecraft.world.World;
|
||||||
|
import net.minecraftforge.common.util.ForgeDirection;
|
||||||
|
|
||||||
|
public class TileEntityBatteryREDD extends TileEntityBatteryBase {
|
||||||
|
|
||||||
|
public float prevRotation = 0F;
|
||||||
|
public float rotation = 0F;
|
||||||
|
|
||||||
|
public BigInteger[] log = new BigInteger[20];
|
||||||
|
public BigInteger delta = BigInteger.valueOf(0);
|
||||||
|
|
||||||
|
public BigInteger power = BigInteger.valueOf(0);
|
||||||
|
|
||||||
|
private AudioWrapper audio;
|
||||||
|
|
||||||
|
public TileEntityBatteryREDD() {
|
||||||
|
super(2);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override public String getName() { return "container.batteryREDD"; }
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void updateEntity() {
|
||||||
|
BigInteger prevPower = new BigInteger(power.toByteArray());
|
||||||
|
|
||||||
|
super.updateEntity();
|
||||||
|
|
||||||
|
if(!worldObj.isRemote) {
|
||||||
|
|
||||||
|
long toAdd = Library.chargeTEFromItems(slots, 0, 0, this.getMaxPower());
|
||||||
|
if(toAdd > 0) this.power = this.power.add(BigInteger.valueOf(toAdd));
|
||||||
|
|
||||||
|
long toRemove = this.getPower() - Library.chargeItemsFromTE(slots, 1, this.getPower(), this.getMaxPower());
|
||||||
|
if(toRemove > 0)this.power = this.power.subtract(BigInteger.valueOf(toRemove));
|
||||||
|
|
||||||
|
// same implementation as for batteries, however retooled to use bigints because fuck
|
||||||
|
BigInteger avg = this.power.add(prevPower).divide(BigInteger.valueOf(2));
|
||||||
|
this.delta = avg.subtract(this.log[0] == null ? BigInteger.ZERO : this.log[0]);
|
||||||
|
|
||||||
|
for(int i = 1; i < this.log.length; i++) {
|
||||||
|
this.log[i - 1] = this.log[i];
|
||||||
|
}
|
||||||
|
|
||||||
|
this.log[19] = avg;
|
||||||
|
|
||||||
|
} else {
|
||||||
|
this.prevRotation = this.rotation;
|
||||||
|
this.rotation += this.getSpeed();
|
||||||
|
|
||||||
|
if(rotation >= 360) {
|
||||||
|
rotation -= 360;
|
||||||
|
prevRotation -= 360;
|
||||||
|
}
|
||||||
|
|
||||||
|
float pitch = 0.5F + this.getSpeed() / 15F * 1.5F;
|
||||||
|
|
||||||
|
if(this.prevRotation != this.rotation && MainRegistry.proxy.me().getDistanceSq(xCoord + 0.5, yCoord + 5.5, zCoord + 0.5) < 30 * 30) {
|
||||||
|
if(this.audio == null || !this.audio.isPlaying()) {
|
||||||
|
this.audio = MainRegistry.proxy.getLoopedSound("hbm:block.fensuHum", xCoord, yCoord, zCoord, this.getVolume(1.5F), 25F, pitch, 5);
|
||||||
|
this.audio.startSound();
|
||||||
|
}
|
||||||
|
|
||||||
|
this.audio.updateVolume(this.getVolume(1.5F));
|
||||||
|
this.audio.updatePitch(pitch);
|
||||||
|
this.audio.keepAlive();
|
||||||
|
|
||||||
|
} else {
|
||||||
|
if(this.audio != null) {
|
||||||
|
this.audio.stopSound();
|
||||||
|
this.audio = null;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public float getSpeed() {
|
||||||
|
return (float) Math.min(Math.pow(Math.log(this.power.doubleValue() * 0.05 + 1) * 0.05F, 5), 15F);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onChunkUnload() {
|
||||||
|
super.onChunkUnload();
|
||||||
|
if(audio != null) {
|
||||||
|
audio.stopSound();
|
||||||
|
audio = null;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void invalidate() {
|
||||||
|
super.invalidate();
|
||||||
|
if(audio != null) {
|
||||||
|
audio.stopSound();
|
||||||
|
audio = null;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void serialize(ByteBuf buf) {
|
||||||
|
super.serialize(buf);
|
||||||
|
|
||||||
|
byte[] array0 = this.power.toByteArray();
|
||||||
|
buf.writeInt(array0.length);
|
||||||
|
for(byte b : array0) buf.writeByte(b);
|
||||||
|
|
||||||
|
byte[] array1 = this.delta.toByteArray();
|
||||||
|
buf.writeInt(array1.length);
|
||||||
|
for(byte b : array1) buf.writeByte(b);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void deserialize(ByteBuf buf) {
|
||||||
|
super.deserialize(buf);
|
||||||
|
|
||||||
|
byte[] array0 = new byte[buf.readInt()];
|
||||||
|
for(int i = 0 ; i < array0.length; i++) array0[i] = buf.readByte();
|
||||||
|
this.power = new BigInteger(array0);
|
||||||
|
|
||||||
|
byte[] array1 = new byte[buf.readInt()];
|
||||||
|
for(int i = 0 ; i < array1.length; i++) array1[i] = buf.readByte();
|
||||||
|
this.delta = new BigInteger(array1);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void readFromNBT(NBTTagCompound nbt) {
|
||||||
|
super.readFromNBT(nbt);
|
||||||
|
|
||||||
|
this.power = new BigInteger(nbt.getByteArray("power"));
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void writeToNBT(NBTTagCompound nbt) {
|
||||||
|
super.writeToNBT(nbt);
|
||||||
|
|
||||||
|
nbt.setByteArray("power", this.power.toByteArray());
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public BlockPos[] getPortPos() {
|
||||||
|
ForgeDirection dir = ForgeDirection.getOrientation(this.getBlockMetadata() - 10);
|
||||||
|
ForgeDirection rot = dir.getRotation(ForgeDirection.UP);
|
||||||
|
return new BlockPos[] {
|
||||||
|
new BlockPos(xCoord + dir.offsetX * 2 + rot.offsetX * 2, yCoord, zCoord + dir.offsetZ * 2 + rot.offsetZ * 2),
|
||||||
|
new BlockPos(xCoord + dir.offsetX * 2 - rot.offsetX * 2, yCoord, zCoord + dir.offsetZ * 2 - rot.offsetZ * 2),
|
||||||
|
new BlockPos(xCoord - dir.offsetX * 2 + rot.offsetX * 2, yCoord, zCoord - dir.offsetZ * 2 + rot.offsetZ * 2),
|
||||||
|
new BlockPos(xCoord - dir.offsetX * 2 - rot.offsetX * 2, yCoord, zCoord - dir.offsetZ * 2 - rot.offsetZ * 2),
|
||||||
|
new BlockPos(xCoord + rot.offsetX * 4, yCoord, zCoord + rot.offsetZ * 4),
|
||||||
|
new BlockPos(xCoord - rot.offsetX * 4, yCoord, zCoord - rot.offsetZ * 4),
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public DirPos[] getConPos() {
|
||||||
|
ForgeDirection dir = ForgeDirection.getOrientation(this.getBlockMetadata() - 10);
|
||||||
|
ForgeDirection rot = dir.getRotation(ForgeDirection.UP);
|
||||||
|
return new DirPos[] {
|
||||||
|
new DirPos(xCoord + dir.offsetX * 3 + rot.offsetX * 2, yCoord, zCoord + dir.offsetZ * 3 + rot.offsetZ * 2, dir),
|
||||||
|
new DirPos(xCoord + dir.offsetX * 3 - rot.offsetX * 2, yCoord, zCoord + dir.offsetZ * 3 - rot.offsetZ * 2, dir),
|
||||||
|
new DirPos(xCoord - dir.offsetX * 3 + rot.offsetX * 2, yCoord, zCoord - dir.offsetZ * 3 + rot.offsetZ * 2, dir.getOpposite()),
|
||||||
|
new DirPos(xCoord - dir.offsetX * 3 - rot.offsetX * 2, yCoord, zCoord - dir.offsetZ * 3 - rot.offsetZ * 2, dir.getOpposite()),
|
||||||
|
new DirPos(xCoord + rot.offsetX * 5, yCoord, zCoord + rot.offsetZ * 5, rot),
|
||||||
|
new DirPos(xCoord - rot.offsetX * 5, yCoord, zCoord - rot.offsetZ * 5, rot.getOpposite()),
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void usePower(long power) {
|
||||||
|
this.power = this.power.subtract(BigInteger.valueOf(power));
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public long transferPower(long power) {
|
||||||
|
this.power = this.power.add(BigInteger.valueOf(power));
|
||||||
|
return 0L;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override public long getPower() { return this.power.min(BigInteger.valueOf(getMaxPower() / 2)).longValue(); } // for provision
|
||||||
|
@Override public void setPower(long power) { } // not needed since we use transferPower and usePower directly
|
||||||
|
@Override public long getMaxPower() { return Long.MAX_VALUE / 100L; } // for connection speed
|
||||||
|
|
||||||
|
@Override public Container provideContainer(int ID, EntityPlayer player, World world, int x, int y, int z) { return new ContainerBatteryREDD(player.inventory, this); }
|
||||||
|
@Override public Object provideGUI(int ID, EntityPlayer player, World world, int x, int y, int z) { return new GUIBatteryREDD(player.inventory, this); }
|
||||||
|
|
||||||
|
AxisAlignedBB bb = null;
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public AxisAlignedBB getRenderBoundingBox() {
|
||||||
|
|
||||||
|
if(bb == null) {
|
||||||
|
bb = AxisAlignedBB.getBoundingBox(
|
||||||
|
xCoord - 4,
|
||||||
|
yCoord,
|
||||||
|
zCoord - 4,
|
||||||
|
xCoord + 5,
|
||||||
|
yCoord + 10,
|
||||||
|
zCoord + 5
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
return bb;
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -1,53 +1,33 @@
|
|||||||
package com.hbm.tileentity.machine.storage;
|
package com.hbm.tileentity.machine.storage;
|
||||||
|
|
||||||
import com.hbm.interfaces.IControlReceiver;
|
|
||||||
import com.hbm.inventory.container.ContainerBatterySocket;
|
import com.hbm.inventory.container.ContainerBatterySocket;
|
||||||
import com.hbm.inventory.gui.GUIBatterySocket;
|
import com.hbm.inventory.gui.GUIBatterySocket;
|
||||||
import com.hbm.items.ModItems;
|
import com.hbm.items.ModItems;
|
||||||
import com.hbm.tileentity.IGUIProvider;
|
import com.hbm.util.CompatEnergyControl;
|
||||||
import com.hbm.tileentity.TileEntityMachineBase;
|
|
||||||
import com.hbm.uninos.UniNodespace;
|
|
||||||
import com.hbm.util.EnumUtil;
|
import com.hbm.util.EnumUtil;
|
||||||
import com.hbm.util.fauxpointtwelve.BlockPos;
|
import com.hbm.util.fauxpointtwelve.BlockPos;
|
||||||
import com.hbm.util.fauxpointtwelve.DirPos;
|
import com.hbm.util.fauxpointtwelve.DirPos;
|
||||||
|
|
||||||
import api.hbm.energymk2.IBatteryItem;
|
import api.hbm.energymk2.IBatteryItem;
|
||||||
import api.hbm.energymk2.IEnergyConductorMK2;
|
import api.hbm.redstoneoverradio.IRORInteractive;
|
||||||
import api.hbm.energymk2.IEnergyProviderMK2;
|
import api.hbm.redstoneoverradio.IRORValueProvider;
|
||||||
import api.hbm.energymk2.IEnergyReceiverMK2;
|
import api.hbm.tile.IInfoProviderEC;
|
||||||
import api.hbm.energymk2.Nodespace;
|
|
||||||
import api.hbm.energymk2.Nodespace.PowerNode;
|
|
||||||
import cpw.mods.fml.relauncher.Side;
|
|
||||||
import cpw.mods.fml.relauncher.SideOnly;
|
|
||||||
import io.netty.buffer.ByteBuf;
|
import io.netty.buffer.ByteBuf;
|
||||||
import net.minecraft.entity.player.EntityPlayer;
|
import net.minecraft.entity.player.EntityPlayer;
|
||||||
import net.minecraft.inventory.Container;
|
import net.minecraft.inventory.Container;
|
||||||
import net.minecraft.item.ItemStack;
|
import net.minecraft.item.ItemStack;
|
||||||
import net.minecraft.nbt.NBTTagCompound;
|
import net.minecraft.nbt.NBTTagCompound;
|
||||||
import net.minecraft.util.AxisAlignedBB;
|
import net.minecraft.util.AxisAlignedBB;
|
||||||
import net.minecraft.util.MathHelper;
|
|
||||||
import net.minecraft.world.World;
|
import net.minecraft.world.World;
|
||||||
import net.minecraftforge.common.util.ForgeDirection;
|
import net.minecraftforge.common.util.ForgeDirection;
|
||||||
|
|
||||||
public class TileEntityBatterySocket extends TileEntityMachineBase implements IEnergyConductorMK2, IEnergyProviderMK2, IEnergyReceiverMK2, IControlReceiver, IGUIProvider {
|
public class TileEntityBatterySocket extends TileEntityBatteryBase implements IRORValueProvider, IRORInteractive, IInfoProviderEC {
|
||||||
|
|
||||||
public long[] log = new long[20];
|
public long[] log = new long[20];
|
||||||
public long delta = 0;
|
public long delta = 0;
|
||||||
public byte lastRedstone = 0;
|
|
||||||
public long prevPowerState = 0;
|
|
||||||
|
|
||||||
public static final int mode_input = 0;
|
|
||||||
public static final int mode_buffer = 1;
|
|
||||||
public static final int mode_output = 2;
|
|
||||||
public static final int mode_none = 3;
|
|
||||||
public short redLow = 0;
|
|
||||||
public short redHigh = 2;
|
|
||||||
public ConnectionPriority priority = ConnectionPriority.LOW;
|
|
||||||
|
|
||||||
public int renderPack = -1;
|
public int renderPack = -1;
|
||||||
|
|
||||||
protected PowerNode node;
|
|
||||||
|
|
||||||
public TileEntityBatterySocket() {
|
public TileEntityBatterySocket() {
|
||||||
super(1);
|
super(1);
|
||||||
}
|
}
|
||||||
@ -56,36 +36,12 @@ public class TileEntityBatterySocket extends TileEntityMachineBase implements IE
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void updateEntity() {
|
public void updateEntity() {
|
||||||
|
long prevPower = this.getPower();
|
||||||
|
|
||||||
|
super.updateEntity();
|
||||||
|
|
||||||
if(!worldObj.isRemote) {
|
if(!worldObj.isRemote) {
|
||||||
|
|
||||||
if(priority == null || priority.ordinal() == 0 || priority.ordinal() == 4) {
|
|
||||||
priority = ConnectionPriority.LOW;
|
|
||||||
}
|
|
||||||
|
|
||||||
long prevPower = this.getPower();
|
|
||||||
|
|
||||||
if(this.node == null || this.node.expired) {
|
|
||||||
|
|
||||||
this.node = (PowerNode) UniNodespace.getNode(worldObj, xCoord, yCoord, zCoord, Nodespace.THE_POWER_PROVIDER);
|
|
||||||
|
|
||||||
if(this.node == null || this.node.expired) {
|
|
||||||
this.node = this.createNode();
|
|
||||||
UniNodespace.createNode(worldObj, this.node);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if(this.node != null && this.node.hasValidNet()) switch(this.getRelevantMode(false)) {
|
|
||||||
case mode_input: this.node.net.removeProvider(this); this.node.net.addReceiver(this); break;
|
|
||||||
case mode_output: this.node.net.addProvider(this); this.node.net.removeReceiver(this); break;
|
|
||||||
case mode_buffer: this.node.net.addProvider(this); this.node.net.addReceiver(this); break;
|
|
||||||
case mode_none: this.node.net.removeProvider(this); this.node.net.removeReceiver(this); break;
|
|
||||||
}
|
|
||||||
|
|
||||||
byte comp = this.getComparatorPower();
|
|
||||||
if(comp != this.lastRedstone) this.markDirty();
|
|
||||||
this.lastRedstone = comp;
|
|
||||||
|
|
||||||
long avg = (this.getPower() + prevPower) / 2;
|
long avg = (this.getPower() + prevPower) / 2;
|
||||||
this.delta = avg - this.log[0];
|
this.delta = avg - this.log[0];
|
||||||
|
|
||||||
@ -94,31 +50,6 @@ public class TileEntityBatterySocket extends TileEntityMachineBase implements IE
|
|||||||
}
|
}
|
||||||
|
|
||||||
this.log[19] = avg;
|
this.log[19] = avg;
|
||||||
|
|
||||||
prevPowerState = this.getPower();
|
|
||||||
|
|
||||||
this.networkPackNT(100);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public PowerNode createNode() {
|
|
||||||
return new PowerNode(this.getPortPos()).setConnections(this.getConPos());
|
|
||||||
}
|
|
||||||
|
|
||||||
public byte getComparatorPower() {
|
|
||||||
double frac = (double) this.getPower() / (double) this.getMaxPower() * 15D;
|
|
||||||
return (byte) (MathHelper.clamp_int((int) frac + 1, 0, 15)); //to combat eventual rounding errors with the FEnSU's stupid maxPower
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void invalidate() {
|
|
||||||
super.invalidate();
|
|
||||||
|
|
||||||
if(!worldObj.isRemote) {
|
|
||||||
if(this.node != null) {
|
|
||||||
UniNodespace.destroyNode(worldObj, xCoord, yCoord, zCoord, Nodespace.THE_POWER_PROVIDER);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -130,43 +61,15 @@ public class TileEntityBatterySocket extends TileEntityMachineBase implements IE
|
|||||||
if(slots[0] != null && slots[0].getItem() == ModItems.battery_pack) {
|
if(slots[0] != null && slots[0].getItem() == ModItems.battery_pack) {
|
||||||
renderPack = slots[0].getItemDamage();
|
renderPack = slots[0].getItemDamage();
|
||||||
}
|
}
|
||||||
|
|
||||||
buf.writeInt(renderPack);
|
buf.writeInt(renderPack);
|
||||||
buf.writeLong(delta);
|
buf.writeLong(delta);
|
||||||
buf.writeShort(redLow);
|
|
||||||
buf.writeShort(redHigh);
|
|
||||||
buf.writeByte(priority.ordinal());
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void deserialize(ByteBuf buf) {
|
public void deserialize(ByteBuf buf) {
|
||||||
super.deserialize(buf);
|
super.deserialize(buf);
|
||||||
|
|
||||||
renderPack = buf.readInt();
|
renderPack = buf.readInt();
|
||||||
delta = buf.readLong();
|
delta = buf.readLong();
|
||||||
redLow = buf.readShort();
|
|
||||||
redHigh = buf.readShort();
|
|
||||||
priority = EnumUtil.grabEnumSafely(ConnectionPriority.class, buf.readByte());
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void readFromNBT(NBTTagCompound nbt) {
|
|
||||||
super.readFromNBT(nbt);
|
|
||||||
|
|
||||||
this.redLow = nbt.getShort("redLow");
|
|
||||||
this.redHigh = nbt.getShort("redHigh");
|
|
||||||
this.lastRedstone = nbt.getByte("lastRedstone");
|
|
||||||
this.priority = EnumUtil.grabEnumSafely(ConnectionPriority.class, nbt.getByte("priority"));
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void writeToNBT(NBTTagCompound nbt) {
|
|
||||||
super.writeToNBT(nbt);
|
|
||||||
|
|
||||||
nbt.setShort("redLow", redLow);
|
|
||||||
nbt.setShort("redHigh", redHigh);
|
|
||||||
nbt.setByte("lastRedstone", lastRedstone);
|
|
||||||
nbt.setByte("priority", (byte) this.priority.ordinal());
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@ -178,11 +81,6 @@ public class TileEntityBatterySocket extends TileEntityMachineBase implements IE
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
|
||||||
public boolean isItemValidForSlot(int i, ItemStack stack) {
|
|
||||||
return stack.getItem() instanceof IBatteryItem;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override public int[] getAccessibleSlotsFromSide(int side) { return new int[] {0}; }
|
@Override public int[] getAccessibleSlotsFromSide(int side) { return new int[] {0}; }
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@ -203,9 +101,6 @@ public class TileEntityBatterySocket extends TileEntityMachineBase implements IE
|
|||||||
return ((IBatteryItem) slots[0].getItem()).getMaxCharge(slots[0]);
|
return ((IBatteryItem) slots[0].getItem()).getMaxCharge(slots[0]);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override public boolean allowDirectProvision() { return false; }
|
|
||||||
@Override public ConnectionPriority getPriority() { return this.priority; }
|
|
||||||
|
|
||||||
@Override public long getProviderSpeed() {
|
@Override public long getProviderSpeed() {
|
||||||
if(slots[0] == null || !(slots[0].getItem() instanceof IBatteryItem)) return 0;
|
if(slots[0] == null || !(slots[0].getItem() instanceof IBatteryItem)) return 0;
|
||||||
int mode = this.getRelevantMode(true);
|
int mode = this.getRelevantMode(true);
|
||||||
@ -218,6 +113,7 @@ public class TileEntityBatterySocket extends TileEntityMachineBase implements IE
|
|||||||
return mode == mode_input || mode == mode_buffer ? ((IBatteryItem) slots[0].getItem()).getChargeRate(slots[0]) : 0;
|
return mode == mode_input || mode == mode_buffer ? ((IBatteryItem) slots[0].getItem()).getChargeRate(slots[0]) : 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
public BlockPos[] getPortPos() {
|
public BlockPos[] getPortPos() {
|
||||||
ForgeDirection dir = ForgeDirection.getOrientation(this.getBlockMetadata() - 10);
|
ForgeDirection dir = ForgeDirection.getOrientation(this.getBlockMetadata() - 10);
|
||||||
ForgeDirection rot = dir.getRotation(ForgeDirection.UP);
|
ForgeDirection rot = dir.getRotation(ForgeDirection.UP);
|
||||||
@ -229,6 +125,7 @@ public class TileEntityBatterySocket extends TileEntityMachineBase implements IE
|
|||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
public DirPos[] getConPos() {
|
public DirPos[] getConPos() {
|
||||||
ForgeDirection dir = ForgeDirection.getOrientation(this.getBlockMetadata() - 10);
|
ForgeDirection dir = ForgeDirection.getOrientation(this.getBlockMetadata() - 10);
|
||||||
ForgeDirection rot = dir.getRotation(ForgeDirection.UP);
|
ForgeDirection rot = dir.getRotation(ForgeDirection.UP);
|
||||||
@ -247,39 +144,9 @@ public class TileEntityBatterySocket extends TileEntityMachineBase implements IE
|
|||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
private short modeCache = 0;
|
|
||||||
|
|
||||||
public short getRelevantMode(boolean useCache) {
|
|
||||||
if(useCache) return this.modeCache;
|
|
||||||
boolean powered = false;
|
|
||||||
for(BlockPos pos : getPortPos()) if(worldObj.isBlockIndirectlyGettingPowered(pos.getX(), pos.getY(), pos.getZ())) { powered = true; break; }
|
|
||||||
this.modeCache = powered ? this.redHigh : this.redLow;
|
|
||||||
return this.modeCache;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override public Container provideContainer(int ID, EntityPlayer player, World world, int x, int y, int z) { return new ContainerBatterySocket(player.inventory, this); }
|
@Override public Container provideContainer(int ID, EntityPlayer player, World world, int x, int y, int z) { return new ContainerBatterySocket(player.inventory, this); }
|
||||||
@Override public Object provideGUI(int ID, EntityPlayer player, World world, int x, int y, int z) { return new GUIBatterySocket(player.inventory, this); }
|
@Override public Object provideGUI(int ID, EntityPlayer player, World world, int x, int y, int z) { return new GUIBatterySocket(player.inventory, this); }
|
||||||
|
|
||||||
@Override public boolean hasPermission(EntityPlayer player) { return this.isUseableByPlayer(player); }
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void receiveControl(NBTTagCompound data) {
|
|
||||||
if(data.hasKey("low")) {
|
|
||||||
this.redLow++;
|
|
||||||
if(this.redLow > 3) this.redLow = 0;
|
|
||||||
}
|
|
||||||
if(data.hasKey("high")) {
|
|
||||||
this.redHigh++;
|
|
||||||
if(this.redHigh > 3) this.redHigh = 0;
|
|
||||||
}
|
|
||||||
if(data.hasKey("priority")) {
|
|
||||||
int ordinal = this.priority.ordinal();
|
|
||||||
ordinal++;
|
|
||||||
if(ordinal > ConnectionPriority.HIGH.ordinal()) ordinal = ConnectionPriority.LOW.ordinal();
|
|
||||||
this.priority = EnumUtil.grabEnumSafely(ConnectionPriority.class, ordinal);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
AxisAlignedBB bb = null;
|
AxisAlignedBB bb = null;
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@ -300,8 +167,74 @@ public class TileEntityBatterySocket extends TileEntityMachineBase implements IE
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@SideOnly(Side.CLIENT)
|
public String[] getFunctionInfo() {
|
||||||
public double getMaxRenderDistanceSquared() {
|
return new String[] {
|
||||||
return 65536.0D;
|
PREFIX_VALUE + "fill",
|
||||||
|
PREFIX_VALUE + "fillpercent",
|
||||||
|
PREFIX_VALUE + "delta",
|
||||||
|
PREFIX_FUNCTION + "setmode" + NAME_SEPARATOR + "mode",
|
||||||
|
PREFIX_FUNCTION + "setmode" + NAME_SEPARATOR + "mode" + PARAM_SEPARATOR + "fallback",
|
||||||
|
PREFIX_FUNCTION + "setredmode" + NAME_SEPARATOR + "mode",
|
||||||
|
PREFIX_FUNCTION + "setredmode" + NAME_SEPARATOR + "mode" + PARAM_SEPARATOR + "fallback",
|
||||||
|
PREFIX_FUNCTION + "setpriority" + NAME_SEPARATOR + "priority",
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String provideRORValue(String name) {
|
||||||
|
if((PREFIX_VALUE + "fill").equals(name)) return "" + this.getPower();
|
||||||
|
if((PREFIX_VALUE + "fillpercent").equals(name)) return "" + this.getPower() * 100 / (Math.min(this.getMaxPower(), 1));
|
||||||
|
if((PREFIX_VALUE + "delta").equals(name)) return "" + delta;
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String runRORFunction(String name, String[] params) {
|
||||||
|
|
||||||
|
if((PREFIX_FUNCTION + "setmode").equals(name) && params.length > 0) {
|
||||||
|
int mode = IRORInteractive.parseInt(params[0], 0, 3);
|
||||||
|
|
||||||
|
if(mode != this.redLow) {
|
||||||
|
this.redLow = (short) mode;
|
||||||
|
this.markChanged();
|
||||||
|
return null;
|
||||||
|
} else if(params.length > 1) {
|
||||||
|
int altmode = IRORInteractive.parseInt(params[1], 0, 3);
|
||||||
|
this.redLow = (short) altmode;
|
||||||
|
this.markChanged();
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
if((PREFIX_FUNCTION + "setredmode").equals(name) && params.length > 0) {
|
||||||
|
int mode = IRORInteractive.parseInt(params[0], 0, 3);
|
||||||
|
|
||||||
|
if(mode != this.redHigh) {
|
||||||
|
this.redHigh = (short) mode;
|
||||||
|
this.markChanged();
|
||||||
|
return null;
|
||||||
|
} else if(params.length > 1) {
|
||||||
|
int altmode = IRORInteractive.parseInt(params[1], 0, 3);
|
||||||
|
this.redHigh = (short) altmode;
|
||||||
|
this.markChanged();
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
if((PREFIX_FUNCTION + "setpriority").equals(name) && params.length > 0) {
|
||||||
|
int priority = IRORInteractive.parseInt(params[0], 0, 2) + 1;
|
||||||
|
ConnectionPriority p = EnumUtil.grabEnumSafely(ConnectionPriority.class, priority);
|
||||||
|
this.priority = p;
|
||||||
|
this.markChanged();
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void provideExtraInfo(NBTTagCompound data) {
|
||||||
|
data.setLong(CompatEnergyControl.L_DIFF_HE, (log[0] - log[19]) / 20L);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -3,7 +3,6 @@ package com.hbm.tileentity.machine.storage;
|
|||||||
import com.hbm.inventory.container.ContainerMassStorage;
|
import com.hbm.inventory.container.ContainerMassStorage;
|
||||||
import com.hbm.inventory.gui.GUIMassStorage;
|
import com.hbm.inventory.gui.GUIMassStorage;
|
||||||
import com.hbm.items.ModItems;
|
import com.hbm.items.ModItems;
|
||||||
import com.hbm.tileentity.IBufPacketReceiver;
|
|
||||||
import com.hbm.tileentity.IControlReceiverFilter;
|
import com.hbm.tileentity.IControlReceiverFilter;
|
||||||
|
|
||||||
import com.hbm.util.BufferUtil;
|
import com.hbm.util.BufferUtil;
|
||||||
@ -21,7 +20,7 @@ import net.minecraft.nbt.NBTTagCompound;
|
|||||||
import net.minecraft.util.Vec3;
|
import net.minecraft.util.Vec3;
|
||||||
import net.minecraft.world.World;
|
import net.minecraft.world.World;
|
||||||
|
|
||||||
public class TileEntityMassStorage extends TileEntityCrateBase implements IBufPacketReceiver, IControlReceiverFilter, IRORValueProvider, IRORInteractive {
|
public class TileEntityMassStorage extends TileEntityCrateBase implements IControlReceiverFilter, IRORValueProvider, IRORInteractive {
|
||||||
|
|
||||||
private int stack = 0;
|
private int stack = 0;
|
||||||
public boolean output = false;
|
public boolean output = false;
|
||||||
@ -92,7 +91,7 @@ public class TileEntityMassStorage extends TileEntityCrateBase implements IBufPa
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
networkPackNT(15);
|
networkPackNT(32); // TE render distance
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -295,6 +294,11 @@ public class TileEntityMassStorage extends TileEntityCrateBase implements IBufPa
|
|||||||
nbt.setByte("redstone", (byte) redstone);
|
nbt.setByte("redstone", (byte) redstone);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@SideOnly(Side.CLIENT)
|
||||||
|
public double getMaxRenderDistanceSquared() {
|
||||||
|
return 1024.0D; // only render mass storage info 32 blocks away, for performance
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void nextMode(int i) {
|
public void nextMode(int i) {
|
||||||
|
|
||||||
|
|||||||
@ -0,0 +1,157 @@
|
|||||||
|
package com.hbm.tileentity.network;
|
||||||
|
|
||||||
|
import api.hbm.redstoneoverradio.IRORInteractive;
|
||||||
|
import api.hbm.redstoneoverradio.IRORValueProvider;
|
||||||
|
import com.hbm.handler.CompatHandler;
|
||||||
|
import com.hbm.inventory.fluid.Fluids;
|
||||||
|
import com.hbm.uninos.UniNodespace;
|
||||||
|
import cpw.mods.fml.common.Optional;
|
||||||
|
import io.netty.buffer.ByteBuf;
|
||||||
|
import li.cil.oc.api.machine.Arguments;
|
||||||
|
import li.cil.oc.api.machine.Callback;
|
||||||
|
import li.cil.oc.api.machine.Context;
|
||||||
|
import li.cil.oc.api.network.SimpleComponent;
|
||||||
|
import net.minecraft.block.Block;
|
||||||
|
import net.minecraft.nbt.NBTTagCompound;
|
||||||
|
import net.minecraft.world.World;
|
||||||
|
|
||||||
|
@Optional.InterfaceList({@Optional.Interface(iface = "li.cil.oc.api.network.SimpleComponent", modid = "OpenComputers")})
|
||||||
|
public class TileEntityFluidCounterValve extends TileEntityPipeBaseNT implements SimpleComponent, CompatHandler.OCComponent, IRORValueProvider, IRORInteractive {
|
||||||
|
private long counter;
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void updateEntity() {
|
||||||
|
super.updateEntity();
|
||||||
|
|
||||||
|
if(!worldObj.isRemote) {
|
||||||
|
if(node != null && node.net != null && getType() != Fluids.NONE) {
|
||||||
|
counter += node.net.fluidTracker;
|
||||||
|
}
|
||||||
|
|
||||||
|
networkPackNT(25);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean shouldCreateNode() {
|
||||||
|
return this.getBlockMetadata() == 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void updateState() {
|
||||||
|
this.blockMetadata = -1; // delete cache
|
||||||
|
|
||||||
|
if(this.getBlockMetadata() == 0 && this.node != null) {
|
||||||
|
UniNodespace.destroyNode(worldObj, xCoord, yCoord, zCoord, this.getType().getNetworkProvider());
|
||||||
|
this.node = null;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean shouldRefresh(Block oldBlock, Block newBlock, int oldMeta, int newMeta, World world, int x, int y, int z) {
|
||||||
|
return oldBlock != newBlock;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void readFromNBT(NBTTagCompound nbt) {
|
||||||
|
super.readFromNBT(nbt);
|
||||||
|
counter = nbt.getLong("counter");
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void writeToNBT(NBTTagCompound nbt) {
|
||||||
|
super.writeToNBT(nbt);
|
||||||
|
nbt.setLong("counter", counter);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void serialize(ByteBuf buf) {
|
||||||
|
buf.writeLong(counter);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void deserialize(ByteBuf buf) {
|
||||||
|
this.counter = Math.max(buf.readLong(), 0);
|
||||||
|
}
|
||||||
|
|
||||||
|
private void setState(int state) {
|
||||||
|
worldObj.setBlockMetadataWithNotify(xCoord, yCoord, zCoord, state, 2);
|
||||||
|
worldObj.playSoundEffect(xCoord, yCoord, zCoord, "hbm:block.reactorStart", 1.0F, 1.0F);
|
||||||
|
updateState();
|
||||||
|
}
|
||||||
|
|
||||||
|
public long getCounter() {
|
||||||
|
return counter;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Optional.Method(modid = "OpenComputers")
|
||||||
|
public String getComponentName() {
|
||||||
|
return "ntm_fluid_counter_valve";
|
||||||
|
}
|
||||||
|
|
||||||
|
@Callback(direct = true)
|
||||||
|
@Optional.Method(modid = "OpenComputers")
|
||||||
|
public Object[] getFluid(Context context, Arguments args) {
|
||||||
|
return new Object[] {getType().getName()};
|
||||||
|
}
|
||||||
|
|
||||||
|
@Callback(direct = true)
|
||||||
|
@Optional.Method(modid = "OpenComputers")
|
||||||
|
public Object[] getCounter(Context context, Arguments args) {
|
||||||
|
return new Object[] {counter};
|
||||||
|
}
|
||||||
|
|
||||||
|
@Callback(direct = true)
|
||||||
|
@Optional.Method(modid = "OpenComputers")
|
||||||
|
public Object[] resetCounter(Context context, Arguments args) {
|
||||||
|
counter = 0;
|
||||||
|
markDirty();
|
||||||
|
return new Object[] {};
|
||||||
|
}
|
||||||
|
|
||||||
|
@Callback(direct = true)
|
||||||
|
@Optional.Method(modid = "OpenComputers")
|
||||||
|
public Object[] getState(Context context, Arguments args) {
|
||||||
|
return new Object[] {getBlockMetadata() == 1 ? 1 : 0};
|
||||||
|
}
|
||||||
|
|
||||||
|
@Callback(direct = true)
|
||||||
|
@Optional.Method(modid = "OpenComputers")
|
||||||
|
public Object[] setState(Context context, Arguments args) {
|
||||||
|
final int state = args.checkInteger(0);
|
||||||
|
if(state != 0 && state != 1) {
|
||||||
|
throw new IllegalArgumentException();
|
||||||
|
}
|
||||||
|
setState(state);
|
||||||
|
return new Object[] {};
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String provideRORValue(String name) {
|
||||||
|
if((PREFIX_VALUE + "value").equals(name))
|
||||||
|
return String.valueOf(counter);
|
||||||
|
if((PREFIX_VALUE + "state").equals(name))
|
||||||
|
return String.valueOf(getBlockMetadata() == 1 ? 1 : 0);
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String[] getFunctionInfo() {
|
||||||
|
return new String[] {
|
||||||
|
PREFIX_VALUE + "value",
|
||||||
|
PREFIX_VALUE + "state",
|
||||||
|
PREFIX_FUNCTION + "reset",
|
||||||
|
PREFIX_FUNCTION + "setState" + NAME_SEPARATOR + "state",
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String runRORFunction(String name, String[] params) {
|
||||||
|
if(name.equals(PREFIX_FUNCTION + "reset")) {
|
||||||
|
counter = 0;
|
||||||
|
markDirty();
|
||||||
|
} else if(name.equals(PREFIX_FUNCTION + "setState")) {
|
||||||
|
setState(IRORInteractive.parseInt(params[0], 0, 1));
|
||||||
|
}
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -3,6 +3,7 @@ package com.hbm.uninos;
|
|||||||
import java.util.HashMap;
|
import java.util.HashMap;
|
||||||
import java.util.HashSet;
|
import java.util.HashSet;
|
||||||
import java.util.LinkedHashMap;
|
import java.util.LinkedHashMap;
|
||||||
|
import java.util.Map;
|
||||||
import java.util.Set;
|
import java.util.Set;
|
||||||
import java.util.Map.Entry;
|
import java.util.Map.Entry;
|
||||||
|
|
||||||
@ -23,7 +24,7 @@ import net.minecraft.world.World;
|
|||||||
*/
|
*/
|
||||||
public class UniNodespace {
|
public class UniNodespace {
|
||||||
|
|
||||||
public static HashMap<World, UniNodeWorld> worlds = new HashMap();
|
public static Map<World, UniNodeWorld> worlds = new HashMap();
|
||||||
public static Set<NodeNet> activeNodeNets = new HashSet();
|
public static Set<NodeNet> activeNodeNets = new HashSet();
|
||||||
|
|
||||||
public static GenNode getNode(World world, int x, int y, int z, INetworkProvider type) {
|
public static GenNode getNode(World world, int x, int y, int z, INetworkProvider type) {
|
||||||
@ -73,7 +74,7 @@ public class UniNodespace {
|
|||||||
}
|
}
|
||||||
|
|
||||||
updateNetworks();
|
updateNetworks();
|
||||||
resetReapTimer();
|
updateReapTimer();
|
||||||
}
|
}
|
||||||
|
|
||||||
private static void updateNetworks() {
|
private static void updateNetworks() {
|
||||||
@ -87,8 +88,9 @@ public class UniNodespace {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private static void resetReapTimer() {
|
private static void updateReapTimer() {
|
||||||
if(reapTimer <= 0) reapTimer = 5 * 60 * 20; // 5 minutes is more than plenty
|
if(reapTimer <= 0) reapTimer = 5 * 60 * 20; // 5 minutes is more than plenty
|
||||||
|
else reapTimer--;
|
||||||
}
|
}
|
||||||
|
|
||||||
/** Goes over each connection point of the given node, tries to find neighbor nodes and to join networks with them */
|
/** Goes over each connection point of the given node, tries to find neighbor nodes and to join networks with them */
|
||||||
|
|||||||
@ -10,8 +10,9 @@ public class CompatFluidRegistry {
|
|||||||
|
|
||||||
/** Registers a fluid with a custom ID. */
|
/** Registers a fluid with a custom ID. */
|
||||||
public static FluidType registerFluid(String name, int id, int color, int p, int f, int r, EnumSymbol symbol, ResourceLocation texture) {
|
public static FluidType registerFluid(String name, int id, int color, int p, int f, int r, EnumSymbol symbol, ResourceLocation texture) {
|
||||||
FluidType type = new FluidType(name, id, color, p, f, r, symbol, texture);
|
FluidType type = Fluids.fluidMigration.get(name);
|
||||||
Fluids.metaOrder.add(type);
|
if(type == null) type = new FluidType(name, id, color, p, f, r, symbol, texture);
|
||||||
|
else type.setupForeign(name, id, color, p, f, r, symbol, texture);
|
||||||
return type;
|
return type;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -194,6 +194,17 @@ public class Tuple {
|
|||||||
public Z getZ() {
|
public Z getZ() {
|
||||||
return this.z;
|
return this.z;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// flavor town ///
|
||||||
|
public void mangle(W w, X x, Y y, Z z) {
|
||||||
|
this.w = w;
|
||||||
|
this.x = x;
|
||||||
|
this.y = y;
|
||||||
|
this.z = z;
|
||||||
|
}
|
||||||
|
public Quartet<W,X,Y,Z> clone() {
|
||||||
|
return new Quartet(w, x, y, z);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public static class Quintet<V,W,X,Y,Z> {
|
public static class Quintet<V,W,X,Y,Z> {
|
||||||
|
|||||||
@ -17,6 +17,7 @@ import com.hbm.blocks.generic.BlockWandTandem.TileEntityWandTandem;
|
|||||||
import com.hbm.config.GeneralConfig;
|
import com.hbm.config.GeneralConfig;
|
||||||
import com.hbm.config.StructureConfig;
|
import com.hbm.config.StructureConfig;
|
||||||
import com.hbm.handler.ThreeInts;
|
import com.hbm.handler.ThreeInts;
|
||||||
|
import com.hbm.interfaces.Untested;
|
||||||
import com.hbm.main.MainRegistry;
|
import com.hbm.main.MainRegistry;
|
||||||
import com.hbm.util.Tuple.Pair;
|
import com.hbm.util.Tuple.Pair;
|
||||||
import com.hbm.util.Tuple.Quartet;
|
import com.hbm.util.Tuple.Quartet;
|
||||||
@ -80,6 +81,12 @@ public class NBTStructure {
|
|||||||
private Map<String, List<JigsawConnection>> toBottomConnections;
|
private Map<String, List<JigsawConnection>> toBottomConnections;
|
||||||
private Map<String, List<JigsawConnection>> toHorizontalConnections;
|
private Map<String, List<JigsawConnection>> toHorizontalConnections;
|
||||||
|
|
||||||
|
// incredibly shitty system for translating legacy block definitions to new ones
|
||||||
|
@Untested // i can't find a god damn factory
|
||||||
|
private static Map<String, String> substitutions = new HashMap() {{
|
||||||
|
put("hbm:tile.ore_coal_oil", "coal_ore");
|
||||||
|
}};
|
||||||
|
|
||||||
public NBTStructure(ResourceLocation resource) {
|
public NBTStructure(ResourceLocation resource) {
|
||||||
// Can't use regular resource loading, servers don't know how!
|
// Can't use regular resource loading, servers don't know how!
|
||||||
InputStream stream = NBTStructure.class.getResourceAsStream("/assets/" + resource.getResourceDomain() + "/" + resource.getResourcePath());
|
InputStream stream = NBTStructure.class.getResourceAsStream("/assets/" + resource.getResourceDomain() + "/" + resource.getResourcePath());
|
||||||
@ -322,6 +329,10 @@ public class NBTStructure {
|
|||||||
String blockName = p.getString("Name");
|
String blockName = p.getString("Name");
|
||||||
NBTTagCompound prop = p.getCompoundTag("Properties");
|
NBTTagCompound prop = p.getCompoundTag("Properties");
|
||||||
|
|
||||||
|
/// BOB PATCH ///
|
||||||
|
if(substitutions.containsKey(blockName)) blockName = substitutions.get(blockName);
|
||||||
|
/// BOB PATCH ///
|
||||||
|
|
||||||
int meta = 0;
|
int meta = 0;
|
||||||
try {
|
try {
|
||||||
meta = Integer.parseInt(prop.getString("meta"));
|
meta = Integer.parseInt(prop.getString("meta"));
|
||||||
|
|||||||
@ -322,6 +322,7 @@ container.autocrafter=Automatische Werkbank
|
|||||||
container.barrel=Fass
|
container.barrel=Fass
|
||||||
container.bat9000=Big-Ass Tank 9000
|
container.bat9000=Big-Ass Tank 9000
|
||||||
container.battery=Energiespeicher
|
container.battery=Energiespeicher
|
||||||
|
container.batteryREDD=FEnSU
|
||||||
container.batterySocket=Batteriesockel
|
container.batterySocket=Batteriesockel
|
||||||
container.bombMulti=Mehrzweckbombe
|
container.bombMulti=Mehrzweckbombe
|
||||||
container.casingBag=Hülsentasche
|
container.casingBag=Hülsentasche
|
||||||
@ -756,6 +757,7 @@ hbm.key.dash=Schub
|
|||||||
hbm.key.gunPrimary=Primärfeuer
|
hbm.key.gunPrimary=Primärfeuer
|
||||||
hbm.key.gunSecondary=Sekundärfeuer
|
hbm.key.gunSecondary=Sekundärfeuer
|
||||||
hbm.key.gunTertitary=Zielvisier
|
hbm.key.gunTertitary=Zielvisier
|
||||||
|
hbm.key.qmaw=Schnellhandbuch öffnen
|
||||||
hbm.key.toggleBack=Jetpack umschalten
|
hbm.key.toggleBack=Jetpack umschalten
|
||||||
hbm.key.toggleHUD=HUD umschalten
|
hbm.key.toggleHUD=HUD umschalten
|
||||||
hbm.key.toggleMagnet=Magnet umschalten
|
hbm.key.toggleMagnet=Magnet umschalten
|
||||||
@ -4061,13 +4063,13 @@ tile.c4.name=C4
|
|||||||
tile.cable_detector.name=Redstone-Stromschalter
|
tile.cable_detector.name=Redstone-Stromschalter
|
||||||
tile.cable_diode.name=Rote Kupferdiode
|
tile.cable_diode.name=Rote Kupferdiode
|
||||||
tile.cable_switch.name=Stromschalter
|
tile.cable_switch.name=Stromschalter
|
||||||
tile.capacitor_bus.name=Kondensator-Bus
|
tile.capacitor_bus.name=Kondensator-Bus (LEGACY)
|
||||||
tile.capacitor_bus.desc=Output für Kondensatoren$Kann in einer geraden Linie aneinandergereit werden
|
tile.capacitor_bus.desc=Output für Kondensatoren$Kann in einer geraden Linie aneinandergereit werden
|
||||||
tile.capacitor_copper.name=Kupferkondensator
|
tile.capacitor_copper.name=Alter Kondensator
|
||||||
tile.capacitor_gold.name=Goldkondensator
|
tile.capacitor_gold.name=Goldkondensator (LEGACY)
|
||||||
tile.capacitor_niobium.name=Niobkondensator
|
tile.capacitor_niobium.name=Niobkondensator (LEGACY)
|
||||||
tile.capacitor_schrabidate.name=Schrabidatkondensator
|
tile.capacitor_schrabidate.name=Schrabidatkondensator (LEGACY)
|
||||||
tile.capacitor_tantalium.name=Tantalkondensator
|
tile.capacitor_tantalium.name=Tantalkondensator (LEGACY)
|
||||||
tile.capacitor.desc=Input: Oben$Output: Unten, über Kondensator-Bus
|
tile.capacitor.desc=Input: Oben$Output: Unten, über Kondensator-Bus
|
||||||
tile.charge_c4.name=Abrissladung
|
tile.charge_c4.name=Abrissladung
|
||||||
tile.charge_dynamite.name=Zeitbombe
|
tile.charge_dynamite.name=Zeitbombe
|
||||||
@ -4336,6 +4338,8 @@ tile.fusion_hatch.name=Fusionsreaktorzugriffsluke
|
|||||||
tile.fusion_heater.name=Plasmaerhitzer-Komponente
|
tile.fusion_heater.name=Plasmaerhitzer-Komponente
|
||||||
tile.fusion_klystron.name=Klystron
|
tile.fusion_klystron.name=Klystron
|
||||||
tile.fusion_klystron.desc=Energiequelle für einen Fusionsreaktor.$Benötigt Kühlung mittles Druckluft.
|
tile.fusion_klystron.desc=Energiequelle für einen Fusionsreaktor.$Benötigt Kühlung mittles Druckluft.
|
||||||
|
tile.fusion_klystron_creative.name=Kreativ-Klystron
|
||||||
|
tile.fusion_klystron_creative.desc=Erzeugt unendlich viel Klystron-Energie.
|
||||||
tile.fusion_mhdt.name=MHD-Turbine
|
tile.fusion_mhdt.name=MHD-Turbine
|
||||||
tile.fusion_mhdt.desc=Wandelt Plasmaenergie in verwendbare$elektrische Energie um. Effizienter als ein$konventioneller Boiler.$Benötigt Kühlung!
|
tile.fusion_mhdt.desc=Wandelt Plasmaenergie in verwendbare$elektrische Energie um. Effizienter als ein$konventioneller Boiler.$Benötigt Kühlung!
|
||||||
tile.fusion_motor.name=Magnetmotorstück
|
tile.fusion_motor.name=Magnetmotorstück
|
||||||
@ -4474,9 +4478,11 @@ tile.machine_autosaw.name=Automatische Kreissäge
|
|||||||
tile.machine_autosaw.desc=Schneidet Pflanzen nieder, pflanzt Bäume nach$Akzeptiert:$-Holzöl$-Ethanol$-Fischöl$-Schweröl
|
tile.machine_autosaw.desc=Schneidet Pflanzen nieder, pflanzt Bäume nach$Akzeptiert:$-Holzöl$-Ethanol$-Fischöl$-Schweröl
|
||||||
tile.machine_autosaw.suspended=Angehalten
|
tile.machine_autosaw.suspended=Angehalten
|
||||||
tile.machine_bat9000.name=Big-Ass Tank 9000
|
tile.machine_bat9000.name=Big-Ass Tank 9000
|
||||||
tile.machine_battery.name=Energiespeicherblock
|
tile.machine_battery.name=Energiespeicherblock (LEGACY)
|
||||||
tile.machine_battery_potato.name=Kartoffelbatterieblock
|
tile.machine_battery_potato.name=Kartoffelbatterieblock (LEGACY)
|
||||||
|
tile.machine_battery_redd.name=FEnSU
|
||||||
tile.machine_battery_socket.name=Batteriesockel
|
tile.machine_battery_socket.name=Batteriesockel
|
||||||
|
tile.machine_battery_socket.desc=Erlaubt es, Batterien direkt mit$dem Stromnetz zu verbinden.$Verhält sich wie ein Kabel, alle$Verbindungen sind im selben Netzwek.
|
||||||
tile.machine_boiler.name=Boiler
|
tile.machine_boiler.name=Boiler
|
||||||
tile.machine_boiler.desc=Großer Boiler zum Verdampfen von Wasser oder$Erhitzen von Öl. Benötigt externe Hitzequelle.$Wärmestransferrate: ΔT*0.01 TU/t
|
tile.machine_boiler.desc=Großer Boiler zum Verdampfen von Wasser oder$Erhitzen von Öl. Benötigt externe Hitzequelle.$Wärmestransferrate: ΔT*0.01 TU/t
|
||||||
tile.machine_boiler_electric_off.name=Elektrischer Ölwärmer
|
tile.machine_boiler_electric_off.name=Elektrischer Ölwärmer
|
||||||
@ -4518,7 +4524,7 @@ tile.machine_difurnace_off.name=Hochofen
|
|||||||
tile.machine_difurnace_on.name=Hochofen
|
tile.machine_difurnace_on.name=Hochofen
|
||||||
tile.machine_difurnace_rtg_off.name=Atomarer Hochofen
|
tile.machine_difurnace_rtg_off.name=Atomarer Hochofen
|
||||||
tile.machine_difurnace_rtg_on.name=Atomarer Hochofen
|
tile.machine_difurnace_rtg_on.name=Atomarer Hochofen
|
||||||
tile.machine_dineutronium_battery.name=Spark Energiespeicherblock
|
tile.machine_dineutronium_battery.name=Spark Energiespeicherblock (LEGACY)
|
||||||
tile.machine_drain.name=Ausgussrohr
|
tile.machine_drain.name=Ausgussrohr
|
||||||
tile.machine_drill.name=Automatischer Minenbohrer
|
tile.machine_drill.name=Automatischer Minenbohrer
|
||||||
tile.machine_electric_furnace_off.name=Elektrischer Ofen
|
tile.machine_electric_furnace_off.name=Elektrischer Ofen
|
||||||
@ -4528,7 +4534,7 @@ tile.machine_epress.name=Hydraulische Presse
|
|||||||
tile.machine_exposure_chamber.name=Bestrahlungskammer
|
tile.machine_exposure_chamber.name=Bestrahlungskammer
|
||||||
tile.machine_excavator.name=Großer Minenbohrer
|
tile.machine_excavator.name=Großer Minenbohrer
|
||||||
tile.machine_fel.name=FEL
|
tile.machine_fel.name=FEL
|
||||||
tile.machine_fensu.name=FEnSU
|
tile.machine_fensu.name=FEnSU (LEGACY)
|
||||||
tile.machine_flare.name=Abfackelturm
|
tile.machine_flare.name=Abfackelturm
|
||||||
tile.machine_fluidtank.name=Tank
|
tile.machine_fluidtank.name=Tank
|
||||||
tile.machine_forcefield.name=Kraftfeldgenerator
|
tile.machine_forcefield.name=Kraftfeldgenerator
|
||||||
@ -4548,7 +4554,7 @@ tile.machine_intake.name=Lufteinlass
|
|||||||
tile.machine_keyforge.name=Schlossertisch
|
tile.machine_keyforge.name=Schlossertisch
|
||||||
tile.machine_large_turbine.name=Industrielle Dampfturbine
|
tile.machine_large_turbine.name=Industrielle Dampfturbine
|
||||||
tile.machine_large_turbine.desc=Effizienz: 100%%
|
tile.machine_large_turbine.desc=Effizienz: 100%%
|
||||||
tile.machine_lithium_battery.name=Li-Ion-Energiespeicherblock
|
tile.machine_lithium_battery.name=Li-Ion-Energiespeicherblock (LEGACY)
|
||||||
tile.machine_microwave.name=Mikrowelle
|
tile.machine_microwave.name=Mikrowelle
|
||||||
tile.machine_mining_laser.name=Bergbaulaser
|
tile.machine_mining_laser.name=Bergbaulaser
|
||||||
tile.machine_minirtg.name=Radioisotopenzelle
|
tile.machine_minirtg.name=Radioisotopenzelle
|
||||||
@ -4588,7 +4594,7 @@ tile.machine_rtg_yellow.name=Australium Supergenerator
|
|||||||
tile.machine_satlinker.name=Satelliten-ID-Manager
|
tile.machine_satlinker.name=Satelliten-ID-Manager
|
||||||
tile.machine_sawmill.name=Stirling-Sägemühle
|
tile.machine_sawmill.name=Stirling-Sägemühle
|
||||||
tile.machine_sawmill.desc=Benötigt externe Hitzequelle.$Wärmestransferrate: T*0.1 TU/t$Minimalaufnahme: 100 TU/t, Maximalaufnahme: 300 TU/t
|
tile.machine_sawmill.desc=Benötigt externe Hitzequelle.$Wärmestransferrate: T*0.1 TU/t$Minimalaufnahme: 100 TU/t, Maximalaufnahme: 300 TU/t
|
||||||
tile.machine_schrabidium_battery.name=Schrabidium-Energiespeicherblock
|
tile.machine_schrabidium_battery.name=Schrabidium-Energiespeicherblock (LEGACY)
|
||||||
tile.machine_schrabidium_transmutator.name=Schrabidium-Transmutationsgerät (LEGACY)
|
tile.machine_schrabidium_transmutator.name=Schrabidium-Transmutationsgerät (LEGACY)
|
||||||
tile.machine_selenium.name=Hochleistungs-Sternmotor
|
tile.machine_selenium.name=Hochleistungs-Sternmotor
|
||||||
tile.machine_shredder.name=Brecher
|
tile.machine_shredder.name=Brecher
|
||||||
|
|||||||
@ -727,6 +727,7 @@ container.autocrafter=Automatic Crafting Table
|
|||||||
container.barrel=Barrel
|
container.barrel=Barrel
|
||||||
container.bat9000=Big-Ass Tank 9000
|
container.bat9000=Big-Ass Tank 9000
|
||||||
container.battery=Energy Storage
|
container.battery=Energy Storage
|
||||||
|
container.batteryREDD=FEnSU
|
||||||
container.batterySocket=Battery Socket
|
container.batterySocket=Battery Socket
|
||||||
container.bombMulti=Multi Purpose Bomb
|
container.bombMulti=Multi Purpose Bomb
|
||||||
container.casingBag=Bullet Casing Bag
|
container.casingBag=Bullet Casing Bag
|
||||||
@ -1493,6 +1494,7 @@ hbm.key.dash=Dash
|
|||||||
hbm.key.gunPrimary=Primary Fire
|
hbm.key.gunPrimary=Primary Fire
|
||||||
hbm.key.gunSecondary=Secondary Fire
|
hbm.key.gunSecondary=Secondary Fire
|
||||||
hbm.key.gunTertitary=Gun Sights
|
hbm.key.gunTertitary=Gun Sights
|
||||||
|
hbm.key.qmaw=Open Quick Manual
|
||||||
hbm.key.toggleBack=Toggle Jetpack
|
hbm.key.toggleBack=Toggle Jetpack
|
||||||
hbm.key.toggleHUD=Toggle HUD
|
hbm.key.toggleHUD=Toggle HUD
|
||||||
hbm.key.toggleMagnet=Toggle Magnet
|
hbm.key.toggleMagnet=Toggle Magnet
|
||||||
@ -5277,13 +5279,13 @@ tile.c4.name=C-4
|
|||||||
tile.cable_detector.name=Redstone Power Switch
|
tile.cable_detector.name=Redstone Power Switch
|
||||||
tile.cable_diode.name=Red Copper Diode
|
tile.cable_diode.name=Red Copper Diode
|
||||||
tile.cable_switch.name=Power Switch
|
tile.cable_switch.name=Power Switch
|
||||||
tile.capacitor_bus.name=Capacitor Bus
|
tile.capacitor_bus.name=Capacitor Bus (LEGACY)
|
||||||
tile.capacitor_bus.desc=Output block for capacitors$Can be chained up in a straight line
|
tile.capacitor_bus.desc=Output block for capacitors$Can be chained up in a straight line
|
||||||
tile.capacitor_copper.name=Copper Capacitor
|
tile.capacitor_copper.name=Old Capacitor
|
||||||
tile.capacitor_gold.name=Golden Capacitor
|
tile.capacitor_gold.name=Golden Capacitor (LEGACY)
|
||||||
tile.capacitor_niobium.name=Niobium Capacitor
|
tile.capacitor_niobium.name=Niobium Capacitor (LEGACY)
|
||||||
tile.capacitor_schrabidate.name=Schrabidate Capacitor
|
tile.capacitor_schrabidate.name=Schrabidate Capacitor (LEGACY)
|
||||||
tile.capacitor_tantalium.name=Tantalum Capacitor
|
tile.capacitor_tantalium.name=Tantalum Capacitor (LEGACY)
|
||||||
tile.capacitor.desc=Input: Top$Output: Bottom, via Capacitor Bus
|
tile.capacitor.desc=Input: Top$Output: Bottom, via Capacitor Bus
|
||||||
tile.charge_c4.name=Demolition Charge
|
tile.charge_c4.name=Demolition Charge
|
||||||
tile.charge_dynamite.name=Time Bomb
|
tile.charge_dynamite.name=Time Bomb
|
||||||
@ -5547,6 +5549,8 @@ tile.fluid_duct_neo.name=Universal Fluid Duct
|
|||||||
tile.fluid_duct_paintable.name=Paintable Coated Universal Fluid Duct
|
tile.fluid_duct_paintable.name=Paintable Coated Universal Fluid Duct
|
||||||
tile.fluid_duct_solid.name=Coated Universal Fluid Duct (Deprecated)
|
tile.fluid_duct_solid.name=Coated Universal Fluid Duct (Deprecated)
|
||||||
tile.fluid_pump.name=Flow Control Pump
|
tile.fluid_pump.name=Flow Control Pump
|
||||||
|
tile.fluid_counter_valve.name=Fluid Valve with Counter
|
||||||
|
tile.fluid_counter_valve.desc=Beware of loops in your fluid network...
|
||||||
tile.fluid_switch.name=Redstone Fluid Valve
|
tile.fluid_switch.name=Redstone Fluid Valve
|
||||||
tile.fluid_valve.name=Fluid Valve
|
tile.fluid_valve.name=Fluid Valve
|
||||||
tile.foam_layer.name=Foam layer
|
tile.foam_layer.name=Foam layer
|
||||||
@ -5589,6 +5593,8 @@ tile.fusion_hatch.name=Duct Deco Block
|
|||||||
tile.fusion_heater.name=Plasma Heater Component
|
tile.fusion_heater.name=Plasma Heater Component
|
||||||
tile.fusion_klystron.name=Klystron
|
tile.fusion_klystron.name=Klystron
|
||||||
tile.fusion_klystron.desc=Power source for fusion reactors.$Requires cooling via compressed air.
|
tile.fusion_klystron.desc=Power source for fusion reactors.$Requires cooling via compressed air.
|
||||||
|
tile.fusion_klystron_creative.name=Creative Klystron
|
||||||
|
tile.fusion_klystron_creative.desc=Provides infinite klystron energy.
|
||||||
tile.fusion_mhdt.name=MHD Turbine
|
tile.fusion_mhdt.name=MHD Turbine
|
||||||
tile.fusion_mhdt.desc=Turns plasma energy into usable$electricity directly. More efficient$than a conventional boiler.$Requires cooling!
|
tile.fusion_mhdt.desc=Turns plasma energy into usable$electricity directly. More efficient$than a conventional boiler.$Requires cooling!
|
||||||
tile.fusion_motor.name=Magnet Motor Piece
|
tile.fusion_motor.name=Magnet Motor Piece
|
||||||
@ -5735,9 +5741,11 @@ tile.machine_autosaw.name=Automatic Buzz Saw
|
|||||||
tile.machine_autosaw.desc=Cuts down nearby plants, re-plants trees$Accepts:$-Wood oil$-Ethanol$-Fish oil$-Heavy oil
|
tile.machine_autosaw.desc=Cuts down nearby plants, re-plants trees$Accepts:$-Wood oil$-Ethanol$-Fish oil$-Heavy oil
|
||||||
tile.machine_autosaw.suspended=Suspended
|
tile.machine_autosaw.suspended=Suspended
|
||||||
tile.machine_bat9000.name=Big-Ass Tank 9000
|
tile.machine_bat9000.name=Big-Ass Tank 9000
|
||||||
tile.machine_battery.name=Energy Storage Block
|
tile.machine_battery.name=Energy Storage Block (LEGACY)
|
||||||
tile.machine_battery_potato.name=Potato Battery Block
|
tile.machine_battery_potato.name=Potato Battery Block (LEGACY)
|
||||||
|
tile.machine_battery_redd.name=FEnSU
|
||||||
tile.machine_battery_socket.name=Battery Socket
|
tile.machine_battery_socket.name=Battery Socket
|
||||||
|
tile.machine_battery_socket.desc=Allows battery items to be connected$to the power grid directly.$Acts as a cable, all ports are connected$to the same netowrk.
|
||||||
tile.machine_boiler.name=Boiler
|
tile.machine_boiler.name=Boiler
|
||||||
tile.machine_boiler.desc=Large boiler that can boil water or heat up oil.$Requires external heat source.$Heat transfer rate: ΔT*0.01 TU/t
|
tile.machine_boiler.desc=Large boiler that can boil water or heat up oil.$Requires external heat source.$Heat transfer rate: ΔT*0.01 TU/t
|
||||||
tile.machine_boiler_electric_off.name=Electric Oil Heater
|
tile.machine_boiler_electric_off.name=Electric Oil Heater
|
||||||
@ -5780,7 +5788,7 @@ tile.machine_difurnace_off.name=Blast Furnace
|
|||||||
tile.machine_difurnace_on.name=Blast Furnace
|
tile.machine_difurnace_on.name=Blast Furnace
|
||||||
tile.machine_difurnace_rtg_off.name=Nuclear Blast Furnace
|
tile.machine_difurnace_rtg_off.name=Nuclear Blast Furnace
|
||||||
tile.machine_difurnace_rtg_on.name=Nuclear Blast Furnace
|
tile.machine_difurnace_rtg_on.name=Nuclear Blast Furnace
|
||||||
tile.machine_dineutronium_battery.name=Spark Energy Storage Block
|
tile.machine_dineutronium_battery.name=Spark Energy Storage Block (LEGACY)
|
||||||
tile.machine_drain.name=Drainage Pipe
|
tile.machine_drain.name=Drainage Pipe
|
||||||
tile.machine_drill.name=Automatic Mining Drill
|
tile.machine_drill.name=Automatic Mining Drill
|
||||||
tile.machine_electric_furnace_off.name=Electric Furnace
|
tile.machine_electric_furnace_off.name=Electric Furnace
|
||||||
@ -5790,7 +5798,7 @@ tile.machine_epress.name=Electric Press
|
|||||||
tile.machine_excavator.name=Large Mining Drill
|
tile.machine_excavator.name=Large Mining Drill
|
||||||
tile.machine_exposure_chamber.name=Exposure Chamber
|
tile.machine_exposure_chamber.name=Exposure Chamber
|
||||||
tile.machine_fel.name=FEL
|
tile.machine_fel.name=FEL
|
||||||
tile.machine_fensu.name=FEnSU
|
tile.machine_fensu.name=FEnSU (LEGACY)
|
||||||
tile.machine_flare.name=Flare Stack
|
tile.machine_flare.name=Flare Stack
|
||||||
tile.machine_fluidtank.name=Tank
|
tile.machine_fluidtank.name=Tank
|
||||||
tile.machine_forcefield.name=Forcefield Emitter
|
tile.machine_forcefield.name=Forcefield Emitter
|
||||||
@ -5813,7 +5821,7 @@ tile.machine_large_turbine.name=Industrial Steam Turbine
|
|||||||
tile.machine_large_turbine.desc=Efficiency: 100%%
|
tile.machine_large_turbine.desc=Efficiency: 100%%
|
||||||
tile.machine_liquefactor.name=Industrial Liquefaction Machine
|
tile.machine_liquefactor.name=Industrial Liquefaction Machine
|
||||||
tile.machine_liquefactor.desc=Powerful universal machine to turn items into fluids.$Comes with versatile catalytic components, heating elements$and a built-in hydrator for petrochemical liquefaction.
|
tile.machine_liquefactor.desc=Powerful universal machine to turn items into fluids.$Comes with versatile catalytic components, heating elements$and a built-in hydrator for petrochemical liquefaction.
|
||||||
tile.machine_lithium_battery.name=Li-Ion Energy Storage Block
|
tile.machine_lithium_battery.name=Li-Ion Energy Storage Block (LEGACY)
|
||||||
tile.machine_microwave.name=Microwave
|
tile.machine_microwave.name=Microwave
|
||||||
tile.machine_mining_laser.name=Mining Laser
|
tile.machine_mining_laser.name=Mining Laser
|
||||||
tile.machine_minirtg.name=Radio Isotope Cell
|
tile.machine_minirtg.name=Radio Isotope Cell
|
||||||
@ -5853,7 +5861,7 @@ tile.machine_rtg_yellow.name=Australium Superfuel Reactor
|
|||||||
tile.machine_satlinker.name=Satellite ID Manager
|
tile.machine_satlinker.name=Satellite ID Manager
|
||||||
tile.machine_sawmill.name=Stirling Sawmill
|
tile.machine_sawmill.name=Stirling Sawmill
|
||||||
tile.machine_sawmill.desc=Requires external heat source.$Heat transfer rate: T*0.1 TU/t$Min intake: 100 TU/t, Max intake: 300 TU/t
|
tile.machine_sawmill.desc=Requires external heat source.$Heat transfer rate: T*0.1 TU/t$Min intake: 100 TU/t, Max intake: 300 TU/t
|
||||||
tile.machine_schrabidium_battery.name=Schrabidium Energy Storage Block
|
tile.machine_schrabidium_battery.name=Schrabidium Energy Storage Block (LEGACY)
|
||||||
tile.machine_schrabidium_transmutator.name=Schrabidium Transmutation Device (LEGACY)
|
tile.machine_schrabidium_transmutator.name=Schrabidium Transmutation Device (LEGACY)
|
||||||
tile.machine_selenium.name=Radial Performance Engine
|
tile.machine_selenium.name=Radial Performance Engine
|
||||||
tile.machine_shredder.name=Shredder
|
tile.machine_shredder.name=Shredder
|
||||||
|
|||||||
@ -724,6 +724,8 @@ container.autocrafter=Автоматический верстак
|
|||||||
container.barrel=Бочка
|
container.barrel=Бочка
|
||||||
container.bat9000=Охереть-большая цистерна 9000
|
container.bat9000=Охереть-большая цистерна 9000
|
||||||
container.battery=Энергохранилище
|
container.battery=Энергохранилище
|
||||||
|
container.batteryREDD=ЭМЭХ
|
||||||
|
container.batterySocket=Аккумуляторный массив
|
||||||
container.bombMulti=Многоцелевая бомба
|
container.bombMulti=Многоцелевая бомба
|
||||||
container.casingBag=Сумка для гильз
|
container.casingBag=Сумка для гильз
|
||||||
container.catalyticReformer=Каталитический реформер
|
container.catalyticReformer=Каталитический реформер
|
||||||
@ -1489,6 +1491,7 @@ hbm.key.dash=Рывок
|
|||||||
hbm.key.gunPrimary=Основной огонь
|
hbm.key.gunPrimary=Основной огонь
|
||||||
hbm.key.gunSecondary=Альтернативный огонь
|
hbm.key.gunSecondary=Альтернативный огонь
|
||||||
hbm.key.gunTertitary=Переключить прицел
|
hbm.key.gunTertitary=Переключить прицел
|
||||||
|
hbm.key.qmaw=Открыть краткое руководство
|
||||||
hbm.key.toggleMagnet=Вкл/выкл магнит
|
hbm.key.toggleMagnet=Вкл/выкл магнит
|
||||||
hbm.key.toggleBack=Включить ранец
|
hbm.key.toggleBack=Включить ранец
|
||||||
hbm.key.toggleHUD=Включить HUD
|
hbm.key.toggleHUD=Включить HUD
|
||||||
@ -2229,6 +2232,18 @@ item.battery_lithium.name=Литий-ионный аккумулятор
|
|||||||
item.battery_lithium_cell.name=Литий-ионная энергоячейка
|
item.battery_lithium_cell.name=Литий-ионная энергоячейка
|
||||||
item.battery_lithium_cell_3.name=Строенная литий-ионная энергоячейка
|
item.battery_lithium_cell_3.name=Строенная литий-ионная энергоячейка
|
||||||
item.battery_lithium_cell_6.name=Сшестерённая литий-ионная энергоячейка
|
item.battery_lithium_cell_6.name=Сшестерённая литий-ионная энергоячейка
|
||||||
|
item.battery_pack.battery_lead.name=Свинцово-серная батарея
|
||||||
|
item.battery_pack.battery_lithium.name=Литий-ионная батарея
|
||||||
|
item.battery_pack.battery_quantum.name=Квантовая батарея
|
||||||
|
item.battery_pack.battery_redstone.name=Краснокаменная батарея
|
||||||
|
item.battery_pack.battery_schrabidium.name=Шрабидиевая батарея
|
||||||
|
item.battery_pack.battery_sodium.name=Натриево-железная батарея
|
||||||
|
item.battery_pack.capacitor_bismuth.name=Висмутовый конденсатор
|
||||||
|
item.battery_pack.capacitor_copper.name=Медный конденсатор
|
||||||
|
item.battery_pack.capacitor_gold.name=Золотой конденсатор
|
||||||
|
item.battery_pack.capacitor_niobium.name=Ниобиевый конденсатор
|
||||||
|
item.battery_pack.capacitor_spark.name=Спарк-конденсатор
|
||||||
|
item.battery_pack.capacitor_tantalum.name=Танталовый конденсатор
|
||||||
item.battery_potato.name=Картофельная батарейка
|
item.battery_potato.name=Картофельная батарейка
|
||||||
item.battery_potatos.name=КартошкОС
|
item.battery_potatos.name=КартошкОС
|
||||||
item.battery_red_cell.name=Энергоячейка из красной пыли
|
item.battery_red_cell.name=Энергоячейка из красной пыли
|
||||||
@ -5534,13 +5549,13 @@ tile.c4.name=C-4
|
|||||||
tile.cable_detector.name=Редстоун-рубильник
|
tile.cable_detector.name=Редстоун-рубильник
|
||||||
tile.cable_diode.name=Диод из красной меди
|
tile.cable_diode.name=Диод из красной меди
|
||||||
tile.cable_switch.name=Рубильник
|
tile.cable_switch.name=Рубильник
|
||||||
tile.capacitor_bus.name=Шина конденсатора
|
tile.capacitor_bus.name=Шина конденсатора (LEGACY)
|
||||||
tile.capacitor_bus.desc=Выходной блок для конденсаторов$Может быть подключен по прямой линии
|
tile.capacitor_bus.desc=Выходной блок для конденсаторов$Может быть подключен по прямой линии
|
||||||
tile.capacitor_copper.name=Медный конденсатор
|
tile.capacitor_copper.name=Старый конденсатор
|
||||||
tile.capacitor_gold.name=Золотой конденсатор
|
tile.capacitor_gold.name=Золотой конденсатор (LEGACY)
|
||||||
tile.capacitor_niobium.name=Ниобиевый конденсатор
|
tile.capacitor_niobium.name=Ниобиевый конденсатор (LEGACY)
|
||||||
tile.capacitor_schrabidate.name=Шрабидатовый конденсатор
|
tile.capacitor_schrabidate.name=Шрабидатовый конденсатор (LEGACY)
|
||||||
tile.capacitor_tantalium.name=Танталовый конденсатор
|
tile.capacitor_tantalium.name=Танталовый конденсатор (LEGACY)
|
||||||
tile.capacitor.desc=Вход: Сверху$Выход: Снизу через шину
|
tile.capacitor.desc=Вход: Сверху$Выход: Снизу через шину
|
||||||
tile.charge_c4.name=Подрывной заряд
|
tile.charge_c4.name=Подрывной заряд
|
||||||
tile.charge_dynamite.name=Бомба с таймером
|
tile.charge_dynamite.name=Бомба с таймером
|
||||||
@ -5804,6 +5819,8 @@ tile.fluid_duct_neo.name=Универсальная жидкостная тру
|
|||||||
tile.fluid_duct_paintable.name=Окрашиваемая универсальная жидкостная труба
|
tile.fluid_duct_paintable.name=Окрашиваемая универсальная жидкостная труба
|
||||||
tile.fluid_duct_solid.name=Покрытая универсальная жидкостная труба (Устаревшее)
|
tile.fluid_duct_solid.name=Покрытая универсальная жидкостная труба (Устаревшее)
|
||||||
tile.fluid_pump.name=Помпа контроля потока
|
tile.fluid_pump.name=Помпа контроля потока
|
||||||
|
tile.fluid_counter_valve.name=Жидкостный клапан со счётчиком
|
||||||
|
tile.fluid_counter_valve.desc=Остерегайтесь замкнутых контуров в вашей жидкостной системе...
|
||||||
tile.fluid_switch.name=Редстоун-Жидкостный клапан
|
tile.fluid_switch.name=Редстоун-Жидкостный клапан
|
||||||
tile.fluid_valve.name=Жидкостный клапан
|
tile.fluid_valve.name=Жидкостный клапан
|
||||||
tile.foam_layer.name=Слой пены
|
tile.foam_layer.name=Слой пены
|
||||||
@ -5992,8 +6009,10 @@ tile.machine_autosaw.name=Автоматическая пила
|
|||||||
tile.machine_autosaw.desc=Срубает ближайшие растения, пересаживает деревья$Принимает:$-Древесное масло$-Этанол$-Рыбное масло$-Тяжёлую нефть
|
tile.machine_autosaw.desc=Срубает ближайшие растения, пересаживает деревья$Принимает:$-Древесное масло$-Этанол$-Рыбное масло$-Тяжёлую нефть
|
||||||
tile.machine_autosaw.suspended=Приостановлена
|
tile.machine_autosaw.suspended=Приостановлена
|
||||||
tile.machine_bat9000.name=Охереть-большая цистерна 9000
|
tile.machine_bat9000.name=Охереть-большая цистерна 9000
|
||||||
tile.machine_battery.name=Энергохранилище
|
tile.machine_battery.name=Энергохранилище (LEGACY)
|
||||||
tile.machine_battery_potato.name=Картофельная батарея
|
tile.machine_battery_potato.name=Картофельная батарея (LEGACY)
|
||||||
|
tile.machine_battery_redd.name=ЭМЭХ
|
||||||
|
tile.machine_battery_socket.name=Аккумуляторный массив
|
||||||
tile.machine_boiler.name=Бойлер
|
tile.machine_boiler.name=Бойлер
|
||||||
tile.machine_boiler.desc=Большой бойлер для кипячения воды или нагрева нефти.$Требует внешний источник тепла.$Скорость передачи тепла: ΔT*0.01 TU/t
|
tile.machine_boiler.desc=Большой бойлер для кипячения воды или нагрева нефти.$Требует внешний источник тепла.$Скорость передачи тепла: ΔT*0.01 TU/t
|
||||||
tile.machine_boiler_electric_off.name=Электрический нагреватель нефти
|
tile.machine_boiler_electric_off.name=Электрический нагреватель нефти
|
||||||
@ -6036,7 +6055,7 @@ tile.machine_difurnace_off.name=Доменная печь
|
|||||||
tile.machine_difurnace_on.name=Доменная печь
|
tile.machine_difurnace_on.name=Доменная печь
|
||||||
tile.machine_difurnace_rtg_off.name=Ядерная доменная печь
|
tile.machine_difurnace_rtg_off.name=Ядерная доменная печь
|
||||||
tile.machine_difurnace_rtg_on.name=Ядерная доменная печь
|
tile.machine_difurnace_rtg_on.name=Ядерная доменная печь
|
||||||
tile.machine_dineutronium_battery.name=Спарк-энергохранилище
|
tile.machine_dineutronium_battery.name=Спарк-энергохранилище (LEGACY)
|
||||||
tile.machine_drain.name=Сливная труба
|
tile.machine_drain.name=Сливная труба
|
||||||
tile.machine_drill.name=Автоматический горный бур
|
tile.machine_drill.name=Автоматический горный бур
|
||||||
tile.machine_electric_furnace_off.name=Электрическая печь
|
tile.machine_electric_furnace_off.name=Электрическая печь
|
||||||
@ -6046,7 +6065,7 @@ tile.machine_epress.name=Электрический пресс
|
|||||||
tile.machine_excavator.name=Большой горный бур
|
tile.machine_excavator.name=Большой горный бур
|
||||||
tile.machine_exposure_chamber.name=Камера облучения частицами
|
tile.machine_exposure_chamber.name=Камера облучения частицами
|
||||||
tile.machine_fel.name=Лазер на свободных электронах (FEL)
|
tile.machine_fel.name=Лазер на свободных электронах (FEL)
|
||||||
tile.machine_fensu.name=ЭМЭХ
|
tile.machine_fensu.name=ЭМЭХ (LEGACY)
|
||||||
tile.machine_flare.name=Газовая башня
|
tile.machine_flare.name=Газовая башня
|
||||||
tile.machine_fluidtank.name=Цистерна
|
tile.machine_fluidtank.name=Цистерна
|
||||||
tile.machine_forcefield.name=Излучатель силового поля
|
tile.machine_forcefield.name=Излучатель силового поля
|
||||||
@ -6069,7 +6088,7 @@ tile.machine_large_turbine.name=Промышленная паровая турб
|
|||||||
tile.machine_large_turbine.desc=Эффективность: 100%%
|
tile.machine_large_turbine.desc=Эффективность: 100%%
|
||||||
tile.machine_liquefactor.name=Промышленный разжижитель
|
tile.machine_liquefactor.name=Промышленный разжижитель
|
||||||
tile.machine_liquefactor.desc=Мощная машина для превращения предметов в жидкости.$Поставляется с универсальными каталитическими компонентами, нагревательными элементами$и встроенным гидратором для нефтехимического сжижения.
|
tile.machine_liquefactor.desc=Мощная машина для превращения предметов в жидкости.$Поставляется с универсальными каталитическими компонентами, нагревательными элементами$и встроенным гидратором для нефтехимического сжижения.
|
||||||
tile.machine_lithium_battery.name=Литий-ионное энергохранилище
|
tile.machine_lithium_battery.name=Литий-ионное энергохранилище (LEGACY)
|
||||||
tile.machine_microwave.name=Микроволновка
|
tile.machine_microwave.name=Микроволновка
|
||||||
tile.machine_mining_laser.name=Шахтёрский лазер
|
tile.machine_mining_laser.name=Шахтёрский лазер
|
||||||
tile.machine_minirtg.name=Радиоизотопная ячейка
|
tile.machine_minirtg.name=Радиоизотопная ячейка
|
||||||
@ -6109,7 +6128,7 @@ tile.machine_rtg_yellow.name=Австралиевый супертопливны
|
|||||||
tile.machine_satlinker.name=Менеджер ID спутников
|
tile.machine_satlinker.name=Менеджер ID спутников
|
||||||
tile.machine_sawmill.name=Лесопилка на генераторе Стирлинга
|
tile.machine_sawmill.name=Лесопилка на генераторе Стирлинга
|
||||||
tile.machine_sawmill.desc=Требует внешний источник тепла.$Скорость теплопередачи: T*0.1 TU/t$Мин. потребление: 100 TU/t, Макс. потребление intake: 300 TU/t
|
tile.machine_sawmill.desc=Требует внешний источник тепла.$Скорость теплопередачи: T*0.1 TU/t$Мин. потребление: 100 TU/t, Макс. потребление intake: 300 TU/t
|
||||||
tile.machine_schrabidium_battery.name=Шрабидиевое энергохранилище
|
tile.machine_schrabidium_battery.name=Шрабидиевое энергохранилище (LEGACY)
|
||||||
tile.machine_schrabidium_transmutator.name=Шрабидиевый трансмутатор (LEGACY)
|
tile.machine_schrabidium_transmutator.name=Шрабидиевый трансмутатор (LEGACY)
|
||||||
tile.machine_selenium.name=Радиальный двигатель
|
tile.machine_selenium.name=Радиальный двигатель
|
||||||
tile.machine_shredder.name=Измельчитель
|
tile.machine_shredder.name=Измельчитель
|
||||||
@ -6294,6 +6313,7 @@ tile.pink_log.name=Розовое дерево
|
|||||||
tile.pink_planks.name=Розовые доски
|
tile.pink_planks.name=Розовые доски
|
||||||
tile.pink_slab.name=Плита из розового дерева
|
tile.pink_slab.name=Плита из розового дерева
|
||||||
tile.pink_stairs.name=Ступеньки из розового дерева
|
tile.pink_stairs.name=Ступеньки из розового дерева
|
||||||
|
tile.pipe_anchor.name=Трубный якорь
|
||||||
tile.piston_inserter.name=Вставщик
|
tile.piston_inserter.name=Вставщик
|
||||||
tile.piston_inserter.desc=Может принимать один предмет$Если подан сигнал редстоуна, то вставит предмет в просверлённый графит$Все предметы в просверлённом графите в цепочке будут сдвинуты на один блок$Требуется один блок воздуха между графитом
|
tile.piston_inserter.desc=Может принимать один предмет$Если подан сигнал редстоуна, то вставит предмет в просверлённый графит$Все предметы в просверлённом графите в цепочке будут сдвинуты на один блок$Требуется один блок воздуха между графитом
|
||||||
tile.plant_dead.name=Мёртвое растение
|
tile.plant_dead.name=Мёртвое растение
|
||||||
@ -6804,4 +6824,11 @@ desc.gui.upgrade.speed= * §4Скорость§r: Стакается до 3-х
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@ -290,7 +290,7 @@ book.starter.page15=最终,你可以制造你的第一个§o真正§r的能源
|
|||||||
book.starter.title16=结论
|
book.starter.title16=结论
|
||||||
book.starter.page16=如果你已经走到了这一步,你已经走在重建文明大道上了. 你已经成功地用核能, 石油化工等重新制造了世界末日前的那些先进机器. 我不知道你将如何利用这些新发现的科技, 但我个人希望你利用这些优势是为了自己和他人的利益 - 或者至少是为了自卫. 再见!
|
book.starter.page16=如果你已经走到了这一步,你已经走在重建文明大道上了. 你已经成功地用核能, 石油化工等重新制造了世界末日前的那些先进机器. 我不知道你将如何利用这些新发现的科技, 但我个人希望你利用这些优势是为了自己和他人的利益 - 或者至少是为了自卫. 再见!
|
||||||
book.starter.title18=关于作者
|
book.starter.title18=关于作者
|
||||||
book.starter.page18=v?r只是一个被困在“传声头像”的§o《一生一次》§r中的 灰色虚空中太久的人. 有一次, 他发现了一扇工作室的门, 但令他沮丧的是, 他发现那是一个纸板剪出来的
|
book.starter.page18=vær只是一个被困在“传声头像”的§o《一生一次》§r中的 灰色虚空中太久的人. 有一次, 他发现了一扇工作室的门, 但令他沮丧的是, 他发现那是一个纸板剪出来的
|
||||||
book_lore.author=%s 著
|
book_lore.author=%s 著
|
||||||
book_lore.test.name=测试
|
book_lore.test.name=测试
|
||||||
book_lore.test.author=那个家伙
|
book_lore.test.author=那个家伙
|
||||||
@ -1692,7 +1692,7 @@ item.ammo_standard.p22_sp.name=.22LR子弹(普通弹)
|
|||||||
item.ammo_standard.p9_ap.name=9mm子弹(穿甲弹)
|
item.ammo_standard.p9_ap.name=9mm子弹(穿甲弹)
|
||||||
item.ammo_standard.p9_fmj.name=9mm子弹(全金属被甲弹)
|
item.ammo_standard.p9_fmj.name=9mm子弹(全金属被甲弹)
|
||||||
item.ammo_standard.p9_jhp.name=9mm子弹(被甲空尖弹)
|
item.ammo_standard.p9_jhp.name=9mm子弹(被甲空尖弹)
|
||||||
item.ammo_standard.p9_sp.name=.9mm子弹(普通弹)
|
item.ammo_standard.p9_sp.name=9mm子弹(普通弹)
|
||||||
item.ammo_standard.r556_ap.name=5.56mm子弹(穿甲弹)
|
item.ammo_standard.r556_ap.name=5.56mm子弹(穿甲弹)
|
||||||
item.ammo_standard.r556_fmj.name=5.56mm子弹(全金属被甲弹)
|
item.ammo_standard.r556_fmj.name=5.56mm子弹(全金属被甲弹)
|
||||||
item.ammo_standard.r556_jhp.name=5.56mm子弹(被甲空尖弹)
|
item.ammo_standard.r556_jhp.name=5.56mm子弹(被甲空尖弹)
|
||||||
@ -3301,8 +3301,6 @@ item.nugget_silicon.name=硅粒
|
|||||||
item.nugget_solinium.name=Sa327粒
|
item.nugget_solinium.name=Sa327粒
|
||||||
item.nugget_sr90.name=锶-90粒
|
item.nugget_sr90.name=锶-90粒
|
||||||
item.nugget_tantalium.name=钽粒
|
item.nugget_tantalium.name=钽粒
|
||||||
item.nugget_tantalium.desc=“钽”
|
|
||||||
item.nugget_tantalium.desc.P11=英文既可拼作“Tantalum”,也可拼作“Tantalium”。
|
|
||||||
item.nugget_technetium.name=锝-99粒
|
item.nugget_technetium.name=锝-99粒
|
||||||
item.nugget_th232.name=钍232粒
|
item.nugget_th232.name=钍232粒
|
||||||
item.nugget_thorium_fuel.name=钍燃料粒
|
item.nugget_thorium_fuel.name=钍燃料粒
|
||||||
@ -4737,13 +4735,13 @@ tile.c4.name=C-4
|
|||||||
tile.cable_detector.name=红石电源开关
|
tile.cable_detector.name=红石电源开关
|
||||||
tile.cable_diode.name=紫铜二极管
|
tile.cable_diode.name=紫铜二极管
|
||||||
tile.cable_switch.name=电源开关
|
tile.cable_switch.name=电源开关
|
||||||
tile.capacitor_bus.name=电容总线
|
tile.capacitor_bus.name=电容总线(遗留)
|
||||||
tile.capacitor_bus.desc=电容器的输出方块$可以连成一条直线
|
tile.capacitor_bus.desc=电容器的输出方块$可以连成一条直线
|
||||||
tile.capacitor_copper.name=铜电容
|
tile.capacitor_copper.name=铜电容器
|
||||||
tile.capacitor_gold.name=金电容
|
tile.capacitor_gold.name=金电容(遗留)
|
||||||
tile.capacitor_niobium.name=铌电容
|
tile.capacitor_niobium.name=铌电容(遗留)
|
||||||
tile.capacitor_schrabidate.name=Sa酸铁电容
|
tile.capacitor_schrabidate.name=Sa酸铁电容(遗留)
|
||||||
tile.capacitor_tantalium.name=钽电容
|
tile.capacitor_tantalium.name=钽电容器(遗留)
|
||||||
tile.capacitor.desc=输入:顶部$输出:底部,通过电容总线
|
tile.capacitor.desc=输入:顶部$输出:底部,通过电容总线
|
||||||
tile.charge_c4.name=炸药包
|
tile.charge_c4.name=炸药包
|
||||||
tile.charge_dynamite.name=定时炸弹
|
tile.charge_dynamite.name=定时炸弹
|
||||||
@ -5154,8 +5152,8 @@ tile.machine_autocrafter.name=自动工作台
|
|||||||
tile.machine_autosaw.name=自动嗡嗡锯
|
tile.machine_autosaw.name=自动嗡嗡锯
|
||||||
tile.machine_autosaw.desc=砍伐附近的植物,重新种植树木$接受:$-木油$-乙醇$-鱼油$-重油
|
tile.machine_autosaw.desc=砍伐附近的植物,重新种植树木$接受:$-木油$-乙醇$-鱼油$-重油
|
||||||
tile.machine_bat9000.name=巨尻-9000 储罐
|
tile.machine_bat9000.name=巨尻-9000 储罐
|
||||||
tile.machine_battery.name=蓄电池
|
tile.machine_battery.name=蓄电池(遗留)
|
||||||
tile.machine_battery_potato.name=马铃薯电池组
|
tile.machine_battery_potato.name=马铃薯电池组(遗留)
|
||||||
tile.machine_boiler.name=大型锅炉
|
tile.machine_boiler.name=大型锅炉
|
||||||
tile.machine_boiler.desc=可以烧水或加热油的大型锅炉$需要外部热源$传热速率:ΔT*0.01 TU/T
|
tile.machine_boiler.desc=可以烧水或加热油的大型锅炉$需要外部热源$传热速率:ΔT*0.01 TU/T
|
||||||
tile.machine_boiler_electric_off.name=电锅炉
|
tile.machine_boiler_electric_off.name=电锅炉
|
||||||
@ -5194,7 +5192,7 @@ tile.machine_difurnace_off.name=高炉
|
|||||||
tile.machine_difurnace_on.name=高炉
|
tile.machine_difurnace_on.name=高炉
|
||||||
tile.machine_difurnace_rtg_off.name=核高炉
|
tile.machine_difurnace_rtg_off.name=核高炉
|
||||||
tile.machine_difurnace_rtg_on.name=核高炉
|
tile.machine_difurnace_rtg_on.name=核高炉
|
||||||
tile.machine_dineutronium_battery.name=Spark蓄电池
|
tile.machine_dineutronium_battery.name=Spark蓄电池(遗留)
|
||||||
tile.machine_drain.name=排液管
|
tile.machine_drain.name=排液管
|
||||||
tile.machine_drill.name=自动采矿钻机
|
tile.machine_drill.name=自动采矿钻机
|
||||||
tile.machine_electric_furnace_off.name=电炉
|
tile.machine_electric_furnace_off.name=电炉
|
||||||
@ -5204,7 +5202,7 @@ tile.machine_epress.name=电动锻压机
|
|||||||
tile.machine_excavator.name=大型采矿钻机
|
tile.machine_excavator.name=大型采矿钻机
|
||||||
tile.machine_exposure_chamber.name=辐照舱
|
tile.machine_exposure_chamber.name=辐照舱
|
||||||
tile.machine_fel.name=FEL自由电子激光器
|
tile.machine_fel.name=FEL自由电子激光器
|
||||||
tile.machine_fensu.name=FEnSU飞轮储能系统
|
tile.machine_fensu.name=FEnSU飞轮储能系统(遗留)
|
||||||
tile.machine_flare.name=高架火炬
|
tile.machine_flare.name=高架火炬
|
||||||
tile.machine_fluidtank.name=储罐
|
tile.machine_fluidtank.name=储罐
|
||||||
tile.machine_forcefield.name=力场发生器
|
tile.machine_forcefield.name=力场发生器
|
||||||
@ -5226,7 +5224,7 @@ tile.machine_large_turbine.name=工业汽轮机
|
|||||||
tile.machine_large_turbine.desc=效率: 100%%
|
tile.machine_large_turbine.desc=效率: 100%%
|
||||||
tile.machine_liquefactor.name=工业液化机
|
tile.machine_liquefactor.name=工业液化机
|
||||||
tile.machine_liquefactor.desc=强大的通用机器,可将物品转化为液体$配有多功能催化组件、加热元件和用于石化液化的内置水合器。
|
tile.machine_liquefactor.desc=强大的通用机器,可将物品转化为液体$配有多功能催化组件、加热元件和用于石化液化的内置水合器。
|
||||||
tile.machine_lithium_battery.name=锂蓄电池
|
tile.machine_lithium_battery.name=锂蓄电池(遗留)
|
||||||
tile.machine_microwave.name=微波炉
|
tile.machine_microwave.name=微波炉
|
||||||
tile.machine_mining_laser.name=采矿激光
|
tile.machine_mining_laser.name=采矿激光
|
||||||
tile.machine_minirtg.name=放射性同位素电池
|
tile.machine_minirtg.name=放射性同位素电池
|
||||||
@ -5263,7 +5261,7 @@ tile.machine_rtg_yellow.name=奥斯超级燃料反应堆
|
|||||||
tile.machine_satlinker.name=卫星ID管理器
|
tile.machine_satlinker.name=卫星ID管理器
|
||||||
tile.machine_sawmill.name=斯特林锯木机
|
tile.machine_sawmill.name=斯特林锯木机
|
||||||
tile.machine_sawmill.desc=需要外部热源$传热速率:T*0.1 TU/T$最小进气量:100 TU/T,最大进气量:300 TU/T
|
tile.machine_sawmill.desc=需要外部热源$传热速率:T*0.1 TU/T$最小进气量:100 TU/T,最大进气量:300 TU/T
|
||||||
tile.machine_schrabidium_battery.name=Sa326蓄电池
|
tile.machine_schrabidium_battery.name=Sa326蓄电池(遗留)
|
||||||
tile.machine_schrabidium_transmutator.name=Sa326嬗变装置 (遗留)
|
tile.machine_schrabidium_transmutator.name=Sa326嬗变装置 (遗留)
|
||||||
tile.machine_selenium.name=星型发动机
|
tile.machine_selenium.name=星型发动机
|
||||||
tile.machine_shredder.name=粉碎机
|
tile.machine_shredder.name=粉碎机
|
||||||
@ -6383,10 +6381,29 @@ tile.fusion_torus.desc=聚变反应堆主要部件。$需要调速管输入能
|
|||||||
tile.struct_torus_core.name=聚变反应堆容器核心组件
|
tile.struct_torus_core.name=聚变反应堆容器核心组件
|
||||||
turret.arty.artillery_rocket=§e火炮模式$最低射程: 250m$最大射程: 5,000m
|
turret.arty.artillery_rocket=§e火炮模式$最低射程: 250m$最大射程: 5,000m
|
||||||
turret.arty.manual_rocket=§e手动模式$射程: 5,000m
|
turret.arty.manual_rocket=§e手动模式$射程: 5,000m
|
||||||
container.annihilator=歼灭者
|
container.annihilator=焚毁炉
|
||||||
container.machinePrecAss=精密装配机
|
container.machinePrecAss=精密装配机
|
||||||
item.item_expensive.plastic.name=塑料板
|
item.item_expensive.plastic.name=塑料板
|
||||||
tile.machine_annihilator.name=歼灭者
|
tile.machine_annihilator.name=焚毁炉
|
||||||
tile.machine_precass.name=精密装配机
|
tile.machine_precass.name=精密装配机
|
||||||
tile.wand_structure.load.name=结构加载方块
|
tile.wand_structure.load.name=结构加载方块
|
||||||
tile.wand_structure.save.name=结构保存方块
|
tile.wand_structure.save.name=结构保存方块
|
||||||
|
container.batterySocket=电池座
|
||||||
|
item.battery_pack.battery_lead.name=铅酸电池
|
||||||
|
item.battery_pack.battery_lithium.name=锂离子电池
|
||||||
|
item.battery_pack.battery_quantum.name=量子电池
|
||||||
|
item.battery_pack.battery_redstone.name=红石电池
|
||||||
|
item.battery_pack.battery_schrabidium.name=Sa326电池
|
||||||
|
item.battery_pack.battery_sodium.name=钠铁电池
|
||||||
|
item.battery_pack.capacitor_bismuth.name=铋电容
|
||||||
|
item.battery_pack.capacitor_copper.name=铜电容
|
||||||
|
item.battery_pack.capacitor_gold.name=金电容
|
||||||
|
item.battery_pack.capacitor_niobium.name=铌电容
|
||||||
|
item.battery_pack.capacitor_spark.name=Spark电容
|
||||||
|
item.battery_pack.capacitor_tantalum.name=钽电容
|
||||||
|
tile.machine_battery_socket.name=电池座
|
||||||
|
container.batteryREDD=FEnSU
|
||||||
|
hbm.key.qmaw=打开QMAW
|
||||||
|
tile.fluid_counter_valve.name=带计数器的流体阀门
|
||||||
|
tile.fluid_counter_valve.desc=注意流体网络中的回流
|
||||||
|
tile.machine_battery_redd.name=FEnSU
|
||||||
|
|||||||
@ -1,535 +0,0 @@
|
|||||||
# Blender v2.76 (sub 0) OBJ File: 'bale.blend'
|
|
||||||
# www.blender.org
|
|
||||||
o Cylinder
|
|
||||||
v 0.000000 1.000000 -0.500000
|
|
||||||
v 0.000000 1.000000 0.750000
|
|
||||||
v 0.250000 0.933013 -0.500000
|
|
||||||
v 0.250000 0.933013 0.750000
|
|
||||||
v 0.433013 0.750000 -0.500000
|
|
||||||
v 0.433013 0.750000 0.750000
|
|
||||||
v 0.500000 0.500000 -0.500000
|
|
||||||
v 0.500000 0.500000 0.750000
|
|
||||||
v 0.433013 0.250000 -0.500000
|
|
||||||
v 0.433013 0.250000 0.750000
|
|
||||||
v 0.250000 0.066987 -0.500000
|
|
||||||
v 0.250000 0.066987 0.750000
|
|
||||||
v 0.000000 -0.000000 -0.500000
|
|
||||||
v 0.000000 0.000000 0.750000
|
|
||||||
v -0.250000 0.066987 -0.500000
|
|
||||||
v -0.250000 0.066987 0.750000
|
|
||||||
v -0.433013 0.250000 -0.500000
|
|
||||||
v -0.433013 0.250000 0.750000
|
|
||||||
v -0.500000 0.500000 -0.500000
|
|
||||||
v -0.500000 0.500000 0.750000
|
|
||||||
v -0.433013 0.750000 -0.500000
|
|
||||||
v -0.433013 0.750000 0.750000
|
|
||||||
v -0.250000 0.933012 -0.500000
|
|
||||||
v -0.250000 0.933013 0.750000
|
|
||||||
v 0.187500 0.824760 1.000000
|
|
||||||
v 0.000000 0.875000 1.000000
|
|
||||||
v 0.324760 0.687500 1.000000
|
|
||||||
v 0.375000 0.500000 1.000000
|
|
||||||
v 0.324760 0.312500 1.000000
|
|
||||||
v 0.187500 0.175241 1.000000
|
|
||||||
v 0.000000 0.125000 1.000000
|
|
||||||
v -0.187500 0.175241 1.000000
|
|
||||||
v -0.324759 0.312500 1.000000
|
|
||||||
v -0.375000 0.500000 1.000000
|
|
||||||
v -0.324760 0.687500 1.000000
|
|
||||||
v -0.187500 0.824759 1.000000
|
|
||||||
v 0.000000 0.500000 1.150000
|
|
||||||
v 0.000000 0.825000 -1.150000
|
|
||||||
v 0.162500 0.781458 -1.150000
|
|
||||||
v 0.281458 0.662500 -1.150000
|
|
||||||
v 0.325000 0.500000 -1.150000
|
|
||||||
v 0.281458 0.337500 -1.150000
|
|
||||||
v 0.162500 0.218542 -1.150000
|
|
||||||
v 0.000000 0.175000 -1.150000
|
|
||||||
v -0.162500 0.218542 -1.150000
|
|
||||||
v -0.281458 0.337500 -1.150000
|
|
||||||
v -0.325000 0.500000 -1.150000
|
|
||||||
v -0.281458 0.662500 -1.150000
|
|
||||||
v -0.162500 0.781458 -1.150000
|
|
||||||
v -0.500000 0.075000 -0.950000
|
|
||||||
v 0.500000 0.075000 -0.950000
|
|
||||||
v -0.500000 0.925000 -0.950000
|
|
||||||
v 0.500000 0.925000 -0.950000
|
|
||||||
v -0.425000 0.000000 -0.950000
|
|
||||||
v 0.425000 0.000000 -0.950000
|
|
||||||
v -0.425000 1.000000 -0.950000
|
|
||||||
v 0.425000 1.000000 -0.950000
|
|
||||||
v -0.425000 0.925000 -0.950000
|
|
||||||
v 0.425000 0.925000 -0.950000
|
|
||||||
v -0.425000 0.075000 -0.950000
|
|
||||||
v 0.425000 0.075000 -0.950000
|
|
||||||
v -0.500000 0.925000 -1.200000
|
|
||||||
v -0.500000 0.075000 -1.200000
|
|
||||||
v 0.425000 0.925000 -1.200000
|
|
||||||
v 0.425000 0.075000 -1.200000
|
|
||||||
v 0.500000 0.075000 -1.200000
|
|
||||||
v 0.500000 0.925000 -1.200000
|
|
||||||
v -0.425000 0.925000 -1.200000
|
|
||||||
v -0.425000 0.075000 -1.200000
|
|
||||||
v -0.425000 -0.000000 -1.200000
|
|
||||||
v 0.425000 -0.000000 -1.200000
|
|
||||||
v 0.425000 1.000000 -1.200000
|
|
||||||
v -0.425000 1.000000 -1.200000
|
|
||||||
v -0.459619 0.075736 -1.000000
|
|
||||||
v 0.424264 0.959619 -1.000000
|
|
||||||
v -0.459619 0.075736 -1.150000
|
|
||||||
v 0.424264 0.959619 -1.150000
|
|
||||||
v -0.424264 0.040381 -1.000000
|
|
||||||
v 0.459619 0.924264 -1.000000
|
|
||||||
v -0.424264 0.040381 -1.150000
|
|
||||||
v 0.459619 0.924264 -1.150000
|
|
||||||
v 0.000000 0.825000 -1.200000
|
|
||||||
v 0.162500 0.781458 -1.200000
|
|
||||||
v 0.281458 0.662500 -1.200000
|
|
||||||
v 0.325000 0.500000 -1.200000
|
|
||||||
v 0.281458 0.337500 -1.200000
|
|
||||||
v 0.162500 0.218542 -1.200000
|
|
||||||
v 0.000000 0.175000 -1.200000
|
|
||||||
v -0.162500 0.218542 -1.200000
|
|
||||||
v -0.281458 0.337500 -1.200000
|
|
||||||
v -0.325000 0.500000 -1.200000
|
|
||||||
v -0.281458 0.662500 -1.200000
|
|
||||||
v -0.162500 0.781458 -1.200000
|
|
||||||
v -0.424264 0.959619 -1.000000
|
|
||||||
v 0.459619 0.075736 -1.000000
|
|
||||||
v -0.424264 0.959619 -1.150000
|
|
||||||
v 0.459619 0.075736 -1.150000
|
|
||||||
v -0.459619 0.924264 -1.000000
|
|
||||||
v 0.424264 0.040381 -1.000000
|
|
||||||
v -0.459619 0.924264 -1.150000
|
|
||||||
v 0.424264 0.040381 -1.150000
|
|
||||||
vt 0.788698 0.361775
|
|
||||||
vt 0.510343 0.361775
|
|
||||||
vt 0.510343 0.304140
|
|
||||||
vt 0.510343 0.246505
|
|
||||||
vt 0.788698 0.246505
|
|
||||||
vt 0.510343 0.188870
|
|
||||||
vt 0.788698 0.188870
|
|
||||||
vt 0.510343 0.131235
|
|
||||||
vt 0.510343 0.073600
|
|
||||||
vt 0.788698 0.073600
|
|
||||||
vt 0.510343 0.015964
|
|
||||||
vt 0.788698 0.015964
|
|
||||||
vt 0.788698 0.707585
|
|
||||||
vt 0.510343 0.707585
|
|
||||||
vt 0.510343 0.649950
|
|
||||||
vt 0.788698 0.649950
|
|
||||||
vt 0.510343 0.592315
|
|
||||||
vt 0.510343 0.534680
|
|
||||||
vt 0.788698 0.534680
|
|
||||||
vt 0.510343 0.477045
|
|
||||||
vt 0.788698 0.477045
|
|
||||||
vt 0.448519 0.124030
|
|
||||||
vt 0.448519 0.080804
|
|
||||||
vt 0.510343 0.419410
|
|
||||||
vt 0.788698 0.419410
|
|
||||||
vt 0.938258 0.198956
|
|
||||||
vt 0.938258 0.236419
|
|
||||||
vt 0.448519 0.181665
|
|
||||||
vt 0.448519 0.138439
|
|
||||||
vt 0.448519 0.412206
|
|
||||||
vt 0.448519 0.354571
|
|
||||||
vt 0.448519 0.311344
|
|
||||||
vt 0.448519 0.239300
|
|
||||||
vt 0.448519 0.196074
|
|
||||||
vt 0.448519 0.469841
|
|
||||||
vt 0.448519 0.296935
|
|
||||||
vt 0.448519 0.253709
|
|
||||||
vt 0.448519 0.527476
|
|
||||||
vt 0.448519 0.484250
|
|
||||||
vt 0.448519 0.585111
|
|
||||||
vt 0.448519 0.541885
|
|
||||||
vt 0.448519 0.642746
|
|
||||||
vt 0.448519 0.599520
|
|
||||||
vt 0.448519 0.700381
|
|
||||||
vt 0.448519 0.657155
|
|
||||||
vt 0.448519 0.066395
|
|
||||||
vt 0.361215 0.678768
|
|
||||||
vt 0.361214 0.621133
|
|
||||||
vt 0.361215 0.563498
|
|
||||||
vt 0.361215 0.505863
|
|
||||||
vt 0.361215 0.448228
|
|
||||||
vt 0.448519 0.426615
|
|
||||||
vt 0.361215 0.390593
|
|
||||||
vt 0.448519 0.368979
|
|
||||||
vt 0.361215 0.332957
|
|
||||||
vt 0.448519 0.023169
|
|
||||||
vt 0.361215 0.044782
|
|
||||||
vt 0.361214 0.102417
|
|
||||||
vt 0.361215 0.160052
|
|
||||||
vt 0.361215 0.217687
|
|
||||||
vt 0.361215 0.275322
|
|
||||||
vt 0.938258 0.141321
|
|
||||||
vt 0.949392 0.141321
|
|
||||||
vt 0.949392 0.178784
|
|
||||||
vt 0.938258 0.429496
|
|
||||||
vt 0.938258 0.466959
|
|
||||||
vt 0.788698 0.304140
|
|
||||||
vt 0.938258 0.256591
|
|
||||||
vt 0.938258 0.487131
|
|
||||||
vt 0.788698 0.592315
|
|
||||||
vt 0.938258 0.544766
|
|
||||||
vt 0.938258 0.602401
|
|
||||||
vt 0.938258 0.639864
|
|
||||||
vt 0.938258 0.660037
|
|
||||||
vt 0.938258 0.697499
|
|
||||||
vt 0.938258 0.026051
|
|
||||||
vt 0.938258 0.063514
|
|
||||||
vt 0.938258 0.083686
|
|
||||||
vt 0.938258 0.121149
|
|
||||||
vt 0.788698 0.131235
|
|
||||||
vt 0.938258 0.178784
|
|
||||||
vt 0.938258 0.371861
|
|
||||||
vt 0.938258 0.409324
|
|
||||||
vt 0.938258 0.314226
|
|
||||||
vt 0.938258 0.351689
|
|
||||||
vt 0.680346 0.943229
|
|
||||||
vt 0.680346 0.959931
|
|
||||||
vt 0.491064 0.959931
|
|
||||||
vt 0.680346 0.753947
|
|
||||||
vt 0.491064 0.753947
|
|
||||||
vt 0.491064 0.737246
|
|
||||||
vt 0.491064 0.943229
|
|
||||||
vt 0.474362 0.943229
|
|
||||||
vt 0.474362 0.753947
|
|
||||||
vt 0.697047 0.753947
|
|
||||||
vt 0.680346 0.737246
|
|
||||||
vt 0.697047 0.943229
|
|
||||||
vt 0.932691 0.959931
|
|
||||||
vt 0.743409 0.959931
|
|
||||||
vt 0.743409 0.943229
|
|
||||||
vt 0.932691 0.737246
|
|
||||||
vt 0.932691 0.753947
|
|
||||||
vt 0.743409 0.753947
|
|
||||||
vt 0.949392 0.753947
|
|
||||||
vt 0.949392 0.943229
|
|
||||||
vt 0.932691 0.943229
|
|
||||||
vt 0.726707 0.753947
|
|
||||||
vt 0.743409 0.737246
|
|
||||||
vt 0.726707 0.943229
|
|
||||||
vt 0.190552 0.394528
|
|
||||||
vt 0.190552 0.205246
|
|
||||||
vt 0.246223 0.205246
|
|
||||||
vt 0.331554 0.228866
|
|
||||||
vt 0.275883 0.228866
|
|
||||||
vt 0.275883 0.205247
|
|
||||||
vt 0.331554 0.418148
|
|
||||||
vt 0.275883 0.418148
|
|
||||||
vt 0.331554 0.631049
|
|
||||||
vt 0.275883 0.631049
|
|
||||||
vt 0.275883 0.441767
|
|
||||||
vt 0.190551 0.015964
|
|
||||||
vt 0.246223 0.015964
|
|
||||||
vt 0.331554 0.867570
|
|
||||||
vt 0.275883 0.867570
|
|
||||||
vt 0.275883 0.843951
|
|
||||||
vt 0.190552 0.583811
|
|
||||||
vt 0.246223 0.583811
|
|
||||||
vt 0.246223 0.773093
|
|
||||||
vt 0.331554 0.654669
|
|
||||||
vt 0.275883 0.654669
|
|
||||||
vt 0.331554 0.205247
|
|
||||||
vt 0.275883 0.015964
|
|
||||||
vt 0.331554 0.843951
|
|
||||||
vt 0.331554 0.441767
|
|
||||||
vt 0.246223 0.394528
|
|
||||||
vt 0.053199 0.941767
|
|
||||||
vt 0.331554 0.941767
|
|
||||||
vt 0.331554 0.975170
|
|
||||||
vt 0.053199 0.930633
|
|
||||||
vt 0.331554 0.930633
|
|
||||||
vt 0.053198 0.897230
|
|
||||||
vt 0.331554 0.897230
|
|
||||||
vt 0.053199 0.975170
|
|
||||||
vt 0.331554 0.986304
|
|
||||||
vt 0.127488 0.015964
|
|
||||||
vt 0.127488 0.294321
|
|
||||||
vt 0.116354 0.294321
|
|
||||||
vt 0.116354 0.015964
|
|
||||||
vt 0.082952 0.294321
|
|
||||||
vt 0.039809 0.445063
|
|
||||||
vt 0.142160 0.342712
|
|
||||||
vt 0.160891 0.412619
|
|
||||||
vt 0.949392 0.429496
|
|
||||||
vt 0.949392 0.466959
|
|
||||||
vt 0.949392 0.314226
|
|
||||||
vt 0.949392 0.351689
|
|
||||||
vt 0.949392 0.602401
|
|
||||||
vt 0.949392 0.639864
|
|
||||||
vt 0.949392 0.083686
|
|
||||||
vt 0.949392 0.121149
|
|
||||||
vt 0.949392 0.371861
|
|
||||||
vt 0.949392 0.409324
|
|
||||||
vt 0.949392 0.256591
|
|
||||||
vt 0.949392 0.294054
|
|
||||||
vt 0.949392 0.544766
|
|
||||||
vt 0.949392 0.582229
|
|
||||||
vt 0.949392 0.026051
|
|
||||||
vt 0.949392 0.198956
|
|
||||||
vt 0.949392 0.236419
|
|
||||||
vt 0.949392 0.487131
|
|
||||||
vt 0.949392 0.524594
|
|
||||||
vt 0.949392 0.660037
|
|
||||||
vt 0.949392 0.697499
|
|
||||||
vt 0.160891 0.015964
|
|
||||||
vt 0.160891 0.294321
|
|
||||||
vt 0.082951 0.015964
|
|
||||||
vt 0.071817 0.294321
|
|
||||||
vt 0.938258 0.294054
|
|
||||||
vt 0.938258 0.524594
|
|
||||||
vt 0.938258 0.582229
|
|
||||||
vt 0.190551 0.773093
|
|
||||||
vt 0.331554 0.015964
|
|
||||||
vt 0.053199 0.986304
|
|
||||||
vt 0.142160 0.445063
|
|
||||||
vt 0.109716 0.463794
|
|
||||||
vt 0.072253 0.463794
|
|
||||||
vt 0.021078 0.412619
|
|
||||||
vt 0.021078 0.375156
|
|
||||||
vt 0.039809 0.342712
|
|
||||||
vt 0.072253 0.323981
|
|
||||||
vt 0.109716 0.323981
|
|
||||||
vt 0.160891 0.375156
|
|
||||||
vt 0.949392 0.063513
|
|
||||||
vt 0.071817 0.015964
|
|
||||||
vn 0.258800 0.965900 0.000000
|
|
||||||
vn 0.707100 0.707100 0.000000
|
|
||||||
vn 0.965900 0.258800 0.000000
|
|
||||||
vn 0.965900 -0.258800 0.000000
|
|
||||||
vn 0.707100 -0.707100 0.000000
|
|
||||||
vn 0.258800 -0.965900 0.000000
|
|
||||||
vn -0.258800 -0.965900 0.000000
|
|
||||||
vn -0.707100 -0.707100 0.000000
|
|
||||||
vn -0.965900 -0.258800 0.000000
|
|
||||||
vn -0.965900 0.258800 -0.000000
|
|
||||||
vn 0.636700 -0.636700 0.434900
|
|
||||||
vn -0.258800 0.965900 -0.000000
|
|
||||||
vn -0.707100 0.707100 -0.000000
|
|
||||||
vn 0.934800 0.250500 -0.251700
|
|
||||||
vn 0.869800 -0.233100 0.434900
|
|
||||||
vn -0.233100 0.869800 0.434900
|
|
||||||
vn 0.233100 0.869800 0.434900
|
|
||||||
vn 0.869800 0.233100 0.434900
|
|
||||||
vn -0.636700 0.636700 0.434900
|
|
||||||
vn 0.636700 0.636700 0.434900
|
|
||||||
vn -0.869800 0.233100 0.434900
|
|
||||||
vn -0.869800 -0.233100 0.434900
|
|
||||||
vn -0.636700 -0.636700 0.434900
|
|
||||||
vn -0.233100 -0.869800 0.434900
|
|
||||||
vn 0.233100 -0.869800 0.434900
|
|
||||||
vn -0.099000 -0.369600 0.923900
|
|
||||||
vn -0.270500 -0.270500 0.923900
|
|
||||||
vn -0.369600 -0.099000 0.923900
|
|
||||||
vn -0.369600 0.099000 0.923900
|
|
||||||
vn -0.270500 0.270500 0.923900
|
|
||||||
vn -0.099000 0.369600 0.923900
|
|
||||||
vn 0.099000 0.369600 0.923900
|
|
||||||
vn 0.099000 -0.369600 0.923900
|
|
||||||
vn 0.270500 -0.270500 0.923900
|
|
||||||
vn 0.369600 -0.099000 0.923900
|
|
||||||
vn 0.369600 0.099000 0.923900
|
|
||||||
vn 0.270500 0.270500 0.923900
|
|
||||||
vn -0.684300 0.684300 -0.251700
|
|
||||||
vn 0.684300 0.684300 -0.251700
|
|
||||||
vn -0.934800 0.250500 -0.251700
|
|
||||||
vn -0.934800 -0.250500 -0.251700
|
|
||||||
vn -0.684300 -0.684300 -0.251700
|
|
||||||
vn -0.250500 -0.934800 -0.251700
|
|
||||||
vn 0.250500 -0.934800 -0.251700
|
|
||||||
vn 0.684300 -0.684300 -0.251700
|
|
||||||
vn 0.934800 -0.250500 -0.251700
|
|
||||||
vn -0.250500 0.934800 -0.251700
|
|
||||||
vn 0.250500 0.934800 -0.251700
|
|
||||||
vn 0.000000 0.000000 1.000000
|
|
||||||
vn 0.000000 -0.000000 -1.000000
|
|
||||||
vn 1.000000 0.000000 0.000000
|
|
||||||
vn -1.000000 0.000000 0.000000
|
|
||||||
vn 0.000000 1.000000 0.000000
|
|
||||||
vn 0.000000 -1.000000 0.000000
|
|
||||||
s off
|
|
||||||
f 1/1/1 2/2/1 4/3/1
|
|
||||||
f 4/3/2 6/4/2 5/5/2
|
|
||||||
f 5/5/3 6/4/3 8/6/3
|
|
||||||
f 7/7/4 8/6/4 10/8/4
|
|
||||||
f 10/8/5 12/9/5 11/10/5
|
|
||||||
f 12/9/6 14/11/6 13/12/6
|
|
||||||
f 13/13/7 14/14/7 16/15/7
|
|
||||||
f 15/16/8 16/15/8 18/17/8
|
|
||||||
f 18/17/9 20/18/9 19/19/9
|
|
||||||
f 20/18/10 22/20/10 21/21/10
|
|
||||||
f 10/8/11 29/22/11 30/23/11
|
|
||||||
f 24/24/12 2/2/12 1/1/12
|
|
||||||
f 22/20/13 24/24/13 23/25/13
|
|
||||||
f 7/7/14 41/26/14 40/27/14
|
|
||||||
f 8/6/15 28/28/15 29/29/15
|
|
||||||
f 2/2/16 24/24/16 36/30/16
|
|
||||||
f 2/2/17 26/31/17 25/32/17
|
|
||||||
f 6/4/18 27/33/18 28/34/18
|
|
||||||
f 24/24/19 22/20/19 35/35/19
|
|
||||||
f 4/3/20 25/36/20 27/37/20
|
|
||||||
f 20/18/21 34/38/21 35/39/21
|
|
||||||
f 18/17/22 33/40/22 34/41/22
|
|
||||||
f 16/15/23 32/42/23 33/43/23
|
|
||||||
f 14/14/24 31/44/24 32/45/24
|
|
||||||
f 14/11/25 12/9/25 30/46/25
|
|
||||||
f 31/44/26 37/47/26 32/45/26
|
|
||||||
f 32/42/27 37/48/27 33/43/27
|
|
||||||
f 33/40/28 37/49/28 34/41/28
|
|
||||||
f 34/38/29 37/50/29 35/39/29
|
|
||||||
f 35/35/30 37/51/30 36/52/30
|
|
||||||
f 36/30/31 37/53/31 26/54/31
|
|
||||||
f 26/31/32 37/55/32 25/32/32
|
|
||||||
f 31/56/33 30/46/33 37/57/33
|
|
||||||
f 29/22/34 37/58/34 30/23/34
|
|
||||||
f 28/28/35 37/59/35 29/29/35
|
|
||||||
f 27/33/36 37/60/36 28/34/36
|
|
||||||
f 25/36/37 37/61/37 27/37/37
|
|
||||||
f 42/62/4 86/63/4 85/64/4
|
|
||||||
f 23/25/38 49/65/38 48/66/38
|
|
||||||
f 3/67/39 5/5/39 40/68/39
|
|
||||||
f 19/19/40 21/21/40 48/69/40
|
|
||||||
f 17/70/41 19/19/41 47/71/41
|
|
||||||
f 17/70/42 46/72/42 45/73/42
|
|
||||||
f 15/16/43 45/74/43 44/75/43
|
|
||||||
f 13/12/44 44/76/44 43/77/44
|
|
||||||
f 11/10/45 43/78/45 42/79/45
|
|
||||||
f 9/80/46 42/62/46 41/81/46
|
|
||||||
f 1/1/47 38/82/47 49/83/47
|
|
||||||
f 3/67/48 39/84/48 38/85/48
|
|
||||||
f 61/86/49 51/87/49 53/88/49
|
|
||||||
f 60/89/49 58/90/49 52/91/49
|
|
||||||
f 59/92/49 57/93/49 56/94/49
|
|
||||||
f 53/88/49 57/93/49 59/92/49
|
|
||||||
f 56/94/49 52/91/49 58/90/49
|
|
||||||
f 54/95/49 60/89/49 50/96/49
|
|
||||||
f 51/87/49 61/86/49 55/97/49
|
|
||||||
f 60/89/49 54/95/49 55/97/49
|
|
||||||
f 67/98/50 66/99/50 65/100/50
|
|
||||||
f 62/101/50 68/102/50 69/103/50
|
|
||||||
f 73/104/50 72/105/50 64/106/50
|
|
||||||
f 67/98/50 64/106/50 72/105/50
|
|
||||||
f 73/104/50 68/102/50 62/101/50
|
|
||||||
f 70/107/50 63/108/50 69/103/50
|
|
||||||
f 66/99/50 71/109/50 65/100/50
|
|
||||||
f 71/109/50 70/107/50 69/103/50
|
|
||||||
f 58/110/51 60/111/51 69/112/51
|
|
||||||
f 50/113/8 63/114/8 70/115/8
|
|
||||||
f 52/116/52 62/117/52 63/114/52
|
|
||||||
f 57/118/53 72/119/53 73/120/53
|
|
||||||
f 61/121/53 65/122/53 69/112/53
|
|
||||||
f 55/123/5 71/124/5 66/125/5
|
|
||||||
f 59/126/52 64/127/52 65/128/52
|
|
||||||
f 53/129/2 67/130/2 72/119/2
|
|
||||||
f 54/131/54 70/115/54 71/132/54
|
|
||||||
f 53/129/51 51/133/51 66/125/51
|
|
||||||
f 56/134/13 73/120/13 62/117/13
|
|
||||||
f 58/110/54 68/135/54 64/127/54
|
|
||||||
f 77/136/13 76/137/13 74/138/13
|
|
||||||
f 81/139/50 80/140/50 76/137/50
|
|
||||||
f 79/141/5 78/142/5 80/140/5
|
|
||||||
f 75/143/49 74/138/49 78/144/49
|
|
||||||
f 101/145/50 100/146/50 96/147/50
|
|
||||||
f 97/148/2 96/147/2 94/149/2
|
|
||||||
f 85/150/50 91/151/50 93/152/50
|
|
||||||
f 49/65/13 93/153/13 92/154/13
|
|
||||||
f 39/84/1 83/155/1 82/156/1
|
|
||||||
f 46/72/8 90/157/8 89/158/8
|
|
||||||
f 43/78/5 87/159/5 86/160/5
|
|
||||||
f 38/82/12 82/161/12 93/162/12
|
|
||||||
f 40/68/2 84/163/2 83/164/2
|
|
||||||
f 47/71/9 91/165/9 90/166/9
|
|
||||||
f 43/77/6 44/76/6 88/167/6
|
|
||||||
f 41/26/3 85/168/3 84/169/3
|
|
||||||
f 48/69/10 92/170/10 91/171/10
|
|
||||||
f 45/74/7 89/172/7 88/173/7
|
|
||||||
f 99/174/8 98/175/8 100/146/8
|
|
||||||
f 95/176/49 94/149/49 98/177/49
|
|
||||||
f 3/67/1 1/1/1 4/3/1
|
|
||||||
f 3/67/2 4/3/2 5/5/2
|
|
||||||
f 7/7/3 5/5/3 8/6/3
|
|
||||||
f 9/80/4 7/7/4 10/8/4
|
|
||||||
f 9/80/5 10/8/5 11/10/5
|
|
||||||
f 11/10/6 12/9/6 13/12/6
|
|
||||||
f 15/16/7 13/13/7 16/15/7
|
|
||||||
f 17/70/8 15/16/8 18/17/8
|
|
||||||
f 17/70/9 18/17/9 19/19/9
|
|
||||||
f 19/19/10 20/18/10 21/21/10
|
|
||||||
f 12/9/11 10/8/11 30/23/11
|
|
||||||
f 23/25/12 24/24/12 1/1/12
|
|
||||||
f 21/21/13 22/20/13 23/25/13
|
|
||||||
f 5/5/14 7/7/14 40/27/14
|
|
||||||
f 10/8/15 8/6/15 29/29/15
|
|
||||||
f 26/54/16 2/2/16 36/30/16
|
|
||||||
f 4/3/17 2/2/17 25/32/17
|
|
||||||
f 8/6/18 6/4/18 28/34/18
|
|
||||||
f 36/52/19 24/24/19 35/35/19
|
|
||||||
f 6/4/20 4/3/20 27/37/20
|
|
||||||
f 22/20/21 20/18/21 35/39/21
|
|
||||||
f 20/18/22 18/17/22 34/41/22
|
|
||||||
f 18/17/23 16/15/23 33/43/23
|
|
||||||
f 16/15/24 14/14/24 32/45/24
|
|
||||||
f 31/56/25 14/11/25 30/46/25
|
|
||||||
f 41/81/4 42/62/4 85/64/4
|
|
||||||
f 21/21/38 23/25/38 48/66/38
|
|
||||||
f 39/178/39 3/67/39 40/68/39
|
|
||||||
f 47/179/40 19/19/40 48/69/40
|
|
||||||
f 46/180/41 17/70/41 47/71/41
|
|
||||||
f 15/16/42 17/70/42 45/73/42
|
|
||||||
f 13/13/43 15/16/43 44/75/43
|
|
||||||
f 11/10/44 13/12/44 43/77/44
|
|
||||||
f 9/80/45 11/10/45 42/79/45
|
|
||||||
f 7/7/46 9/80/46 41/81/46
|
|
||||||
f 23/25/47 1/1/47 49/83/47
|
|
||||||
f 1/1/48 3/67/48 38/85/48
|
|
||||||
f 59/92/49 61/86/49 53/88/49
|
|
||||||
f 50/96/49 60/89/49 52/91/49
|
|
||||||
f 58/90/49 59/92/49 56/94/49
|
|
||||||
f 61/86/49 60/89/49 55/97/49
|
|
||||||
f 64/106/50 67/98/50 65/100/50
|
|
||||||
f 63/108/50 62/101/50 69/103/50
|
|
||||||
f 68/102/50 73/104/50 64/106/50
|
|
||||||
f 65/100/50 71/109/50 69/103/50
|
|
||||||
f 68/135/51 58/110/51 69/112/51
|
|
||||||
f 54/131/8 50/113/8 70/115/8
|
|
||||||
f 50/113/52 52/116/52 63/114/52
|
|
||||||
f 56/134/53 57/118/53 73/120/53
|
|
||||||
f 60/111/53 61/121/53 69/112/53
|
|
||||||
f 51/133/5 55/123/5 66/125/5
|
|
||||||
f 61/181/52 59/126/52 65/128/52
|
|
||||||
f 57/118/2 53/129/2 72/119/2
|
|
||||||
f 55/182/54 54/131/54 71/132/54
|
|
||||||
f 67/130/51 53/129/51 66/125/51
|
|
||||||
f 52/116/13 56/134/13 62/117/13
|
|
||||||
f 59/126/54 58/110/54 64/127/54
|
|
||||||
f 75/143/13 77/136/13 74/138/13
|
|
||||||
f 77/136/50 81/139/50 76/137/50
|
|
||||||
f 81/139/5 79/141/5 80/140/5
|
|
||||||
f 79/183/49 75/143/49 78/144/49
|
|
||||||
f 97/148/50 101/145/50 96/147/50
|
|
||||||
f 95/176/2 97/148/2 94/149/2
|
|
||||||
f 93/152/50 82/184/50 85/150/50
|
|
||||||
f 83/185/50 84/186/50 85/150/50
|
|
||||||
f 85/150/50 86/187/50 87/188/50
|
|
||||||
f 87/188/50 88/189/50 89/190/50
|
|
||||||
f 89/190/50 90/191/50 91/151/50
|
|
||||||
f 91/151/50 92/192/50 93/152/50
|
|
||||||
f 82/184/50 83/185/50 85/150/50
|
|
||||||
f 85/150/50 87/188/50 89/190/50
|
|
||||||
f 89/190/50 91/151/50 85/150/50
|
|
||||||
f 48/66/13 49/65/13 92/154/13
|
|
||||||
f 38/85/1 39/84/1 82/156/1
|
|
||||||
f 45/73/8 46/72/8 89/158/8
|
|
||||||
f 42/79/5 43/78/5 86/160/5
|
|
||||||
f 49/83/12 38/82/12 93/162/12
|
|
||||||
f 39/178/2 40/68/2 83/164/2
|
|
||||||
f 46/180/9 47/71/9 90/166/9
|
|
||||||
f 87/193/6 43/77/6 88/167/6
|
|
||||||
f 40/27/3 41/26/3 84/169/3
|
|
||||||
f 47/179/10 48/69/10 91/171/10
|
|
||||||
f 44/75/7 45/74/7 88/173/7
|
|
||||||
f 101/145/8 99/174/8 100/146/8
|
|
||||||
f 99/194/49 95/176/49 98/177/49
|
|
||||||
6193
src/main/resources/assets/hbm/models/machines/fensu2.obj
Normal file
@ -54,6 +54,7 @@
|
|||||||
"block.largeTurbineRunning": {"category": "block", "sounds": [{"name": "block/largeTurbine", "stream": false}]},
|
"block.largeTurbineRunning": {"category": "block", "sounds": [{"name": "block/largeTurbine", "stream": false}]},
|
||||||
"block.damage": {"category": "block", "sounds": ["block/dam1", "block/dam2", "block/dam3", "block/dam4"]},
|
"block.damage": {"category": "block", "sounds": ["block/dam1", "block/dam2", "block/dam3", "block/dam4"]},
|
||||||
"block.electricHum": {"category": "block", "sounds": [{"name": "block/electricHum", "stream": false}]},
|
"block.electricHum": {"category": "block", "sounds": [{"name": "block/electricHum", "stream": false}]},
|
||||||
|
"block.fensuHum": {"category": "block", "sounds": [{"name": "block/fensuHum", "stream": false}]},
|
||||||
"block.boiler": {"category": "block", "sounds": [{"name": "block/boiler", "stream": false}]},
|
"block.boiler": {"category": "block", "sounds": [{"name": "block/boiler", "stream": false}]},
|
||||||
"block.hornNearSingle": {"category": "block", "sounds": [{"name": "block/hornNearSingle", "stream": false}]},
|
"block.hornNearSingle": {"category": "block", "sounds": [{"name": "block/hornNearSingle", "stream": false}]},
|
||||||
"block.hornNearDual": {"category": "block", "sounds": [{"name": "block/hornNearDual", "stream": false}]},
|
"block.hornNearDual": {"category": "block", "sounds": [{"name": "block/hornNearDual", "stream": false}]},
|
||||||
|
|||||||
BIN
src/main/resources/assets/hbm/sounds/block/fensuHum.ogg
Normal file
|
After Width: | Height: | Size: 4.4 KiB |
|
After Width: | Height: | Size: 4.4 KiB |
|
After Width: | Height: | Size: 335 B |
|
After Width: | Height: | Size: 343 B |
|
After Width: | Height: | Size: 329 B |
|
After Width: | Height: | Size: 455 B |
|
After Width: | Height: | Size: 11 KiB |
|
Before Width: | Height: | Size: 28 KiB |
|
After Width: | Height: | Size: 6.3 KiB |
|
After Width: | Height: | Size: 6.7 KiB |