mirror of
https://github.com/HbmMods/Hbm-s-Nuclear-Tech-GIT.git
synced 2026-01-25 10:32:49 +00:00
Merge branch 'HbmMods:master' into NTMRUINS1
This commit is contained in:
commit
f3ee962e8e
@ -13,6 +13,8 @@ Things you should also avoid include:
|
|||||||
* duplicate util functions (just use what we have, man)
|
* duplicate util functions (just use what we have, man)
|
||||||
* unused or half finished util functions (for obvious reasons)
|
* unused or half finished util functions (for obvious reasons)
|
||||||
* half finished or obviously broken features (à la "bob will fix it, i'm sure of it", please don't do that)
|
* half finished or obviously broken features (à la "bob will fix it, i'm sure of it", please don't do that)
|
||||||
|
* updating the changelog (you're guaranteed to cause a merge conflict with that)
|
||||||
|
* any use of `I18n`, use `I18nUtil` instead
|
||||||
|
|
||||||
## Test your code
|
## Test your code
|
||||||
|
|
||||||
|
|||||||
@ -12,7 +12,7 @@
|
|||||||
|
|
||||||
* NTM Reloaded: https://github.com/TheOriginalGolem/Hbm-s-Nuclear-Tech-GIT/releases
|
* NTM Reloaded: https://github.com/TheOriginalGolem/Hbm-s-Nuclear-Tech-GIT/releases
|
||||||
* NTM Extended Edition (Alcater): https://github.com/Alcatergit/Hbm-s-Nuclear-Tech-GIT/releases
|
* NTM Extended Edition (Alcater): https://github.com/Alcatergit/Hbm-s-Nuclear-Tech-GIT/releases
|
||||||
* NTM Community Edition (WarFactory): https://codeberg.org/MrNorwood/Hbm-s-Nuclear-Tech-CE
|
* NTM Community Edition (WarFactory): https://github.com/MisterNorwood/Hbm-s-Nuclear-Tech-CE
|
||||||
|
|
||||||
For 1.18, try Martin's remake: https://codeberg.org/MartinTheDragon/Nuclear-Tech-Mod-Remake/releases
|
For 1.18, try Martin's remake: https://codeberg.org/MartinTheDragon/Nuclear-Tech-Mod-Remake/releases
|
||||||
|
|
||||||
|
|||||||
56
changelog
56
changelog
@ -1,18 +1,48 @@
|
|||||||
## Added
|
## Added
|
||||||
* Sandbags
|
* New chemical factory
|
||||||
* Connect to other sandbags or solid blocks
|
* New form factor, uses a smaller 5x5 footprint
|
||||||
* Pretts
|
* Only does four recipes instead of eight
|
||||||
* Wooden barrier
|
* Double base speed, but also double power draw
|
||||||
* Pretty
|
* Three upgrade slots, upgrades follow the same rules as on the new chemplant
|
||||||
* Automatically walls off connected solid blocks in addition to the direction it was placed in
|
* Upgrades stack with the double base speed
|
||||||
|
* Stackable!
|
||||||
|
* Water consumption rate is fixed at 100mB/t for each active recipe
|
||||||
|
* Has a dedicated coolant line, so that the coolant water doesn't get used up by recipes
|
||||||
|
* Coolant line has a tooltip which should make it clear that the machine uses water and produces LPS
|
||||||
|
* Also has sound, unlike the old chemical factory
|
||||||
|
* Output fluids are now automatically sent to input tanks, at a rate of up to 50mB/t for somewhat fair fluid sharing
|
||||||
|
* This means that a chemical factory can make hydrogen peroxide, sulfuric acid and nitric acid, and the only fluid input needed is water
|
||||||
|
|
||||||
## Changed
|
## Changed
|
||||||
* Increased bayonet damage from 5 to 7.5 hearts
|
* The DNT suit now has a damage threshold of 1,000
|
||||||
* Two numeric redstone over radio signals sent over the same channel will now be added together instead of one signal replacing the other
|
* Compressed biomass now has a nice cube shape
|
||||||
* This means that reading the fill state of multiple batteries over the same channel should result the combined fill state of all batteries
|
* The new chemical plant's indicator lights are now functional
|
||||||
* Halved base spread of the .22 SMG
|
* The new chemical plant can now use upgrades
|
||||||
* Certain secret guns now have a proper way of being obtained
|
* Reeds now drop sticks when broken
|
||||||
* Demolition mini nukes now create fire again
|
* Switching the recipe in the new chemplant now annihilates residual fluid that is not overwritten by the new recipe
|
||||||
|
* I don't know why people wanted this, but here you go
|
||||||
|
* The alternate recipe for oxyhydrogen now uses compressed air instead of nothing
|
||||||
|
* Improved threaded Mk5, should be a smidge faster now
|
||||||
|
* Spires no longer progress phases on peaceful difficulty
|
||||||
|
* Spires now have a 20% chance of coming with instructions
|
||||||
|
* New chemical plant now has sound
|
||||||
|
* Old chemical plant and factory have been renamed and their recipes removed
|
||||||
|
* The new recipe selector no longer changes recipe instantly on click, rather as soon as the selector GUI is closed. This should prevent issues when misclicking, which would destroy buffered fluids
|
||||||
|
* The memespoon is now safe(tm)
|
||||||
|
* Instead of using a bugged instakill implementation, a fall distance of >2 now deals 50 extra melee damage
|
||||||
|
* Instead of blowing up like a nuke with a fall distance of >20, it now explodes similarly to a non-HE artillery grenade. This deals 150 damage in an AoE, has armor piercing properties and is, like the original functionality, still lethal to the user
|
||||||
|
|
||||||
## Fixed
|
## Fixed
|
||||||
* Fixed RoR controller having the wrong recipe
|
* Chemical plant ports. For real this time.
|
||||||
|
* Fixed cable and pipe gauges returning the incomplete delta second value for OC and ROR readers
|
||||||
|
* Fixed new chemical plant not saving power values to disk
|
||||||
|
* Fixed laser rifle scope texture being missing
|
||||||
|
* Potentially fixed shift clicking issue with the new chemical plant
|
||||||
|
* Fixed blowtorch having a minimum gas requirement of 1,000mB despite only using 250mB
|
||||||
|
* The gas turbine now uses audio with a 20 tick timeout, fixing a rare issue where the loop gets stuck and never ends
|
||||||
|
* Potentially fixed a dupe caused by using InventoryBogoSorter in combination with crates
|
||||||
|
* Rapidly spinning dyx should no longer have a state leak that would rotate lighting of unrelated TESRs with it
|
||||||
|
* Fixed issue where mining strange stone with silk touch ability would cause a desync. It also now drops cobblestone, as if silk touch wasn't active at all
|
||||||
|
* Fixed issue where applying a filter to a mask that doesn't support certain protection types would permanently remove those types from the filter until the game is restarted
|
||||||
|
* Fixed InventoryBogoSorter being able to move held crates
|
||||||
|
* Fixed tier 2 pickaxes mining depth rock causing a desync with the depth rock not actually being broken
|
||||||
@ -1,6 +1,6 @@
|
|||||||
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=5320
|
mod_build_number=5357
|
||||||
|
|
||||||
credits=HbMinecraft,\
|
credits=HbMinecraft,\
|
||||||
\ rodolphito (explosion algorithms),\
|
\ rodolphito (explosion algorithms),\
|
||||||
@ -9,7 +9,7 @@ credits=HbMinecraft,\
|
|||||||
\ Drillgon200 (effects, models, porting),\
|
\ Drillgon200 (effects, models, porting),\
|
||||||
\ 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, porting),\
|
||||||
\ MellowArpeggiation (new animation system, turbine sounds, sound fixes, industrial lights, better particle diodes),\
|
\ MellowArpeggiation (new animation system, turbine sounds, sound fixes, industrial lights, conveyor wand, NBT structures),\
|
||||||
\ 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),\
|
||||||
@ -17,10 +17,11 @@ credits=HbMinecraft,\
|
|||||||
\ Adam29 (liquid petroleum, ethanol, electric furnace),\
|
\ Adam29 (liquid petroleum, ethanol, electric furnace),\
|
||||||
\ Pvndols (thorium fuel recipe, gas turbine),\
|
\ Pvndols (thorium fuel recipe, gas turbine),\
|
||||||
\ JamesH2 (blood mechanics, nitric acid, particle emitter),\
|
\ JamesH2 (blood mechanics, nitric acid, particle emitter),\
|
||||||
\ Lazzzycat (structures),\
|
\ Lazzzycat (structures, mob gear),\
|
||||||
\ PastaBaguette (coal horse decal),\
|
\ PastaBaguette (coal horse decal),\
|
||||||
\ Doctor17 (russian localization)),\
|
\ Doctor17 (russian localization)),\
|
||||||
\ Pashtet (russian localization),\
|
\ Pashtet (russian localization),\
|
||||||
|
\ 7H40 (russian localization),\
|
||||||
\ Bismarck (chinese localization),\
|
\ Bismarck (chinese localization),\
|
||||||
\ Creeper-banner (chinese localization),\
|
\ Creeper-banner (chinese localization),\
|
||||||
\ 5467864 (chinese localization),\
|
\ 5467864 (chinese localization),\
|
||||||
@ -32,6 +33,7 @@ credits=HbMinecraft,\
|
|||||||
\ UnnameTokiko (chinese localization),\
|
\ UnnameTokiko (chinese localization),\
|
||||||
\ Herobrine 457985 (chinese localization),\
|
\ Herobrine 457985 (chinese localization),\
|
||||||
\ xxwinhere (chinese localization),\
|
\ xxwinhere (chinese localization),\
|
||||||
|
\ Nycticoraxnightheron (chinese localization),\
|
||||||
\ Maksymisio (polish localization)\
|
\ Maksymisio (polish localization)\
|
||||||
\ el3ctro4ndre (italian localization),\
|
\ el3ctro4ndre (italian localization),\
|
||||||
\ Pu-238 (Tom impact effects),\
|
\ Pu-238 (Tom impact effects),\
|
||||||
@ -40,9 +42,11 @@ credits=HbMinecraft,\
|
|||||||
\ Nos (models),\
|
\ Nos (models),\
|
||||||
\ WushiThe (models),\
|
\ WushiThe (models),\
|
||||||
\ Minecreep (models),\
|
\ Minecreep (models),\
|
||||||
|
\ ackbarcrowbars (models),\
|
||||||
|
\ haru315 (spiral point algorithm),\
|
||||||
|
\ mlbv (threaded MK5),\
|
||||||
\ 70k (textures, glyphid AI, strand caster, electrolyzer changes, cryolite),\
|
\ 70k (textures, glyphid AI, strand caster, electrolyzer changes, cryolite),\
|
||||||
\ instantnootles (concept artist),\
|
\ instantnootles (concept artist),\
|
||||||
\ haru315 (spiral point algorithm),\
|
|
||||||
\ Sten89 (models),\
|
\ Sten89 (models),\
|
||||||
\ Pixelguru26 (textures),\
|
\ Pixelguru26 (textures),\
|
||||||
\ TheBlueHat (textures),\
|
\ TheBlueHat (textures),\
|
||||||
@ -52,7 +56,7 @@ credits=HbMinecraft,\
|
|||||||
\ 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),\
|
||||||
\ sdddddf80 (recipe configs, chinese localization, custom machine holograms),\
|
\ sdddddf80 (recipe configs, chinese localization, custom machine holograms),\
|
||||||
\ Abel1502 (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),\
|
||||||
\ SuperCraftAlex (tooltips)\
|
\ SuperCraftAlex (tooltips)\
|
||||||
\ Ice-Arrow (research reactor tweaks),\
|
\ Ice-Arrow (research reactor tweaks),\
|
||||||
@ -60,7 +64,9 @@ credits=HbMinecraft,\
|
|||||||
\ 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),\
|
\ Toshayo (satellite loot system, project settings, gradle curse task, OpenComputers integration),\
|
||||||
|
\ Dash (PA particle serialization fix),\
|
||||||
|
\ archiecarrot123 (armor rendering compatibility fix),\
|
||||||
\ icomet (refactoring),\
|
\ icomet (refactoring),\
|
||||||
\ martemen (project settings),\
|
\ martemen (project settings),\
|
||||||
\ OvermindDL1 (project settings),\
|
\ OvermindDL1 (project settings),\
|
||||||
|
|||||||
@ -0,0 +1,9 @@
|
|||||||
|
package api.hbm.fluidmk2;
|
||||||
|
|
||||||
|
public interface IFluidRegisterListener {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Called when the fluid registry initializes all fluids. Use CompatFluidRegistry to create new instances of FluidType, which are automatically registered.
|
||||||
|
*/
|
||||||
|
public void onFluidsLoad();
|
||||||
|
}
|
||||||
@ -1,10 +1,3 @@
|
|||||||
/**
|
|
||||||
*
|
|
||||||
*/
|
|
||||||
/**
|
|
||||||
* @author hbm
|
|
||||||
*
|
|
||||||
*/
|
|
||||||
package api.hbm.fluidmk2;
|
package api.hbm.fluidmk2;
|
||||||
|
|
||||||
/*
|
/*
|
||||||
@ -14,3 +7,18 @@ Has a few extra bits and pieces for handling, but the concept is basically the s
|
|||||||
Sounds good?
|
Sounds good?
|
||||||
|
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
/*
|
||||||
|
|
||||||
|
Quick explanation for implementing new fluids via addon:
|
||||||
|
Fluids are subject to /ntmreload so they get wiped and rebuilt using the init function in Fluids, which means that if fluids
|
||||||
|
are simply added externally during startup, they are removed permanently until the game restarts. Same concept as with recipes, really.
|
||||||
|
To fix this we need to make sure that externally registered fluids are re-registered during reload, for that purpose we have
|
||||||
|
IFluidRegisterListener, a simple interface with a small method that runs whenever the fluid list is reloaded. IFluidRegisterListeners
|
||||||
|
need to be registered with CompatExternal.registerFluidRegisterListener to be used, make sure to do this during PreInit.
|
||||||
|
Inside the IFluidRegisterListener, fluids can be added using CompatFluidRegistry.registerFluid, which will generate a Fluid instance
|
||||||
|
using the supplied arguments and automatically register it. Do note that like with custom fluids, fluids need numeric IDs assigned manually.
|
||||||
|
To prevent collisions with stock fluids when NTM updates, make sure to choose a high starting ID (e.g. 10,000).
|
||||||
|
The fluid created by registerFluid can have traits added to them, just like how NTM does it with its stock fluids.
|
||||||
|
|
||||||
|
*/
|
||||||
@ -26,6 +26,8 @@ import net.minecraft.stats.StatList;
|
|||||||
import net.minecraft.tileentity.TileEntity;
|
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.util.MovingObjectPosition;
|
||||||
|
import net.minecraft.util.Vec3;
|
||||||
import net.minecraft.world.IBlockAccess;
|
import net.minecraft.world.IBlockAccess;
|
||||||
import net.minecraft.world.World;
|
import net.minecraft.world.World;
|
||||||
import net.minecraftforge.client.event.DrawBlockHighlightEvent;
|
import net.minecraftforge.client.event.DrawBlockHighlightEvent;
|
||||||
@ -441,8 +443,10 @@ public abstract class BlockDummyable extends BlockContainer implements ICustomBl
|
|||||||
y = pos[1];
|
y = pos[1];
|
||||||
z = pos[2];
|
z = pos[2];
|
||||||
|
|
||||||
for(AxisAlignedBB aabb :this.bounding) {
|
ForgeDirection rot = ForgeDirection.getOrientation(world.getBlockMetadata(x, y, z) - offset).getRotation(ForgeDirection.UP);
|
||||||
AxisAlignedBB boxlet = getAABBRotationOffset(aabb, x + 0.5, y, z + 0.5, ForgeDirection.getOrientation(world.getBlockMetadata(x, y, z) - offset).getRotation(ForgeDirection.UP));
|
|
||||||
|
for(AxisAlignedBB aabb : this.bounding) {
|
||||||
|
AxisAlignedBB boxlet = getAABBRotationOffset(aabb, x + 0.5, y, z + 0.5, rot);
|
||||||
|
|
||||||
if(entityBounding.intersectsWith(boxlet)) {
|
if(entityBounding.intersectsWith(boxlet)) {
|
||||||
list.add(boxlet);
|
list.add(boxlet);
|
||||||
@ -467,6 +471,32 @@ public abstract class BlockDummyable extends BlockContainer implements ICustomBl
|
|||||||
return AxisAlignedBB.getBoundingBox(aabb.minX, aabb.minY, aabb.minZ, aabb.maxX, aabb.maxY, aabb.maxZ).offset(x + 0.5, y + 0.5, z + 0.5);
|
return AxisAlignedBB.getBoundingBox(aabb.minX, aabb.minY, aabb.minZ, aabb.maxX, aabb.maxY, aabb.maxZ).offset(x + 0.5, y + 0.5, z + 0.5);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Don't mutate the xyz parameters, or the interaction max distance will bite you
|
||||||
|
@Override
|
||||||
|
public MovingObjectPosition collisionRayTrace(World world, int x, int y, int z, Vec3 startVec, Vec3 endVec) {
|
||||||
|
if(!this.useDetailedHitbox()) {
|
||||||
|
return super.collisionRayTrace(world, x, y, z, startVec, endVec);
|
||||||
|
}
|
||||||
|
|
||||||
|
int[] pos = this.findCore(world, x, y, z);
|
||||||
|
|
||||||
|
if(pos == null)
|
||||||
|
return super.collisionRayTrace(world, x, y, z, startVec, endVec);
|
||||||
|
|
||||||
|
ForgeDirection rot = ForgeDirection.getOrientation(world.getBlockMetadata(pos[0], pos[1], pos[2]) - offset).getRotation(ForgeDirection.UP);
|
||||||
|
|
||||||
|
for(AxisAlignedBB aabb : this.bounding) {
|
||||||
|
AxisAlignedBB boxlet = getAABBRotationOffset(aabb, pos[0] + 0.5, pos[1], pos[2] + 0.5, rot);
|
||||||
|
|
||||||
|
MovingObjectPosition intercept = boxlet.calculateIntercept(startVec, endVec);
|
||||||
|
if(intercept != null) {
|
||||||
|
return new MovingObjectPosition(x, y, z, intercept.sideHit, intercept.hitVec);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void setBlockBoundsBasedOnState(IBlockAccess world, int x, int y, int z) {
|
public void setBlockBoundsBasedOnState(IBlockAccess world, int x, int y, int z) {
|
||||||
if(!this.useDetailedHitbox()) {
|
if(!this.useDetailedHitbox()) {
|
||||||
@ -500,10 +530,10 @@ public abstract class BlockDummyable extends BlockContainer implements ICustomBl
|
|||||||
double dZ = player.lastTickPosZ + (player.posZ - player.lastTickPosZ) * (double)interp;
|
double dZ = player.lastTickPosZ + (player.posZ - player.lastTickPosZ) * (double)interp;
|
||||||
float exp = 0.002F;
|
float exp = 0.002F;
|
||||||
|
|
||||||
int meta = world.getBlockMetadata(x, y, z);
|
ForgeDirection rot = ForgeDirection.getOrientation(world.getBlockMetadata(x, y, z) - offset).getRotation(ForgeDirection.UP);
|
||||||
|
|
||||||
ICustomBlockHighlight.setup();
|
ICustomBlockHighlight.setup();
|
||||||
for(AxisAlignedBB aabb : this.bounding) RenderGlobal.drawOutlinedBoundingBox(getAABBRotationOffset(aabb.expand(exp, exp, exp), 0, 0, 0, ForgeDirection.getOrientation(meta - offset).getRotation(ForgeDirection.UP)).getOffsetBoundingBox(x - dX + 0.5, y - dY, z - dZ + 0.5), -1);
|
for(AxisAlignedBB aabb : this.bounding) RenderGlobal.drawOutlinedBoundingBox(getAABBRotationOffset(aabb.expand(exp, exp, exp), 0, 0, 0, rot).getOffsetBoundingBox(x - dX + 0.5, y - dY, z - dZ + 0.5), -1);
|
||||||
ICustomBlockHighlight.cleanup();
|
ICustomBlockHighlight.cleanup();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -1,6 +1,5 @@
|
|||||||
package com.hbm.blocks;
|
package com.hbm.blocks;
|
||||||
|
|
||||||
import com.hbm.util.I18nUtil;
|
|
||||||
import net.minecraft.block.Block;
|
import net.minecraft.block.Block;
|
||||||
import net.minecraft.entity.player.EntityPlayer;
|
import net.minecraft.entity.player.EntityPlayer;
|
||||||
import net.minecraft.item.EnumRarity;
|
import net.minecraft.item.EnumRarity;
|
||||||
@ -8,6 +7,8 @@ import net.minecraft.item.ItemStack;
|
|||||||
import net.minecraft.util.EnumChatFormatting;
|
import net.minecraft.util.EnumChatFormatting;
|
||||||
import org.lwjgl.input.Keyboard;
|
import org.lwjgl.input.Keyboard;
|
||||||
|
|
||||||
|
import com.hbm.util.i18n.I18nUtil;
|
||||||
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
public interface ITooltipProvider {
|
public interface ITooltipProvider {
|
||||||
|
|||||||
@ -281,6 +281,7 @@ public class ModBlocks {
|
|||||||
|
|
||||||
public static Block sandbags;
|
public static Block sandbags;
|
||||||
public static Block wood_barrier;
|
public static Block wood_barrier;
|
||||||
|
public static Block wood_structure;
|
||||||
|
|
||||||
public static Block reinforced_brick;
|
public static Block reinforced_brick;
|
||||||
public static Block reinforced_ducrete;
|
public static Block reinforced_ducrete;
|
||||||
@ -733,7 +734,6 @@ public class ModBlocks {
|
|||||||
public static Block hadron_analysis_glass;
|
public static Block hadron_analysis_glass;
|
||||||
public static Block hadron_access;
|
public static Block hadron_access;
|
||||||
public static Block hadron_core;
|
public static Block hadron_core;
|
||||||
public static Block hadron_cooler;
|
|
||||||
|
|
||||||
public static Block pa_source;
|
public static Block pa_source;
|
||||||
public static Block pa_beamline;
|
public static Block pa_beamline;
|
||||||
@ -793,6 +793,7 @@ public class ModBlocks {
|
|||||||
public static Block fluid_duct_exhaust;
|
public static Block fluid_duct_exhaust;
|
||||||
public static Block fluid_valve;
|
public static Block fluid_valve;
|
||||||
public static Block fluid_switch;
|
public static Block fluid_switch;
|
||||||
|
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;
|
||||||
public static Block radio_torch_receiver;
|
public static Block radio_torch_receiver;
|
||||||
@ -852,9 +853,7 @@ public class ModBlocks {
|
|||||||
public static Block barrel_antimatter;
|
public static Block barrel_antimatter;
|
||||||
|
|
||||||
public static Block machine_transformer;
|
public static Block machine_transformer;
|
||||||
public static Block machine_transformer_20;
|
|
||||||
public static Block machine_transformer_dnt;
|
public static Block machine_transformer_dnt;
|
||||||
public static Block machine_transformer_dnt_20;
|
|
||||||
|
|
||||||
public static Block machine_solar_boiler;
|
public static Block machine_solar_boiler;
|
||||||
public static Block solar_mirror;
|
public static Block solar_mirror;
|
||||||
@ -1006,8 +1005,10 @@ public class ModBlocks {
|
|||||||
public static Block machine_soldering_station;
|
public static Block machine_soldering_station;
|
||||||
public static Block machine_arc_furnace;
|
public static Block machine_arc_furnace;
|
||||||
|
|
||||||
public static Block machine_chemplant;
|
@Deprecated public static Block machine_chemplant;
|
||||||
|
public static Block machine_chemical_plant;
|
||||||
public static Block machine_chemfac;
|
public static Block machine_chemfac;
|
||||||
|
public static Block machine_chemical_factory;
|
||||||
public static Block machine_mixer;
|
public static Block machine_mixer;
|
||||||
|
|
||||||
public static Block machine_fluidtank;
|
public static Block machine_fluidtank;
|
||||||
@ -1481,7 +1482,8 @@ public class ModBlocks {
|
|||||||
asphalt_light = new BlockSpeedy(Material.rock, 1.5).setBlockName("asphalt_light").setCreativeTab(MainRegistry.blockTab).setLightLevel(1F).setHardness(15.0F).setResistance(120.0F).setBlockTextureName(RefStrings.MODID + ":asphalt_light");
|
asphalt_light = new BlockSpeedy(Material.rock, 1.5).setBlockName("asphalt_light").setCreativeTab(MainRegistry.blockTab).setLightLevel(1F).setHardness(15.0F).setResistance(120.0F).setBlockTextureName(RefStrings.MODID + ":asphalt_light");
|
||||||
|
|
||||||
sandbags = new BlockSandbags(Material.ground).setBlockName("sandbags").setCreativeTab(MainRegistry.blockTab).setHardness(5.0F).setResistance(30.0F).setBlockTextureName(RefStrings.MODID + ":sandbags");
|
sandbags = new BlockSandbags(Material.ground).setBlockName("sandbags").setCreativeTab(MainRegistry.blockTab).setHardness(5.0F).setResistance(30.0F).setBlockTextureName(RefStrings.MODID + ":sandbags");
|
||||||
wood_barrier = new BlockBarrier(Material.wood).setStepSound(Block.soundTypeWood).setBlockName("wood_barrier").setCreativeTab(MainRegistry.blockTab).setHardness(5.0F).setResistance(30.0F).setBlockTextureName(RefStrings.MODID + ":wood_barrier");
|
wood_barrier = new BlockBarrier(Material.wood).setStepSound(Block.soundTypeWood).setBlockName("wood_barrier").setCreativeTab(MainRegistry.blockTab).setHardness(5.0F).setResistance(15.0F).setBlockTextureName(RefStrings.MODID + ":wood_barrier");
|
||||||
|
wood_structure = new BlockWoodStructure(Material.wood).setStepSound(Block.soundTypeWood).setBlockName("wood_structure").setCreativeTab(MainRegistry.blockTab).setHardness(5.0F).setResistance(15.0F).setBlockTextureName(RefStrings.MODID + ":wood_barrier");
|
||||||
|
|
||||||
reinforced_brick = new BlockGeneric(Material.rock).setBlockName("reinforced_brick").setCreativeTab(MainRegistry.blockTab).setHardness(15.0F).setResistance(300.0F).setBlockTextureName(RefStrings.MODID + ":reinforced_brick");
|
reinforced_brick = new BlockGeneric(Material.rock).setBlockName("reinforced_brick").setCreativeTab(MainRegistry.blockTab).setHardness(15.0F).setResistance(300.0F).setBlockTextureName(RefStrings.MODID + ":reinforced_brick");
|
||||||
reinforced_glass = new BlockNTMGlassCT(0, RefStrings.MODID + ":reinforced_glass", Material.rock).setBlockName("reinforced_glass").setCreativeTab(MainRegistry.blockTab).setLightOpacity(0).setHardness(2.0F).setResistance(25.0F);
|
reinforced_glass = new BlockNTMGlassCT(0, RefStrings.MODID + ":reinforced_glass", Material.rock).setBlockName("reinforced_glass").setCreativeTab(MainRegistry.blockTab).setLightOpacity(0).setHardness(2.0F).setResistance(25.0F);
|
||||||
@ -1851,7 +1853,6 @@ public class ModBlocks {
|
|||||||
hadron_analysis_glass = new BlockNTMGlass(0, RefStrings.MODID + ":hadron_analysis_glass", Material.iron, true).setStepSound(Block.soundTypeMetal).setBlockName("hadron_analysis_glass").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":hadron_analysis_glass");
|
hadron_analysis_glass = new BlockNTMGlass(0, RefStrings.MODID + ":hadron_analysis_glass", Material.iron, true).setStepSound(Block.soundTypeMetal).setBlockName("hadron_analysis_glass").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":hadron_analysis_glass");
|
||||||
hadron_access = new BlockHadronAccess(Material.iron).setStepSound(Block.soundTypeMetal).setBlockName("hadron_access").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":hadron_access");
|
hadron_access = new BlockHadronAccess(Material.iron).setStepSound(Block.soundTypeMetal).setBlockName("hadron_access").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":hadron_access");
|
||||||
hadron_core = new BlockHadronCore(Material.iron).setStepSound(Block.soundTypeMetal).setBlockName("hadron_core").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":hadron_core");
|
hadron_core = new BlockHadronCore(Material.iron).setStepSound(Block.soundTypeMetal).setBlockName("hadron_core").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":hadron_core");
|
||||||
hadron_cooler = new BlockHadronCooler(Material.iron).setBlockName("hadron_cooler").setCreativeTab(MainRegistry.blockTab).setHardness(5.0F).setResistance(10.0F);
|
|
||||||
|
|
||||||
pa_source = new BlockPASource().setStepSound(Block.soundTypeMetal).setBlockName("pa_source").setHardness(5.0F).setResistance(10.0F);
|
pa_source = new BlockPASource().setStepSound(Block.soundTypeMetal).setBlockName("pa_source").setHardness(5.0F).setResistance(10.0F);
|
||||||
pa_beamline = new BlockPABeamline().setStepSound(Block.soundTypeMetal).setBlockName("pa_beamline").setHardness(5.0F).setResistance(10.0F);
|
pa_beamline = new BlockPABeamline().setStepSound(Block.soundTypeMetal).setBlockName("pa_beamline").setHardness(5.0F).setResistance(10.0F);
|
||||||
@ -1923,6 +1924,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_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);
|
||||||
radio_torch_receiver = new RadioTorchReceiver().setBlockName("radio_torch_receiver").setHardness(0.1F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab);
|
radio_torch_receiver = new RadioTorchReceiver().setBlockName("radio_torch_receiver").setHardness(0.1F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab);
|
||||||
@ -1980,8 +1982,6 @@ public class ModBlocks {
|
|||||||
|
|
||||||
machine_transformer = new MachineTransformer(Material.iron, 10000L, 1).setBlockName("machine_transformer").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":machine_transformer_iron");
|
machine_transformer = new MachineTransformer(Material.iron, 10000L, 1).setBlockName("machine_transformer").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":machine_transformer_iron");
|
||||||
machine_transformer_dnt = new MachineTransformer(Material.iron, 1000000000000000L, 1).setBlockName("machine_transformer_dnt").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":machine_transformer");
|
machine_transformer_dnt = new MachineTransformer(Material.iron, 1000000000000000L, 1).setBlockName("machine_transformer_dnt").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":machine_transformer");
|
||||||
machine_transformer_20 = new MachineTransformer(Material.iron, 10000L, 20).setBlockName("machine_transformer_20").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":machine_transformer_iron");
|
|
||||||
machine_transformer_dnt_20 = new MachineTransformer(Material.iron, 1000000000000000L, 20).setBlockName("machine_transformer_dnt_20").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":machine_transformer");
|
|
||||||
|
|
||||||
machine_satlinker = new MachineSatLinker(Material.iron).setBlockName("machine_satlinker").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.missileTab).setBlockTextureName(RefStrings.MODID + ":machine_satlinker_side");
|
machine_satlinker = new MachineSatLinker(Material.iron).setBlockName("machine_satlinker").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.missileTab).setBlockTextureName(RefStrings.MODID + ":machine_satlinker_side");
|
||||||
machine_keyforge = new MachineKeyForge(Material.iron).setBlockName("machine_keyforge").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.consumableTab).setBlockTextureName(RefStrings.MODID + ":machine_keyforge_side");
|
machine_keyforge = new MachineKeyForge(Material.iron).setBlockName("machine_keyforge").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.consumableTab).setBlockTextureName(RefStrings.MODID + ":machine_keyforge_side");
|
||||||
@ -2171,15 +2171,15 @@ public class ModBlocks {
|
|||||||
rail_booster = new RailBooster().setBlockName("rail_booster").setHardness(5.0F).setResistance(10.0F).setCreativeTab(CreativeTabs.tabTransport).setBlockTextureName(RefStrings.MODID + ":rail_booster");
|
rail_booster = new RailBooster().setBlockName("rail_booster").setHardness(5.0F).setResistance(10.0F).setCreativeTab(CreativeTabs.tabTransport).setBlockTextureName(RefStrings.MODID + ":rail_booster");
|
||||||
rail_narrow_straight = new RailNarrowStraight().setBlockName("rail_narrow_straight").setHardness(5.0F).setResistance(10.0F).setCreativeTab(null).setBlockTextureName(RefStrings.MODID + ":rail_narrow_neo");
|
rail_narrow_straight = new RailNarrowStraight().setBlockName("rail_narrow_straight").setHardness(5.0F).setResistance(10.0F).setCreativeTab(null).setBlockTextureName(RefStrings.MODID + ":rail_narrow_neo");
|
||||||
rail_narrow_curve = new RailNarrowCurve().setBlockName("rail_narrow_curve").setHardness(5.0F).setResistance(10.0F).setCreativeTab(null).setBlockTextureName(RefStrings.MODID + ":rail_narrow_neo");
|
rail_narrow_curve = new RailNarrowCurve().setBlockName("rail_narrow_curve").setHardness(5.0F).setResistance(10.0F).setCreativeTab(null).setBlockTextureName(RefStrings.MODID + ":rail_narrow_neo");
|
||||||
rail_large_straight = new RailStandardStraight().setBlockName("rail_large_straight").setHardness(5.0F).setResistance(10.0F).setCreativeTab(CreativeTabs.tabTransport).setBlockTextureName(RefStrings.MODID + ":rail_standard_straight");
|
rail_large_straight = new RailStandardStraight().setBlockName("rail_large_straight").setHardness(5.0F).setResistance(10.0F).setCreativeTab(null).setBlockTextureName(RefStrings.MODID + ":rail_standard_straight");
|
||||||
rail_large_straight_short = new RailStandardStraightShort().setBlockName("rail_large_straight_short").setHardness(5.0F).setResistance(10.0F).setCreativeTab(CreativeTabs.tabTransport).setBlockTextureName(RefStrings.MODID + ":rail_standard_straight");
|
rail_large_straight_short = new RailStandardStraightShort().setBlockName("rail_large_straight_short").setHardness(5.0F).setResistance(10.0F).setCreativeTab(null).setBlockTextureName(RefStrings.MODID + ":rail_standard_straight");
|
||||||
rail_large_curve = new RailStandardCurveBase().setBlockName("rail_large_curve").setHardness(5.0F).setResistance(10.0F).setCreativeTab(CreativeTabs.tabTransport).setBlockTextureName(RefStrings.MODID + ":rail_standard_straight");
|
rail_large_curve = new RailStandardCurveBase().setBlockName("rail_large_curve").setHardness(5.0F).setResistance(10.0F).setCreativeTab(null).setBlockTextureName(RefStrings.MODID + ":rail_standard_straight");
|
||||||
rail_large_curve_7 = new RailStandardCurveWide7().setBlockName("rail_large_curve_7").setHardness(5.0F).setResistance(10.0F).setCreativeTab(CreativeTabs.tabTransport).setBlockTextureName(RefStrings.MODID + ":rail_standard_straight");
|
rail_large_curve_7 = new RailStandardCurveWide7().setBlockName("rail_large_curve_7").setHardness(5.0F).setResistance(10.0F).setCreativeTab(null).setBlockTextureName(RefStrings.MODID + ":rail_standard_straight");
|
||||||
rail_large_curve_9 = new RailStandardCurveWide9().setBlockName("rail_large_curve_9").setHardness(5.0F).setResistance(10.0F).setCreativeTab(CreativeTabs.tabTransport).setBlockTextureName(RefStrings.MODID + ":rail_standard_straight");
|
rail_large_curve_9 = new RailStandardCurveWide9().setBlockName("rail_large_curve_9").setHardness(5.0F).setResistance(10.0F).setCreativeTab(null).setBlockTextureName(RefStrings.MODID + ":rail_standard_straight");
|
||||||
rail_large_ramp = new RailStandardRamp().setBlockName("rail_large_ramp").setHardness(5.0F).setResistance(10.0F).setCreativeTab(CreativeTabs.tabTransport).setBlockTextureName(RefStrings.MODID + ":rail_standard_straight");
|
rail_large_ramp = new RailStandardRamp().setBlockName("rail_large_ramp").setHardness(5.0F).setResistance(10.0F).setCreativeTab(null).setBlockTextureName(RefStrings.MODID + ":rail_standard_straight");
|
||||||
rail_large_buffer = new RailStandardBuffer().setBlockName("rail_large_buffer").setHardness(5.0F).setResistance(10.0F).setCreativeTab(CreativeTabs.tabTransport).setBlockTextureName(RefStrings.MODID + ":rail_standard_buffer");
|
rail_large_buffer = new RailStandardBuffer().setBlockName("rail_large_buffer").setHardness(5.0F).setResistance(10.0F).setCreativeTab(null).setBlockTextureName(RefStrings.MODID + ":rail_standard_buffer");
|
||||||
rail_large_switch = new RailStandardSwitch().setBlockName("rail_large_switch").setHardness(5.0F).setResistance(10.0F).setCreativeTab(CreativeTabs.tabTransport).setBlockTextureName(RefStrings.MODID + ":rail_standard_straight");
|
rail_large_switch = new RailStandardSwitch().setBlockName("rail_large_switch").setHardness(5.0F).setResistance(10.0F).setCreativeTab(null).setBlockTextureName(RefStrings.MODID + ":rail_standard_straight");
|
||||||
rail_large_switch_flipped = new RailStandardSwitchFlipped().setBlockName("rail_large_switch_flipped").setHardness(5.0F).setResistance(10.0F).setCreativeTab(CreativeTabs.tabTransport).setBlockTextureName(RefStrings.MODID + ":rail_standard_straight");
|
rail_large_switch_flipped = new RailStandardSwitchFlipped().setBlockName("rail_large_switch_flipped").setHardness(5.0F).setResistance(10.0F).setCreativeTab(null).setBlockTextureName(RefStrings.MODID + ":rail_standard_straight");
|
||||||
|
|
||||||
crate = new BlockCrate(Material.wood).setBlockName("crate").setStepSound(Block.soundTypeWood).setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.consumableTab).setBlockTextureName(RefStrings.MODID + ":crate");
|
crate = new BlockCrate(Material.wood).setBlockName("crate").setStepSound(Block.soundTypeWood).setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.consumableTab).setBlockTextureName(RefStrings.MODID + ":crate");
|
||||||
crate_weapon = new BlockCrate(Material.wood).setBlockName("crate_weapon").setStepSound(Block.soundTypeWood).setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.consumableTab).setBlockTextureName(RefStrings.MODID + ":crate_weapon");
|
crate_weapon = new BlockCrate(Material.wood).setBlockName("crate_weapon").setStepSound(Block.soundTypeWood).setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.consumableTab).setBlockTextureName(RefStrings.MODID + ":crate_weapon");
|
||||||
@ -2226,7 +2226,9 @@ public class ModBlocks {
|
|||||||
machine_arc_welder = new MachineArcWelder(Material.iron).setBlockName("machine_arc_welder").setHardness(5.0F).setResistance(30.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":block_steel");
|
machine_arc_welder = new MachineArcWelder(Material.iron).setBlockName("machine_arc_welder").setHardness(5.0F).setResistance(30.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":block_steel");
|
||||||
machine_soldering_station = new MachineSolderingStation(Material.iron).setBlockName("machine_soldering_station").setHardness(5.0F).setResistance(30.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":block_steel");
|
machine_soldering_station = new MachineSolderingStation(Material.iron).setBlockName("machine_soldering_station").setHardness(5.0F).setResistance(30.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":block_steel");
|
||||||
machine_chemplant = new MachineChemplant(Material.iron).setBlockName("machine_chemplant").setHardness(5.0F).setResistance(30.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":block_steel");
|
machine_chemplant = new MachineChemplant(Material.iron).setBlockName("machine_chemplant").setHardness(5.0F).setResistance(30.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":block_steel");
|
||||||
|
machine_chemical_plant = new MachineChemicalPlant(Material.iron).setBlockName("machine_chemical_plant").setHardness(5.0F).setResistance(30.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":block_steel");
|
||||||
machine_chemfac = new MachineChemfac(Material.iron).setBlockName("machine_chemfac").setHardness(5.0F).setResistance(30.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":block_steel");
|
machine_chemfac = new MachineChemfac(Material.iron).setBlockName("machine_chemfac").setHardness(5.0F).setResistance(30.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":block_steel");
|
||||||
|
machine_chemical_factory = new MachineChemicalFactory(Material.iron).setBlockName("machine_chemical_factory").setHardness(5.0F).setResistance(30.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":block_steel");
|
||||||
machine_mixer = new MachineMixer(Material.iron).setBlockName("machine_mixer").setHardness(5.0F).setResistance(30.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":block_steel");
|
machine_mixer = new MachineMixer(Material.iron).setBlockName("machine_mixer").setHardness(5.0F).setResistance(30.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":block_steel");
|
||||||
machine_fluidtank = new MachineFluidTank(Material.iron).setBlockName("machine_fluidtank").setHardness(5.0F).setResistance(20.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":machine_fluidtank");
|
machine_fluidtank = new MachineFluidTank(Material.iron).setBlockName("machine_fluidtank").setHardness(5.0F).setResistance(20.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":machine_fluidtank");
|
||||||
machine_bat9000 = new MachineBigAssTank9000(Material.iron).setBlockName("machine_bat9000").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":block_steel");
|
machine_bat9000 = new MachineBigAssTank9000(Material.iron).setBlockName("machine_bat9000").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":block_steel");
|
||||||
@ -2662,6 +2664,7 @@ public class ModBlocks {
|
|||||||
//Reinforced Blocks
|
//Reinforced Blocks
|
||||||
register(sandbags);
|
register(sandbags);
|
||||||
register(wood_barrier);
|
register(wood_barrier);
|
||||||
|
register(wood_structure);
|
||||||
GameRegistry.registerBlock(asphalt, ItemBlockBlastInfo.class, asphalt.getUnlocalizedName());
|
GameRegistry.registerBlock(asphalt, ItemBlockBlastInfo.class, asphalt.getUnlocalizedName());
|
||||||
GameRegistry.registerBlock(asphalt_light, ItemBlockBlastInfo.class, asphalt_light.getUnlocalizedName());
|
GameRegistry.registerBlock(asphalt_light, ItemBlockBlastInfo.class, asphalt_light.getUnlocalizedName());
|
||||||
GameRegistry.registerBlock(reinforced_brick, ItemBlockBlastInfo.class, reinforced_brick.getUnlocalizedName());
|
GameRegistry.registerBlock(reinforced_brick, ItemBlockBlastInfo.class, reinforced_brick.getUnlocalizedName());
|
||||||
@ -3130,7 +3133,6 @@ public class ModBlocks {
|
|||||||
GameRegistry.registerBlock(hadron_analysis_glass, hadron_analysis_glass.getUnlocalizedName());
|
GameRegistry.registerBlock(hadron_analysis_glass, hadron_analysis_glass.getUnlocalizedName());
|
||||||
GameRegistry.registerBlock(hadron_access, hadron_access.getUnlocalizedName());
|
GameRegistry.registerBlock(hadron_access, hadron_access.getUnlocalizedName());
|
||||||
GameRegistry.registerBlock(hadron_core, hadron_core.getUnlocalizedName());
|
GameRegistry.registerBlock(hadron_core, hadron_core.getUnlocalizedName());
|
||||||
register(hadron_cooler);
|
|
||||||
|
|
||||||
register(pa_source);
|
register(pa_source);
|
||||||
register(pa_beamline);
|
register(pa_beamline);
|
||||||
@ -3189,6 +3191,7 @@ public class ModBlocks {
|
|||||||
register(fluid_duct_gauge);
|
register(fluid_duct_gauge);
|
||||||
register(fluid_valve);
|
register(fluid_valve);
|
||||||
register(fluid_switch);
|
register(fluid_switch);
|
||||||
|
register(fluid_pump);
|
||||||
register(machine_drain);
|
register(machine_drain);
|
||||||
register(radio_torch_sender);
|
register(radio_torch_sender);
|
||||||
register(radio_torch_receiver);
|
register(radio_torch_receiver);
|
||||||
@ -3253,9 +3256,7 @@ public class ModBlocks {
|
|||||||
register(capacitor_tantalium);
|
register(capacitor_tantalium);
|
||||||
register(capacitor_schrabidate);
|
register(capacitor_schrabidate);
|
||||||
GameRegistry.registerBlock(machine_transformer, machine_transformer.getUnlocalizedName());
|
GameRegistry.registerBlock(machine_transformer, machine_transformer.getUnlocalizedName());
|
||||||
GameRegistry.registerBlock(machine_transformer_20, machine_transformer_20.getUnlocalizedName());
|
|
||||||
GameRegistry.registerBlock(machine_transformer_dnt, machine_transformer_dnt.getUnlocalizedName());
|
GameRegistry.registerBlock(machine_transformer_dnt, machine_transformer_dnt.getUnlocalizedName());
|
||||||
GameRegistry.registerBlock(machine_transformer_dnt_20, machine_transformer_dnt_20.getUnlocalizedName());
|
|
||||||
GameRegistry.registerBlock(machine_converter_he_rf, machine_converter_he_rf.getUnlocalizedName());
|
GameRegistry.registerBlock(machine_converter_he_rf, machine_converter_he_rf.getUnlocalizedName());
|
||||||
GameRegistry.registerBlock(machine_converter_rf_he, machine_converter_rf_he.getUnlocalizedName());
|
GameRegistry.registerBlock(machine_converter_rf_he, machine_converter_rf_he.getUnlocalizedName());
|
||||||
GameRegistry.registerBlock(machine_electric_furnace_off, machine_electric_furnace_off.getUnlocalizedName());
|
GameRegistry.registerBlock(machine_electric_furnace_off, machine_electric_furnace_off.getUnlocalizedName());
|
||||||
@ -3266,7 +3267,9 @@ public class ModBlocks {
|
|||||||
GameRegistry.registerBlock(machine_assembler, machine_assembler.getUnlocalizedName());
|
GameRegistry.registerBlock(machine_assembler, machine_assembler.getUnlocalizedName());
|
||||||
GameRegistry.registerBlock(machine_assemfac, machine_assemfac.getUnlocalizedName());
|
GameRegistry.registerBlock(machine_assemfac, machine_assemfac.getUnlocalizedName());
|
||||||
GameRegistry.registerBlock(machine_chemplant, machine_chemplant.getUnlocalizedName());
|
GameRegistry.registerBlock(machine_chemplant, machine_chemplant.getUnlocalizedName());
|
||||||
GameRegistry.registerBlock(machine_chemfac, machine_chemfac.getUnlocalizedName());
|
register(machine_chemical_plant);
|
||||||
|
register(machine_chemfac);
|
||||||
|
register(machine_chemical_factory);
|
||||||
register(machine_arc_welder);
|
register(machine_arc_welder);
|
||||||
register(machine_soldering_station);
|
register(machine_soldering_station);
|
||||||
register(machine_arc_furnace);
|
register(machine_arc_furnace);
|
||||||
|
|||||||
@ -3,11 +3,20 @@ package com.hbm.blocks.bomb;
|
|||||||
import com.hbm.blocks.BlockEnumMulti;
|
import com.hbm.blocks.BlockEnumMulti;
|
||||||
import com.hbm.config.BombConfig;
|
import com.hbm.config.BombConfig;
|
||||||
import com.hbm.entity.logic.EntityBalefire;
|
import com.hbm.entity.logic.EntityBalefire;
|
||||||
|
import com.hbm.entity.logic.EntityNukeExplosionMK5;
|
||||||
|
import com.hbm.explosion.vanillant.ExplosionVNT;
|
||||||
|
import com.hbm.explosion.vanillant.standard.BlockAllocatorStandard;
|
||||||
|
import com.hbm.explosion.vanillant.standard.BlockProcessorStandard;
|
||||||
|
import com.hbm.explosion.vanillant.standard.EntityProcessorCross;
|
||||||
|
import com.hbm.explosion.vanillant.standard.PlayerProcessorStandard;
|
||||||
import com.hbm.handler.threading.PacketThreading;
|
import com.hbm.handler.threading.PacketThreading;
|
||||||
import com.hbm.interfaces.IBomb;
|
import com.hbm.interfaces.IBomb;
|
||||||
import com.hbm.items.ModItems;
|
import com.hbm.items.ModItems;
|
||||||
|
import com.hbm.main.MainRegistry;
|
||||||
import com.hbm.packet.toclient.AuxParticlePacketNT;
|
import com.hbm.packet.toclient.AuxParticlePacketNT;
|
||||||
|
import com.hbm.particle.helper.ExplosionCreator;
|
||||||
import com.hbm.tileentity.bomb.TileEntityCrashedBomb;
|
import com.hbm.tileentity.bomb.TileEntityCrashedBomb;
|
||||||
|
import com.hbm.util.EnumUtil;
|
||||||
|
|
||||||
import cpw.mods.fml.common.network.NetworkRegistry.TargetPoint;
|
import cpw.mods.fml.common.network.NetworkRegistry.TargetPoint;
|
||||||
import net.minecraft.block.ITileEntityProvider;
|
import net.minecraft.block.ITileEntityProvider;
|
||||||
@ -43,10 +52,26 @@ public class BlockCrashedBomb extends BlockEnumMulti implements ITileEntityProvi
|
|||||||
|
|
||||||
if(player.getHeldItem() != null && player.getHeldItem().getItem() == ModItems.defuser) {
|
if(player.getHeldItem() != null && player.getHeldItem().getItem() == ModItems.defuser) {
|
||||||
|
|
||||||
|
EnumDudType type = EnumUtil.grabEnumSafely(EnumDudType.class, world.getBlockMetadata(x, y, z));
|
||||||
|
|
||||||
|
//TODO: make this less scummy
|
||||||
|
if(type == type.BALEFIRE) {
|
||||||
|
world.spawnEntityInWorld(new EntityItem(world, x + 0.5, y + 0.5, z + 0.5, new ItemStack(ModItems.egg_balefire_shard)));
|
||||||
|
}
|
||||||
|
if(type == type.CONVENTIONAL) {
|
||||||
|
world.spawnEntityInWorld(new EntityItem(world, x + 0.5, y + 0.5, z + 0.5, new ItemStack(ModItems.ball_tnt, 16)));
|
||||||
|
}
|
||||||
|
if(type == type.NUKE) {
|
||||||
|
world.spawnEntityInWorld(new EntityItem(world, x + 0.5, y + 0.5, z + 0.5, new ItemStack(ModItems.ball_tnt, 8)));
|
||||||
|
world.spawnEntityInWorld(new EntityItem(world, x + 0.5, y + 0.5, z + 0.5, new ItemStack(ModItems.billet_plutonium, 4)));
|
||||||
|
}
|
||||||
|
if(type == type.SALTED) {
|
||||||
|
world.spawnEntityInWorld(new EntityItem(world, x + 0.5, y + 0.5, z + 0.5, new ItemStack(ModItems.ball_tnt, 8)));
|
||||||
|
world.spawnEntityInWorld(new EntityItem(world, x + 0.5, y + 0.5, z + 0.5, new ItemStack(ModItems.billet_plutonium, 2)));
|
||||||
|
world.spawnEntityInWorld(new EntityItem(world, x + 0.5, y + 0.5, z + 0.5, new ItemStack(ModItems.ingot_cobalt, 12)));
|
||||||
|
}
|
||||||
|
|
||||||
world.func_147480_a(x, y, z, false);
|
world.func_147480_a(x, y, z, false);
|
||||||
world.spawnEntityInWorld(new EntityItem(world, x + 0.5, y + 0.5, z + 0.5, new ItemStack(ModItems.egg_balefire_shard)));
|
|
||||||
world.spawnEntityInWorld(new EntityItem(world, x + 0.5, y + 0.5, z + 0.5, new ItemStack(ModItems.plate_steel, 10 + world.rand.nextInt(15))));
|
|
||||||
world.spawnEntityInWorld(new EntityItem(world, x + 0.5, y + 0.5, z + 0.5, new ItemStack(ModItems.plate_titanium, 2 + world.rand.nextInt(7))));
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -58,21 +83,46 @@ public class BlockCrashedBomb extends BlockEnumMulti implements ITileEntityProvi
|
|||||||
|
|
||||||
if(!world.isRemote) {
|
if(!world.isRemote) {
|
||||||
|
|
||||||
|
EnumDudType type = EnumUtil.grabEnumSafely(EnumDudType.class, world.getBlockMetadata(x, y, z));
|
||||||
world.setBlockToAir(x, y, z);
|
world.setBlockToAir(x, y, z);
|
||||||
EntityBalefire bf = new EntityBalefire(world);
|
|
||||||
bf.posX = x;
|
|
||||||
bf.posY = y;
|
|
||||||
bf.posZ = z;
|
|
||||||
bf.destructionRange = (int) (BombConfig.fatmanRadius * 1.25);
|
|
||||||
world.spawnEntityInWorld(bf);
|
|
||||||
|
|
||||||
NBTTagCompound data = new NBTTagCompound();
|
if(type == type.BALEFIRE) {
|
||||||
data.setString("type", "muke");
|
EntityBalefire bf = new EntityBalefire(world);
|
||||||
data.setBoolean("balefire", true);
|
bf.setPosition(x, y, z);
|
||||||
PacketThreading.createAllAroundThreadedPacket(new AuxParticlePacketNT(data, x + 0.5, y + 0.5, z + 0.5), new TargetPoint(world.provider.dimensionId, x + 0.5, y + 0.5, z + 0.5, 250));
|
bf.destructionRange = (int) (BombConfig.fatmanRadius * 1.25);
|
||||||
world.playSoundEffect(x + 0.5, y + 0.5, z + 0.5, "hbm:weapon.mukeExplosion", 15.0F, 1.0F);
|
world.spawnEntityInWorld(bf);
|
||||||
|
spawnMush(world, x, y, z, true);
|
||||||
|
}
|
||||||
|
|
||||||
|
if(type == type.CONVENTIONAL) {
|
||||||
|
ExplosionVNT xnt = new ExplosionVNT(world, x + 0.5, y + 0.5, z + 0.5, 35F);
|
||||||
|
xnt.setBlockAllocator(new BlockAllocatorStandard(24));
|
||||||
|
xnt.setBlockProcessor(new BlockProcessorStandard().setNoDrop());
|
||||||
|
xnt.setEntityProcessor(new EntityProcessorCross(5D).withRangeMod(1.5F));
|
||||||
|
xnt.setPlayerProcessor(new PlayerProcessorStandard());
|
||||||
|
xnt.explode();
|
||||||
|
ExplosionCreator.composeEffectLarge(world, x + 0.5, y + 0.5, z + 0.5);
|
||||||
|
}
|
||||||
|
|
||||||
|
if(type == type.NUKE) {
|
||||||
|
world.spawnEntityInWorld(EntityNukeExplosionMK5.statFac(world, 35, x + 0.5, y + 0.5, z + 0.5));
|
||||||
|
spawnMush(world, x, y, z, MainRegistry.polaroidID == 11 || world.rand.nextInt(100) == 0);
|
||||||
|
}
|
||||||
|
|
||||||
|
if(type == type.SALTED) {
|
||||||
|
world.spawnEntityInWorld(EntityNukeExplosionMK5.statFac(world, 25, x + 0.5, y + 0.5, z + 0.5).moreFallout(25));
|
||||||
|
spawnMush(world, x, y, z, MainRegistry.polaroidID == 11 || world.rand.nextInt(100) == 0);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return BombReturnCode.DETONATED;
|
return BombReturnCode.DETONATED;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static void spawnMush(World world, int x, int y, int z, boolean balefire) {
|
||||||
|
world.playSoundEffect(x + 0.5, y + 0.5, z + 0.5, "hbm:weapon.mukeExplosion", 15.0F, 1.0F);
|
||||||
|
NBTTagCompound data = new NBTTagCompound();
|
||||||
|
data.setString("type", "muke");
|
||||||
|
data.setBoolean("balefire", balefire);
|
||||||
|
PacketThreading.createAllAroundThreadedPacket(new AuxParticlePacketNT(data, x + 0.5, y + 0.5, z + 0.5), new TargetPoint(world.provider.dimensionId, x + 0.5, y + 0.5, z + 0.5, 250));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -1,7 +1,13 @@
|
|||||||
package com.hbm.blocks.bomb;
|
package com.hbm.blocks.bomb;
|
||||||
|
|
||||||
import com.hbm.explosion.ExplosionChaos;
|
import com.hbm.explosion.vanillant.ExplosionVNT;
|
||||||
|
import com.hbm.explosion.vanillant.standard.BlockAllocatorStandard;
|
||||||
|
import com.hbm.explosion.vanillant.standard.BlockProcessorStandard;
|
||||||
|
import com.hbm.explosion.vanillant.standard.EntityProcessorCrossSmooth;
|
||||||
|
import com.hbm.explosion.vanillant.standard.ExplosionEffectTiny;
|
||||||
|
import com.hbm.explosion.vanillant.standard.PlayerProcessorStandard;
|
||||||
import com.hbm.interfaces.IBomb;
|
import com.hbm.interfaces.IBomb;
|
||||||
|
import com.hbm.particle.helper.ExplosionCreator;
|
||||||
|
|
||||||
import net.minecraft.block.Block;
|
import net.minecraft.block.Block;
|
||||||
import net.minecraft.block.material.Material;
|
import net.minecraft.block.material.Material;
|
||||||
@ -17,9 +23,7 @@ public class BombFlameWar extends Block implements IBomb {
|
|||||||
public void onNeighborBlockChange(World world, int x, int y, int z, Block block) {
|
public void onNeighborBlockChange(World world, int x, int y, int z, Block block) {
|
||||||
|
|
||||||
if(world.isBlockIndirectlyGettingPowered(x, y, z)) {
|
if(world.isBlockIndirectlyGettingPowered(x, y, z)) {
|
||||||
ExplosionChaos.explode(world, x, y, z, 15);
|
explode(world, x, y, z);
|
||||||
ExplosionChaos.spawnExplosion(world, x, y, z, 75);
|
|
||||||
ExplosionChaos.flameDeath(world, x, y, z, 100);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -27,9 +31,24 @@ public class BombFlameWar extends Block implements IBomb {
|
|||||||
public BombReturnCode explode(World world, int x, int y, int z) {
|
public BombReturnCode explode(World world, int x, int y, int z) {
|
||||||
|
|
||||||
if(!world.isRemote) {
|
if(!world.isRemote) {
|
||||||
ExplosionChaos.explode(world, x, y, z, 15);
|
|
||||||
ExplosionChaos.spawnExplosion(world, x, y, z, 75);
|
world.func_147480_a(x, y, z, false);
|
||||||
ExplosionChaos.flameDeath(world, x, y, z, 100);
|
|
||||||
|
for(int i = 0; i < 150; i++) {
|
||||||
|
ExplosionVNT vnt = new ExplosionVNT(world, x + world.rand.nextInt(51) - 25, y + world.rand.nextInt(11) - 5, z + world.rand.nextInt(51) - 25, 4, null);
|
||||||
|
vnt.setEntityProcessor(new EntityProcessorCrossSmooth(1, 25));
|
||||||
|
vnt.setPlayerProcessor(new PlayerProcessorStandard());
|
||||||
|
vnt.setSFX(new ExplosionEffectTiny());
|
||||||
|
vnt.explode();
|
||||||
|
}
|
||||||
|
|
||||||
|
ExplosionVNT xnt = new ExplosionVNT(world, x + 0.5, y + 0.5, z + 0.5, 15F);
|
||||||
|
xnt.setBlockAllocator(new BlockAllocatorStandard(32));
|
||||||
|
xnt.setBlockProcessor(new BlockProcessorStandard().setNoDrop());
|
||||||
|
xnt.setEntityProcessor(new EntityProcessorCrossSmooth(2, 200));
|
||||||
|
xnt.setPlayerProcessor(new PlayerProcessorStandard());
|
||||||
|
xnt.explode();
|
||||||
|
ExplosionCreator.composeEffectSmall(world, x + 0.5, y + 0.5, z + 0.5);
|
||||||
}
|
}
|
||||||
|
|
||||||
return BombReturnCode.DETONATED;
|
return BombReturnCode.DETONATED;
|
||||||
|
|||||||
@ -18,10 +18,12 @@ import net.minecraft.world.IBlockAccess;
|
|||||||
import net.minecraft.world.World;
|
import net.minecraft.world.World;
|
||||||
|
|
||||||
import com.hbm.blocks.ModBlocks;
|
import com.hbm.blocks.ModBlocks;
|
||||||
|
import com.hbm.entity.effect.EntityMist;
|
||||||
import com.hbm.explosion.ExplosionChaos;
|
import com.hbm.explosion.ExplosionChaos;
|
||||||
import com.hbm.explosion.ExplosionLarge;
|
import com.hbm.explosion.ExplosionLarge;
|
||||||
import com.hbm.explosion.ExplosionNukeGeneric;
|
import com.hbm.explosion.ExplosionNukeGeneric;
|
||||||
import com.hbm.interfaces.IBomb;
|
import com.hbm.interfaces.IBomb;
|
||||||
|
import com.hbm.inventory.fluid.Fluids;
|
||||||
import com.hbm.main.MainRegistry;
|
import com.hbm.main.MainRegistry;
|
||||||
import com.hbm.tileentity.bomb.TileEntityBombMulti;
|
import com.hbm.tileentity.bomb.TileEntityBombMulti;
|
||||||
|
|
||||||
@ -169,7 +171,11 @@ public class BombMulti extends BlockContainer implements IBomb {
|
|||||||
}
|
}
|
||||||
|
|
||||||
if(gasCloud > 0) {
|
if(gasCloud > 0) {
|
||||||
ExplosionChaos.spawnChlorine(world, x, y, z, gasCloud, gasCloud / 50, 0);
|
EntityMist mist = new EntityMist(world);
|
||||||
|
mist.setType(Fluids.CHLORINE);
|
||||||
|
mist.setPosition(x + 0.5, y + 0.5, z + 0.5);
|
||||||
|
mist.setArea(gasCloud * 15F / 50F, gasCloud * 7.5F / 50F);
|
||||||
|
world.spawnEntityInWorld(mist);
|
||||||
}
|
}
|
||||||
|
|
||||||
return BombReturnCode.DETONATED;
|
return BombReturnCode.DETONATED;
|
||||||
|
|||||||
@ -69,7 +69,7 @@ public class ExplosiveCharge extends BlockDetonatable implements IBomb, IDetConn
|
|||||||
}
|
}
|
||||||
if(this == ModBlocks.det_nuke) {
|
if(this == ModBlocks.det_nuke) {
|
||||||
world.spawnEntityInWorld(EntityNukeExplosionMK5.statFac(world, BombConfig.missileRadius, x + 0.5, y + 0.5, z + 0.5));
|
world.spawnEntityInWorld(EntityNukeExplosionMK5.statFac(world, BombConfig.missileRadius, x + 0.5, y + 0.5, z + 0.5));
|
||||||
EntityNukeTorex.statFac(world, x + 0.5, y + 0.5, z + 0.5, BombConfig.missileRadius);
|
EntityNukeTorex.statFacStandard(world, x + 0.5, y + 0.5, z + 0.5, BombConfig.missileRadius);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -179,7 +179,7 @@ public class NukeCustom extends BlockContainer implements IBomb {
|
|||||||
dirty *= 0.25F;
|
dirty *= 0.25F;
|
||||||
|
|
||||||
worldObj.spawnEntityInWorld(EntityNukeExplosionMK5.statFac(worldObj, (int)hydro, xCoord + 0.5, yCoord + 0.5, zCoord + 0.5).moreFallout((int)dirty));
|
worldObj.spawnEntityInWorld(EntityNukeExplosionMK5.statFac(worldObj, (int)hydro, xCoord + 0.5, yCoord + 0.5, zCoord + 0.5).moreFallout((int)dirty));
|
||||||
EntityNukeTorex.statFac(worldObj, xCoord + 0.5, yCoord + 5, zCoord + 0.5, hydro);
|
EntityNukeTorex.statFacStandard(worldObj, xCoord + 0.5, yCoord + 5, zCoord + 0.5, hydro);
|
||||||
|
|
||||||
/// NUCLEAR ///
|
/// NUCLEAR ///
|
||||||
} else if(nuke > 0) {
|
} else if(nuke > 0) {
|
||||||
@ -188,7 +188,7 @@ public class NukeCustom extends BlockContainer implements IBomb {
|
|||||||
nuke = Math.min(nuke, maxNuke);
|
nuke = Math.min(nuke, maxNuke);
|
||||||
|
|
||||||
worldObj.spawnEntityInWorld(EntityNukeExplosionMK5.statFac(worldObj, (int)nuke, xCoord + 0.5, yCoord + 5, zCoord + 0.5).moreFallout((int)dirty));
|
worldObj.spawnEntityInWorld(EntityNukeExplosionMK5.statFac(worldObj, (int)nuke, xCoord + 0.5, yCoord + 5, zCoord + 0.5).moreFallout((int)dirty));
|
||||||
EntityNukeTorex.statFac(worldObj, xCoord + 0.5, yCoord + 5, zCoord + 0.5, nuke);
|
EntityNukeTorex.statFacStandard(worldObj, xCoord + 0.5, yCoord + 5, zCoord + 0.5, nuke);
|
||||||
|
|
||||||
/// NON-NUCLEAR ///
|
/// NON-NUCLEAR ///
|
||||||
} else if(tnt >= 75) {
|
} else if(tnt >= 75) {
|
||||||
@ -196,7 +196,7 @@ public class NukeCustom extends BlockContainer implements IBomb {
|
|||||||
tnt = Math.min(tnt, maxTnt);
|
tnt = Math.min(tnt, maxTnt);
|
||||||
|
|
||||||
worldObj.spawnEntityInWorld(EntityNukeExplosionMK5.statFacNoRad(worldObj, (int)tnt, xCoord + 0.5, yCoord + 0.5, zCoord + 0.5));
|
worldObj.spawnEntityInWorld(EntityNukeExplosionMK5.statFacNoRad(worldObj, (int)tnt, xCoord + 0.5, yCoord + 0.5, zCoord + 0.5));
|
||||||
EntityNukeTorex.statFac(worldObj, xCoord + 0.5, yCoord + 5, zCoord + 0.5, tnt);
|
EntityNukeTorex.statFacStandard(worldObj, xCoord + 0.5, yCoord + 5, zCoord + 0.5, tnt);
|
||||||
} else if(tnt > 0) {
|
} else if(tnt > 0) {
|
||||||
|
|
||||||
ExplosionLarge.explode(worldObj, xCoord + 0.5, yCoord + 0.5, zCoord + 0.5, tnt, true, true, true);
|
ExplosionLarge.explode(worldObj, xCoord + 0.5, yCoord + 0.5, zCoord + 0.5, tnt, true, true, true);
|
||||||
|
|||||||
@ -131,7 +131,7 @@ public class NukeGadget extends BlockContainer implements IBomb {
|
|||||||
world.playSoundEffect(x, y, z, "random.explode", 1.0f, world.rand.nextFloat() * 0.1F + 0.9F);
|
world.playSoundEffect(x, y, z, "random.explode", 1.0f, world.rand.nextFloat() * 0.1F + 0.9F);
|
||||||
|
|
||||||
world.spawnEntityInWorld(EntityNukeExplosionMK5.statFac(world, BombConfig.gadgetRadius, x + 0.5, y + 0.5, z + 0.5));
|
world.spawnEntityInWorld(EntityNukeExplosionMK5.statFac(world, BombConfig.gadgetRadius, x + 0.5, y + 0.5, z + 0.5));
|
||||||
EntityNukeTorex.statFac(world, x + 0.5, y + 0.5, z + 0.5, BombConfig.gadgetRadius);
|
EntityNukeTorex.statFacStandard(world, x + 0.5, y + 0.5, z + 0.5, BombConfig.gadgetRadius);
|
||||||
}
|
}
|
||||||
|
|
||||||
return false;
|
return false;
|
||||||
|
|||||||
@ -124,7 +124,7 @@ public class NukeMan extends BlockContainer implements IBomb {
|
|||||||
world.playSoundEffect(x, y, z, "random.explode", 1.0f, world.rand.nextFloat() * 0.1F + 0.9F);
|
world.playSoundEffect(x, y, z, "random.explode", 1.0f, world.rand.nextFloat() * 0.1F + 0.9F);
|
||||||
|
|
||||||
world.spawnEntityInWorld(EntityNukeExplosionMK5.statFac(world, BombConfig.manRadius, x + 0.5, y + 0.5, z + 0.5));
|
world.spawnEntityInWorld(EntityNukeExplosionMK5.statFac(world, BombConfig.manRadius, x + 0.5, y + 0.5, z + 0.5));
|
||||||
EntityNukeTorex.statFac(world, x + 0.5, y + 0.5, z + 0.5, BombConfig.manRadius);
|
EntityNukeTorex.statFacStandard(world, x + 0.5, y + 0.5, z + 0.5, BombConfig.manRadius);
|
||||||
}
|
}
|
||||||
|
|
||||||
return false;
|
return false;
|
||||||
|
|||||||
@ -131,7 +131,7 @@ public class NukeMike extends BlockContainer implements IBomb {
|
|||||||
world.playSoundEffect(x, y, z, "random.explode", 1.0f, world.rand.nextFloat() * 0.1F + 0.9F);
|
world.playSoundEffect(x, y, z, "random.explode", 1.0f, world.rand.nextFloat() * 0.1F + 0.9F);
|
||||||
|
|
||||||
world.spawnEntityInWorld(EntityNukeExplosionMK5.statFac(world, BombConfig.mikeRadius, x + 0.5, y + 0.5, z + 0.5));
|
world.spawnEntityInWorld(EntityNukeExplosionMK5.statFac(world, BombConfig.mikeRadius, x + 0.5, y + 0.5, z + 0.5));
|
||||||
EntityNukeTorex.statFac(world, x + 0.5, y + 0.5, z + 0.5, BombConfig.mikeRadius);
|
EntityNukeTorex.statFacStandard(world, x + 0.5, y + 0.5, z + 0.5, BombConfig.mikeRadius);
|
||||||
}
|
}
|
||||||
|
|
||||||
return false;
|
return false;
|
||||||
|
|||||||
@ -120,7 +120,7 @@ public class NukeN2 extends BlockContainer implements IBomb {
|
|||||||
world.playSoundEffect(x, y, z, "random.explode", 1.0f, world.rand.nextFloat() * 0.1F + 0.9F);
|
world.playSoundEffect(x, y, z, "random.explode", 1.0f, world.rand.nextFloat() * 0.1F + 0.9F);
|
||||||
|
|
||||||
world.spawnEntityInWorld(EntityNukeExplosionMK5.statFacNoRad(world, r, x + 0.5, y + 0.5, z + 0.5));
|
world.spawnEntityInWorld(EntityNukeExplosionMK5.statFacNoRad(world, r, x + 0.5, y + 0.5, z + 0.5));
|
||||||
EntityNukeTorex.statFac(world, x + 0.5, y + 0.5, z + 0.5, r);
|
EntityNukeTorex.statFacStandard(world, x + 0.5, y + 0.5, z + 0.5, r);
|
||||||
}
|
}
|
||||||
|
|
||||||
return false;
|
return false;
|
||||||
|
|||||||
@ -129,7 +129,7 @@ public class NukeTsar extends BlockContainer implements IBomb {
|
|||||||
tetn.clearSlots();
|
tetn.clearSlots();
|
||||||
world.playSoundEffect(x, y, z, "random.explode", 1.0f, world.rand.nextFloat() * 0.1F + 0.9F);
|
world.playSoundEffect(x, y, z, "random.explode", 1.0f, world.rand.nextFloat() * 0.1F + 0.9F);
|
||||||
world.spawnEntityInWorld(EntityNukeExplosionMK5.statFac(world, r, x + 0.5, y + 0.5, z + 0.5));
|
world.spawnEntityInWorld(EntityNukeExplosionMK5.statFac(world, r, x + 0.5, y + 0.5, z + 0.5));
|
||||||
EntityNukeTorex.statFac(world, x + 0.5, y + 0.5, z + 0.5, r);
|
EntityNukeTorex.statFacStandard(world, x + 0.5, y + 0.5, z + 0.5, r);
|
||||||
}
|
}
|
||||||
|
|
||||||
return false;
|
return false;
|
||||||
|
|||||||
@ -121,11 +121,13 @@ public class BlockBarrier extends Block implements ISBRHUniversal {
|
|||||||
Block px = world.getBlock(x + 1, y, z);
|
Block px = world.getBlock(x + 1, y, z);
|
||||||
Block nz = world.getBlock(x, y, z - 1);
|
Block nz = world.getBlock(x, y, z - 1);
|
||||||
Block pz = world.getBlock(x, y, z + 1);
|
Block pz = world.getBlock(x, y, z + 1);
|
||||||
|
Block py = world.getBlock(x, y + 1, z);
|
||||||
|
|
||||||
boolean negX = nx.isOpaqueCube() || nx.isNormalCube() || meta == Library.POS_X.ordinal();
|
boolean negX = nx.isOpaqueCube() || nx.isNormalCube() || meta == Library.POS_X.ordinal();
|
||||||
boolean negZ = nz.isOpaqueCube() || nz.isNormalCube() || meta == Library.POS_Z.ordinal();
|
boolean negZ = nz.isOpaqueCube() || nz.isNormalCube() || meta == Library.POS_Z.ordinal();
|
||||||
boolean posX = px.isOpaqueCube() || px.isNormalCube() || meta == Library.NEG_X.ordinal();
|
boolean posX = px.isOpaqueCube() || px.isNormalCube() || meta == Library.NEG_X.ordinal();
|
||||||
boolean posZ = pz.isOpaqueCube() || pz.isNormalCube() || meta == Library.NEG_Z.ordinal();
|
boolean posZ = pz.isOpaqueCube() || pz.isNormalCube() || meta == Library.NEG_Z.ordinal();
|
||||||
|
boolean posY = py.isOpaqueCube() || py.isNormalCube();
|
||||||
|
|
||||||
if(negX) {
|
if(negX) {
|
||||||
renderer.setRenderBounds(0D, 0D, 0.4375D, 0.125D, 1D, 0.5625D); renderer.renderStandardBlock(block, x, y, z);
|
renderer.setRenderBounds(0D, 0D, 0.4375D, 0.125D, 1D, 0.5625D); renderer.renderStandardBlock(block, x, y, z);
|
||||||
@ -147,6 +149,12 @@ public class BlockBarrier extends Block implements ISBRHUniversal {
|
|||||||
renderer.setRenderBounds(negX ? 0.125D : 0D, 0.0625D, 0.9375D, posX ? 0.875D : 1D, 0.4375D, 1D); renderer.renderStandardBlock(block, x, y, z);
|
renderer.setRenderBounds(negX ? 0.125D : 0D, 0.0625D, 0.9375D, posX ? 0.875D : 1D, 0.4375D, 1D); renderer.renderStandardBlock(block, x, y, z);
|
||||||
renderer.setRenderBounds(negX ? 0.125D : 0D, 0.5625D, 0.9375D, posX ? 0.875D : 1D, 0.9375D, 1D); renderer.renderStandardBlock(block, x, y, z);
|
renderer.setRenderBounds(negX ? 0.125D : 0D, 0.5625D, 0.9375D, posX ? 0.875D : 1D, 0.9375D, 1D); renderer.renderStandardBlock(block, x, y, z);
|
||||||
}
|
}
|
||||||
|
if(posY) {
|
||||||
|
renderer.setRenderBounds(0D, 0.875D, 0D, 0.125D, 0.9375D, 1D); renderer.renderStandardBlock(block, x, y, z);
|
||||||
|
renderer.setRenderBounds(0.875D, 0.875D, 0D, 1D, 0.9375D, 1D); renderer.renderStandardBlock(block, x, y, z);
|
||||||
|
renderer.setRenderBounds(0D, 0.9375D, 0.0625D, 1D, 1D, 0.4375D); renderer.renderStandardBlock(block, x, y, z);
|
||||||
|
renderer.setRenderBounds(0D, 0.9375D, 0.5625D, 1D, 1D, 0.9375D); renderer.renderStandardBlock(block, x, y, z);
|
||||||
|
}
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|||||||
@ -16,7 +16,7 @@ import com.hbm.lib.RefStrings;
|
|||||||
import com.hbm.main.MainRegistry;
|
import com.hbm.main.MainRegistry;
|
||||||
import com.hbm.render.block.RenderBlockMultipass;
|
import com.hbm.render.block.RenderBlockMultipass;
|
||||||
import com.hbm.util.EnumUtil;
|
import com.hbm.util.EnumUtil;
|
||||||
import com.hbm.util.I18nUtil;
|
import com.hbm.util.i18n.I18nUtil;
|
||||||
|
|
||||||
import api.hbm.fluidmk2.IFillableItem;
|
import api.hbm.fluidmk2.IFillableItem;
|
||||||
import cpw.mods.fml.relauncher.Side;
|
import cpw.mods.fml.relauncher.Side;
|
||||||
|
|||||||
@ -198,7 +198,7 @@ public class BlockBobble extends BlockContainer implements IGUIProvider, INBTTra
|
|||||||
INTELLIGENCE( "Intelligence", "Intelligence", null, "It takes the smartest individuals to realize$there's always more to learn.", false, ScrapType.BRIDGE_BUS),
|
INTELLIGENCE( "Intelligence", "Intelligence", null, "It takes the smartest individuals to realize$there's always more to learn.", false, ScrapType.BRIDGE_BUS),
|
||||||
AGILITY( "Agility", "Agility", null, "Never be afraid to dodge the sensitive issues.", false, ScrapType.BRIDGE_CHIPSET),
|
AGILITY( "Agility", "Agility", null, "Never be afraid to dodge the sensitive issues.", false, ScrapType.BRIDGE_CHIPSET),
|
||||||
LUCK( "Luck", "Luck", null, "There's only one way to give 110%.", false, ScrapType.BRIDGE_CMOS),
|
LUCK( "Luck", "Luck", null, "There's only one way to give 110%.", false, ScrapType.BRIDGE_CMOS),
|
||||||
BOB( "Robert \"The Bobcat\" Katzinsky", "HbMinecraft", "Hbm's Nuclear Tech Mod", "I know where you live, " + System.getProperty("user.name"), false, ScrapType.CPU_SOCKET),
|
BOB( "Robert \"The Bobcat\" Katzinsky", "HbMinecraft", "Hbm's Nuclear Tech Mod", "I know where you live, " + System.getProperty("user.name"), false, ScrapType.CPU_SOCKET),
|
||||||
FRIZZLE( "Frooz", "Frooz", "Weapon models", "BLOOD IS FUEL", true, ScrapType.CPU_CLOCK),
|
FRIZZLE( "Frooz", "Frooz", "Weapon models", "BLOOD IS FUEL", true, ScrapType.CPU_CLOCK),
|
||||||
PU238( "Pu-238", "Pu-238", "Improved Tom impact mechanics", null, false, ScrapType.CPU_REGISTER),
|
PU238( "Pu-238", "Pu-238", "Improved Tom impact mechanics", null, false, ScrapType.CPU_REGISTER),
|
||||||
VT( "VT-6/24", "VT-6/24", "Balefire warhead model and general texturework", "You cannot unfuck a horse.", true, ScrapType.CPU_EXT),
|
VT( "VT-6/24", "VT-6/24", "Balefire warhead model and general texturework", "You cannot unfuck a horse.", true, ScrapType.CPU_EXT),
|
||||||
@ -211,9 +211,10 @@ public class BlockBobble extends BlockContainer implements IGUIProvider, INBTTra
|
|||||||
NOS( "Dr Nostalgia", "Dr Nostalgia", "SSG and Vortex models", "Take a picture, I'ma pose, paparazzi$I've been drinking, moving like a zombie", true, ScrapType.BOARD_TRANSISTOR),
|
NOS( "Dr Nostalgia", "Dr Nostalgia", "SSG and Vortex models", "Take a picture, I'ma pose, paparazzi$I've been drinking, moving like a zombie", true, ScrapType.BOARD_TRANSISTOR),
|
||||||
DRILLGON( "Drillgon200", "Drillgon200", "1.12 Port", null, false, ScrapType.CPU_LOGIC),
|
DRILLGON( "Drillgon200", "Drillgon200", "1.12 Port", null, false, ScrapType.CPU_LOGIC),
|
||||||
CIRNO( "Cirno", "Cirno", "the only multi layered skin i had", "No brain. Head empty.", true, ScrapType.BOARD_BLANK),
|
CIRNO( "Cirno", "Cirno", "the only multi layered skin i had", "No brain. Head empty.", true, ScrapType.BOARD_BLANK),
|
||||||
MICROWAVE( "Microwave", "Microwave", "OC Compatibility and massive RBMK/packet optimizations", "they call me the food heater$john optimization", true, ScrapType.BOARD_CONVERTER),
|
MICROWAVE( "Microwave", "Microwave", "OC Compatibility and massive RBMK/packet optimizations", "they call me the food heater$john optimization", true, ScrapType.BOARD_CONVERTER),
|
||||||
PEEP( "Peep", "LePeeperSauvage", "Coilgun, Leadburster and Congo Lake models, BDCL QC", "Fluffy ears can't hide in ash, nor snow.", true, ScrapType.CARD_BOARD),
|
PEEP( "Peep", "LePeeperSauvage", "Coilgun, Leadburster and Congo Lake models, BDCL QC", "Fluffy ears can't hide in ash, nor snow.", true, ScrapType.CARD_BOARD),
|
||||||
MELLOW( "MELLOWARPEGGIATION", "Mellow", "NBT Structures, industrial lighting, animation tools", "Make something cool now, ask for permission later.", true, ScrapType.CARD_PROCESSOR);
|
MELLOW( "MELLOWARPEGGIATION", "Mellow", "NBT Structures, industrial lighting, animation tools", "Make something cool now, ask for permission later.", true, ScrapType.CARD_PROCESSOR),
|
||||||
|
ABEL( "Abel1502", "Abel1502", "Abilities GUI, optimizations and many QoL improvements", "NANTO SUBARASHII", true, ScrapType.CPU_REGISTER);
|
||||||
|
|
||||||
public String name; //the title of the tooltip
|
public String name; //the title of the tooltip
|
||||||
public String label; //the name engraved in the socket
|
public String label; //the name engraved in the socket
|
||||||
|
|||||||
@ -6,7 +6,7 @@ import java.util.Random;
|
|||||||
import com.hbm.blocks.ITooltipProvider;
|
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.I18nUtil;
|
import com.hbm.util.i18n.I18nUtil;
|
||||||
|
|
||||||
import api.hbm.block.IDrillInteraction;
|
import api.hbm.block.IDrillInteraction;
|
||||||
import api.hbm.block.IMiningDrill;
|
import api.hbm.block.IMiningDrill;
|
||||||
|
|||||||
@ -3,7 +3,7 @@ package com.hbm.blocks.generic;
|
|||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
import com.hbm.blocks.ITooltipProvider;
|
import com.hbm.blocks.ITooltipProvider;
|
||||||
import com.hbm.util.I18nUtil;
|
import com.hbm.util.i18n.I18nUtil;
|
||||||
|
|
||||||
import api.hbm.item.IDepthRockTool;
|
import api.hbm.item.IDepthRockTool;
|
||||||
import net.minecraft.block.Block;
|
import net.minecraft.block.Block;
|
||||||
|
|||||||
@ -5,7 +5,7 @@ import java.util.List;
|
|||||||
import com.hbm.blocks.ITooltipProvider;
|
import com.hbm.blocks.ITooltipProvider;
|
||||||
import com.hbm.blocks.ModBlocks;
|
import com.hbm.blocks.ModBlocks;
|
||||||
import com.hbm.lib.RefStrings;
|
import com.hbm.lib.RefStrings;
|
||||||
import com.hbm.util.I18nUtil;
|
import com.hbm.util.i18n.I18nUtil;
|
||||||
|
|
||||||
import cpw.mods.fml.client.registry.RenderingRegistry;
|
import cpw.mods.fml.client.registry.RenderingRegistry;
|
||||||
import cpw.mods.fml.relauncher.Side;
|
import cpw.mods.fml.relauncher.Side;
|
||||||
|
|||||||
@ -68,9 +68,6 @@ public class BlockOre extends Block {
|
|||||||
if(this == ModBlocks.ore_nether_fire) {
|
if(this == ModBlocks.ore_nether_fire) {
|
||||||
return rand.nextInt(10) == 0 ? ModItems.ingot_phosphorus : ModItems.powder_fire;
|
return rand.nextInt(10) == 0 ? ModItems.ingot_phosphorus : ModItems.powder_fire;
|
||||||
}
|
}
|
||||||
if(this == ModBlocks.block_meteor) {
|
|
||||||
return rand.nextInt(10) == 0 ? ModItems.plate_dalekanium : Item.getItemFromBlock(ModBlocks.block_meteor);
|
|
||||||
}
|
|
||||||
if(this == ModBlocks.block_meteor_cobble) {
|
if(this == ModBlocks.block_meteor_cobble) {
|
||||||
return ModItems.fragment_meteorite;
|
return ModItems.fragment_meteorite;
|
||||||
}
|
}
|
||||||
|
|||||||
@ -66,18 +66,19 @@ public class BlockPedestal extends BlockContainer {
|
|||||||
|
|
||||||
@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) return true;
|
|
||||||
if(player.isSneaking()) return false;
|
if(player.isSneaking()) return false;
|
||||||
|
|
||||||
TileEntityPedestal pedestal = (TileEntityPedestal) world.getTileEntity(x, y, z);
|
TileEntityPedestal pedestal = (TileEntityPedestal) world.getTileEntity(x, y, z);
|
||||||
|
|
||||||
if(pedestal.item == null && player.getHeldItem() != null) {
|
if(pedestal.item == null && player.getHeldItem() != null) {
|
||||||
|
if(world.isRemote) return true;
|
||||||
pedestal.item = player.getHeldItem().copy();
|
pedestal.item = player.getHeldItem().copy();
|
||||||
player.inventory.mainInventory[player.inventory.currentItem] = null;
|
player.inventory.mainInventory[player.inventory.currentItem] = null;
|
||||||
pedestal.markDirty();
|
pedestal.markDirty();
|
||||||
world.markBlockForUpdate(x, y, z);
|
world.markBlockForUpdate(x, y, z);
|
||||||
return true;
|
return true;
|
||||||
} else if(pedestal.item != null && player.getHeldItem() == null) {
|
} else if(pedestal.item != null && player.getHeldItem() == null) {
|
||||||
|
if(world.isRemote) return true;
|
||||||
player.inventory.mainInventory[player.inventory.currentItem] = pedestal.item.copy();
|
player.inventory.mainInventory[player.inventory.currentItem] = pedestal.item.copy();
|
||||||
pedestal.item = null;
|
pedestal.item = null;
|
||||||
pedestal.markDirty();
|
pedestal.markDirty();
|
||||||
|
|||||||
@ -11,6 +11,7 @@ import net.minecraft.block.Block;
|
|||||||
import net.minecraft.block.material.Material;
|
import net.minecraft.block.material.Material;
|
||||||
import net.minecraft.client.renderer.texture.IIconRegister;
|
import net.minecraft.client.renderer.texture.IIconRegister;
|
||||||
import net.minecraft.init.Blocks;
|
import net.minecraft.init.Blocks;
|
||||||
|
import net.minecraft.init.Items;
|
||||||
import net.minecraft.item.Item;
|
import net.minecraft.item.Item;
|
||||||
import net.minecraft.util.AxisAlignedBB;
|
import net.minecraft.util.AxisAlignedBB;
|
||||||
import net.minecraft.util.IIcon;
|
import net.minecraft.util.IIcon;
|
||||||
@ -66,7 +67,7 @@ public class BlockReeds extends Block {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Item getItemDropped(int meta, Random rand, int fortune) {
|
public Item getItemDropped(int meta, Random rand, int fortune) {
|
||||||
return null;
|
return Items.stick;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|||||||
@ -41,18 +41,19 @@ public class BlockSkeletonHolder extends BlockContainer {
|
|||||||
|
|
||||||
@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) return true;
|
|
||||||
if(player.isSneaking()) return false;
|
if(player.isSneaking()) return false;
|
||||||
|
|
||||||
TileEntitySkeletonHolder pedestal = (TileEntitySkeletonHolder) world.getTileEntity(x, y, z);
|
TileEntitySkeletonHolder pedestal = (TileEntitySkeletonHolder) world.getTileEntity(x, y, z);
|
||||||
|
|
||||||
if(pedestal.item == null && player.getHeldItem() != null) {
|
if(pedestal.item == null && player.getHeldItem() != null) {
|
||||||
|
if(world.isRemote) return true;
|
||||||
pedestal.item = player.getHeldItem().copy();
|
pedestal.item = player.getHeldItem().copy();
|
||||||
player.inventory.mainInventory[player.inventory.currentItem] = null;
|
player.inventory.mainInventory[player.inventory.currentItem] = null;
|
||||||
pedestal.markDirty();
|
pedestal.markDirty();
|
||||||
world.markBlockForUpdate(x, y, z);
|
world.markBlockForUpdate(x, y, z);
|
||||||
return true;
|
return true;
|
||||||
} else if(pedestal.item != null && player.getHeldItem() == null) {
|
} else if(pedestal.item != null && player.getHeldItem() == null) {
|
||||||
|
if(world.isRemote) return true;
|
||||||
player.inventory.mainInventory[player.inventory.currentItem] = pedestal.item.copy();
|
player.inventory.mainInventory[player.inventory.currentItem] = pedestal.item.copy();
|
||||||
pedestal.item = null;
|
pedestal.item = null;
|
||||||
pedestal.markDirty();
|
pedestal.markDirty();
|
||||||
|
|||||||
@ -6,8 +6,10 @@ import java.util.List;
|
|||||||
import java.util.Random;
|
import java.util.Random;
|
||||||
|
|
||||||
import com.hbm.blocks.IBlockMulti;
|
import com.hbm.blocks.IBlockMulti;
|
||||||
|
import com.hbm.blocks.ILookOverlay;
|
||||||
import com.hbm.blocks.ITooltipProvider;
|
import com.hbm.blocks.ITooltipProvider;
|
||||||
import com.hbm.blocks.ModBlocks;
|
import com.hbm.blocks.ModBlocks;
|
||||||
|
import com.hbm.config.ServerConfig;
|
||||||
import com.hbm.items.ModItems;
|
import com.hbm.items.ModItems;
|
||||||
import com.hbm.items.tool.ItemLock;
|
import com.hbm.items.tool.ItemLock;
|
||||||
import com.hbm.lib.RefStrings;
|
import com.hbm.lib.RefStrings;
|
||||||
@ -38,8 +40,9 @@ import net.minecraft.util.EnumChatFormatting;
|
|||||||
import net.minecraft.util.IIcon;
|
import net.minecraft.util.IIcon;
|
||||||
import net.minecraft.util.MathHelper;
|
import net.minecraft.util.MathHelper;
|
||||||
import net.minecraft.world.World;
|
import net.minecraft.world.World;
|
||||||
|
import net.minecraftforge.client.event.RenderGameOverlayEvent;
|
||||||
|
|
||||||
public class BlockStorageCrate extends BlockContainer implements IBlockMulti, ITooltipProvider {
|
public class BlockStorageCrate extends BlockContainer implements IBlockMulti, ILookOverlay, ITooltipProvider {
|
||||||
|
|
||||||
@SideOnly(Side.CLIENT)
|
@SideOnly(Side.CLIENT)
|
||||||
private IIcon iconTop;
|
private IIcon iconTop;
|
||||||
@ -106,6 +109,21 @@ public class BlockStorageCrate extends BlockContainer implements IBlockMulti, IT
|
|||||||
@Override
|
@Override
|
||||||
public boolean removedByPlayer(World world, EntityPlayer player, int x, int y, int z, boolean willHarvest) {
|
public boolean removedByPlayer(World world, EntityPlayer player, int x, int y, int z, boolean willHarvest) {
|
||||||
|
|
||||||
|
if(!world.isRemote && !ServerConfig.CRATE_KEEP_CONTENTS.get()) {
|
||||||
|
dropInv = true;
|
||||||
|
if(!player.capabilities.isCreativeMode) {
|
||||||
|
world.spawnEntityInWorld(new EntityItem(world, x + 0.5, y + 0.5, z + 0.5, new ItemStack(this)));
|
||||||
|
}
|
||||||
|
TileEntity inv = world.getTileEntity(x, y, z);
|
||||||
|
if(inv instanceof TileEntityLockableBase) {
|
||||||
|
TileEntityLockableBase lockable = (TileEntityLockableBase) inv;
|
||||||
|
if(lockable.isLocked()) dropInv = false;
|
||||||
|
}
|
||||||
|
boolean flag = world.setBlockToAir(x, y, z);
|
||||||
|
dropInv = true;
|
||||||
|
return flag;
|
||||||
|
}
|
||||||
|
|
||||||
if(!player.capabilities.isCreativeMode && !world.isRemote && willHarvest) {
|
if(!player.capabilities.isCreativeMode && !world.isRemote && willHarvest) {
|
||||||
|
|
||||||
ItemStack drop = new ItemStack(this);
|
ItemStack drop = new ItemStack(this);
|
||||||
@ -136,14 +154,28 @@ public class BlockStorageCrate extends BlockContainer implements IBlockMulti, IT
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if(inv instanceof TileEntityCrateBase)
|
if(inv instanceof TileEntityCrateBase) {
|
||||||
nbt.setBoolean("spiders", ((TileEntityCrateBase) inv).hasSpiders);
|
TileEntityCrateBase crate = (TileEntityCrateBase) inv;
|
||||||
|
// Saves memory and ensures consistency between crafted crates and mined ones
|
||||||
|
if (crate.hasSpiders) {
|
||||||
|
nbt.setBoolean("spiders", true);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
if(!nbt.hasNoTags()) {
|
if(!nbt.hasNoTags()) {
|
||||||
drop.stackTagCompound = nbt;
|
drop.stackTagCompound = nbt;
|
||||||
|
}
|
||||||
|
|
||||||
|
if(inv instanceof TileEntityCrateBase) {
|
||||||
|
TileEntityCrateBase crate = (TileEntityCrateBase) inv;
|
||||||
|
if (crate.hasCustomInventoryName()) {
|
||||||
|
drop.setStackDisplayName(crate.getInventoryName());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (drop.hasTagCompound()) {
|
||||||
try {
|
try {
|
||||||
byte[] abyte = CompressedStreamTools.compress(nbt);
|
byte[] abyte = CompressedStreamTools.compress(drop.stackTagCompound);
|
||||||
|
|
||||||
if(abyte.length > 6000) {
|
if(abyte.length > 6000) {
|
||||||
player.addChatComponentMessage(new ChatComponentText(EnumChatFormatting.RED + "Warning: Container NBT exceeds 6kB, contents will be ejected!"));
|
player.addChatComponentMessage(new ChatComponentText(EnumChatFormatting.RED + "Warning: Container NBT exceeds 6kB, contents will be ejected!"));
|
||||||
@ -204,8 +236,14 @@ public class BlockStorageCrate extends BlockContainer implements IBlockMulti, IT
|
|||||||
lockable.lock();
|
lockable.lock();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if(inv instanceof TileEntityCrateBase) {
|
if(inv instanceof TileEntityCrateBase) {
|
||||||
((TileEntityCrateBase) inv).hasSpiders = stack.stackTagCompound.getBoolean("spiders");
|
TileEntityCrateBase crate = (TileEntityCrateBase) inv;
|
||||||
|
crate.hasSpiders = stack.stackTagCompound.getBoolean("spiders");
|
||||||
|
|
||||||
|
if (stack.hasDisplayName()) {
|
||||||
|
crate.setCustomName(stack.getDisplayName());
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -338,4 +376,20 @@ public class BlockStorageCrate extends BlockContainer implements IBlockMulti, IT
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void printHook(RenderGameOverlayEvent.Pre event, World world, int x, int y, int z) {
|
||||||
|
|
||||||
|
TileEntity te = world.getTileEntity(x, y, z);
|
||||||
|
|
||||||
|
if (!(te instanceof IInventory))
|
||||||
|
return;
|
||||||
|
|
||||||
|
IInventory inv = (IInventory) te;
|
||||||
|
|
||||||
|
if (!inv.hasCustomInventoryName())
|
||||||
|
return;
|
||||||
|
|
||||||
|
ILookOverlay.printGeneric(event, inv.getInventoryName(), 0xffff00, 0x404000, new ArrayList<String>(0));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -13,9 +13,9 @@ import com.hbm.inventory.RecipesCommon.AStack;
|
|||||||
import com.hbm.inventory.RecipesCommon.ComparableStack;
|
import com.hbm.inventory.RecipesCommon.ComparableStack;
|
||||||
import com.hbm.inventory.RecipesCommon.MetaBlock;
|
import com.hbm.inventory.RecipesCommon.MetaBlock;
|
||||||
import com.hbm.inventory.RecipesCommon.OreDictStack;
|
import com.hbm.inventory.RecipesCommon.OreDictStack;
|
||||||
import com.hbm.util.I18nUtil;
|
|
||||||
import com.hbm.util.InventoryUtil;
|
import com.hbm.util.InventoryUtil;
|
||||||
import com.hbm.util.Tuple.Pair;
|
import com.hbm.util.Tuple.Pair;
|
||||||
|
import com.hbm.util.i18n.I18nUtil;
|
||||||
|
|
||||||
import api.hbm.block.IToolable;
|
import api.hbm.block.IToolable;
|
||||||
import cpw.mods.fml.relauncher.Side;
|
import cpw.mods.fml.relauncher.Side;
|
||||||
|
|||||||
@ -17,7 +17,7 @@ import com.hbm.packet.toserver.NBTControlPacket;
|
|||||||
import com.hbm.tileentity.IGUIProvider;
|
import com.hbm.tileentity.IGUIProvider;
|
||||||
import com.hbm.tileentity.TileEntityLoadedBase;
|
import com.hbm.tileentity.TileEntityLoadedBase;
|
||||||
import com.hbm.util.BufferUtil;
|
import com.hbm.util.BufferUtil;
|
||||||
import com.hbm.util.I18nUtil;
|
import com.hbm.util.i18n.I18nUtil;
|
||||||
import com.hbm.world.gen.INBTTransformable;
|
import com.hbm.world.gen.INBTTransformable;
|
||||||
|
|
||||||
import cpw.mods.fml.common.network.internal.FMLNetworkHandler;
|
import cpw.mods.fml.common.network.internal.FMLNetworkHandler;
|
||||||
|
|||||||
@ -15,8 +15,8 @@ import com.hbm.lib.RefStrings;
|
|||||||
import com.hbm.main.MainRegistry;
|
import com.hbm.main.MainRegistry;
|
||||||
import com.hbm.tileentity.TileEntityLoadedBase;
|
import com.hbm.tileentity.TileEntityLoadedBase;
|
||||||
import com.hbm.util.BufferUtil;
|
import com.hbm.util.BufferUtil;
|
||||||
import com.hbm.util.I18nUtil;
|
|
||||||
import com.hbm.util.LootGenerator;
|
import com.hbm.util.LootGenerator;
|
||||||
|
import com.hbm.util.i18n.I18nUtil;
|
||||||
import com.hbm.world.gen.INBTTileEntityTransformable;
|
import com.hbm.world.gen.INBTTileEntityTransformable;
|
||||||
import com.mojang.authlib.GameProfile;
|
import com.mojang.authlib.GameProfile;
|
||||||
|
|
||||||
|
|||||||
183
src/main/java/com/hbm/blocks/generic/BlockWoodStructure.java
Normal file
183
src/main/java/com/hbm/blocks/generic/BlockWoodStructure.java
Normal file
@ -0,0 +1,183 @@
|
|||||||
|
package com.hbm.blocks.generic;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
import org.lwjgl.opengl.GL11;
|
||||||
|
|
||||||
|
import com.hbm.blocks.BlockEnumMulti;
|
||||||
|
import com.hbm.extprop.HbmPlayerProps;
|
||||||
|
import com.hbm.render.block.ISBRHUniversal;
|
||||||
|
import com.hbm.render.util.RenderBlocksNT;
|
||||||
|
import com.hbm.util.EnumUtil;
|
||||||
|
|
||||||
|
import cpw.mods.fml.relauncher.Side;
|
||||||
|
import cpw.mods.fml.relauncher.SideOnly;
|
||||||
|
import net.minecraft.block.Block;
|
||||||
|
import net.minecraft.block.material.Material;
|
||||||
|
import net.minecraft.client.renderer.RenderBlocks;
|
||||||
|
import net.minecraft.client.renderer.Tessellator;
|
||||||
|
import net.minecraft.entity.Entity;
|
||||||
|
import net.minecraft.entity.player.EntityPlayer;
|
||||||
|
import net.minecraft.util.AxisAlignedBB;
|
||||||
|
import net.minecraft.world.IBlockAccess;
|
||||||
|
import net.minecraft.world.World;
|
||||||
|
import net.minecraftforge.common.util.ForgeDirection;
|
||||||
|
|
||||||
|
public class BlockWoodStructure extends BlockEnumMulti implements ISBRHUniversal {
|
||||||
|
|
||||||
|
public BlockWoodStructure(Material mat) {
|
||||||
|
super(mat, EnumWoodStructure.class, true, false);
|
||||||
|
}
|
||||||
|
|
||||||
|
public enum EnumWoodStructure {
|
||||||
|
ROOF, SCAFFOLD, CEILING
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override public int getRenderType() { return renderID; }
|
||||||
|
@Override public boolean isOpaqueCube() { return false; }
|
||||||
|
@Override public boolean renderAsNormalBlock() { return false; }
|
||||||
|
|
||||||
|
@Override
|
||||||
|
@SideOnly(Side.CLIENT)
|
||||||
|
public boolean shouldSideBeRendered(IBlockAccess world, int x, int y, int z, int side) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean isSideSolid(IBlockAccess world, int x, int y, int z, ForgeDirection side) {
|
||||||
|
EnumWoodStructure type = EnumUtil.grabEnumSafely(EnumWoodStructure.class, world.getBlockMetadata(x, y, z));
|
||||||
|
if(type == type.SCAFFOLD && side == ForgeDirection.UP) return true;
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void setBlockBoundsBasedOnState(IBlockAccess world, int x, int y, int z) {
|
||||||
|
EnumWoodStructure type = EnumUtil.grabEnumSafely(EnumWoodStructure.class, world.getBlockMetadata(x, y, z));
|
||||||
|
setBlockBounds(0, 0, 0, 1, 1, 1);
|
||||||
|
if(type == type.ROOF) setBlockBounds(0F, 0F, 0F, 1F, 0.1875F, 1F);
|
||||||
|
if(type == type.SCAFFOLD) setBlockBounds(0.0625F, 0F, 0.0625F, 1F - 0.0625F, 1F, 1F - 0.0625F);
|
||||||
|
if(type == type.CEILING) setBlockBounds(0F, 0.875F, 0F, 1F, 1F, 1F);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void addCollisionBoxesToList(World world, int x, int y, int z, AxisAlignedBB aabb, List list, Entity collider) {
|
||||||
|
setBlockBoundsBasedOnState(world, x, y, z);
|
||||||
|
super.addCollisionBoxesToList(world, x, y, z, aabb, list, collider);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public AxisAlignedBB getCollisionBoundingBoxFromPool(World world, int x, int y, int z) {
|
||||||
|
setBlockBoundsBasedOnState(world, x, y, z);
|
||||||
|
return super.getCollisionBoundingBoxFromPool(world, x, y, z);
|
||||||
|
}
|
||||||
|
|
||||||
|
public AxisAlignedBB getSelectedBoundingBoxFromPool(World world, int i, int j, int k) {
|
||||||
|
int meta = world.getBlockMetadata(i, j, k);
|
||||||
|
EnumWoodStructure type = EnumUtil.grabEnumSafely(EnumWoodStructure.class, meta);
|
||||||
|
|
||||||
|
if (type == type.SCAFFOLD) return AxisAlignedBB.getBoundingBox(i, j, k, i + 1, j + 1, k + 1);
|
||||||
|
|
||||||
|
return super.getSelectedBoundingBoxFromPool(world, i, j, k);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void renderInventoryBlock(Block block, int meta, int modelId, Object renderBlocks) {
|
||||||
|
|
||||||
|
GL11.glPushMatrix();
|
||||||
|
RenderBlocks renderer = (RenderBlocks) renderBlocks;
|
||||||
|
GL11.glRotatef(90.0F, 0.0F, 1.0F, 0.0F);
|
||||||
|
GL11.glTranslatef(-0.5F, -0.5F, -0.5F);
|
||||||
|
|
||||||
|
EnumWoodStructure type = EnumUtil.grabEnumSafely(EnumWoodStructure.class, meta);
|
||||||
|
|
||||||
|
if(type == type.ROOF) {
|
||||||
|
GL11.glTranslatef(0F, 0.125F, 0F);
|
||||||
|
renderer.setRenderBounds(0D, 0D, 0D, 0.125D, 0.125D, 1D); RenderBlocksNT.renderStandardInventoryBlock(block, meta, renderer);
|
||||||
|
renderer.setRenderBounds(0.875D, 0D, 0D, 1D, 0.125D, 1D); RenderBlocksNT.renderStandardInventoryBlock(block, meta, renderer);
|
||||||
|
renderer.setRenderBounds(0D, 0.125D, 0.0625D, 1D, 0.1875D, 0.4375D); RenderBlocksNT.renderStandardInventoryBlock(block, meta, renderer);
|
||||||
|
renderer.setRenderBounds(0D, 0.125D, 0.5625D, 1D, 0.1875D, 0.9375D); RenderBlocksNT.renderStandardInventoryBlock(block, meta, renderer);
|
||||||
|
}
|
||||||
|
if(type == type.SCAFFOLD) {
|
||||||
|
renderer.setRenderBounds(0.0625D, 0D, 0.0625D, 0.1875D, 0.875D, 0.1875D); RenderBlocksNT.renderStandardInventoryBlock(block, meta, renderer);
|
||||||
|
renderer.setRenderBounds(0.8125D, 0D, 0.0625D, 0.9375D, 0.875D, 0.1875D); RenderBlocksNT.renderStandardInventoryBlock(block, meta, renderer);
|
||||||
|
renderer.setRenderBounds(0.0625D, 0D, 0.8125D, 0.1875D, 0.875D, 0.9375D); RenderBlocksNT.renderStandardInventoryBlock(block, meta, renderer);
|
||||||
|
renderer.setRenderBounds(0.8125D, 0D, 0.8125D, 0.9375D, 0.875D, 0.9375D); RenderBlocksNT.renderStandardInventoryBlock(block, meta, renderer);
|
||||||
|
renderer.setRenderBounds(0D, 0.125D, 0D, 0.0625D, 0.375D, 1D); RenderBlocksNT.renderStandardInventoryBlock(block, meta, renderer);
|
||||||
|
renderer.setRenderBounds(0.9375D, 0.125D, 0D, 1D, 0.375D, 1D); RenderBlocksNT.renderStandardInventoryBlock(block, meta, renderer);
|
||||||
|
renderer.setRenderBounds(0D, 0.5D, 0D, 1D, 0.75D, 0.0625D); RenderBlocksNT.renderStandardInventoryBlock(block, meta, renderer);
|
||||||
|
renderer.setRenderBounds(0D, 0.5D, 0.9375D, 1D, 0.75D, 1D); RenderBlocksNT.renderStandardInventoryBlock(block, meta, renderer);
|
||||||
|
renderer.setRenderBounds(0D, 0.875D, 0D, 1D, 1D, 1D); RenderBlocksNT.renderStandardInventoryBlock(block, meta, renderer);
|
||||||
|
}
|
||||||
|
if(type == type.CEILING) {
|
||||||
|
GL11.glTranslatef(0F, 0.625F, 0F);
|
||||||
|
renderer.setRenderBounds(0D, 0.0625D, 0D, 0.125D, 0.125D, 1D); RenderBlocksNT.renderStandardInventoryBlock(block, meta, renderer);
|
||||||
|
renderer.setRenderBounds(0.875D, 0.0625D, 0D, 1D, 0.125D, 1D); RenderBlocksNT.renderStandardInventoryBlock(block, meta, renderer);
|
||||||
|
renderer.setRenderBounds(0D, 0.125D, 0.0625D, 1D, 0.1875D, 0.4375D); RenderBlocksNT.renderStandardInventoryBlock(block, meta, renderer);
|
||||||
|
renderer.setRenderBounds(0D, 0.125D, 0.5625D, 1D, 0.1875D, 0.9375D); RenderBlocksNT.renderStandardInventoryBlock(block, meta, renderer);
|
||||||
|
}
|
||||||
|
|
||||||
|
GL11.glPopMatrix();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean renderWorldBlock(IBlockAccess world, int x, int y, int z, Block block, int modelId, Object renderBlocks) {
|
||||||
|
|
||||||
|
RenderBlocksNT renderer = RenderBlocksNT.INSTANCE.setWorld(world);
|
||||||
|
|
||||||
|
Tessellator tessellator = Tessellator.instance;
|
||||||
|
tessellator.setBrightness(block.getMixedBrightnessForBlock(world, x, y, z));
|
||||||
|
tessellator.setColorOpaque_F(1, 1, 1);
|
||||||
|
|
||||||
|
int meta = world.getBlockMetadata(x, y, z);
|
||||||
|
EnumWoodStructure type = EnumUtil.grabEnumSafely(EnumWoodStructure.class,meta);
|
||||||
|
|
||||||
|
if(type == type.ROOF) {
|
||||||
|
boolean nx = world.getBlock(x - 1, y, z) == this && world.getBlockMetadata(x - 1, y, z) == meta;
|
||||||
|
boolean px = world.getBlock(x + 1, y, z) == this && world.getBlockMetadata(x + 1, y, z) == meta;
|
||||||
|
renderer.setRenderBounds(0D, 0D, 0D, 0.125D, 0.125D, 1D); renderer.renderStandardBlock(block, x, y, z);
|
||||||
|
renderer.setRenderBounds(0.875D, 0D, 0D, 1D, 0.125D, 1D); renderer.renderStandardBlock(block, x, y, z);
|
||||||
|
renderer.setRenderBounds(nx ? 0D : 0.0625D, 0.125D, 0.0625D, px ? 1D : 0.9375D, 0.1875D, 0.4375D); renderer.renderStandardBlock(block, x, y, z);
|
||||||
|
renderer.setRenderBounds(nx ? 0D : 0.0625D, 0.125D, 0.5625D, px ? 1D : 0.9375D, 0.1875D, 0.9375D); renderer.renderStandardBlock(block, x, y, z);
|
||||||
|
}
|
||||||
|
if(type == type.SCAFFOLD) {
|
||||||
|
boolean py = world.getBlock(x, y + 1, z) == this && world.getBlockMetadata(x, y + 1, z) == meta;
|
||||||
|
boolean nx = world.getBlock(x - 1, y, z) == this && world.getBlockMetadata(x - 1, y, z) == meta;
|
||||||
|
boolean nz = world.getBlock(x, y, z - 1) == this && world.getBlockMetadata(x, y, z - 1) == meta;
|
||||||
|
boolean px = world.getBlock(x + 1, y, z) == this && world.getBlockMetadata(x + 1, y, z) == meta;
|
||||||
|
boolean pz = world.getBlock(x, y, z + 1) == this && world.getBlockMetadata(x, y, z + 1) == meta;
|
||||||
|
renderer.setRenderBounds(0.0625D, 0D, 0.0625D, 0.1875D, py ? 1D : 0.875D, 0.1875D); renderer.renderStandardBlock(block, x, y, z);
|
||||||
|
renderer.setRenderBounds(0.8125D, 0D, 0.0625D, 0.9375D, py ? 1D : 0.875D, 0.1875D); renderer.renderStandardBlock(block, x, y, z);
|
||||||
|
renderer.setRenderBounds(0.0625D, 0D, 0.8125D, 0.1875D, py ? 1D : 0.875D, 0.9375D); renderer.renderStandardBlock(block, x, y, z);
|
||||||
|
renderer.setRenderBounds(0.8125D, 0D, 0.8125D, 0.9375D, py ? 1D : 0.875D, 0.9375D); renderer.renderStandardBlock(block, x, y, z);
|
||||||
|
|
||||||
|
if(!nx) renderer.setRenderBounds(0D, 0.125D, 0D, 0.0625D, 0.375D, 1D); renderer.renderStandardBlock(block, x, y, z);
|
||||||
|
if(!px) renderer.setRenderBounds(0.9375D, 0.125D, 0D, 1D, 0.375D, 1D); renderer.renderStandardBlock(block, x, y, z);
|
||||||
|
if(!nz) renderer.setRenderBounds(0D, 0.5D, 0D, 1D, 0.75D, 0.0625D); renderer.renderStandardBlock(block, x, y, z);
|
||||||
|
if(!pz) renderer.setRenderBounds(0D, 0.5D, 0.9375D, 1D, 0.75D, 1D); renderer.renderStandardBlock(block, x, y, z);
|
||||||
|
|
||||||
|
if(!py) renderer.setRenderBounds(0D, 0.875D, 0D, 1D, 1D, 1D); renderer.renderStandardBlock(block, x, y, z);
|
||||||
|
}
|
||||||
|
if(type == type.CEILING) {
|
||||||
|
renderer.setRenderBounds(0D, 0.875D, 0D, 0.125D, 0.9375D, 1D); renderer.renderStandardBlock(block, x, y, z);
|
||||||
|
renderer.setRenderBounds(0.875D, 0.875D, 0D, 1D, 0.9375D, 1D); renderer.renderStandardBlock(block, x, y, z);
|
||||||
|
renderer.setRenderBounds(0D, 0.9375D, 0.0625D, 1D, 1D, 0.4375D); renderer.renderStandardBlock(block, x, y, z);
|
||||||
|
renderer.setRenderBounds(0D, 0.9375D, 0.5625D, 1D, 1D, 0.9375D); renderer.renderStandardBlock(block, x, y, z);
|
||||||
|
}
|
||||||
|
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onEntityCollidedWithBlock(World world, int x, int y, int z, Entity entity) {
|
||||||
|
if (entity instanceof EntityPlayer) {
|
||||||
|
EntityPlayer player = (EntityPlayer) entity;
|
||||||
|
|
||||||
|
int meta = world.getBlockMetadata(x, y, z);
|
||||||
|
EnumWoodStructure type = EnumUtil.grabEnumSafely(EnumWoodStructure.class,meta);
|
||||||
|
if (type != type.SCAFFOLD) return;
|
||||||
|
|
||||||
|
HbmPlayerProps props = HbmPlayerProps.getData(player);
|
||||||
|
props.isOnLadder = true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -81,6 +81,7 @@ public class DungeonSpawner extends BlockContainer {
|
|||||||
|
|
||||||
public static Function<TileEntityDungeonSpawner, Boolean> CON_ABERRATOR = (tile) -> {
|
public static Function<TileEntityDungeonSpawner, Boolean> CON_ABERRATOR = (tile) -> {
|
||||||
World world = tile.getWorldObj();
|
World world = tile.getWorldObj();
|
||||||
|
if(world.difficultySetting.ordinal() == 0) return false;
|
||||||
int x = tile.xCoord;
|
int x = tile.xCoord;
|
||||||
int y = tile.yCoord;
|
int y = tile.yCoord;
|
||||||
int z = tile.zCoord;
|
int z = tile.zCoord;
|
||||||
@ -122,7 +123,11 @@ public class DungeonSpawner extends BlockContainer {
|
|||||||
TileEntity te = world.getTileEntity(x, y + 18, z);
|
TileEntity te = world.getTileEntity(x, y + 18, z);
|
||||||
if(te instanceof TileEntitySkeletonHolder) {
|
if(te instanceof TileEntitySkeletonHolder) {
|
||||||
TileEntitySkeletonHolder skeleton = (TileEntitySkeletonHolder) te;
|
TileEntitySkeletonHolder skeleton = (TileEntitySkeletonHolder) te;
|
||||||
skeleton.item = new ItemStack(ModItems.item_secret, 1, EnumSecretType.ABERRATOR.ordinal());
|
if(world.rand.nextInt(5) == 0) {
|
||||||
|
skeleton.item = new ItemStack(ModItems.item_secret, 1, EnumSecretType.ABERRATOR.ordinal());
|
||||||
|
} else {
|
||||||
|
skeleton.item = new ItemStack(ModItems.clay_tablet, 1, 1);
|
||||||
|
}
|
||||||
skeleton.markDirty();
|
skeleton.markDirty();
|
||||||
world.markBlockForUpdate(x, y + 18, z);
|
world.markBlockForUpdate(x, y + 18, z);
|
||||||
}
|
}
|
||||||
|
|||||||
@ -2,8 +2,9 @@ package com.hbm.blocks.machine;
|
|||||||
|
|
||||||
import net.minecraft.block.material.Material;
|
import net.minecraft.block.material.Material;
|
||||||
|
|
||||||
public class BlockCMFlux extends BlockPillar{
|
public class BlockCMFlux extends BlockPillar {
|
||||||
public BlockCMFlux(Material mat, String top) {
|
|
||||||
super(mat, top);
|
public BlockCMFlux(Material mat, String top) {
|
||||||
}
|
super(mat, top);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -2,8 +2,9 @@ package com.hbm.blocks.machine;
|
|||||||
|
|
||||||
import net.minecraft.block.material.Material;
|
import net.minecraft.block.material.Material;
|
||||||
|
|
||||||
public class BlockCMHeat extends BlockPillar{
|
public class BlockCMHeat extends BlockPillar {
|
||||||
public BlockCMHeat(Material mat, String top) {
|
|
||||||
super(mat, top);
|
public BlockCMHeat(Material mat, String top) {
|
||||||
}
|
super(mat, top);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -7,7 +7,7 @@ import com.hbm.blocks.ITooltipProvider;
|
|||||||
import com.hbm.render.block.ct.CT;
|
import com.hbm.render.block.ct.CT;
|
||||||
import com.hbm.render.block.ct.CTStitchReceiver;
|
import com.hbm.render.block.ct.CTStitchReceiver;
|
||||||
import com.hbm.render.block.ct.IBlockCT;
|
import com.hbm.render.block.ct.IBlockCT;
|
||||||
import com.hbm.util.I18nUtil;
|
import com.hbm.util.i18n.I18nUtil;
|
||||||
|
|
||||||
import cpw.mods.fml.relauncher.Side;
|
import cpw.mods.fml.relauncher.Side;
|
||||||
import cpw.mods.fml.relauncher.SideOnly;
|
import cpw.mods.fml.relauncher.SideOnly;
|
||||||
|
|||||||
@ -7,7 +7,7 @@ import org.lwjgl.input.Keyboard;
|
|||||||
import com.hbm.blocks.BlockMulti;
|
import com.hbm.blocks.BlockMulti;
|
||||||
import com.hbm.blocks.ITooltipProvider;
|
import com.hbm.blocks.ITooltipProvider;
|
||||||
import com.hbm.lib.RefStrings;
|
import com.hbm.lib.RefStrings;
|
||||||
import com.hbm.util.I18nUtil;
|
import com.hbm.util.i18n.I18nUtil;
|
||||||
|
|
||||||
import cpw.mods.fml.relauncher.Side;
|
import cpw.mods.fml.relauncher.Side;
|
||||||
import cpw.mods.fml.relauncher.SideOnly;
|
import cpw.mods.fml.relauncher.SideOnly;
|
||||||
|
|||||||
@ -6,7 +6,7 @@ import java.util.List;
|
|||||||
import com.hbm.blocks.ILookOverlay;
|
import com.hbm.blocks.ILookOverlay;
|
||||||
import com.hbm.tileentity.machine.TileEntityHadronPower;
|
import com.hbm.tileentity.machine.TileEntityHadronPower;
|
||||||
import com.hbm.util.BobMathUtil;
|
import com.hbm.util.BobMathUtil;
|
||||||
import com.hbm.util.I18nUtil;
|
import com.hbm.util.i18n.I18nUtil;
|
||||||
|
|
||||||
import net.minecraft.block.BlockContainer;
|
import net.minecraft.block.BlockContainer;
|
||||||
import net.minecraft.block.material.Material;
|
import net.minecraft.block.material.Material;
|
||||||
|
|||||||
@ -12,6 +12,8 @@ import com.hbm.render.block.ct.IBlockCT;
|
|||||||
import com.hbm.tileentity.machine.TileEntityPWRController;
|
import com.hbm.tileentity.machine.TileEntityPWRController;
|
||||||
|
|
||||||
import api.hbm.fluidmk2.IFluidReceiverMK2;
|
import api.hbm.fluidmk2.IFluidReceiverMK2;
|
||||||
|
import api.hbm.redstoneoverradio.IRORInteractive;
|
||||||
|
import api.hbm.redstoneoverradio.IRORValueProvider;
|
||||||
import cpw.mods.fml.relauncher.Side;
|
import cpw.mods.fml.relauncher.Side;
|
||||||
import cpw.mods.fml.relauncher.SideOnly;
|
import cpw.mods.fml.relauncher.SideOnly;
|
||||||
import net.minecraft.block.Block;
|
import net.minecraft.block.Block;
|
||||||
@ -98,7 +100,7 @@ public class BlockPWR extends BlockContainer implements IBlockCT {
|
|||||||
super.breakBlock(world, x, y, z, block, meta);
|
super.breakBlock(world, x, y, z, block, meta);
|
||||||
}
|
}
|
||||||
|
|
||||||
public static class TileEntityBlockPWR extends TileEntity implements IFluidReceiverMK2, ISidedInventory {
|
public static class TileEntityBlockPWR extends TileEntity implements IFluidReceiverMK2, ISidedInventory, IRORValueProvider, IRORInteractive {
|
||||||
|
|
||||||
public Block block;
|
public Block block;
|
||||||
public int coreX;
|
public int coreX;
|
||||||
@ -337,5 +339,29 @@ public class BlockPWR extends BlockContainer implements IBlockCT {
|
|||||||
super.onChunkUnload();
|
super.onChunkUnload();
|
||||||
this.isLoaded = false;
|
this.isLoaded = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String[] getFunctionInfo() {
|
||||||
|
if(this.getBlockMetadata() != 1) return new String[0];
|
||||||
|
TileEntityPWRController controller = this.getCore();
|
||||||
|
if(controller != null) return controller.getFunctionInfo();
|
||||||
|
return new String[0];
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String provideRORValue(String name) {
|
||||||
|
if(this.getBlockMetadata() != 1) return "";
|
||||||
|
TileEntityPWRController controller = this.getCore();
|
||||||
|
if(controller != null) return controller.provideRORValue(name);
|
||||||
|
return "";
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String runRORFunction(String name, String[] params) {
|
||||||
|
if(this.getBlockMetadata() != 1) return "";
|
||||||
|
TileEntityPWRController controller = this.getCore();
|
||||||
|
if(controller != null) return controller.runRORFunction(name, params);
|
||||||
|
return "";
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -8,7 +8,7 @@ import com.hbm.blocks.ILookOverlay;
|
|||||||
import com.hbm.tileentity.TileEntityProxyCombo;
|
import com.hbm.tileentity.TileEntityProxyCombo;
|
||||||
import com.hbm.tileentity.machine.TileEntityDeuteriumTower;
|
import com.hbm.tileentity.machine.TileEntityDeuteriumTower;
|
||||||
import com.hbm.util.BobMathUtil;
|
import com.hbm.util.BobMathUtil;
|
||||||
import com.hbm.util.I18nUtil;
|
import com.hbm.util.i18n.I18nUtil;
|
||||||
|
|
||||||
import net.minecraft.block.material.Material;
|
import net.minecraft.block.material.Material;
|
||||||
import net.minecraft.tileentity.TileEntity;
|
import net.minecraft.tileentity.TileEntity;
|
||||||
|
|||||||
@ -9,7 +9,8 @@ import com.hbm.items.machine.ItemMold;
|
|||||||
import com.hbm.items.machine.ItemMold.Mold;
|
import com.hbm.items.machine.ItemMold.Mold;
|
||||||
import com.hbm.items.machine.ItemScraps;
|
import com.hbm.items.machine.ItemScraps;
|
||||||
import com.hbm.tileentity.machine.TileEntityFoundryCastingBase;
|
import com.hbm.tileentity.machine.TileEntityFoundryCastingBase;
|
||||||
import com.hbm.util.I18nUtil;
|
import com.hbm.util.i18n.I18nUtil;
|
||||||
|
|
||||||
import cpw.mods.fml.relauncher.Side;
|
import cpw.mods.fml.relauncher.Side;
|
||||||
import cpw.mods.fml.relauncher.SideOnly;
|
import cpw.mods.fml.relauncher.SideOnly;
|
||||||
import net.minecraft.block.Block;
|
import net.minecraft.block.Block;
|
||||||
|
|||||||
@ -9,7 +9,7 @@ import com.hbm.items.ModItems;
|
|||||||
import com.hbm.items.machine.ItemScraps;
|
import com.hbm.items.machine.ItemScraps;
|
||||||
import com.hbm.lib.RefStrings;
|
import com.hbm.lib.RefStrings;
|
||||||
import com.hbm.tileentity.machine.TileEntityFoundryOutlet;
|
import com.hbm.tileentity.machine.TileEntityFoundryOutlet;
|
||||||
import com.hbm.util.I18nUtil;
|
import com.hbm.util.i18n.I18nUtil;
|
||||||
|
|
||||||
import api.hbm.block.ICrucibleAcceptor;
|
import api.hbm.block.ICrucibleAcceptor;
|
||||||
import api.hbm.block.IToolable;
|
import api.hbm.block.IToolable;
|
||||||
|
|||||||
@ -131,4 +131,22 @@ public class GeigerCounter extends BlockContainer {
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean hasComparatorInputOverride() {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public int getComparatorInputOverride(World world, int x, int y, int z, int side) {
|
||||||
|
TileEntityGeiger te = (TileEntityGeiger)world.getTileEntity(x, y, z);
|
||||||
|
if (te == null) return 0;
|
||||||
|
|
||||||
|
float rad = te.check();
|
||||||
|
|
||||||
|
// 0 at exactly 0 rads/sec
|
||||||
|
// +1 per 5 rads/sec
|
||||||
|
// 15 at 75+ rads/sec
|
||||||
|
return Math.min((int)Math.ceil(rad / 5f), 15);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -10,7 +10,7 @@ import com.hbm.blocks.ILookOverlay;
|
|||||||
import com.hbm.blocks.ITooltipProvider;
|
import com.hbm.blocks.ITooltipProvider;
|
||||||
import com.hbm.tileentity.TileEntityProxyCombo;
|
import com.hbm.tileentity.TileEntityProxyCombo;
|
||||||
import com.hbm.tileentity.machine.TileEntityHeaterElectric;
|
import com.hbm.tileentity.machine.TileEntityHeaterElectric;
|
||||||
import com.hbm.util.I18nUtil;
|
import com.hbm.util.i18n.I18nUtil;
|
||||||
|
|
||||||
import net.minecraft.block.material.Material;
|
import net.minecraft.block.material.Material;
|
||||||
import net.minecraft.entity.player.EntityPlayer;
|
import net.minecraft.entity.player.EntityPlayer;
|
||||||
|
|||||||
@ -12,7 +12,7 @@ import com.hbm.items.machine.IItemFluidIdentifier;
|
|||||||
import com.hbm.main.MainRegistry;
|
import com.hbm.main.MainRegistry;
|
||||||
import com.hbm.tileentity.TileEntityProxyCombo;
|
import com.hbm.tileentity.TileEntityProxyCombo;
|
||||||
import com.hbm.tileentity.machine.TileEntityHeaterHeatex;
|
import com.hbm.tileentity.machine.TileEntityHeaterHeatex;
|
||||||
import com.hbm.util.I18nUtil;
|
import com.hbm.util.i18n.I18nUtil;
|
||||||
|
|
||||||
import cpw.mods.fml.common.network.internal.FMLNetworkHandler;
|
import cpw.mods.fml.common.network.internal.FMLNetworkHandler;
|
||||||
import net.minecraft.block.material.Material;
|
import net.minecraft.block.material.Material;
|
||||||
|
|||||||
@ -11,7 +11,7 @@ import com.hbm.inventory.fluid.FluidType;
|
|||||||
import com.hbm.inventory.fluid.trait.FT_Flammable;
|
import com.hbm.inventory.fluid.trait.FT_Flammable;
|
||||||
import com.hbm.tileentity.TileEntityProxyCombo;
|
import com.hbm.tileentity.TileEntityProxyCombo;
|
||||||
import com.hbm.tileentity.machine.TileEntityHeaterOilburner;
|
import com.hbm.tileentity.machine.TileEntityHeaterOilburner;
|
||||||
import com.hbm.util.I18nUtil;
|
import com.hbm.util.i18n.I18nUtil;
|
||||||
|
|
||||||
import api.hbm.block.IToolable;
|
import api.hbm.block.IToolable;
|
||||||
import net.minecraft.block.material.Material;
|
import net.minecraft.block.material.Material;
|
||||||
|
|||||||
@ -8,8 +8,9 @@ import com.hbm.blocks.ITooltipProvider;
|
|||||||
import com.hbm.inventory.fluid.FluidType;
|
import com.hbm.inventory.fluid.FluidType;
|
||||||
import com.hbm.items.machine.IItemFluidIdentifier;
|
import com.hbm.items.machine.IItemFluidIdentifier;
|
||||||
import com.hbm.tileentity.machine.TileEntityMachineAutosaw;
|
import com.hbm.tileentity.machine.TileEntityMachineAutosaw;
|
||||||
import com.hbm.util.I18nUtil;
|
import com.hbm.util.i18n.I18nUtil;
|
||||||
|
|
||||||
|
import api.hbm.block.IToolable;
|
||||||
import net.minecraft.block.BlockContainer;
|
import net.minecraft.block.BlockContainer;
|
||||||
import net.minecraft.block.material.Material;
|
import net.minecraft.block.material.Material;
|
||||||
import net.minecraft.entity.player.EntityPlayer;
|
import net.minecraft.entity.player.EntityPlayer;
|
||||||
@ -22,7 +23,7 @@ import net.minecraft.util.EnumChatFormatting;
|
|||||||
import net.minecraft.world.World;
|
import net.minecraft.world.World;
|
||||||
import net.minecraftforge.client.event.RenderGameOverlayEvent.Pre;
|
import net.minecraftforge.client.event.RenderGameOverlayEvent.Pre;
|
||||||
|
|
||||||
public class MachineAutosaw extends BlockContainer implements ILookOverlay, ITooltipProvider {
|
public class MachineAutosaw extends BlockContainer implements ILookOverlay, ITooltipProvider, IToolable {
|
||||||
|
|
||||||
public MachineAutosaw() {
|
public MachineAutosaw() {
|
||||||
super(Material.iron);
|
super(Material.iron);
|
||||||
@ -72,6 +73,24 @@ public class MachineAutosaw extends BlockContainer implements ILookOverlay, IToo
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean onScrew(World world, EntityPlayer player, int x, int y, int z, int side, float fX, float fY, float fZ, ToolType tool) {
|
||||||
|
if(tool != ToolType.SCREWDRIVER)
|
||||||
|
return false;
|
||||||
|
|
||||||
|
TileEntity te = world.getTileEntity(x, y, z);
|
||||||
|
|
||||||
|
if(!(te instanceof TileEntityMachineAutosaw))
|
||||||
|
return false;
|
||||||
|
|
||||||
|
TileEntityMachineAutosaw saw = (TileEntityMachineAutosaw) te;
|
||||||
|
|
||||||
|
saw.isSuspended = !saw.isSuspended;
|
||||||
|
saw.markDirty();
|
||||||
|
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void printHook(Pre event, World world, int x, int y, int z) {
|
public void printHook(Pre event, World world, int x, int y, int z) {
|
||||||
|
|
||||||
@ -85,6 +104,10 @@ public class MachineAutosaw extends BlockContainer implements ILookOverlay, IToo
|
|||||||
List<String> text = new ArrayList();
|
List<String> text = new ArrayList();
|
||||||
text.add(saw.tank.getTankType().getLocalizedName() + ": " + saw.tank.getFill() + "/" + saw.tank.getMaxFill() + "mB");
|
text.add(saw.tank.getTankType().getLocalizedName() + ": " + saw.tank.getFill() + "/" + saw.tank.getMaxFill() + "mB");
|
||||||
|
|
||||||
|
if (saw.isSuspended) {
|
||||||
|
text.add(EnumChatFormatting.RED + "! " + I18nUtil.resolveKey(getUnlocalizedName() + ".suspended") + " !");
|
||||||
|
}
|
||||||
|
|
||||||
ILookOverlay.printGeneric(event, I18nUtil.resolveKey(getUnlocalizedName() + ".name"), 0xffff00, 0x404000, text);
|
ILookOverlay.printGeneric(event, I18nUtil.resolveKey(getUnlocalizedName() + ".name"), 0xffff00, 0x404000, text);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -12,7 +12,7 @@ import com.hbm.main.MainRegistry;
|
|||||||
import com.hbm.tileentity.IPersistentNBT;
|
import com.hbm.tileentity.IPersistentNBT;
|
||||||
import com.hbm.tileentity.machine.storage.TileEntityMachineBattery;
|
import com.hbm.tileentity.machine.storage.TileEntityMachineBattery;
|
||||||
import com.hbm.util.BobMathUtil;
|
import com.hbm.util.BobMathUtil;
|
||||||
import com.hbm.util.I18nUtil;
|
import com.hbm.util.i18n.I18nUtil;
|
||||||
|
|
||||||
import cpw.mods.fml.common.network.internal.FMLNetworkHandler;
|
import cpw.mods.fml.common.network.internal.FMLNetworkHandler;
|
||||||
import cpw.mods.fml.relauncher.Side;
|
import cpw.mods.fml.relauncher.Side;
|
||||||
|
|||||||
@ -13,8 +13,8 @@ import com.hbm.lib.RefStrings;
|
|||||||
import com.hbm.tileentity.IPersistentNBT;
|
import com.hbm.tileentity.IPersistentNBT;
|
||||||
import com.hbm.tileentity.TileEntityLoadedBase;
|
import com.hbm.tileentity.TileEntityLoadedBase;
|
||||||
import com.hbm.util.BobMathUtil;
|
import com.hbm.util.BobMathUtil;
|
||||||
import com.hbm.util.I18nUtil;
|
|
||||||
import com.hbm.util.fauxpointtwelve.BlockPos;
|
import com.hbm.util.fauxpointtwelve.BlockPos;
|
||||||
|
import com.hbm.util.i18n.I18nUtil;
|
||||||
|
|
||||||
import api.hbm.energymk2.IEnergyProviderMK2;
|
import api.hbm.energymk2.IEnergyProviderMK2;
|
||||||
import api.hbm.energymk2.IEnergyReceiverMK2;
|
import api.hbm.energymk2.IEnergyReceiverMK2;
|
||||||
|
|||||||
@ -7,7 +7,8 @@ import com.hbm.inventory.fluid.FluidType;
|
|||||||
import com.hbm.items.machine.IItemFluidIdentifier;
|
import com.hbm.items.machine.IItemFluidIdentifier;
|
||||||
import com.hbm.tileentity.TileEntityProxyCombo;
|
import com.hbm.tileentity.TileEntityProxyCombo;
|
||||||
import com.hbm.tileentity.machine.oil.TileEntityMachineCatalyticCracker;
|
import com.hbm.tileentity.machine.oil.TileEntityMachineCatalyticCracker;
|
||||||
import com.hbm.util.I18nUtil;
|
import com.hbm.util.i18n.I18nUtil;
|
||||||
|
|
||||||
import net.minecraft.block.material.Material;
|
import net.minecraft.block.material.Material;
|
||||||
import net.minecraft.entity.player.EntityPlayer;
|
import net.minecraft.entity.player.EntityPlayer;
|
||||||
import net.minecraft.tileentity.TileEntity;
|
import net.minecraft.tileentity.TileEntity;
|
||||||
|
|||||||
@ -10,6 +10,7 @@ import net.minecraft.tileentity.TileEntity;
|
|||||||
import net.minecraft.world.World;
|
import net.minecraft.world.World;
|
||||||
import net.minecraftforge.common.util.ForgeDirection;
|
import net.minecraftforge.common.util.ForgeDirection;
|
||||||
|
|
||||||
|
@Deprecated
|
||||||
public class MachineChemfac extends BlockDummyable {
|
public class MachineChemfac extends BlockDummyable {
|
||||||
|
|
||||||
public MachineChemfac(Material mat) {
|
public MachineChemfac(Material mat) {
|
||||||
|
|||||||
@ -0,0 +1,88 @@
|
|||||||
|
package com.hbm.blocks.machine;
|
||||||
|
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
import com.hbm.blocks.BlockDummyable;
|
||||||
|
import com.hbm.blocks.ILookOverlay;
|
||||||
|
import com.hbm.blocks.ITooltipProvider;
|
||||||
|
import com.hbm.tileentity.TileEntityProxyDyn;
|
||||||
|
import com.hbm.tileentity.machine.TileEntityMachineChemicalFactory;
|
||||||
|
import com.hbm.util.fauxpointtwelve.DirPos;
|
||||||
|
import com.hbm.util.i18n.I18nUtil;
|
||||||
|
|
||||||
|
import net.minecraft.block.material.Material;
|
||||||
|
import net.minecraft.entity.player.EntityPlayer;
|
||||||
|
import net.minecraft.item.ItemStack;
|
||||||
|
import net.minecraft.tileentity.TileEntity;
|
||||||
|
import net.minecraft.util.EnumChatFormatting;
|
||||||
|
import net.minecraft.world.World;
|
||||||
|
import net.minecraftforge.client.event.RenderGameOverlayEvent.Pre;
|
||||||
|
import net.minecraftforge.common.util.ForgeDirection;
|
||||||
|
|
||||||
|
public class MachineChemicalFactory extends BlockDummyable implements ITooltipProvider, ILookOverlay {
|
||||||
|
|
||||||
|
public MachineChemicalFactory(Material mat) {
|
||||||
|
super(mat);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public TileEntity createNewTileEntity(World world, int meta) {
|
||||||
|
if(meta >= 12) return new TileEntityMachineChemicalFactory();
|
||||||
|
if(meta >= 6) return new TileEntityProxyDyn().inventory().power().fluid();
|
||||||
|
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 this.standardOpenBehavior(world, x, y, z, player, 0);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override public int[] getDimensions() { return new int[] {2, 0, 2, 2, 2, 2}; }
|
||||||
|
@Override public int getOffset() { return 2; }
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public 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 * 2;
|
||||||
|
z -= dir.offsetZ * 2;
|
||||||
|
|
||||||
|
for(int i = -2; i <= 2; i++) for(int j = -2; j <= 2; j++) {
|
||||||
|
if(Math.abs(i) == 2 || Math.abs(j) == 2) this.makeExtra(world, x + i, y, z + j);
|
||||||
|
}
|
||||||
|
|
||||||
|
ForgeDirection rot = dir.getRotation(ForgeDirection.UP);
|
||||||
|
for(int i = -2; i <= 2; i++) {
|
||||||
|
this.makeExtra(world, x + dir.offsetX * i + rot.offsetX * 2, y + 2, z + dir.offsetZ * i + rot.offsetZ * 2);
|
||||||
|
this.makeExtra(world, x + dir.offsetX * i - rot.offsetX * 2, y + 2, z + dir.offsetZ * i - rot.offsetZ * 2);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void addInformation(ItemStack stack, EntityPlayer player, List list, boolean ext) {
|
||||||
|
this.addStandardInfo(stack, player, list, ext);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void printHook(Pre event, World world, int x, int y, int z) {
|
||||||
|
int[] pos = this.findCore(world, x, y, z);
|
||||||
|
if(pos == null) return;
|
||||||
|
|
||||||
|
TileEntity te = world.getTileEntity(pos[0], pos[1], pos[2]);
|
||||||
|
if(!(te instanceof TileEntityMachineChemicalFactory)) return;
|
||||||
|
TileEntityMachineChemicalFactory chemfac = (TileEntityMachineChemicalFactory) te;
|
||||||
|
|
||||||
|
DirPos[] cool = chemfac.getCoolPos();
|
||||||
|
|
||||||
|
for(DirPos dirPos : cool) if(dirPos.compare(x + dirPos.getDir().offsetX, y, z + dirPos.getDir().offsetZ)) {
|
||||||
|
List<String> text = new ArrayList();
|
||||||
|
|
||||||
|
text.add(EnumChatFormatting.GREEN + "-> " + EnumChatFormatting.RESET + chemfac.water.getTankType().getLocalizedName());
|
||||||
|
text.add(EnumChatFormatting.RED + "<- " + EnumChatFormatting.RESET + chemfac.lps.getTankType().getLocalizedName());
|
||||||
|
|
||||||
|
ILookOverlay.printGeneric(event, I18nUtil.resolveKey(getUnlocalizedName() + ".name"), 0xffff00, 0x404000, text);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -0,0 +1,45 @@
|
|||||||
|
package com.hbm.blocks.machine;
|
||||||
|
|
||||||
|
import com.hbm.blocks.BlockDummyable;
|
||||||
|
import com.hbm.tileentity.TileEntityProxyCombo;
|
||||||
|
import com.hbm.tileentity.machine.TileEntityMachineChemicalPlant;
|
||||||
|
|
||||||
|
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 MachineChemicalPlant extends BlockDummyable {
|
||||||
|
|
||||||
|
public MachineChemicalPlant(Material mat) {
|
||||||
|
super(mat);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public TileEntity createNewTileEntity(World world, int meta) {
|
||||||
|
if(meta >= 12) return new TileEntityMachineChemicalPlant();
|
||||||
|
if(meta >= 6) return new TileEntityProxyCombo().inventory().power().fluid();
|
||||||
|
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 this.standardOpenBehavior(world, x, y, z, player, 0);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override public int[] getDimensions() { return new int[] {2, 0, 1, 1, 1, 1}; }
|
||||||
|
@Override public int getOffset() { return 1; }
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public 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;
|
||||||
|
z -= dir.offsetZ;
|
||||||
|
|
||||||
|
for(int i = -1; i <= 1; i++) for(int j = -1; j <= 1; j++) {
|
||||||
|
if(i != 0 || j != 0) this.makeExtra(world, x + i, y, z + j);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -11,6 +11,7 @@ import net.minecraft.util.AxisAlignedBB;
|
|||||||
import net.minecraft.world.World;
|
import net.minecraft.world.World;
|
||||||
import net.minecraftforge.common.util.ForgeDirection;
|
import net.minecraftforge.common.util.ForgeDirection;
|
||||||
|
|
||||||
|
@Deprecated
|
||||||
public class MachineChemplant extends BlockDummyable {
|
public class MachineChemplant extends BlockDummyable {
|
||||||
|
|
||||||
public MachineChemplant(Material p_i45386_1_) {
|
public MachineChemplant(Material p_i45386_1_) {
|
||||||
|
|||||||
@ -15,7 +15,7 @@ import com.hbm.inventory.fluid.trait.FT_Coolable;
|
|||||||
import com.hbm.tileentity.TileEntityProxyCombo;
|
import com.hbm.tileentity.TileEntityProxyCombo;
|
||||||
import com.hbm.tileentity.machine.TileEntityChungus;
|
import com.hbm.tileentity.machine.TileEntityChungus;
|
||||||
import com.hbm.util.BobMathUtil;
|
import com.hbm.util.BobMathUtil;
|
||||||
import com.hbm.util.I18nUtil;
|
import com.hbm.util.i18n.I18nUtil;
|
||||||
|
|
||||||
import net.minecraft.block.material.Material;
|
import net.minecraft.block.material.Material;
|
||||||
import net.minecraft.entity.player.EntityPlayer;
|
import net.minecraft.entity.player.EntityPlayer;
|
||||||
|
|||||||
@ -5,7 +5,7 @@ import java.util.List;
|
|||||||
|
|
||||||
import com.hbm.blocks.ILookOverlay;
|
import com.hbm.blocks.ILookOverlay;
|
||||||
import com.hbm.tileentity.machine.TileEntityCondenser;
|
import com.hbm.tileentity.machine.TileEntityCondenser;
|
||||||
import com.hbm.util.I18nUtil;
|
import com.hbm.util.i18n.I18nUtil;
|
||||||
|
|
||||||
import net.minecraft.block.BlockContainer;
|
import net.minecraft.block.BlockContainer;
|
||||||
import net.minecraft.block.material.Material;
|
import net.minecraft.block.material.Material;
|
||||||
|
|||||||
@ -5,7 +5,8 @@ import com.hbm.blocks.ILookOverlay;
|
|||||||
import com.hbm.tileentity.TileEntityProxyCombo;
|
import com.hbm.tileentity.TileEntityProxyCombo;
|
||||||
import com.hbm.tileentity.machine.TileEntityCondenserPowered;
|
import com.hbm.tileentity.machine.TileEntityCondenserPowered;
|
||||||
import com.hbm.util.BobMathUtil;
|
import com.hbm.util.BobMathUtil;
|
||||||
import com.hbm.util.I18nUtil;
|
import com.hbm.util.i18n.I18nUtil;
|
||||||
|
|
||||||
import net.minecraft.block.material.Material;
|
import net.minecraft.block.material.Material;
|
||||||
import net.minecraft.tileentity.TileEntity;
|
import net.minecraft.tileentity.TileEntity;
|
||||||
import net.minecraft.util.EnumChatFormatting;
|
import net.minecraft.util.EnumChatFormatting;
|
||||||
|
|||||||
@ -8,7 +8,8 @@ import com.hbm.blocks.ITooltipProvider;
|
|||||||
import com.hbm.items.machine.ItemStamp;
|
import com.hbm.items.machine.ItemStamp;
|
||||||
import com.hbm.tileentity.machine.TileEntityConveyorPress;
|
import com.hbm.tileentity.machine.TileEntityConveyorPress;
|
||||||
import com.hbm.util.BobMathUtil;
|
import com.hbm.util.BobMathUtil;
|
||||||
import com.hbm.util.I18nUtil;
|
import com.hbm.util.i18n.I18nUtil;
|
||||||
|
|
||||||
import net.minecraft.block.material.Material;
|
import net.minecraft.block.material.Material;
|
||||||
import net.minecraft.entity.item.EntityItem;
|
import net.minecraft.entity.item.EntityItem;
|
||||||
import net.minecraft.entity.player.EntityPlayer;
|
import net.minecraft.entity.player.EntityPlayer;
|
||||||
|
|||||||
@ -4,7 +4,8 @@ import com.hbm.blocks.ILookOverlay;
|
|||||||
import com.hbm.lib.RefStrings;
|
import com.hbm.lib.RefStrings;
|
||||||
import com.hbm.tileentity.machine.TileEntityDeuteriumExtractor;
|
import com.hbm.tileentity.machine.TileEntityDeuteriumExtractor;
|
||||||
import com.hbm.util.BobMathUtil;
|
import com.hbm.util.BobMathUtil;
|
||||||
import com.hbm.util.I18nUtil;
|
import com.hbm.util.i18n.I18nUtil;
|
||||||
|
|
||||||
import cpw.mods.fml.relauncher.Side;
|
import cpw.mods.fml.relauncher.Side;
|
||||||
import cpw.mods.fml.relauncher.SideOnly;
|
import cpw.mods.fml.relauncher.SideOnly;
|
||||||
import net.minecraft.block.BlockContainer;
|
import net.minecraft.block.BlockContainer;
|
||||||
|
|||||||
@ -8,7 +8,7 @@ import com.hbm.blocks.ILookOverlay;
|
|||||||
import com.hbm.inventory.fluid.FluidType;
|
import com.hbm.inventory.fluid.FluidType;
|
||||||
import com.hbm.items.machine.IItemFluidIdentifier;
|
import com.hbm.items.machine.IItemFluidIdentifier;
|
||||||
import com.hbm.tileentity.machine.TileEntityMachineDrain;
|
import com.hbm.tileentity.machine.TileEntityMachineDrain;
|
||||||
import com.hbm.util.I18nUtil;
|
import com.hbm.util.i18n.I18nUtil;
|
||||||
|
|
||||||
import net.minecraft.block.material.Material;
|
import net.minecraft.block.material.Material;
|
||||||
import net.minecraft.entity.player.EntityPlayer;
|
import net.minecraft.entity.player.EntityPlayer;
|
||||||
|
|||||||
@ -10,7 +10,7 @@ import com.hbm.main.MainRegistry;
|
|||||||
import com.hbm.tileentity.machine.storage.TileEntityMachineBattery;
|
import com.hbm.tileentity.machine.storage.TileEntityMachineBattery;
|
||||||
import com.hbm.tileentity.machine.storage.TileEntityMachineFENSU;
|
import com.hbm.tileentity.machine.storage.TileEntityMachineFENSU;
|
||||||
import com.hbm.util.BobMathUtil;
|
import com.hbm.util.BobMathUtil;
|
||||||
import com.hbm.util.I18nUtil;
|
import com.hbm.util.i18n.I18nUtil;
|
||||||
|
|
||||||
import cpw.mods.fml.common.network.internal.FMLNetworkHandler;
|
import cpw.mods.fml.common.network.internal.FMLNetworkHandler;
|
||||||
import net.minecraft.block.material.Material;
|
import net.minecraft.block.material.Material;
|
||||||
|
|||||||
@ -3,11 +3,17 @@ package com.hbm.blocks.machine;
|
|||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
import com.hbm.blocks.ITooltipProvider;
|
import com.hbm.blocks.ITooltipProvider;
|
||||||
|
import com.hbm.main.MainRegistry;
|
||||||
|
import com.hbm.packet.PacketDispatcher;
|
||||||
|
import com.hbm.packet.toclient.PlayerInformPacket;
|
||||||
|
import com.hbm.tileentity.TileEntityLoadedBase;
|
||||||
|
import com.hbm.util.ChatBuilder;
|
||||||
|
|
||||||
import api.hbm.block.IBlowable;
|
import api.hbm.block.IBlowable;
|
||||||
import api.hbm.block.IToolable;
|
import api.hbm.block.IToolable;
|
||||||
import cpw.mods.fml.relauncher.Side;
|
import cpw.mods.fml.relauncher.Side;
|
||||||
import cpw.mods.fml.relauncher.SideOnly;
|
import cpw.mods.fml.relauncher.SideOnly;
|
||||||
|
import io.netty.buffer.ByteBuf;
|
||||||
import net.minecraft.block.Block;
|
import net.minecraft.block.Block;
|
||||||
import net.minecraft.block.BlockContainer;
|
import net.minecraft.block.BlockContainer;
|
||||||
import net.minecraft.block.BlockPistonBase;
|
import net.minecraft.block.BlockPistonBase;
|
||||||
@ -15,9 +21,12 @@ import net.minecraft.block.material.Material;
|
|||||||
import net.minecraft.entity.Entity;
|
import net.minecraft.entity.Entity;
|
||||||
import net.minecraft.entity.EntityLivingBase;
|
import net.minecraft.entity.EntityLivingBase;
|
||||||
import net.minecraft.entity.player.EntityPlayer;
|
import net.minecraft.entity.player.EntityPlayer;
|
||||||
|
import net.minecraft.entity.player.EntityPlayerMP;
|
||||||
import net.minecraft.item.ItemStack;
|
import net.minecraft.item.ItemStack;
|
||||||
|
import net.minecraft.nbt.NBTTagCompound;
|
||||||
import net.minecraft.tileentity.TileEntity;
|
import net.minecraft.tileentity.TileEntity;
|
||||||
import net.minecraft.util.AxisAlignedBB;
|
import net.minecraft.util.AxisAlignedBB;
|
||||||
|
import net.minecraft.util.EnumChatFormatting;
|
||||||
import net.minecraft.world.IBlockAccess;
|
import net.minecraft.world.IBlockAccess;
|
||||||
import net.minecraft.world.World;
|
import net.minecraft.world.World;
|
||||||
import net.minecraftforge.common.util.ForgeDirection;
|
import net.minecraftforge.common.util.ForgeDirection;
|
||||||
@ -65,10 +74,11 @@ public class MachineFan extends BlockContainer implements IToolable, ITooltipPro
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
public static class TileEntityFan extends TileEntity {
|
public static class TileEntityFan extends TileEntityLoadedBase {
|
||||||
|
|
||||||
public float spin;
|
public float spin;
|
||||||
public float prevSpin;
|
public float prevSpin;
|
||||||
|
public boolean falloff = true;
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void updateEntity() {
|
public void updateEntity() {
|
||||||
@ -104,9 +114,16 @@ public class MachineFan extends BlockContainer implements IToolable, ITooltipPro
|
|||||||
|
|
||||||
for(Entity e : affected) {
|
for(Entity e : affected) {
|
||||||
|
|
||||||
e.motionX += dir.offsetX * push;
|
double coeff = push;
|
||||||
e.motionY += dir.offsetY * push;
|
|
||||||
e.motionZ += dir.offsetZ * push;
|
if(falloff) {
|
||||||
|
double dist = e.getDistance(xCoord + 0.5, yCoord + 0.5, zCoord + 0.5);
|
||||||
|
coeff *= 1.5 * (1 - dist / range / 2);
|
||||||
|
}
|
||||||
|
|
||||||
|
e.motionX += dir.offsetX * coeff;
|
||||||
|
e.motionY += dir.offsetY * coeff;
|
||||||
|
e.motionZ += dir.offsetZ * coeff;
|
||||||
}
|
}
|
||||||
|
|
||||||
if(worldObj.isRemote && worldObj.rand.nextInt(30) == 0) {
|
if(worldObj.isRemote && worldObj.rand.nextInt(30) == 0) {
|
||||||
@ -121,6 +138,10 @@ public class MachineFan extends BlockContainer implements IToolable, ITooltipPro
|
|||||||
this.prevSpin -= 360;
|
this.prevSpin -= 360;
|
||||||
this.spin -= 360;
|
this.spin -= 360;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if(!worldObj.isRemote) {
|
||||||
|
networkPackNT(150);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@ -128,21 +149,63 @@ public class MachineFan extends BlockContainer implements IToolable, ITooltipPro
|
|||||||
public double getMaxRenderDistanceSquared() {
|
public double getMaxRenderDistanceSquared() {
|
||||||
return 65536.0D;
|
return 65536.0D;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void readFromNBT(NBTTagCompound nbt) {
|
||||||
|
super.readFromNBT(nbt);
|
||||||
|
this.falloff = nbt.getBoolean("falloff");
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void writeToNBT(NBTTagCompound nbt) {
|
||||||
|
super.writeToNBT(nbt);
|
||||||
|
nbt.setBoolean("falloff", falloff);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void serialize(ByteBuf buf) {
|
||||||
|
buf.writeBoolean(falloff);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void deserialize(ByteBuf buf) {
|
||||||
|
falloff = buf.readBoolean();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean onScrew(World world, EntityPlayer player, int x, int y, int z, int side, float fX, float fY, float fZ, ToolType tool) {
|
public boolean onScrew(World world, EntityPlayer player, int x, int y, int z, int side, float fX, float fY, float fZ, ToolType tool) {
|
||||||
if(tool != ToolType.SCREWDRIVER) return false;
|
if(tool == ToolType.SCREWDRIVER) {
|
||||||
int meta = world.getBlockMetadata(x, y, z);
|
int meta = world.getBlockMetadata(x, y, z);
|
||||||
|
|
||||||
if(meta == 0) world.setBlockMetadataWithNotify(x, y, z, 1, 3);
|
if(meta == 0) world.setBlockMetadataWithNotify(x, y, z, 1, 3);
|
||||||
if(meta == 1) world.setBlockMetadataWithNotify(x, y, z, 0, 3);
|
if(meta == 1) world.setBlockMetadataWithNotify(x, y, z, 0, 3);
|
||||||
if(meta == 2) world.setBlockMetadataWithNotify(x, y, z, 3, 3);
|
if(meta == 2) world.setBlockMetadataWithNotify(x, y, z, 3, 3);
|
||||||
if(meta == 3) world.setBlockMetadataWithNotify(x, y, z, 2, 3);
|
if(meta == 3) world.setBlockMetadataWithNotify(x, y, z, 2, 3);
|
||||||
if(meta == 4) world.setBlockMetadataWithNotify(x, y, z, 5, 3);
|
if(meta == 4) world.setBlockMetadataWithNotify(x, y, z, 5, 3);
|
||||||
if(meta == 5) world.setBlockMetadataWithNotify(x, y, z, 4, 3);
|
if(meta == 5) world.setBlockMetadataWithNotify(x, y, z, 4, 3);
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
if(tool == ToolType.HAND_DRILL) {
|
||||||
|
TileEntityFan tile = (TileEntityFan) world.getTileEntity(x, y, z);
|
||||||
|
|
||||||
|
if(tile != null) {
|
||||||
|
tile.falloff = !tile.falloff;
|
||||||
|
tile.markDirty();
|
||||||
|
|
||||||
|
if(!world.isRemote) {
|
||||||
|
PacketDispatcher.wrapper.sendTo(new PlayerInformPacket(ChatBuilder.start("").nextTranslation(this.getUnlocalizedName() + (tile.falloff ? ".falloffOn" : ".falloffOff")).color(EnumChatFormatting.GOLD).flush(), MainRegistry.proxy.ID_FAN_MODE), (EntityPlayerMP) player);
|
||||||
|
|
||||||
|
world.playSoundEffect(x + 0.5, y + 0.5, z + 0.5, "random.click", 0.5F, 0.5F);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|||||||
@ -6,7 +6,8 @@ import com.hbm.inventory.fluid.FluidType;
|
|||||||
import com.hbm.items.machine.IItemFluidIdentifier;
|
import com.hbm.items.machine.IItemFluidIdentifier;
|
||||||
import com.hbm.tileentity.TileEntityProxyCombo;
|
import com.hbm.tileentity.TileEntityProxyCombo;
|
||||||
import com.hbm.tileentity.machine.oil.TileEntityMachineFractionTower;
|
import com.hbm.tileentity.machine.oil.TileEntityMachineFractionTower;
|
||||||
import com.hbm.util.I18nUtil;
|
import com.hbm.util.i18n.I18nUtil;
|
||||||
|
|
||||||
import net.minecraft.block.material.Material;
|
import net.minecraft.block.material.Material;
|
||||||
import net.minecraft.entity.player.EntityPlayer;
|
import net.minecraft.entity.player.EntityPlayer;
|
||||||
import net.minecraft.tileentity.TileEntity;
|
import net.minecraft.tileentity.TileEntity;
|
||||||
|
|||||||
@ -15,7 +15,7 @@ import com.hbm.items.ModItems;
|
|||||||
import com.hbm.items.machine.IItemFluidIdentifier;
|
import com.hbm.items.machine.IItemFluidIdentifier;
|
||||||
import com.hbm.tileentity.TileEntityProxyCombo;
|
import com.hbm.tileentity.TileEntityProxyCombo;
|
||||||
import com.hbm.tileentity.machine.TileEntityHeatBoiler;
|
import com.hbm.tileentity.machine.TileEntityHeatBoiler;
|
||||||
import com.hbm.util.I18nUtil;
|
import com.hbm.util.i18n.I18nUtil;
|
||||||
|
|
||||||
import net.minecraft.block.material.Material;
|
import net.minecraft.block.material.Material;
|
||||||
import net.minecraft.entity.EntityLivingBase;
|
import net.minecraft.entity.EntityLivingBase;
|
||||||
|
|||||||
@ -9,7 +9,8 @@ import com.hbm.inventory.fluid.trait.FT_Heatable.HeatingType;
|
|||||||
import com.hbm.items.machine.IItemFluidIdentifier;
|
import com.hbm.items.machine.IItemFluidIdentifier;
|
||||||
import com.hbm.tileentity.TileEntityProxyCombo;
|
import com.hbm.tileentity.TileEntityProxyCombo;
|
||||||
import com.hbm.tileentity.machine.TileEntityHeatBoilerIndustrial;
|
import com.hbm.tileentity.machine.TileEntityHeatBoilerIndustrial;
|
||||||
import com.hbm.util.I18nUtil;
|
import com.hbm.util.i18n.I18nUtil;
|
||||||
|
|
||||||
import net.minecraft.block.material.Material;
|
import net.minecraft.block.material.Material;
|
||||||
import net.minecraft.entity.player.EntityPlayer;
|
import net.minecraft.entity.player.EntityPlayer;
|
||||||
import net.minecraft.item.ItemStack;
|
import net.minecraft.item.ItemStack;
|
||||||
|
|||||||
@ -11,7 +11,7 @@ import com.hbm.inventory.fluid.tank.FluidTank;
|
|||||||
import com.hbm.items.machine.IItemFluidIdentifier;
|
import com.hbm.items.machine.IItemFluidIdentifier;
|
||||||
import com.hbm.tileentity.TileEntityProxyCombo;
|
import com.hbm.tileentity.TileEntityProxyCombo;
|
||||||
import com.hbm.tileentity.machine.TileEntityMachineHephaestus;
|
import com.hbm.tileentity.machine.TileEntityMachineHephaestus;
|
||||||
import com.hbm.util.I18nUtil;
|
import com.hbm.util.i18n.I18nUtil;
|
||||||
|
|
||||||
import net.minecraft.block.material.Material;
|
import net.minecraft.block.material.Material;
|
||||||
import net.minecraft.entity.player.EntityPlayer;
|
import net.minecraft.entity.player.EntityPlayer;
|
||||||
|
|||||||
@ -9,8 +9,9 @@ import com.hbm.lib.RefStrings;
|
|||||||
import com.hbm.packet.toclient.AuxParticlePacketNT;
|
import com.hbm.packet.toclient.AuxParticlePacketNT;
|
||||||
import com.hbm.tileentity.machine.TileEntityICFController;
|
import com.hbm.tileentity.machine.TileEntityICFController;
|
||||||
import com.hbm.util.BobMathUtil;
|
import com.hbm.util.BobMathUtil;
|
||||||
import com.hbm.util.I18nUtil;
|
|
||||||
import com.hbm.util.fauxpointtwelve.BlockPos;
|
import com.hbm.util.fauxpointtwelve.BlockPos;
|
||||||
|
import com.hbm.util.i18n.I18nUtil;
|
||||||
|
|
||||||
import cpw.mods.fml.relauncher.Side;
|
import cpw.mods.fml.relauncher.Side;
|
||||||
import cpw.mods.fml.relauncher.SideOnly;
|
import cpw.mods.fml.relauncher.SideOnly;
|
||||||
import net.minecraft.block.Block;
|
import net.minecraft.block.Block;
|
||||||
|
|||||||
@ -6,7 +6,7 @@ import com.hbm.blocks.ITooltipProvider;
|
|||||||
import com.hbm.lib.RefStrings;
|
import com.hbm.lib.RefStrings;
|
||||||
import com.hbm.main.MainRegistry;
|
import com.hbm.main.MainRegistry;
|
||||||
import com.hbm.tileentity.machine.TileEntityICFPress;
|
import com.hbm.tileentity.machine.TileEntityICFPress;
|
||||||
import com.hbm.util.I18nUtil;
|
import com.hbm.util.i18n.I18nUtil;
|
||||||
|
|
||||||
import cpw.mods.fml.common.network.internal.FMLNetworkHandler;
|
import cpw.mods.fml.common.network.internal.FMLNetworkHandler;
|
||||||
import cpw.mods.fml.relauncher.Side;
|
import cpw.mods.fml.relauncher.Side;
|
||||||
|
|||||||
@ -8,7 +8,7 @@ import com.hbm.blocks.ILookOverlay;
|
|||||||
import com.hbm.tileentity.TileEntityProxyCombo;
|
import com.hbm.tileentity.TileEntityProxyCombo;
|
||||||
import com.hbm.tileentity.machine.TileEntityMachineIntake;
|
import com.hbm.tileentity.machine.TileEntityMachineIntake;
|
||||||
import com.hbm.util.BobMathUtil;
|
import com.hbm.util.BobMathUtil;
|
||||||
import com.hbm.util.I18nUtil;
|
import com.hbm.util.i18n.I18nUtil;
|
||||||
|
|
||||||
import net.minecraft.block.material.Material;
|
import net.minecraft.block.material.Material;
|
||||||
import net.minecraft.tileentity.TileEntity;
|
import net.minecraft.tileentity.TileEntity;
|
||||||
|
|||||||
@ -13,7 +13,7 @@ import com.hbm.tileentity.machine.TileEntityMachinePumpBase;
|
|||||||
import com.hbm.tileentity.machine.TileEntityMachinePumpElectric;
|
import com.hbm.tileentity.machine.TileEntityMachinePumpElectric;
|
||||||
import com.hbm.tileentity.machine.TileEntityMachinePumpSteam;
|
import com.hbm.tileentity.machine.TileEntityMachinePumpSteam;
|
||||||
import com.hbm.util.BobMathUtil;
|
import com.hbm.util.BobMathUtil;
|
||||||
import com.hbm.util.I18nUtil;
|
import com.hbm.util.i18n.I18nUtil;
|
||||||
|
|
||||||
import net.minecraft.block.material.Material;
|
import net.minecraft.block.material.Material;
|
||||||
import net.minecraft.entity.player.EntityPlayer;
|
import net.minecraft.entity.player.EntityPlayer;
|
||||||
|
|||||||
@ -10,7 +10,7 @@ import com.hbm.items.ModItems;
|
|||||||
import com.hbm.tileentity.TileEntityProxyCombo;
|
import com.hbm.tileentity.TileEntityProxyCombo;
|
||||||
import com.hbm.tileentity.machine.TileEntitySawmill;
|
import com.hbm.tileentity.machine.TileEntitySawmill;
|
||||||
import com.hbm.util.BobMathUtil;
|
import com.hbm.util.BobMathUtil;
|
||||||
import com.hbm.util.I18nUtil;
|
import com.hbm.util.i18n.I18nUtil;
|
||||||
|
|
||||||
import net.minecraft.block.material.Material;
|
import net.minecraft.block.material.Material;
|
||||||
import net.minecraft.entity.EntityLivingBase;
|
import net.minecraft.entity.EntityLivingBase;
|
||||||
|
|||||||
@ -6,7 +6,8 @@ import com.hbm.inventory.fluid.tank.FluidTank;
|
|||||||
import com.hbm.tileentity.TileEntityProxyCombo;
|
import com.hbm.tileentity.TileEntityProxyCombo;
|
||||||
import com.hbm.tileentity.machine.TileEntitySolarBoiler;
|
import com.hbm.tileentity.machine.TileEntitySolarBoiler;
|
||||||
import com.hbm.util.BobMathUtil;
|
import com.hbm.util.BobMathUtil;
|
||||||
import com.hbm.util.I18nUtil;
|
import com.hbm.util.i18n.I18nUtil;
|
||||||
|
|
||||||
import net.minecraft.block.material.Material;
|
import net.minecraft.block.material.Material;
|
||||||
import net.minecraft.tileentity.TileEntity;
|
import net.minecraft.tileentity.TileEntity;
|
||||||
import net.minecraft.util.EnumChatFormatting;
|
import net.minecraft.util.EnumChatFormatting;
|
||||||
|
|||||||
@ -5,7 +5,8 @@ import com.hbm.blocks.ILookOverlay;
|
|||||||
import com.hbm.blocks.ITooltipProvider;
|
import com.hbm.blocks.ITooltipProvider;
|
||||||
import com.hbm.tileentity.TileEntityProxyCombo;
|
import com.hbm.tileentity.TileEntityProxyCombo;
|
||||||
import com.hbm.tileentity.machine.TileEntitySteamEngine;
|
import com.hbm.tileentity.machine.TileEntitySteamEngine;
|
||||||
import com.hbm.util.I18nUtil;
|
import com.hbm.util.i18n.I18nUtil;
|
||||||
|
|
||||||
import net.minecraft.block.material.Material;
|
import net.minecraft.block.material.Material;
|
||||||
import net.minecraft.entity.player.EntityPlayer;
|
import net.minecraft.entity.player.EntityPlayer;
|
||||||
import net.minecraft.item.ItemStack;
|
import net.minecraft.item.ItemStack;
|
||||||
|
|||||||
@ -12,7 +12,7 @@ import com.hbm.items.ModItems;
|
|||||||
import com.hbm.tileentity.TileEntityProxyCombo;
|
import com.hbm.tileentity.TileEntityProxyCombo;
|
||||||
import com.hbm.tileentity.machine.TileEntityStirling;
|
import com.hbm.tileentity.machine.TileEntityStirling;
|
||||||
import com.hbm.util.BobMathUtil;
|
import com.hbm.util.BobMathUtil;
|
||||||
import com.hbm.util.I18nUtil;
|
import com.hbm.util.i18n.I18nUtil;
|
||||||
|
|
||||||
import net.minecraft.block.material.Material;
|
import net.minecraft.block.material.Material;
|
||||||
import net.minecraft.entity.EntityLivingBase;
|
import net.minecraft.entity.EntityLivingBase;
|
||||||
|
|||||||
@ -10,7 +10,8 @@ import com.hbm.items.ModItems;
|
|||||||
import com.hbm.items.machine.ItemScraps;
|
import com.hbm.items.machine.ItemScraps;
|
||||||
import com.hbm.tileentity.TileEntityProxyCombo;
|
import com.hbm.tileentity.TileEntityProxyCombo;
|
||||||
import com.hbm.tileentity.machine.TileEntityMachineStrandCaster;
|
import com.hbm.tileentity.machine.TileEntityMachineStrandCaster;
|
||||||
import com.hbm.util.I18nUtil;
|
import com.hbm.util.i18n.I18nUtil;
|
||||||
|
|
||||||
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.item.EntityItem;
|
||||||
|
|||||||
@ -7,7 +7,7 @@ import java.util.Locale;
|
|||||||
import com.hbm.blocks.ILookOverlay;
|
import com.hbm.blocks.ILookOverlay;
|
||||||
import com.hbm.lib.RefStrings;
|
import com.hbm.lib.RefStrings;
|
||||||
import com.hbm.tileentity.machine.TileEntityMachineTeleporter;
|
import com.hbm.tileentity.machine.TileEntityMachineTeleporter;
|
||||||
import com.hbm.util.I18nUtil;
|
import com.hbm.util.i18n.I18nUtil;
|
||||||
|
|
||||||
import cpw.mods.fml.relauncher.Side;
|
import cpw.mods.fml.relauncher.Side;
|
||||||
import cpw.mods.fml.relauncher.SideOnly;
|
import cpw.mods.fml.relauncher.SideOnly;
|
||||||
|
|||||||
@ -7,7 +7,7 @@ import com.hbm.blocks.BlockDummyable;
|
|||||||
import com.hbm.blocks.ILookOverlay;
|
import com.hbm.blocks.ILookOverlay;
|
||||||
import com.hbm.tileentity.TileEntityProxyCombo;
|
import com.hbm.tileentity.TileEntityProxyCombo;
|
||||||
import com.hbm.tileentity.machine.TileEntityTowerLarge;
|
import com.hbm.tileentity.machine.TileEntityTowerLarge;
|
||||||
import com.hbm.util.I18nUtil;
|
import com.hbm.util.i18n.I18nUtil;
|
||||||
|
|
||||||
import net.minecraft.block.material.Material;
|
import net.minecraft.block.material.Material;
|
||||||
import net.minecraft.tileentity.TileEntity;
|
import net.minecraft.tileentity.TileEntity;
|
||||||
|
|||||||
@ -7,7 +7,7 @@ import com.hbm.blocks.BlockDummyable;
|
|||||||
import com.hbm.blocks.ILookOverlay;
|
import com.hbm.blocks.ILookOverlay;
|
||||||
import com.hbm.tileentity.TileEntityProxyCombo;
|
import com.hbm.tileentity.TileEntityProxyCombo;
|
||||||
import com.hbm.tileentity.machine.TileEntityTowerSmall;
|
import com.hbm.tileentity.machine.TileEntityTowerSmall;
|
||||||
import com.hbm.util.I18nUtil;
|
import com.hbm.util.i18n.I18nUtil;
|
||||||
|
|
||||||
import net.minecraft.block.material.Material;
|
import net.minecraft.block.material.Material;
|
||||||
import net.minecraft.tileentity.TileEntity;
|
import net.minecraft.tileentity.TileEntity;
|
||||||
|
|||||||
@ -2,39 +2,31 @@ package com.hbm.blocks.machine;
|
|||||||
|
|
||||||
import com.hbm.blocks.ModBlocks;
|
import com.hbm.blocks.ModBlocks;
|
||||||
import com.hbm.lib.RefStrings;
|
import com.hbm.lib.RefStrings;
|
||||||
import com.hbm.tileentity.machine.TileEntityMachineTransformer;
|
|
||||||
import cpw.mods.fml.relauncher.Side;
|
import cpw.mods.fml.relauncher.Side;
|
||||||
import cpw.mods.fml.relauncher.SideOnly;
|
import cpw.mods.fml.relauncher.SideOnly;
|
||||||
import net.minecraft.block.BlockContainer;
|
import net.minecraft.block.Block;
|
||||||
import net.minecraft.block.material.Material;
|
import net.minecraft.block.material.Material;
|
||||||
import net.minecraft.client.renderer.texture.IIconRegister;
|
import net.minecraft.client.renderer.texture.IIconRegister;
|
||||||
import net.minecraft.tileentity.TileEntity;
|
|
||||||
import net.minecraft.util.IIcon;
|
import net.minecraft.util.IIcon;
|
||||||
import net.minecraft.world.World;
|
|
||||||
|
|
||||||
public class MachineTransformer extends BlockContainer {
|
public class MachineTransformer extends Block {
|
||||||
|
|
||||||
long buffer;
|
|
||||||
int delay;
|
|
||||||
|
|
||||||
@SideOnly(Side.CLIENT)
|
@SideOnly(Side.CLIENT)
|
||||||
private IIcon iconTop;
|
private IIcon iconTop;
|
||||||
|
|
||||||
public MachineTransformer(Material p_i45394_1_, long b, int d) {
|
public MachineTransformer(Material p_i45394_1_, long b, int d) {
|
||||||
super(p_i45394_1_);
|
super(p_i45394_1_);
|
||||||
buffer = b;
|
|
||||||
delay = d;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@SideOnly(Side.CLIENT)
|
@SideOnly(Side.CLIENT)
|
||||||
public void registerBlockIcons(IIconRegister iconRegister) {
|
public void registerBlockIcons(IIconRegister iconRegister) {
|
||||||
|
|
||||||
if(this == ModBlocks.machine_transformer || this == ModBlocks.machine_transformer_20) {
|
if(this == ModBlocks.machine_transformer) {
|
||||||
this.iconTop = iconRegister.registerIcon(RefStrings.MODID + ":machine_transformer_top_iron");
|
this.iconTop = iconRegister.registerIcon(RefStrings.MODID + ":machine_transformer_top_iron");
|
||||||
this.blockIcon = iconRegister.registerIcon(RefStrings.MODID + ":machine_transformer_iron");
|
this.blockIcon = iconRegister.registerIcon(RefStrings.MODID + ":machine_transformer_iron");
|
||||||
}
|
}
|
||||||
if(this == ModBlocks.machine_transformer_dnt || this == ModBlocks.machine_transformer_dnt_20) {
|
if(this == ModBlocks.machine_transformer_dnt) {
|
||||||
this.iconTop = iconRegister.registerIcon(RefStrings.MODID + ":machine_transformer_top");
|
this.iconTop = iconRegister.registerIcon(RefStrings.MODID + ":machine_transformer_top");
|
||||||
this.blockIcon = iconRegister.registerIcon(RefStrings.MODID + ":machine_transformer");
|
this.blockIcon = iconRegister.registerIcon(RefStrings.MODID + ":machine_transformer");
|
||||||
}
|
}
|
||||||
@ -45,9 +37,4 @@ public class MachineTransformer extends BlockContainer {
|
|||||||
public IIcon getIcon(int side, int metadata) {
|
public IIcon getIcon(int side, int metadata) {
|
||||||
return side == 1 ? this.iconTop : (side == 0 ? this.iconTop : this.blockIcon);
|
return side == 1 ? this.iconTop : (side == 0 ? this.iconTop : this.blockIcon);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
|
||||||
public TileEntity createNewTileEntity(World p_149915_1_, int p_149915_2_) {
|
|
||||||
return new TileEntityMachineTransformer();
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|||||||
@ -2,7 +2,7 @@ package com.hbm.blocks.machine;
|
|||||||
|
|
||||||
import com.hbm.tileentity.TileEntityProxyCombo;
|
import com.hbm.tileentity.TileEntityProxyCombo;
|
||||||
import com.hbm.tileentity.machine.TileEntityMachineTurbineGas;
|
import com.hbm.tileentity.machine.TileEntityMachineTurbineGas;
|
||||||
import com.hbm.util.I18nUtil;
|
import com.hbm.util.i18n.I18nUtil;
|
||||||
|
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|||||||
@ -1,5 +1,6 @@
|
|||||||
package com.hbm.blocks.machine.rbmk;
|
package com.hbm.blocks.machine.rbmk;
|
||||||
|
|
||||||
|
import api.hbm.block.IToolable;
|
||||||
import com.hbm.blocks.BlockDummyable;
|
import com.hbm.blocks.BlockDummyable;
|
||||||
import com.hbm.handler.BossSpawnHandler;
|
import com.hbm.handler.BossSpawnHandler;
|
||||||
import com.hbm.handler.MultiblockHandlerXR;
|
import com.hbm.handler.MultiblockHandlerXR;
|
||||||
@ -17,7 +18,7 @@ import net.minecraft.util.Vec3;
|
|||||||
import net.minecraft.world.World;
|
import net.minecraft.world.World;
|
||||||
import net.minecraftforge.common.util.ForgeDirection;
|
import net.minecraftforge.common.util.ForgeDirection;
|
||||||
|
|
||||||
public class RBMKConsole extends BlockDummyable {
|
public class RBMKConsole extends BlockDummyable implements IToolable {
|
||||||
|
|
||||||
public RBMKConsole() {
|
public RBMKConsole() {
|
||||||
super(Material.iron);
|
super(Material.iron);
|
||||||
@ -121,4 +122,18 @@ public class RBMKConsole extends BlockDummyable {
|
|||||||
|
|
||||||
return super.checkRequirement(world, x, y, z, dir, o);
|
return super.checkRequirement(world, x, y, z, dir, o);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean onScrew(World world, EntityPlayer player, int x, int y, int z, int side, float fX, float fY, float fZ, ToolType tool) {
|
||||||
|
if(tool != ToolType.SCREWDRIVER)
|
||||||
|
return false;
|
||||||
|
if(!world.isRemote) {
|
||||||
|
int[] pos = findCore(world, x, y, z);
|
||||||
|
TileEntity tile = world.getTileEntity(pos[0], pos[1], pos[2]);
|
||||||
|
if (tile instanceof TileEntityRBMKConsole) {
|
||||||
|
((TileEntityRBMKConsole) tile).rotate();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return true;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -11,7 +11,8 @@ import com.hbm.lib.RefStrings;
|
|||||||
import com.hbm.render.block.RenderBlockMultipass;
|
import com.hbm.render.block.RenderBlockMultipass;
|
||||||
import com.hbm.tileentity.network.TileEntityCableBaseNT;
|
import com.hbm.tileentity.network.TileEntityCableBaseNT;
|
||||||
import com.hbm.util.BobMathUtil;
|
import com.hbm.util.BobMathUtil;
|
||||||
import com.hbm.util.I18nUtil;
|
import com.hbm.util.i18n.I18nUtil;
|
||||||
|
|
||||||
import cpw.mods.fml.common.Optional;
|
import cpw.mods.fml.common.Optional;
|
||||||
import cpw.mods.fml.relauncher.Side;
|
import cpw.mods.fml.relauncher.Side;
|
||||||
import cpw.mods.fml.relauncher.SideOnly;
|
import cpw.mods.fml.relauncher.SideOnly;
|
||||||
@ -154,13 +155,13 @@ public class BlockCableGauge extends BlockContainer implements IBlockMultiPass,
|
|||||||
@Callback(direct = true)
|
@Callback(direct = true)
|
||||||
@Optional.Method(modid = "OpenComputers")
|
@Optional.Method(modid = "OpenComputers")
|
||||||
public Object[] getTransfer(Context context, Arguments args) {
|
public Object[] getTransfer(Context context, Arguments args) {
|
||||||
return new Object[] {deltaTick, deltaSecond};
|
return new Object[] {deltaTick, deltaLastSecond};
|
||||||
}
|
}
|
||||||
|
|
||||||
@Callback(direct = true)
|
@Callback(direct = true)
|
||||||
@Optional.Method(modid = "OpenComputers")
|
@Optional.Method(modid = "OpenComputers")
|
||||||
public Object[] getInfo(Context context, Arguments args) {
|
public Object[] getInfo(Context context, Arguments args) {
|
||||||
return new Object[] {deltaTick, deltaSecond, xCoord, yCoord, zCoord};
|
return new Object[] {deltaTick, deltaLastSecond, xCoord, yCoord, zCoord};
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@ -174,7 +175,7 @@ public class BlockCableGauge extends BlockContainer implements IBlockMultiPass,
|
|||||||
@Override
|
@Override
|
||||||
public String provideRORValue(String name) {
|
public String provideRORValue(String name) {
|
||||||
if((PREFIX_VALUE + "deltatick").equals(name)) return "" + deltaTick;
|
if((PREFIX_VALUE + "deltatick").equals(name)) return "" + deltaTick;
|
||||||
if((PREFIX_VALUE + "deltasecond").equals(name)) return "" + deltaSecond;
|
if((PREFIX_VALUE + "deltasecond").equals(name)) return "" + deltaLastSecond;
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -12,7 +12,8 @@ import com.hbm.blocks.ITooltipProvider;
|
|||||||
import com.hbm.tileentity.TileEntityLoadedBase;
|
import com.hbm.tileentity.TileEntityLoadedBase;
|
||||||
import com.hbm.util.BobMathUtil;
|
import com.hbm.util.BobMathUtil;
|
||||||
import com.hbm.util.Compat;
|
import com.hbm.util.Compat;
|
||||||
import com.hbm.util.I18nUtil;
|
import com.hbm.util.i18n.I18nUtil;
|
||||||
|
|
||||||
import cpw.mods.fml.client.registry.RenderingRegistry;
|
import cpw.mods.fml.client.registry.RenderingRegistry;
|
||||||
import cpw.mods.fml.relauncher.Side;
|
import cpw.mods.fml.relauncher.Side;
|
||||||
import cpw.mods.fml.relauncher.SideOnly;
|
import cpw.mods.fml.relauncher.SideOnly;
|
||||||
|
|||||||
@ -7,6 +7,7 @@ import api.hbm.conveyor.IEnterableBlock;
|
|||||||
import com.hbm.blocks.IBlockMultiPass;
|
import com.hbm.blocks.IBlockMultiPass;
|
||||||
import com.hbm.blocks.ITooltipProvider;
|
import com.hbm.blocks.ITooltipProvider;
|
||||||
import com.hbm.entity.item.EntityMovingItem;
|
import com.hbm.entity.item.EntityMovingItem;
|
||||||
|
import com.hbm.items.tool.ItemConveyorWand;
|
||||||
import com.hbm.lib.RefStrings;
|
import com.hbm.lib.RefStrings;
|
||||||
import com.hbm.main.MainRegistry;
|
import com.hbm.main.MainRegistry;
|
||||||
import com.hbm.module.ModulePatternMatcher;
|
import com.hbm.module.ModulePatternMatcher;
|
||||||
@ -61,7 +62,9 @@ public class CraneRouter extends BlockContainer implements IBlockMultiPass, IEnt
|
|||||||
|
|
||||||
@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(player.getHeldItem() != null && player.getHeldItem().getItem() instanceof ItemConveyorWand) {
|
||||||
|
return false;
|
||||||
|
} else if(world.isRemote) {
|
||||||
return true;
|
return true;
|
||||||
} else if(!player.isSneaking()) {
|
} else if(!player.isSneaking()) {
|
||||||
FMLNetworkHandler.openGui(player, MainRegistry.instance, 0, world, x, y, z);
|
FMLNetworkHandler.openGui(player, MainRegistry.instance, 0, world, x, y, z);
|
||||||
|
|||||||
@ -1,14 +1,18 @@
|
|||||||
package com.hbm.blocks.network;
|
package com.hbm.blocks.network;
|
||||||
|
|
||||||
|
import api.hbm.block.IToolable;
|
||||||
import api.hbm.conveyor.IConveyorBelt;
|
import api.hbm.conveyor.IConveyorBelt;
|
||||||
import api.hbm.conveyor.IConveyorItem;
|
import api.hbm.conveyor.IConveyorItem;
|
||||||
import api.hbm.conveyor.IConveyorPackage;
|
import api.hbm.conveyor.IConveyorPackage;
|
||||||
import api.hbm.conveyor.IEnterableBlock;
|
import api.hbm.conveyor.IEnterableBlock;
|
||||||
import com.hbm.blocks.BlockDummyable;
|
import com.hbm.blocks.BlockDummyable;
|
||||||
|
import com.hbm.blocks.ILookOverlay;
|
||||||
import com.hbm.blocks.ITooltipProvider;
|
import com.hbm.blocks.ITooltipProvider;
|
||||||
import com.hbm.entity.item.EntityMovingItem;
|
import com.hbm.entity.item.EntityMovingItem;
|
||||||
import com.hbm.lib.RefStrings;
|
import com.hbm.lib.RefStrings;
|
||||||
import com.hbm.tileentity.network.TileEntityCraneSplitter;
|
import com.hbm.tileentity.network.TileEntityCraneSplitter;
|
||||||
|
import com.hbm.util.i18n.I18nUtil;
|
||||||
|
|
||||||
import cpw.mods.fml.client.registry.RenderingRegistry;
|
import cpw.mods.fml.client.registry.RenderingRegistry;
|
||||||
import cpw.mods.fml.relauncher.Side;
|
import cpw.mods.fml.relauncher.Side;
|
||||||
import cpw.mods.fml.relauncher.SideOnly;
|
import cpw.mods.fml.relauncher.SideOnly;
|
||||||
@ -21,11 +25,13 @@ import net.minecraft.util.IIcon;
|
|||||||
import net.minecraft.util.MathHelper;
|
import net.minecraft.util.MathHelper;
|
||||||
import net.minecraft.util.Vec3;
|
import net.minecraft.util.Vec3;
|
||||||
import net.minecraft.world.World;
|
import net.minecraft.world.World;
|
||||||
|
import net.minecraftforge.client.event.RenderGameOverlayEvent.Pre;
|
||||||
import net.minecraftforge.common.util.ForgeDirection;
|
import net.minecraftforge.common.util.ForgeDirection;
|
||||||
|
|
||||||
|
import java.util.ArrayList;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
public class CraneSplitter extends BlockDummyable implements IConveyorBelt, IEnterableBlock, ITooltipProvider {
|
public class CraneSplitter extends BlockDummyable implements IConveyorBelt, IEnterableBlock, ITooltipProvider, IToolable, ILookOverlay {
|
||||||
|
|
||||||
@SideOnly(Side.CLIENT) public IIcon iconTopLeft;
|
@SideOnly(Side.CLIENT) public IIcon iconTopLeft;
|
||||||
@SideOnly(Side.CLIENT) public IIcon iconTopRight;
|
@SideOnly(Side.CLIENT) public IIcon iconTopRight;
|
||||||
@ -96,26 +102,16 @@ public class CraneSplitter extends BlockDummyable implements IConveyorBelt, IEnt
|
|||||||
TileEntity tile = world.getTileEntity(x, y, z);
|
TileEntity tile = world.getTileEntity(x, y, z);
|
||||||
if(!(tile instanceof TileEntityCraneSplitter)) return;
|
if(!(tile instanceof TileEntityCraneSplitter)) return;
|
||||||
TileEntityCraneSplitter splitter = (TileEntityCraneSplitter) tile;
|
TileEntityCraneSplitter splitter = (TileEntityCraneSplitter) tile;
|
||||||
boolean pos = splitter.getPosition();
|
|
||||||
ItemStack stack = entity.getItemStack();
|
|
||||||
ForgeDirection rot = ForgeDirection.getOrientation(splitter.getBlockMetadata() - offset).getRotation(ForgeDirection.DOWN);
|
ForgeDirection rot = ForgeDirection.getOrientation(splitter.getBlockMetadata() - offset).getRotation(ForgeDirection.DOWN);
|
||||||
|
|
||||||
if(stack.stackSize % 2 == 0) {
|
ItemStack[] splits = splitter.splitStack(entity.getItemStack());
|
||||||
stack.stackSize /= 2;
|
|
||||||
spawnMovingItem(world, x, y, z, stack.copy());
|
spawnMovingItem(world, x, y, z, splits[0]);
|
||||||
spawnMovingItem(world, x + rot.offsetX, y, z + rot.offsetZ, stack.copy());
|
spawnMovingItem(world, x + rot.offsetX, y, z + rot.offsetZ, splits[1]);
|
||||||
} else {
|
|
||||||
int baseSize = stack.stackSize /= 2;
|
|
||||||
stack.stackSize = baseSize + (pos ? 0 : 1);
|
|
||||||
spawnMovingItem(world, x, y, z, stack.copy());
|
|
||||||
stack.stackSize = baseSize + (pos ? 1 : 0);
|
|
||||||
spawnMovingItem(world, x + rot.offsetX, y, z + rot.offsetZ, stack.copy());
|
|
||||||
splitter.setPosition(!pos);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private void spawnMovingItem(World world, int x, int y, int z, ItemStack stack) {
|
private void spawnMovingItem(World world, int x, int y, int z, ItemStack stack) {
|
||||||
if(stack.stackSize <= 0) return;
|
if(stack == null || stack.stackSize <= 0) return;
|
||||||
EntityMovingItem moving = new EntityMovingItem(world);
|
EntityMovingItem moving = new EntityMovingItem(world);
|
||||||
Vec3 pos = Vec3.createVectorHelper(x + 0.5, y + 0.5, z + 0.5);
|
Vec3 pos = Vec3.createVectorHelper(x + 0.5, y + 0.5, z + 0.5);
|
||||||
Vec3 snap = this.getClosestSnappingPosition(world, x, y, z, pos);
|
Vec3 snap = this.getClosestSnappingPosition(world, x, y, z, pos);
|
||||||
@ -158,8 +154,51 @@ public class CraneSplitter extends BlockDummyable implements IConveyorBelt, IEnt
|
|||||||
return ForgeDirection.getOrientation(meta).getRotation(ForgeDirection.UP);
|
return ForgeDirection.getOrientation(meta).getRotation(ForgeDirection.UP);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@SuppressWarnings("rawtypes")
|
||||||
@Override
|
@Override
|
||||||
public void addInformation(ItemStack stack, EntityPlayer player, List list, boolean ext) {
|
public void addInformation(ItemStack stack, EntityPlayer player, List list, boolean ext) {
|
||||||
this.addStandardInfo(stack, player, list, ext);
|
this.addStandardInfo(stack, player, list, ext);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean onScrew(World world, EntityPlayer player, int x, int y, int z, int side, float fX, float fY, float fZ, ToolType tool) {
|
||||||
|
if(world.isRemote) return true;
|
||||||
|
if(tool != ToolType.SCREWDRIVER) return false;
|
||||||
|
|
||||||
|
int[] pos = this.findCore(world, x, y, z);
|
||||||
|
if(pos == null) return false;
|
||||||
|
|
||||||
|
TileEntity te = world.getTileEntity(pos[0], pos[1], pos[2]);
|
||||||
|
if(!(te instanceof TileEntityCraneSplitter)) return false;
|
||||||
|
|
||||||
|
TileEntityCraneSplitter crane = (TileEntityCraneSplitter) te;
|
||||||
|
|
||||||
|
// The core of the dummy is always the left hand block
|
||||||
|
boolean isLeft = x == pos[0] && y == pos[1] && z == pos[2];
|
||||||
|
int adjust = player.isSneaking() ? -1 : 1;
|
||||||
|
|
||||||
|
if(isLeft) {
|
||||||
|
crane.leftRatio = (byte)MathHelper.clamp_int(crane.leftRatio + adjust, 1, 16);
|
||||||
|
} else {
|
||||||
|
crane.rightRatio = (byte)MathHelper.clamp_int(crane.rightRatio + adjust, 1, 16);
|
||||||
|
}
|
||||||
|
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void printHook(Pre event, World world, int x, int y, int z) {
|
||||||
|
int[] pos = this.findCore(world, x, y, z);
|
||||||
|
if(pos == null) return;
|
||||||
|
|
||||||
|
TileEntity te = world.getTileEntity(pos[0], pos[1], pos[2]);
|
||||||
|
if(!(te instanceof TileEntityCraneSplitter)) return;
|
||||||
|
|
||||||
|
TileEntityCraneSplitter crane = (TileEntityCraneSplitter) te;
|
||||||
|
|
||||||
|
List<String> text = new ArrayList<>();
|
||||||
|
text.add("Splitter ratio: " + crane.leftRatio + ":" + crane.rightRatio);
|
||||||
|
|
||||||
|
ILookOverlay.printGeneric(event, I18nUtil.resolveKey(getUnlocalizedName() + ".name"), 0xffff00, 0x404000, text);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -6,7 +6,8 @@ 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.tileentity.network.TileEntityDroneCrate;
|
import com.hbm.tileentity.network.TileEntityDroneCrate;
|
||||||
import com.hbm.util.I18nUtil;
|
import com.hbm.util.i18n.I18nUtil;
|
||||||
|
|
||||||
import cpw.mods.fml.common.network.internal.FMLNetworkHandler;
|
import cpw.mods.fml.common.network.internal.FMLNetworkHandler;
|
||||||
import cpw.mods.fml.relauncher.Side;
|
import cpw.mods.fml.relauncher.Side;
|
||||||
import cpw.mods.fml.relauncher.SideOnly;
|
import cpw.mods.fml.relauncher.SideOnly;
|
||||||
|
|||||||
@ -4,7 +4,8 @@ import com.hbm.blocks.ILookOverlay;
|
|||||||
import com.hbm.blocks.ITooltipProvider;
|
import com.hbm.blocks.ITooltipProvider;
|
||||||
import com.hbm.items.ModItems;
|
import com.hbm.items.ModItems;
|
||||||
import com.hbm.tileentity.network.TileEntityDroneWaypoint;
|
import com.hbm.tileentity.network.TileEntityDroneWaypoint;
|
||||||
import com.hbm.util.I18nUtil;
|
import com.hbm.util.i18n.I18nUtil;
|
||||||
|
|
||||||
import cpw.mods.fml.relauncher.Side;
|
import cpw.mods.fml.relauncher.Side;
|
||||||
import cpw.mods.fml.relauncher.SideOnly;
|
import cpw.mods.fml.relauncher.SideOnly;
|
||||||
import net.minecraft.block.Block;
|
import net.minecraft.block.Block;
|
||||||
|
|||||||
@ -5,7 +5,8 @@ import com.hbm.blocks.ILookOverlay;
|
|||||||
import com.hbm.lib.Library;
|
import com.hbm.lib.Library;
|
||||||
import com.hbm.lib.RefStrings;
|
import com.hbm.lib.RefStrings;
|
||||||
import com.hbm.tileentity.network.TileEntityPipeBaseNT;
|
import com.hbm.tileentity.network.TileEntityPipeBaseNT;
|
||||||
import com.hbm.util.I18nUtil;
|
import com.hbm.util.i18n.I18nUtil;
|
||||||
|
|
||||||
import cpw.mods.fml.client.registry.RenderingRegistry;
|
import cpw.mods.fml.client.registry.RenderingRegistry;
|
||||||
import cpw.mods.fml.relauncher.Side;
|
import cpw.mods.fml.relauncher.Side;
|
||||||
import cpw.mods.fml.relauncher.SideOnly;
|
import cpw.mods.fml.relauncher.SideOnly;
|
||||||
|
|||||||
@ -5,7 +5,8 @@ import com.hbm.inventory.fluid.Fluids;
|
|||||||
import com.hbm.lib.Library;
|
import com.hbm.lib.Library;
|
||||||
import com.hbm.lib.RefStrings;
|
import com.hbm.lib.RefStrings;
|
||||||
import com.hbm.tileentity.network.TileEntityPipeExhaust;
|
import com.hbm.tileentity.network.TileEntityPipeExhaust;
|
||||||
import com.hbm.util.I18nUtil;
|
import com.hbm.util.i18n.I18nUtil;
|
||||||
|
|
||||||
import cpw.mods.fml.relauncher.Side;
|
import cpw.mods.fml.relauncher.Side;
|
||||||
import cpw.mods.fml.relauncher.SideOnly;
|
import cpw.mods.fml.relauncher.SideOnly;
|
||||||
import net.minecraft.block.material.Material;
|
import net.minecraft.block.material.Material;
|
||||||
|
|||||||
@ -11,7 +11,8 @@ import com.hbm.inventory.fluid.Fluids;
|
|||||||
import com.hbm.lib.RefStrings;
|
import com.hbm.lib.RefStrings;
|
||||||
import com.hbm.render.block.RenderBlockMultipass;
|
import com.hbm.render.block.RenderBlockMultipass;
|
||||||
import com.hbm.tileentity.network.TileEntityPipeBaseNT;
|
import com.hbm.tileentity.network.TileEntityPipeBaseNT;
|
||||||
import com.hbm.util.I18nUtil;
|
import com.hbm.util.i18n.I18nUtil;
|
||||||
|
|
||||||
import cpw.mods.fml.common.Optional;
|
import cpw.mods.fml.common.Optional;
|
||||||
import cpw.mods.fml.relauncher.Side;
|
import cpw.mods.fml.relauncher.Side;
|
||||||
import cpw.mods.fml.relauncher.SideOnly;
|
import cpw.mods.fml.relauncher.SideOnly;
|
||||||
@ -154,7 +155,7 @@ public class FluidDuctGauge extends FluidDuctBase implements IBlockMultiPass, IL
|
|||||||
@Callback(direct = true)
|
@Callback(direct = true)
|
||||||
@Optional.Method(modid = "OpenComputers")
|
@Optional.Method(modid = "OpenComputers")
|
||||||
public Object[] getTransfer(Context context, Arguments args) {
|
public Object[] getTransfer(Context context, Arguments args) {
|
||||||
return new Object[] {deltaTick, deltaSecond};
|
return new Object[] {deltaTick, deltaLastSecond};
|
||||||
}
|
}
|
||||||
|
|
||||||
@Callback(direct = true)
|
@Callback(direct = true)
|
||||||
@ -166,7 +167,7 @@ public class FluidDuctGauge extends FluidDuctBase implements IBlockMultiPass, IL
|
|||||||
@Callback(direct = true)
|
@Callback(direct = true)
|
||||||
@Optional.Method(modid = "OpenComputers")
|
@Optional.Method(modid = "OpenComputers")
|
||||||
public Object[] getInfo(Context context, Arguments args) {
|
public Object[] getInfo(Context context, Arguments args) {
|
||||||
return new Object[] {deltaTick, deltaSecond, getType().getName(), xCoord, yCoord, zCoord};
|
return new Object[] {deltaTick, deltaLastSecond, getType().getName(), xCoord, yCoord, zCoord};
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@ -180,7 +181,7 @@ public class FluidDuctGauge extends FluidDuctBase implements IBlockMultiPass, IL
|
|||||||
@Override
|
@Override
|
||||||
public String provideRORValue(String name) {
|
public String provideRORValue(String name) {
|
||||||
if((PREFIX_VALUE + "deltatick").equals(name)) return "" + deltaTick;
|
if((PREFIX_VALUE + "deltatick").equals(name)) return "" + deltaTick;
|
||||||
if((PREFIX_VALUE + "deltasecond").equals(name)) return "" + deltaSecond;
|
if((PREFIX_VALUE + "deltasecond").equals(name)) return "" + deltaLastSecond;
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -7,7 +7,8 @@ import com.hbm.interfaces.ICopiable;
|
|||||||
import com.hbm.lib.RefStrings;
|
import com.hbm.lib.RefStrings;
|
||||||
import com.hbm.render.block.RenderBlockMultipass;
|
import com.hbm.render.block.RenderBlockMultipass;
|
||||||
import com.hbm.tileentity.network.TileEntityPipeBaseNT;
|
import com.hbm.tileentity.network.TileEntityPipeBaseNT;
|
||||||
import com.hbm.util.I18nUtil;
|
import com.hbm.util.i18n.I18nUtil;
|
||||||
|
|
||||||
import cpw.mods.fml.relauncher.Side;
|
import cpw.mods.fml.relauncher.Side;
|
||||||
import cpw.mods.fml.relauncher.SideOnly;
|
import cpw.mods.fml.relauncher.SideOnly;
|
||||||
import net.minecraft.block.Block;
|
import net.minecraft.block.Block;
|
||||||
|
|||||||
@ -7,7 +7,8 @@ import com.hbm.items.ModItems;
|
|||||||
import com.hbm.lib.Library;
|
import com.hbm.lib.Library;
|
||||||
import com.hbm.lib.RefStrings;
|
import com.hbm.lib.RefStrings;
|
||||||
import com.hbm.tileentity.network.TileEntityPipeBaseNT;
|
import com.hbm.tileentity.network.TileEntityPipeBaseNT;
|
||||||
import com.hbm.util.I18nUtil;
|
import com.hbm.util.i18n.I18nUtil;
|
||||||
|
|
||||||
import cpw.mods.fml.client.registry.RenderingRegistry;
|
import cpw.mods.fml.client.registry.RenderingRegistry;
|
||||||
import cpw.mods.fml.relauncher.Side;
|
import cpw.mods.fml.relauncher.Side;
|
||||||
import cpw.mods.fml.relauncher.SideOnly;
|
import cpw.mods.fml.relauncher.SideOnly;
|
||||||
|
|||||||
314
src/main/java/com/hbm/blocks/network/FluidPump.java
Normal file
314
src/main/java/com/hbm/blocks/network/FluidPump.java
Normal file
@ -0,0 +1,314 @@
|
|||||||
|
package com.hbm.blocks.network;
|
||||||
|
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
import org.lwjgl.input.Keyboard;
|
||||||
|
|
||||||
|
import com.hbm.blocks.ILookOverlay;
|
||||||
|
import com.hbm.interfaces.IControlReceiver;
|
||||||
|
import com.hbm.inventory.fluid.FluidType;
|
||||||
|
import com.hbm.inventory.fluid.Fluids;
|
||||||
|
import com.hbm.inventory.fluid.tank.FluidTank;
|
||||||
|
import com.hbm.items.machine.IItemFluidIdentifier;
|
||||||
|
import com.hbm.main.MainRegistry;
|
||||||
|
import com.hbm.packet.PacketDispatcher;
|
||||||
|
import com.hbm.packet.toserver.NBTControlPacket;
|
||||||
|
import com.hbm.tileentity.IGUIProvider;
|
||||||
|
import com.hbm.tileentity.TileEntityLoadedBase;
|
||||||
|
import com.hbm.util.BobMathUtil;
|
||||||
|
import com.hbm.util.EnumUtil;
|
||||||
|
import com.hbm.util.i18n.I18nUtil;
|
||||||
|
import com.hbm.world.gen.INBTTransformable;
|
||||||
|
|
||||||
|
import api.hbm.energymk2.IEnergyReceiverMK2.ConnectionPriority;
|
||||||
|
import api.hbm.fluidmk2.IFluidStandardTransceiverMK2;
|
||||||
|
import cpw.mods.fml.common.network.internal.FMLNetworkHandler;
|
||||||
|
import cpw.mods.fml.relauncher.Side;
|
||||||
|
import cpw.mods.fml.relauncher.SideOnly;
|
||||||
|
import io.netty.buffer.ByteBuf;
|
||||||
|
import net.minecraft.block.BlockContainer;
|
||||||
|
import net.minecraft.block.material.Material;
|
||||||
|
import net.minecraft.client.audio.PositionedSoundRecord;
|
||||||
|
import net.minecraft.client.gui.GuiButton;
|
||||||
|
import net.minecraft.client.gui.GuiScreen;
|
||||||
|
import net.minecraft.client.gui.GuiTextField;
|
||||||
|
import net.minecraft.entity.EntityLivingBase;
|
||||||
|
import net.minecraft.entity.player.EntityPlayer;
|
||||||
|
import net.minecraft.inventory.Container;
|
||||||
|
import net.minecraft.item.ItemStack;
|
||||||
|
import net.minecraft.nbt.NBTTagCompound;
|
||||||
|
import net.minecraft.tileentity.TileEntity;
|
||||||
|
import net.minecraft.util.ChatComponentText;
|
||||||
|
import net.minecraft.util.ChatComponentTranslation;
|
||||||
|
import net.minecraft.util.ChatStyle;
|
||||||
|
import net.minecraft.util.EnumChatFormatting;
|
||||||
|
import net.minecraft.util.MathHelper;
|
||||||
|
import net.minecraft.util.ResourceLocation;
|
||||||
|
import net.minecraft.world.World;
|
||||||
|
import net.minecraftforge.client.event.RenderGameOverlayEvent.Pre;
|
||||||
|
import net.minecraftforge.common.util.ForgeDirection;
|
||||||
|
|
||||||
|
public class FluidPump extends BlockContainer implements INBTTransformable, ILookOverlay, IGUIProvider {
|
||||||
|
|
||||||
|
public FluidPump(Material mat) {
|
||||||
|
super(mat);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public TileEntity createNewTileEntity(World world, int meta) {
|
||||||
|
return new TileEntityFluidPump();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override public int getRenderType() { return -1; }
|
||||||
|
@Override public boolean isOpaqueCube() { return false; }
|
||||||
|
@Override public boolean renderAsNormalBlock() { return false; }
|
||||||
|
|
||||||
|
@Override
|
||||||
|
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;
|
||||||
|
|
||||||
|
if(i == 0) world.setBlockMetadataWithNotify(x, y, z, 2, 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
|
||||||
|
public boolean onBlockActivated(World world, int x, int y, int z, EntityPlayer player, int side, float fX, float fY, float fZ) {
|
||||||
|
|
||||||
|
if(!player.isSneaking()) {
|
||||||
|
if(player.getHeldItem() != null && player.getHeldItem().getItem() instanceof IItemFluidIdentifier) {
|
||||||
|
IItemFluidIdentifier id = (IItemFluidIdentifier) player.getHeldItem().getItem();
|
||||||
|
FluidType type = id.getType(world, x, y, z, player.getHeldItem());
|
||||||
|
TileEntity tile = world.getTileEntity(x, y, z);
|
||||||
|
if(tile instanceof TileEntityFluidPump) {
|
||||||
|
if(!world.isRemote) {
|
||||||
|
TileEntityFluidPump pump = (TileEntityFluidPump) tile;
|
||||||
|
pump.tank[0].setTankType(type);
|
||||||
|
pump.markDirty();
|
||||||
|
player.addChatComponentMessage(new ChatComponentText("Changed type to ").setChatStyle(new ChatStyle().setColor(EnumChatFormatting.YELLOW)).appendSibling(new ChatComponentTranslation(type.getConditionalName())).appendSibling(new ChatComponentText("!")));
|
||||||
|
}
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if(world.isRemote) FMLNetworkHandler.openGui(player, MainRegistry.instance, 0, world, x, y, z);
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override @SideOnly(Side.CLIENT)
|
||||||
|
public Object provideGUI(int ID, EntityPlayer player, World world, int x, int y, int z) { return new GUIPump((TileEntityFluidPump) world.getTileEntity(x, y, z)); }
|
||||||
|
@Override
|
||||||
|
public Container provideContainer(int ID, EntityPlayer player, World world, int x, int y, int z) { return null; }
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void printHook(Pre event, World world, int x, int y, int z) {
|
||||||
|
TileEntity tile = world.getTileEntity(x, y, z);
|
||||||
|
if(!(tile instanceof TileEntityFluidPump)) return;
|
||||||
|
TileEntityFluidPump pump = (TileEntityFluidPump) tile;
|
||||||
|
|
||||||
|
List<String> text = new ArrayList();
|
||||||
|
text.add(EnumChatFormatting.GREEN + "-> " + EnumChatFormatting.RESET + pump.tank[0].getTankType().getLocalizedName() + " (" + pump.tank[0].getPressure() + " PU): " + BobMathUtil.format(pump.bufferSize) + "mB/t" + EnumChatFormatting.RED + " ->");
|
||||||
|
text.add("Priority: " + EnumChatFormatting.YELLOW + pump.priority.name());
|
||||||
|
if(pump.tank[0].getFill() > 0) text.add(BobMathUtil.format(pump.tank[0].getFill()) + "mB buffered");
|
||||||
|
ILookOverlay.printGeneric(event, I18nUtil.resolveKey(getUnlocalizedName() + ".name"), 0xffff00, 0x404000, text);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public int transformMeta(int meta, int coordBaseMode) {
|
||||||
|
return INBTTransformable.transformMetaDeco(meta, coordBaseMode);
|
||||||
|
}
|
||||||
|
|
||||||
|
public static class TileEntityFluidPump extends TileEntityLoadedBase implements IFluidStandardTransceiverMK2, IControlReceiver {
|
||||||
|
|
||||||
|
public int bufferSize = 100;
|
||||||
|
public FluidTank[] tank;
|
||||||
|
public ConnectionPriority priority = ConnectionPriority.NORMAL;
|
||||||
|
public boolean redstone = false;
|
||||||
|
|
||||||
|
public TileEntityFluidPump() {
|
||||||
|
this.tank = new FluidTank[1];
|
||||||
|
this.tank[0] = new FluidTank(Fluids.NONE, bufferSize);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void updateEntity() {
|
||||||
|
|
||||||
|
if(!worldObj.isRemote) {
|
||||||
|
|
||||||
|
// if the capacity were changed directly, any excess buffered fluid would be destroyed
|
||||||
|
// when running a closed loop or handling hard to get fluids, that's quite bad
|
||||||
|
if(this.bufferSize != this.tank[0].getMaxFill()) {
|
||||||
|
int nextBuffer = Math.max(this.tank[0].getFill(), this.bufferSize);
|
||||||
|
this.tank[0].changeTankSize(nextBuffer);
|
||||||
|
}
|
||||||
|
|
||||||
|
this.redstone = worldObj.isBlockIndirectlyGettingPowered(xCoord, yCoord, zCoord);
|
||||||
|
|
||||||
|
ForgeDirection dir = ForgeDirection.getOrientation(this.getBlockMetadata());
|
||||||
|
ForgeDirection in = dir.getRotation(ForgeDirection.UP);
|
||||||
|
ForgeDirection out = in.getOpposite();
|
||||||
|
|
||||||
|
this.trySubscribe(tank[0].getTankType(), worldObj, xCoord + in.offsetX, yCoord, zCoord + in.offsetZ, in);
|
||||||
|
if(!redstone) this.tryProvide(tank[0], worldObj, xCoord + out.offsetX, yCoord, zCoord + out.offsetZ, out);
|
||||||
|
|
||||||
|
this.networkPackNT(15);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void writeToNBT(NBTTagCompound nbt) {
|
||||||
|
super.writeToNBT(nbt);
|
||||||
|
tank[0].writeToNBT(nbt, "t");
|
||||||
|
nbt.setByte("p", (byte) priority.ordinal());
|
||||||
|
nbt.setInteger("buffer", bufferSize);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void readFromNBT(NBTTagCompound nbt) {
|
||||||
|
super.readFromNBT(nbt);
|
||||||
|
tank[0].readFromNBT(nbt, "t");
|
||||||
|
priority = EnumUtil.grabEnumSafely(ConnectionPriority.class, nbt.getByte("p"));
|
||||||
|
bufferSize = nbt.getInteger("buffer");
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void serialize(ByteBuf buf) {
|
||||||
|
super.serialize(buf);
|
||||||
|
tank[0].serialize(buf);
|
||||||
|
buf.writeByte((byte) priority.ordinal());
|
||||||
|
buf.writeInt(bufferSize);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void deserialize(ByteBuf buf) {
|
||||||
|
super.deserialize(buf);
|
||||||
|
tank[0].deserialize(buf);
|
||||||
|
priority = EnumUtil.grabEnumSafely(ConnectionPriority.class, buf.readByte());
|
||||||
|
bufferSize = buf.readInt();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override public ConnectionPriority getFluidPriority() { return priority; }
|
||||||
|
@Override public FluidTank[] getSendingTanks() { return redstone ? new FluidTank[0] : tank; }
|
||||||
|
@Override public FluidTank[] getReceivingTanks() { return this.bufferSize < this.tank[0].getFill() ? new FluidTank[0] : tank; }
|
||||||
|
@Override public FluidTank[] getAllTanks() { return tank; }
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean hasPermission(EntityPlayer player) {
|
||||||
|
return player.getDistanceSq(xCoord + 0.5D, yCoord + 0.5D, zCoord + 0.5D) <= 128;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void receiveControl(NBTTagCompound data) {
|
||||||
|
if(data.hasKey("capacity")) {
|
||||||
|
this.bufferSize = MathHelper.clamp_int(data.getInteger("capacity"), 0, 10_000);
|
||||||
|
}
|
||||||
|
if(data.hasKey("pressure")) {
|
||||||
|
this.tank[0].withPressure(MathHelper.clamp_int(data.getByte("pressure"), 0, 5));
|
||||||
|
}
|
||||||
|
if(data.hasKey("priority")) {
|
||||||
|
priority = EnumUtil.grabEnumSafely(ConnectionPriority.class, data.getByte("priority"));
|
||||||
|
}
|
||||||
|
|
||||||
|
this.markDirty();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public static class GUIPump extends GuiScreen {
|
||||||
|
|
||||||
|
protected final TileEntityFluidPump pump;
|
||||||
|
|
||||||
|
private GuiTextField textPlacementPriority;
|
||||||
|
private GuiButton buttonPressure;
|
||||||
|
private GuiButton buttonPriority;
|
||||||
|
private int pressure;
|
||||||
|
private int priority;
|
||||||
|
|
||||||
|
public GUIPump(TileEntityFluidPump pump) {
|
||||||
|
this.pump = pump;
|
||||||
|
this.pressure = pump.tank[0].getPressure();
|
||||||
|
this.priority = pump.priority.ordinal();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void initGui() {
|
||||||
|
Keyboard.enableRepeatEvents(true);
|
||||||
|
|
||||||
|
textPlacementPriority = new GuiTextField(fontRendererObj, this.width / 2 - 150, 100, 90, 20);
|
||||||
|
textPlacementPriority.setText("" + pump.bufferSize);
|
||||||
|
textPlacementPriority.setMaxStringLength(5);
|
||||||
|
|
||||||
|
buttonPressure = new GuiButton(0, this.width / 2 - 50, 100, 90, 20, pressure + " PU");
|
||||||
|
|
||||||
|
buttonPriority = new GuiButton(1, this.width / 2 + 50, 100, 90, 20, pump.priority.name());
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void drawScreen(int mouseX, int mouseY, float partialTicks) {
|
||||||
|
drawDefaultBackground();
|
||||||
|
|
||||||
|
drawString(fontRendererObj, "Throughput:", this.width / 2 - 150, 80, 0xA0A0A0);
|
||||||
|
drawString(fontRendererObj, "(max. 10,000mB)", this.width / 2 - 150, 90, 0xA0A0A0);
|
||||||
|
textPlacementPriority.drawTextBox();
|
||||||
|
|
||||||
|
drawString(fontRendererObj, "Pressure:", this.width / 2 - 50, 80, 0xA0A0A0);
|
||||||
|
buttonPressure.drawButton(mc, mouseX, mouseY);
|
||||||
|
|
||||||
|
drawString(fontRendererObj, "Priority:", this.width / 2 + 50, 80, 0xA0A0A0);
|
||||||
|
buttonPriority.drawButton(mc, mouseX, mouseY);
|
||||||
|
|
||||||
|
super.drawScreen(mouseX, mouseY, partialTicks);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onGuiClosed() {
|
||||||
|
Keyboard.enableRepeatEvents(false);
|
||||||
|
|
||||||
|
NBTTagCompound data = new NBTTagCompound();
|
||||||
|
|
||||||
|
data.setByte("pressure", (byte) pressure);
|
||||||
|
data.setByte("priority", (byte) priority);
|
||||||
|
|
||||||
|
try { data.setInteger("capacity", Integer.parseInt(textPlacementPriority.getText())); } catch(Exception ex) {}
|
||||||
|
|
||||||
|
PacketDispatcher.wrapper.sendToServer(new NBTControlPacket(data, pump.xCoord, pump.yCoord, pump.zCoord));
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected void keyTyped(char typedChar, int keyCode) {
|
||||||
|
super.keyTyped(typedChar, keyCode);
|
||||||
|
if(textPlacementPriority.textboxKeyTyped(typedChar, keyCode)) return;
|
||||||
|
|
||||||
|
if(keyCode == 1 || keyCode == this.mc.gameSettings.keyBindInventory.getKeyCode()) {
|
||||||
|
this.mc.thePlayer.closeScreen();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected void mouseClicked(int mouseX, int mouseY, int mouseButton) {
|
||||||
|
super.mouseClicked(mouseX, mouseY, mouseButton);
|
||||||
|
textPlacementPriority.mouseClicked(mouseX, mouseY, mouseButton);
|
||||||
|
|
||||||
|
if(buttonPressure.mousePressed(mc, mouseX, mouseY)) {
|
||||||
|
this.pressure++;
|
||||||
|
if(pressure > 5) pressure = 0;
|
||||||
|
buttonPressure.displayString = pressure + " PU";
|
||||||
|
mc.getSoundHandler().playSound(PositionedSoundRecord.func_147674_a(new ResourceLocation("gui.button.press"), 1.0F));
|
||||||
|
}
|
||||||
|
|
||||||
|
if(buttonPriority.mousePressed(mc, mouseX, mouseY)) {
|
||||||
|
this.priority++;
|
||||||
|
if(priority >= ConnectionPriority.values().length) priority = 0;
|
||||||
|
buttonPriority.displayString = EnumUtil.grabEnumSafely(ConnectionPriority.class, priority).name();
|
||||||
|
mc.getSoundHandler().playSound(PositionedSoundRecord.func_147674_a(new ResourceLocation("gui.button.press"), 1.0F));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override public boolean doesGuiPauseGame() { return false; }
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -3,7 +3,8 @@ package com.hbm.blocks.network;
|
|||||||
import com.hbm.blocks.ILookOverlay;
|
import com.hbm.blocks.ILookOverlay;
|
||||||
import com.hbm.lib.RefStrings;
|
import com.hbm.lib.RefStrings;
|
||||||
import com.hbm.tileentity.network.TileEntityFluidValve;
|
import com.hbm.tileentity.network.TileEntityFluidValve;
|
||||||
import com.hbm.util.I18nUtil;
|
import com.hbm.util.i18n.I18nUtil;
|
||||||
|
|
||||||
import cpw.mods.fml.relauncher.Side;
|
import cpw.mods.fml.relauncher.Side;
|
||||||
import cpw.mods.fml.relauncher.SideOnly;
|
import cpw.mods.fml.relauncher.SideOnly;
|
||||||
import net.minecraft.block.Block;
|
import net.minecraft.block.Block;
|
||||||
|
|||||||
@ -3,7 +3,8 @@ package com.hbm.blocks.network;
|
|||||||
import com.hbm.blocks.ILookOverlay;
|
import com.hbm.blocks.ILookOverlay;
|
||||||
import com.hbm.lib.RefStrings;
|
import com.hbm.lib.RefStrings;
|
||||||
import com.hbm.tileentity.network.TileEntityFluidValve;
|
import com.hbm.tileentity.network.TileEntityFluidValve;
|
||||||
import com.hbm.util.I18nUtil;
|
import com.hbm.util.i18n.I18nUtil;
|
||||||
|
|
||||||
import cpw.mods.fml.relauncher.Side;
|
import cpw.mods.fml.relauncher.Side;
|
||||||
import cpw.mods.fml.relauncher.SideOnly;
|
import cpw.mods.fml.relauncher.SideOnly;
|
||||||
import net.minecraft.block.material.Material;
|
import net.minecraft.block.material.Material;
|
||||||
|
|||||||
@ -7,7 +7,7 @@ import com.hbm.blocks.ILookOverlay;
|
|||||||
import com.hbm.inventory.gui.GUIScreenRadioTorchController;
|
import com.hbm.inventory.gui.GUIScreenRadioTorchController;
|
||||||
import com.hbm.tileentity.network.TileEntityRadioTorchController;
|
import com.hbm.tileentity.network.TileEntityRadioTorchController;
|
||||||
import com.hbm.util.Compat;
|
import com.hbm.util.Compat;
|
||||||
import com.hbm.util.I18nUtil;
|
import com.hbm.util.i18n.I18nUtil;
|
||||||
|
|
||||||
import api.hbm.redstoneoverradio.IRORInteractive;
|
import api.hbm.redstoneoverradio.IRORInteractive;
|
||||||
import cpw.mods.fml.relauncher.Side;
|
import cpw.mods.fml.relauncher.Side;
|
||||||
|
|||||||
@ -6,7 +6,8 @@ import com.hbm.inventory.gui.GUICounterTorch;
|
|||||||
import com.hbm.main.MainRegistry;
|
import com.hbm.main.MainRegistry;
|
||||||
import com.hbm.tileentity.network.TileEntityRadioTorchCounter;
|
import com.hbm.tileentity.network.TileEntityRadioTorchCounter;
|
||||||
import com.hbm.util.Compat;
|
import com.hbm.util.Compat;
|
||||||
import com.hbm.util.I18nUtil;
|
import com.hbm.util.i18n.I18nUtil;
|
||||||
|
|
||||||
import cpw.mods.fml.common.network.internal.FMLNetworkHandler;
|
import cpw.mods.fml.common.network.internal.FMLNetworkHandler;
|
||||||
import cpw.mods.fml.relauncher.Side;
|
import cpw.mods.fml.relauncher.Side;
|
||||||
import cpw.mods.fml.relauncher.SideOnly;
|
import cpw.mods.fml.relauncher.SideOnly;
|
||||||
|
|||||||
@ -4,7 +4,8 @@ import com.hbm.blocks.ILookOverlay;
|
|||||||
import com.hbm.inventory.gui.GUIScreenRadioTorchLogic;
|
import com.hbm.inventory.gui.GUIScreenRadioTorchLogic;
|
||||||
import com.hbm.lib.RefStrings;
|
import com.hbm.lib.RefStrings;
|
||||||
import com.hbm.tileentity.network.TileEntityRadioTorchLogic;
|
import com.hbm.tileentity.network.TileEntityRadioTorchLogic;
|
||||||
import com.hbm.util.I18nUtil;
|
import com.hbm.util.i18n.I18nUtil;
|
||||||
|
|
||||||
import cpw.mods.fml.relauncher.Side;
|
import cpw.mods.fml.relauncher.Side;
|
||||||
import cpw.mods.fml.relauncher.SideOnly;
|
import cpw.mods.fml.relauncher.SideOnly;
|
||||||
import net.minecraft.client.renderer.texture.IIconRegister;
|
import net.minecraft.client.renderer.texture.IIconRegister;
|
||||||
|
|||||||
Some files were not shown because too many files have changed in this diff Show More
Loading…
x
Reference in New Issue
Block a user