fix wires
This commit is contained in:
parent
4e16421651
commit
03fbf90a68
15 changed files with 461 additions and 958 deletions
|
@ -24,28 +24,18 @@ import common.world.State;
|
|||
import common.world.World;
|
||||
import common.world.AWorldServer;
|
||||
|
||||
public class BlockTripWireHook extends Block implements Rotatable
|
||||
public class BlockHook extends Block implements Rotatable
|
||||
{
|
||||
public static final PropertyBool POWERED = PropertyBool.create("powered");
|
||||
public static final PropertyBool TRIGGERED = PropertyBool.create("triggered");
|
||||
public static final PropertyBool ATTACHED = PropertyBool.create("attached");
|
||||
public static final PropertyBool SUSPENDED = PropertyBool.create("suspended");
|
||||
|
||||
public BlockTripWireHook()
|
||||
public BlockHook()
|
||||
{
|
||||
super(Material.SMALL);
|
||||
this.setDefaultState(this.getBaseState().withProperty(FACING, Facing.NORTH).withProperty(POWERED, Boolean.valueOf(false)).withProperty(ATTACHED, Boolean.valueOf(false)).withProperty(SUSPENDED, Boolean.valueOf(false)));
|
||||
this.setDefaultState(this.getBaseState().withProperty(FACING, Facing.NORTH).withProperty(TRIGGERED, Boolean.valueOf(false)).withProperty(ATTACHED, Boolean.valueOf(false)));
|
||||
this.setTab(CheatTab.TECHNOLOGY);
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the actual Block state of this Block at the given position. This applies properties not visible in the
|
||||
* metadata, such as fence connections.
|
||||
*/
|
||||
public State getState(State state, IWorldAccess worldIn, BlockPos pos)
|
||||
{
|
||||
return state.withProperty(SUSPENDED, Boolean.valueOf(!World.isSolidSurface(worldIn.getState(pos.down()))));
|
||||
}
|
||||
|
||||
public BoundingBox getCollisionBox(World worldIn, BlockPos pos, State state)
|
||||
{
|
||||
return null;
|
||||
|
@ -91,7 +81,7 @@ public class BlockTripWireHook extends Block implements Rotatable
|
|||
*/
|
||||
public State getPlacedState(World worldIn, BlockPos pos, Facing facing, float hitX, float hitY, float hitZ, EntityLiving placer)
|
||||
{
|
||||
State iblockstate = this.getState().withProperty(POWERED, Boolean.valueOf(false)).withProperty(ATTACHED, Boolean.valueOf(false)).withProperty(SUSPENDED, Boolean.valueOf(false));
|
||||
State iblockstate = this.getState().withProperty(TRIGGERED, Boolean.valueOf(false)).withProperty(ATTACHED, Boolean.valueOf(false));
|
||||
|
||||
if (facing.getAxis().isHorizontal())
|
||||
{
|
||||
|
@ -134,8 +124,7 @@ public class BlockTripWireHook extends Block implements Rotatable
|
|||
{
|
||||
Facing enumfacing = (Facing)hookState.getValue(FACING);
|
||||
boolean attached = ((Boolean)hookState.getValue(ATTACHED)).booleanValue();
|
||||
boolean powered = ((Boolean)hookState.getValue(POWERED)).booleanValue();
|
||||
boolean floating = !worldIn.isBlockSolid(pos.down());
|
||||
boolean powered = ((Boolean)hookState.getValue(TRIGGERED)).booleanValue();
|
||||
boolean nowAttached = !removed;
|
||||
boolean nowPowered = false;
|
||||
int i = 0;
|
||||
|
@ -146,7 +135,7 @@ public class BlockTripWireHook extends Block implements Rotatable
|
|||
BlockPos blockpos = pos.offset(enumfacing, j);
|
||||
State iblockstate = worldIn.getState(blockpos);
|
||||
|
||||
if (iblockstate.getBlock() == Blocks.tripwire_hook)
|
||||
if (iblockstate.getBlock() instanceof BlockHook)
|
||||
{
|
||||
if (iblockstate.getValue(FACING) == enumfacing.getOpposite())
|
||||
{
|
||||
|
@ -156,7 +145,7 @@ public class BlockTripWireHook extends Block implements Rotatable
|
|||
break;
|
||||
}
|
||||
|
||||
if (iblockstate.getBlock() != Blocks.string && j != wireDist)
|
||||
if (!(iblockstate.getBlock() instanceof BlockString) && j != wireDist)
|
||||
{
|
||||
aiblockstate[j] = null;
|
||||
nowAttached = false;
|
||||
|
@ -168,24 +157,20 @@ public class BlockTripWireHook extends Block implements Rotatable
|
|||
iblockstate = wireState == null ? iblockstate : wireState; // (State)Objects.firstNonNull(wireState, iblockstate);
|
||||
}
|
||||
|
||||
boolean flag5 = !((Boolean)iblockstate.getValue(BlockTripWire.DISARMED)).booleanValue();
|
||||
boolean flag6 = ((Boolean)iblockstate.getValue(BlockTripWire.POWERED)).booleanValue();
|
||||
boolean flag7 = ((Boolean)iblockstate.getValue(BlockTripWire.SUSPENDED)).booleanValue();
|
||||
nowAttached &= flag7 == floating;
|
||||
nowPowered |= flag5 && flag6;
|
||||
boolean flag6 = ((Boolean)iblockstate.getValue(BlockString.TOUCHED)).booleanValue();
|
||||
nowPowered |= flag6;
|
||||
aiblockstate[j] = iblockstate;
|
||||
|
||||
if (j == wireDist)
|
||||
{
|
||||
worldIn.scheduleUpdate(pos, this, this.tickRate(worldIn, pos));
|
||||
nowAttached &= flag5;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
nowAttached = nowAttached & i > 1;
|
||||
nowPowered = nowPowered & nowAttached;
|
||||
State iblockstate1 = this.getState().withProperty(ATTACHED, Boolean.valueOf(nowAttached)).withProperty(POWERED, Boolean.valueOf(nowPowered));
|
||||
State iblockstate1 = this.getState().withProperty(ATTACHED, Boolean.valueOf(nowAttached)).withProperty(TRIGGERED, Boolean.valueOf(nowPowered));
|
||||
|
||||
if (i > 0)
|
||||
{
|
||||
|
@ -215,7 +200,7 @@ public class BlockTripWireHook extends Block implements Rotatable
|
|||
BlockPos blockpos2 = pos.offset(enumfacing, k);
|
||||
State iblockstate2 = aiblockstate[k];
|
||||
|
||||
if (iblockstate2 != null && worldIn.getState(blockpos2).getBlock() != Blocks.air)
|
||||
if (iblockstate2 != null && worldIn.getState(blockpos2).getBlock() instanceof BlockHook)
|
||||
{
|
||||
worldIn.setState(blockpos2, iblockstate2.withProperty(ATTACHED, Boolean.valueOf(nowAttached)), 3);
|
||||
}
|
||||
|
@ -295,7 +280,7 @@ public class BlockTripWireHook extends Block implements Rotatable
|
|||
public void onRemoved(AWorldServer worldIn, BlockPos pos, State state)
|
||||
{
|
||||
boolean flag = ((Boolean)state.getValue(ATTACHED)).booleanValue();
|
||||
boolean flag1 = ((Boolean)state.getValue(POWERED)).booleanValue();
|
||||
boolean flag1 = ((Boolean)state.getValue(TRIGGERED)).booleanValue();
|
||||
|
||||
if (flag || flag1)
|
||||
{
|
||||
|
@ -313,7 +298,7 @@ public class BlockTripWireHook extends Block implements Rotatable
|
|||
|
||||
@Serverside
|
||||
public double getResistance(AWorldServer worldIn, BlockPos pos, State state) {
|
||||
return state.getValue(POWERED) ? 0.0 : super.getResistance(worldIn, pos, state);
|
||||
return state.getValue(TRIGGERED) ? 0.0 : super.getResistance(worldIn, pos, state);
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -331,7 +316,7 @@ public class BlockTripWireHook extends Block implements Rotatable
|
|||
|
||||
protected Property[] getProperties()
|
||||
{
|
||||
return new Property[] {FACING, POWERED, ATTACHED, SUSPENDED};
|
||||
return new Property[] {FACING, TRIGGERED, ATTACHED};
|
||||
}
|
||||
|
||||
public boolean isMagnetic() {
|
||||
|
@ -341,165 +326,87 @@ public class BlockTripWireHook extends Block implements Rotatable
|
|||
public Model getModel(ModelProvider provider, String name, State state) {
|
||||
Model model;
|
||||
if(state.getValue(ATTACHED)) {
|
||||
if(state.getValue(SUSPENDED)) {
|
||||
if(state.getValue(POWERED))
|
||||
model = provider.getModel("oak_planks")
|
||||
.add(7.75f, 2.5f, 0, 8.25f, 2.5f, 6.7f).rotate(8, 0, 0, Facing.Axis.X, -22.5f, true)
|
||||
.d("trip_wire").uv(0, 8, 16, 6).rot(90).noCull()
|
||||
.u("trip_wire").uv(0, 6, 16, 8).rot(90).noCull()
|
||||
.add(6.2f, 4.2f, 6.7f, 9.8f, 5, 10.3f)
|
||||
.d("tripwire_hook").uv(5, 3, 11, 9).noCull()
|
||||
.u("tripwire_hook").uv(5, 3, 11, 9).noCull()
|
||||
.n("tripwire_hook").uv(5, 3, 11, 4).noCull()
|
||||
.s("tripwire_hook").uv(5, 8, 11, 9).noCull()
|
||||
.w("tripwire_hook").uv(5, 8, 11, 9).noCull()
|
||||
.e("tripwire_hook").uv(5, 3, 11, 4).noCull()
|
||||
.add(7.4f, 4.2f, 9.1f, 8.6f, 5, 9.1f)
|
||||
.n("tripwire_hook").uv(7, 8, 9, 9).noCull()
|
||||
.add(7.4f, 4.2f, 7.9f, 8.6f, 5, 7.9f)
|
||||
.s("tripwire_hook").uv(7, 3, 9, 4).noCull()
|
||||
.add(7.4f, 4.2f, 7.9f, 7.4f, 5, 9.1f)
|
||||
.e("tripwire_hook").uv(7, 8, 9, 9).noCull()
|
||||
.add(8.6f, 4.2f, 7.9f, 8.6f, 5, 9.1f)
|
||||
.w("tripwire_hook").uv(7, 3, 9, 4).noCull()
|
||||
.add(7.4f, 5.2f, 10, 8.8f, 6.8f, 14).rotate(8, 6, 14, Facing.Axis.X, -22.5f, false)
|
||||
.d().uv(7, 9, 9, 14).noCull()
|
||||
.u().uv(7, 2, 9, 7).noCull()
|
||||
.n().uv(7, 9, 9, 11).noCull()
|
||||
.s().uv(7, 9, 9, 11).noCull()
|
||||
.w().uv(2, 9, 7, 11).noCull()
|
||||
.e().uv(9, 9, 14, 11).noCull()
|
||||
.add(6, 1, 14, 10, 9, 16)
|
||||
.d().uv(6, 14, 10, 16).noCull()
|
||||
.u().uv(6, 0, 10, 2).noCull()
|
||||
.n().uv(6, 7, 10, 15)
|
||||
.s().uv(6, 7, 10, 15).noCull()
|
||||
.w().uv(0, 7, 2, 15).noCull()
|
||||
.e().uv(14, 7, 16, 15).noCull();
|
||||
else
|
||||
model = provider.getModel("oak_planks")
|
||||
.add(7.75f, 3.5f, 0, 8.25f, 3.5f, 6.7f).rotate(8, 0, 0, Facing.Axis.X, -22.5f, true)
|
||||
.d("trip_wire").uv(0, 8, 16, 6).rot(90).noCull()
|
||||
.u("trip_wire").uv(0, 6, 16, 8).rot(90).noCull()
|
||||
.add(6.2f, 4.2f, 6.7f, 9.8f, 5, 10.3f)
|
||||
.d("tripwire_hook").uv(5, 3, 11, 9).noCull()
|
||||
.u("tripwire_hook").uv(5, 3, 11, 9).noCull()
|
||||
.n("tripwire_hook").uv(5, 3, 11, 4).noCull()
|
||||
.s("tripwire_hook").uv(5, 8, 11, 9).noCull()
|
||||
.w("tripwire_hook").uv(5, 8, 11, 9).noCull()
|
||||
.e("tripwire_hook").uv(5, 3, 11, 4).noCull()
|
||||
.add(7.4f, 4.2f, 9.1f, 8.6f, 5, 9.1f)
|
||||
.n("tripwire_hook").uv(7, 8, 9, 9).noCull()
|
||||
.add(7.4f, 4.2f, 7.9f, 8.6f, 5, 7.9f)
|
||||
.s("tripwire_hook").uv(7, 3, 9, 4).noCull()
|
||||
.add(7.4f, 4.2f, 7.9f, 7.4f, 5, 9.1f)
|
||||
.e("tripwire_hook").uv(7, 8, 9, 9).noCull()
|
||||
.add(8.6f, 4.2f, 7.9f, 8.6f, 5, 9.1f)
|
||||
.w("tripwire_hook").uv(7, 3, 9, 4).noCull()
|
||||
.add(7.4f, 5.2f, 10, 8.8f, 6.8f, 14).rotate(8, 6, 14, Facing.Axis.X, -22.5f, false)
|
||||
.d().uv(7, 9, 9, 14).noCull()
|
||||
.u().uv(7, 2, 9, 7).noCull()
|
||||
.n().uv(7, 9, 9, 11).noCull()
|
||||
.s().uv(7, 9, 9, 11).noCull()
|
||||
.w().uv(2, 9, 7, 11).noCull()
|
||||
.e().uv(9, 9, 14, 11).noCull()
|
||||
.add(6, 1, 14, 10, 9, 16)
|
||||
.d().uv(6, 14, 10, 16).noCull()
|
||||
.u().uv(6, 0, 10, 2).noCull()
|
||||
.n().uv(6, 7, 10, 15)
|
||||
.s().uv(6, 7, 10, 15).noCull()
|
||||
.w().uv(0, 7, 2, 15).noCull()
|
||||
.e().uv(14, 7, 16, 15).noCull();
|
||||
}
|
||||
else {
|
||||
if(state.getValue(POWERED))
|
||||
model = provider.getModel("oak_planks")
|
||||
.add(7.75f, 0.5f, 0, 8.25f, 0.5f, 6.7f).rotate(8, 0, 0, Facing.Axis.X, -22.5f, true)
|
||||
.d("trip_wire").uv(0, 8, 16, 6).rot(90).noCull()
|
||||
.u("trip_wire").uv(0, 6, 16, 8).rot(90).noCull()
|
||||
.add(6.2f, 4.2f, 6.7f, 9.8f, 5, 10.3f)
|
||||
.d("tripwire_hook").uv(5, 3, 11, 9).noCull()
|
||||
.u("tripwire_hook").uv(5, 3, 11, 9).noCull()
|
||||
.n("tripwire_hook").uv(5, 3, 11, 4).noCull()
|
||||
.s("tripwire_hook").uv(5, 8, 11, 9).noCull()
|
||||
.w("tripwire_hook").uv(5, 8, 11, 9).noCull()
|
||||
.e("tripwire_hook").uv(5, 3, 11, 4).noCull()
|
||||
.add(7.4f, 4.2f, 9.1f, 8.6f, 5, 9.1f)
|
||||
.n("tripwire_hook").uv(7, 8, 9, 9).noCull()
|
||||
.add(7.4f, 4.2f, 7.9f, 8.6f, 5, 7.9f)
|
||||
.s("tripwire_hook").uv(7, 3, 9, 4).noCull()
|
||||
.add(7.4f, 4.2f, 7.9f, 7.4f, 5, 9.1f)
|
||||
.e("tripwire_hook").uv(7, 8, 9, 9).noCull()
|
||||
.add(8.6f, 4.2f, 7.9f, 8.6f, 5, 9.1f)
|
||||
.w("tripwire_hook").uv(7, 3, 9, 4).noCull()
|
||||
.add(7.4f, 5.2f, 10, 8.8f, 6.8f, 14).rotate(8, 6, 14, Facing.Axis.X, -22.5f, false)
|
||||
.d().uv(7, 9, 9, 14).noCull()
|
||||
.u().uv(7, 2, 9, 7).noCull()
|
||||
.n().uv(7, 9, 9, 11).noCull()
|
||||
.s().uv(7, 9, 9, 11).noCull()
|
||||
.w().uv(2, 9, 7, 11).noCull()
|
||||
.e().uv(9, 9, 14, 11).noCull()
|
||||
.add(6, 1, 14, 10, 9, 16)
|
||||
.d().uv(6, 14, 10, 16).noCull()
|
||||
.u().uv(6, 0, 10, 2).noCull()
|
||||
.n().uv(6, 7, 10, 15)
|
||||
.s().uv(6, 7, 10, 15).noCull()
|
||||
.w().uv(0, 7, 2, 15).noCull()
|
||||
.e().uv(14, 7, 16, 15).noCull();
|
||||
else
|
||||
model = provider.getModel("oak_planks")
|
||||
.add(7.75f, 1.5f, 0, 8.25f, 1.5f, 6.7f).rotate(8, 0, 0, Facing.Axis.X, -22.5f, true)
|
||||
.d("trip_wire").uv(0, 8, 16, 6).rot(90).noCull()
|
||||
.u("trip_wire").uv(0, 6, 16, 8).rot(90).noCull()
|
||||
.add(6.2f, 4.2f, 6.7f, 9.8f, 5, 10.3f)
|
||||
.d("tripwire_hook").uv(5, 3, 11, 9).noCull()
|
||||
.u("tripwire_hook").uv(5, 3, 11, 9).noCull()
|
||||
.n("tripwire_hook").uv(5, 3, 11, 4).noCull()
|
||||
.s("tripwire_hook").uv(5, 8, 11, 9).noCull()
|
||||
.w("tripwire_hook").uv(5, 8, 11, 9).noCull()
|
||||
.e("tripwire_hook").uv(5, 3, 11, 4).noCull()
|
||||
.add(7.4f, 4.2f, 9.1f, 8.6f, 5, 9.1f)
|
||||
.n("tripwire_hook").uv(7, 8, 9, 9).noCull()
|
||||
.add(7.4f, 4.2f, 7.9f, 8.6f, 5, 7.9f)
|
||||
.s("tripwire_hook").uv(7, 3, 9, 4).noCull()
|
||||
.add(7.4f, 4.2f, 7.9f, 7.4f, 5, 9.1f)
|
||||
.e("tripwire_hook").uv(7, 8, 9, 9).noCull()
|
||||
.add(8.6f, 4.2f, 7.9f, 8.6f, 5, 9.1f)
|
||||
.w("tripwire_hook").uv(7, 3, 9, 4).noCull()
|
||||
.add(7.4f, 5.2f, 10, 8.8f, 6.8f, 14)
|
||||
.d().uv(7, 9, 9, 14).noCull()
|
||||
.u().uv(7, 2, 9, 7).noCull()
|
||||
.n().uv(7, 9, 9, 11).noCull()
|
||||
.s().uv(7, 9, 9, 11).noCull()
|
||||
.w().uv(2, 9, 7, 11).noCull()
|
||||
.e().uv(9, 9, 14, 11).noCull()
|
||||
.add(6, 1, 14, 10, 9, 16)
|
||||
.d().uv(6, 14, 10, 16).noCull()
|
||||
.u().uv(6, 0, 10, 2).noCull()
|
||||
.n().uv(6, 7, 10, 15)
|
||||
.s().uv(6, 7, 10, 15).noCull()
|
||||
.w().uv(0, 7, 2, 15).noCull()
|
||||
.e().uv(14, 7, 16, 15).noCull();
|
||||
}
|
||||
if(state.getValue(TRIGGERED))
|
||||
model = provider.getModel("oak_planks")
|
||||
.add(6.2f, 4.2f, 6.7f, 9.8f, 5, 10.3f)
|
||||
.d(name).uv(5, 3, 11, 9).noCull()
|
||||
.u(name).uv(5, 3, 11, 9).noCull()
|
||||
.n(name).uv(5, 3, 11, 4).noCull()
|
||||
.s(name).uv(5, 8, 11, 9).noCull()
|
||||
.w(name).uv(5, 8, 11, 9).noCull()
|
||||
.e(name).uv(5, 3, 11, 4).noCull()
|
||||
.add(7.4f, 4.2f, 9.1f, 8.6f, 5, 9.1f)
|
||||
.n(name).uv(7, 8, 9, 9).noCull()
|
||||
.add(7.4f, 4.2f, 7.9f, 8.6f, 5, 7.9f)
|
||||
.s(name).uv(7, 3, 9, 4).noCull()
|
||||
.add(7.4f, 4.2f, 7.9f, 7.4f, 5, 9.1f)
|
||||
.e(name).uv(7, 8, 9, 9).noCull()
|
||||
.add(8.6f, 4.2f, 7.9f, 8.6f, 5, 9.1f)
|
||||
.w(name).uv(7, 3, 9, 4).noCull()
|
||||
.add(7.4f, 5.2f, 10, 8.8f, 6.8f, 14).rotate(8, 6, 14, Facing.Axis.X, -22.5f, false)
|
||||
.d().uv(7, 9, 9, 14).noCull()
|
||||
.u().uv(7, 2, 9, 7).noCull()
|
||||
.n().uv(7, 9, 9, 11).noCull()
|
||||
.s().uv(7, 9, 9, 11).noCull()
|
||||
.w().uv(2, 9, 7, 11).noCull()
|
||||
.e().uv(9, 9, 14, 11).noCull()
|
||||
.add(6, 1, 14, 10, 9, 16)
|
||||
.d().uv(6, 14, 10, 16).noCull()
|
||||
.u().uv(6, 0, 10, 2).noCull()
|
||||
.n().uv(6, 7, 10, 15)
|
||||
.s().uv(6, 7, 10, 15).noCull()
|
||||
.w().uv(0, 7, 2, 15).noCull()
|
||||
.e().uv(14, 7, 16, 15).noCull();
|
||||
else
|
||||
model = provider.getModel("oak_planks")
|
||||
.add(6.2f, 4.2f, 6.7f, 9.8f, 5, 10.3f)
|
||||
.d(name).uv(5, 3, 11, 9).noCull()
|
||||
.u(name).uv(5, 3, 11, 9).noCull()
|
||||
.n(name).uv(5, 3, 11, 4).noCull()
|
||||
.s(name).uv(5, 8, 11, 9).noCull()
|
||||
.w(name).uv(5, 8, 11, 9).noCull()
|
||||
.e(name).uv(5, 3, 11, 4).noCull()
|
||||
.add(7.4f, 4.2f, 9.1f, 8.6f, 5, 9.1f)
|
||||
.n(name).uv(7, 8, 9, 9).noCull()
|
||||
.add(7.4f, 4.2f, 7.9f, 8.6f, 5, 7.9f)
|
||||
.s(name).uv(7, 3, 9, 4).noCull()
|
||||
.add(7.4f, 4.2f, 7.9f, 7.4f, 5, 9.1f)
|
||||
.e(name).uv(7, 8, 9, 9).noCull()
|
||||
.add(8.6f, 4.2f, 7.9f, 8.6f, 5, 9.1f)
|
||||
.w(name).uv(7, 3, 9, 4).noCull()
|
||||
.add(7.4f, 5.2f, 10, 8.8f, 6.8f, 14)
|
||||
.d().uv(7, 9, 9, 14).noCull()
|
||||
.u().uv(7, 2, 9, 7).noCull()
|
||||
.n().uv(7, 9, 9, 11).noCull()
|
||||
.s().uv(7, 9, 9, 11).noCull()
|
||||
.w().uv(2, 9, 7, 11).noCull()
|
||||
.e().uv(9, 9, 14, 11).noCull()
|
||||
.add(6, 1, 14, 10, 9, 16)
|
||||
.d().uv(6, 14, 10, 16).noCull()
|
||||
.u().uv(6, 0, 10, 2).noCull()
|
||||
.n().uv(6, 7, 10, 15)
|
||||
.s().uv(6, 7, 10, 15).noCull()
|
||||
.w().uv(0, 7, 2, 15).noCull()
|
||||
.e().uv(14, 7, 16, 15).noCull();
|
||||
}
|
||||
else {
|
||||
if(state.getValue(POWERED))
|
||||
if(state.getValue(TRIGGERED))
|
||||
model = provider.getModel("oak_planks")
|
||||
.add(6.2f, 4.2f, 6.7f, 9.8f, 5, 10.3f)
|
||||
.d("tripwire_hook").uv(5, 3, 11, 9).noCull()
|
||||
.u("tripwire_hook").uv(5, 3, 11, 9).noCull()
|
||||
.n("tripwire_hook").uv(5, 3, 11, 4).noCull()
|
||||
.s("tripwire_hook").uv(5, 8, 11, 9).noCull()
|
||||
.w("tripwire_hook").uv(5, 8, 11, 9).noCull()
|
||||
.e("tripwire_hook").uv(5, 3, 11, 4).noCull()
|
||||
.d(name).uv(5, 3, 11, 9).noCull()
|
||||
.u(name).uv(5, 3, 11, 9).noCull()
|
||||
.n(name).uv(5, 3, 11, 4).noCull()
|
||||
.s(name).uv(5, 8, 11, 9).noCull()
|
||||
.w(name).uv(5, 8, 11, 9).noCull()
|
||||
.e(name).uv(5, 3, 11, 4).noCull()
|
||||
.add(7.4f, 4.2f, 9.1f, 8.6f, 5, 9.1f)
|
||||
.n("tripwire_hook").uv(7, 8, 9, 9).noCull()
|
||||
.n(name).uv(7, 8, 9, 9).noCull()
|
||||
.add(7.4f, 4.2f, 7.9f, 8.6f, 5, 7.9f)
|
||||
.s("tripwire_hook").uv(7, 3, 9, 4).noCull()
|
||||
.s(name).uv(7, 3, 9, 4).noCull()
|
||||
.add(7.4f, 4.2f, 7.9f, 7.4f, 5, 9.1f)
|
||||
.e("tripwire_hook").uv(7, 8, 9, 9).noCull()
|
||||
.e(name).uv(7, 8, 9, 9).noCull()
|
||||
.add(8.6f, 4.2f, 7.9f, 8.6f, 5, 9.1f)
|
||||
.w("tripwire_hook").uv(7, 3, 9, 4).noCull()
|
||||
.w(name).uv(7, 3, 9, 4).noCull()
|
||||
.add(7.4f, 5.2f, 10, 8.8f, 6.8f, 14).rotate(8, 6, 14, Facing.Axis.X, -22.5f, false)
|
||||
.d().uv(7, 9, 9, 14).noCull()
|
||||
.u().uv(7, 2, 9, 7).noCull()
|
||||
|
@ -517,20 +424,20 @@ public class BlockTripWireHook extends Block implements Rotatable
|
|||
else
|
||||
model = provider.getModel("oak_planks")
|
||||
.add(6.2f, 3.8f, 7.9f, 9.8f, 4.6f, 11.5f).rotate(8, 6, 5.2f, Facing.Axis.X, -45, false)
|
||||
.d("tripwire_hook").uv(5, 3, 11, 9).noCull()
|
||||
.u("tripwire_hook").uv(5, 3, 11, 9).noCull()
|
||||
.n("tripwire_hook").uv(5, 3, 11, 4).noCull()
|
||||
.s("tripwire_hook").uv(5, 8, 11, 9).noCull()
|
||||
.w("tripwire_hook").uv(5, 8, 11, 9).noCull()
|
||||
.e("tripwire_hook").uv(5, 3, 11, 4).noCull()
|
||||
.d(name).uv(5, 3, 11, 9).noCull()
|
||||
.u(name).uv(5, 3, 11, 9).noCull()
|
||||
.n(name).uv(5, 3, 11, 4).noCull()
|
||||
.s(name).uv(5, 8, 11, 9).noCull()
|
||||
.w(name).uv(5, 8, 11, 9).noCull()
|
||||
.e(name).uv(5, 3, 11, 4).noCull()
|
||||
.add(7.4f, 3.8f, 10.3f, 8.6f, 4.6f, 10.3f).rotate(8, 6, 5.2f, Facing.Axis.X, -45, false)
|
||||
.n("tripwire_hook").uv(7, 8, 9, 9).noCull()
|
||||
.n(name).uv(7, 8, 9, 9).noCull()
|
||||
.add(7.4f, 3.8f, 9.1f, 8.6f, 4.6f, 9.1f).rotate(8, 6, 5.2f, Facing.Axis.X, -45, false)
|
||||
.s("tripwire_hook").uv(7, 3, 9, 4).noCull()
|
||||
.s(name).uv(7, 3, 9, 4).noCull()
|
||||
.add(7.4f, 3.8f, 9.1f, 7.4f, 4.6f, 10.3f).rotate(8, 6, 5.2f, Facing.Axis.X, -45, false)
|
||||
.e("tripwire_hook").uv(7, 8, 9, 9).noCull()
|
||||
.e(name).uv(7, 8, 9, 9).noCull()
|
||||
.add(8.6f, 3.8f, 9.1f, 8.6f, 4.6f, 10.3f).rotate(8, 6, 5.2f, Facing.Axis.X, -45, false)
|
||||
.w("tripwire_hook").uv(7, 3, 9, 4).noCull()
|
||||
.w(name).uv(7, 3, 9, 4).noCull()
|
||||
.add(7.4f, 5.2f, 10, 8.8f, 6.8f, 14).rotate(8, 6, 14, Facing.Axis.X, 45, false)
|
||||
.d().uv(7, 9, 9, 14).noCull()
|
||||
.u().uv(7, 2, 9, 7).noCull()
|
||||
|
@ -552,8 +459,4 @@ public class BlockTripWireHook extends Block implements Rotatable
|
|||
public GuiPosition getItemPosition() {
|
||||
return GuiPosition.PANE_SIDE;
|
||||
}
|
||||
|
||||
protected Property[] getUnsavedProperties() {
|
||||
return new Property[] {SUSPENDED};
|
||||
}
|
||||
}
|
318
common/src/main/java/common/block/tech/BlockString.java
Executable file
318
common/src/main/java/common/block/tech/BlockString.java
Executable file
|
@ -0,0 +1,318 @@
|
|||
package common.block.tech;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
import common.block.Block;
|
||||
import common.block.Material;
|
||||
import common.entity.Entity;
|
||||
import common.item.StackSize;
|
||||
import common.model.Model;
|
||||
import common.model.Model.ModelProvider;
|
||||
import common.model.ModelRotation;
|
||||
import common.model.GuiPosition;
|
||||
import common.properties.Property;
|
||||
import common.properties.PropertyBool;
|
||||
import common.rng.Random;
|
||||
import common.util.BlockPos;
|
||||
import common.util.BoundingBox;
|
||||
import common.util.Clientside;
|
||||
import common.util.Facing;
|
||||
import common.world.IBlockAccess;
|
||||
import common.world.IWorldAccess;
|
||||
import common.world.State;
|
||||
import common.world.World;
|
||||
import common.world.AWorldServer;
|
||||
|
||||
public class BlockString extends Block
|
||||
{
|
||||
public static final PropertyBool TOUCHED = PropertyBool.create("touched");
|
||||
public static final PropertyBool NORTH = PropertyBool.create("north");
|
||||
public static final PropertyBool EAST = PropertyBool.create("east");
|
||||
public static final PropertyBool SOUTH = PropertyBool.create("south");
|
||||
public static final PropertyBool WEST = PropertyBool.create("west");
|
||||
|
||||
public BlockString()
|
||||
{
|
||||
super(Material.SMALL);
|
||||
this.setDefaultState(this.getBaseState().withProperty(TOUCHED, Boolean.valueOf(false)).withProperty(NORTH, Boolean.valueOf(false)).withProperty(EAST, Boolean.valueOf(false)).withProperty(SOUTH, Boolean.valueOf(false)).withProperty(WEST, Boolean.valueOf(false)));
|
||||
this.setBlockBounds(0.0F, 0.0F, 0.0F, 1.0F, 0.15625F, 1.0F);
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the actual Block state of this Block at the given position. This applies properties not visible in the
|
||||
* metadata, such as fence connections.
|
||||
*/
|
||||
public State getState(State state, IWorldAccess worldIn, BlockPos pos)
|
||||
{
|
||||
return state.withProperty(NORTH, Boolean.valueOf(isConnectedTo(worldIn, pos, state, Facing.NORTH))).withProperty(EAST, Boolean.valueOf(isConnectedTo(worldIn, pos, state, Facing.EAST))).withProperty(SOUTH, Boolean.valueOf(isConnectedTo(worldIn, pos, state, Facing.SOUTH))).withProperty(WEST, Boolean.valueOf(isConnectedTo(worldIn, pos, state, Facing.WEST)));
|
||||
}
|
||||
|
||||
public BoundingBox getCollisionBox(World worldIn, BlockPos pos, State state)
|
||||
{
|
||||
return null;
|
||||
}
|
||||
|
||||
/**
|
||||
* Used to determine ambient occlusion and culling when rebuilding chunks for render
|
||||
*/
|
||||
public boolean isOpaqueCube()
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
public boolean isFullCube()
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
@Clientside
|
||||
public boolean hasTransparency() {
|
||||
return true;
|
||||
}
|
||||
|
||||
public void onAdded(AWorldServer worldIn, BlockPos pos, State state)
|
||||
{
|
||||
this.notifyHook(worldIn, pos, state);
|
||||
}
|
||||
|
||||
public void onRemoved(AWorldServer worldIn, BlockPos pos, State state)
|
||||
{
|
||||
this.notifyHook(worldIn, pos, state.withProperty(TOUCHED, Boolean.valueOf(true)));
|
||||
}
|
||||
|
||||
private void notifyHook(AWorldServer worldIn, BlockPos pos, State state)
|
||||
{
|
||||
for (Facing enumfacing : new Facing[] {Facing.SOUTH, Facing.WEST})
|
||||
{
|
||||
for (int i = 1; i < 42; ++i)
|
||||
{
|
||||
BlockPos blockpos = pos.offset(enumfacing, i);
|
||||
State iblockstate = worldIn.getState(blockpos);
|
||||
|
||||
if (iblockstate.getBlock() instanceof BlockHook hook)
|
||||
{
|
||||
if (iblockstate.getValue(BlockHook.FACING) == enumfacing.getOpposite())
|
||||
{
|
||||
hook.triggerHookAt(worldIn, blockpos, iblockstate, false, true, i, state);
|
||||
}
|
||||
|
||||
break;
|
||||
}
|
||||
|
||||
if (!(iblockstate.getBlock() instanceof BlockString))
|
||||
{
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Called When an Entity Collided with the Block
|
||||
*/
|
||||
public void onCollideUpdate(World worldIn, BlockPos pos, State state, Entity entityIn)
|
||||
{
|
||||
if (!worldIn.client)
|
||||
{
|
||||
if (!((Boolean)state.getValue(TOUCHED)).booleanValue())
|
||||
{
|
||||
this.updateState((AWorldServer)worldIn, pos);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public void tick(AWorldServer worldIn, BlockPos pos, State state, Random rand)
|
||||
{
|
||||
// if (!worldIn.client)
|
||||
// {
|
||||
if (((Boolean)worldIn.getState(pos).getValue(TOUCHED)).booleanValue())
|
||||
{
|
||||
this.updateState(worldIn, pos);
|
||||
}
|
||||
// }
|
||||
}
|
||||
|
||||
private void updateState(AWorldServer worldIn, BlockPos pos)
|
||||
{
|
||||
State iblockstate = worldIn.getState(pos);
|
||||
boolean flag = ((Boolean)iblockstate.getValue(TOUCHED)).booleanValue();
|
||||
boolean flag1 = false;
|
||||
List <? extends Entity > list = worldIn.getEntitiesWithinAABBExcludingEntity((Entity)null, new BoundingBox((double)pos.getX() + this.minX, (double)pos.getY() + this.minY, (double)pos.getZ() + this.minZ, (double)pos.getX() + this.maxX, (double)pos.getY() + this.maxY, (double)pos.getZ() + this.maxZ));
|
||||
|
||||
if (!list.isEmpty())
|
||||
{
|
||||
for (Entity entity : list)
|
||||
{
|
||||
if (!entity.doesEntityNotTriggerPressurePlate())
|
||||
{
|
||||
flag1 = true;
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (flag1 != flag)
|
||||
{
|
||||
iblockstate = iblockstate.withProperty(TOUCHED, Boolean.valueOf(flag1));
|
||||
worldIn.setState(pos, iblockstate, 3);
|
||||
this.notifyHook(worldIn, pos, iblockstate);
|
||||
}
|
||||
|
||||
if (flag1)
|
||||
{
|
||||
worldIn.scheduleUpdate(pos, this, this.tickRate(worldIn, pos));
|
||||
}
|
||||
}
|
||||
|
||||
public static boolean isConnectedTo(IBlockAccess worldIn, BlockPos pos, State state, Facing direction)
|
||||
{
|
||||
BlockPos blockpos = pos.offset(direction);
|
||||
State iblockstate = worldIn.getState(blockpos);
|
||||
Block block = iblockstate.getBlock();
|
||||
|
||||
if (block instanceof BlockHook)
|
||||
{
|
||||
Facing enumfacing = direction.getOpposite();
|
||||
return iblockstate.getValue(BlockHook.FACING) == enumfacing;
|
||||
}
|
||||
return block instanceof BlockString;
|
||||
}
|
||||
|
||||
protected Property[] getProperties()
|
||||
{
|
||||
return new Property[] {TOUCHED, NORTH, EAST, WEST, SOUTH};
|
||||
}
|
||||
|
||||
private static Model getStringModel(Model model, boolean n, boolean s, boolean w, boolean e, int sides) {
|
||||
if(sides == 0)
|
||||
return model
|
||||
.add(7, 0.25f, 2, 9, 0.25f, 4).noShade()
|
||||
.d().uv(8, 9, 10, 7).rot(90).noCull()
|
||||
.u().uv(8, 7, 10, 9).rot(90).noCull()
|
||||
.add(7, 0.25f, 4, 9, 0.25f, 8).noShade()
|
||||
.d().uv(6, 9, 10, 7).rot(90).noCull()
|
||||
.u().uv(6, 7, 10, 9).rot(90).noCull()
|
||||
.add(7, 0.25f, 8, 9, 0.25f, 12).noShade()
|
||||
.d().uv(6, 9, 10, 7).rot(90).noCull()
|
||||
.u().uv(6, 7, 10, 9).rot(90).noCull()
|
||||
.add(7, 0.25f, 12, 9, 0.25f, 14).noShade()
|
||||
.d().uv(6, 9, 8, 7).rot(90).noCull()
|
||||
.u().uv(6, 7, 8, 9).rot(90).noCull()
|
||||
.rotate(ModelRotation.X0_Y90);
|
||||
else if(sides == 1)
|
||||
return model
|
||||
.add(7, 0.25f, 0, 9, 0.25f, 4).noShade()
|
||||
.d().uv(6, 9, 10, 7).rot(90).noCull()
|
||||
.u().uv(6, 7, 10, 9).rot(90).noCull()
|
||||
.add(7, 0.25f, 4, 9, 0.25f, 8).noShade()
|
||||
.d().uv(6, 9, 10, 7).rot(90).noCull()
|
||||
.u().uv(6, 7, 10, 9).rot(90).noCull()
|
||||
.add(7, 0.25f, 8, 9, 0.25f, 12).noShade()
|
||||
.d().uv(6, 9, 10, 7).rot(90).noCull()
|
||||
.u().uv(6, 7, 10, 9).rot(90).noCull()
|
||||
.rotate(n ? ModelRotation.X0_Y0 : (s ? ModelRotation.X0_Y180 : (w ? ModelRotation.X0_Y270 : ModelRotation.X0_Y90)));
|
||||
else if(sides == 2 && ((e != w) || (n != s)))
|
||||
return model
|
||||
.add(7, 0.25f, 0, 9, 0.25f, 4).noShade()
|
||||
.d().uv(6, 9, 10, 7).rot(90).noCull()
|
||||
.u().uv(6, 7, 10, 9).rot(90).noCull()
|
||||
.add(7, 0.25f, 4, 9, 0.25f, 8).noShade()
|
||||
.d().uv(6, 9, 10, 7).rot(90).noCull()
|
||||
.u().uv(6, 7, 10, 9).rot(90).noCull()
|
||||
.add(8, 0.25f, 7, 12, 0.25f, 9).noShade()
|
||||
.d().uv(6, 9, 10, 7).noCull()
|
||||
.u().uv(6, 7, 10, 9).noCull()
|
||||
.add(12, 0.25f, 7, 16, 0.25f, 9).noShade()
|
||||
.d().uv(6, 9, 10, 7).noCull()
|
||||
.u().uv(6, 7, 10, 9).noCull()
|
||||
.rotate(n && e ? ModelRotation.X0_Y0 : (s && w ? ModelRotation.X0_Y180 :
|
||||
(n && w ? ModelRotation.X0_Y270 : ModelRotation.X0_Y90)));
|
||||
else if(sides == 2)
|
||||
return model
|
||||
.add(7, 0.25f, 0, 9, 0.25f, 4).noShade()
|
||||
.d().uv(6, 9, 10, 7).rot(90).noCull()
|
||||
.u().uv(6, 7, 10, 9).rot(90).noCull()
|
||||
.add(7, 0.25f, 4, 9, 0.25f, 8).noShade()
|
||||
.d().uv(6, 9, 10, 7).rot(90).noCull()
|
||||
.u().uv(6, 7, 10, 9).rot(90).noCull()
|
||||
.add(7, 0.25f, 8, 9, 0.25f, 12).noShade()
|
||||
.d().uv(6, 9, 10, 7).rot(90).noCull()
|
||||
.u().uv(6, 7, 10, 9).rot(90).noCull()
|
||||
.add(7, 0.25f, 12, 9, 0.25f, 16).noShade()
|
||||
.d().uv(6, 9, 10, 7).rot(90).noCull()
|
||||
.u().uv(6, 7, 10, 9).rot(90).noCull()
|
||||
.rotate(n ? ModelRotation.X0_Y0 : ModelRotation.X0_Y90);
|
||||
else if(sides == 3)
|
||||
return model
|
||||
.add(7, 0.25f, 0, 9, 0.25f, 4).noShade()
|
||||
.d().uv(6, 9, 10, 7).rot(90).noCull()
|
||||
.u().uv(6, 7, 10, 9).rot(90).noCull()
|
||||
.add(7, 0.25f, 4, 9, 0.25f, 8).noShade()
|
||||
.d().uv(6, 9, 10, 7).rot(90).noCull()
|
||||
.u().uv(6, 7, 10, 9).rot(90).noCull()
|
||||
.add(7, 0.25f, 8, 9, 0.25f, 12).noShade()
|
||||
.d().uv(6, 9, 10, 7).rot(90).noCull()
|
||||
.u().uv(6, 7, 10, 9).rot(90).noCull()
|
||||
.add(7, 0.25f, 12, 9, 0.25f, 16).noShade()
|
||||
.d().uv(6, 9, 10, 7).rot(90).noCull()
|
||||
.u().uv(6, 7, 10, 9).rot(90).noCull()
|
||||
.add(8, 0.25f, 7, 12, 0.25f, 9).noShade()
|
||||
.d().uv(6, 9, 10, 7).noCull()
|
||||
.u().uv(6, 7, 10, 9).noCull()
|
||||
.add(12, 0.25f, 7, 16, 0.25f, 9).noShade()
|
||||
.d().uv(6, 9, 10, 7).noCull()
|
||||
.u().uv(6, 7, 10, 9).noCull()
|
||||
.rotate(!w ? ModelRotation.X0_Y0 : (!e ? ModelRotation.X0_Y180 : (!s ? ModelRotation.X0_Y270 : ModelRotation.X0_Y90)));
|
||||
else
|
||||
return model
|
||||
.add(7, 0.25f, 0, 9, 0.25f, 4).noShade()
|
||||
.d().uv(6, 9, 10, 7).rot(90).noCull()
|
||||
.u().uv(6, 7, 10, 9).rot(90).noCull()
|
||||
.add(7, 0.25f, 4, 9, 0.25f, 8).noShade()
|
||||
.d().uv(6, 9, 10, 7).rot(90).noCull()
|
||||
.u().uv(6, 7, 10, 9).rot(90).noCull()
|
||||
.add(7, 0.25f, 8, 9, 0.25f, 12).noShade()
|
||||
.d().uv(6, 9, 10, 7).rot(90).noCull()
|
||||
.u().uv(6, 7, 10, 9).rot(90).noCull()
|
||||
.add(7, 0.25f, 12, 9, 0.25f, 16).noShade()
|
||||
.d().uv(6, 9, 10, 7).rot(90).noCull()
|
||||
.u().uv(6, 7, 10, 9).rot(90).noCull()
|
||||
.add(0, 0.25f, 7, 4, 0.25f, 9).noShade()
|
||||
.d().uv(6, 9, 10, 7).noCull()
|
||||
.u().uv(6, 7, 10, 9).noCull()
|
||||
.add(4, 0.25f, 7, 8, 0.25f, 9).noShade()
|
||||
.d().uv(6, 9, 10, 7).noCull()
|
||||
.u().uv(6, 7, 10, 9).noCull()
|
||||
.add(8, 0.25f, 7, 12, 0.25f, 9).noShade()
|
||||
.d().uv(6, 9, 10, 7).noCull()
|
||||
.u().uv(6, 7, 10, 9).noCull()
|
||||
.add(12, 0.25f, 7, 16, 0.25f, 9).noShade()
|
||||
.d().uv(6, 9, 10, 7).noCull()
|
||||
.u().uv(6, 7, 10, 9).noCull();
|
||||
}
|
||||
|
||||
public Model getModel(ModelProvider provider, String name, State state) {
|
||||
boolean n = state.getValue(NORTH);
|
||||
boolean s = state.getValue(SOUTH);
|
||||
boolean w = state.getValue(WEST);
|
||||
boolean e = state.getValue(EAST);
|
||||
int sides = (n ? 1 : 0) + (s ? 1 : 0) + (w ? 1 : 0) + (e ? 1 : 0);
|
||||
return getStringModel(provider.getModel(name), n, s, w, e, sides);
|
||||
}
|
||||
|
||||
public Property<?>[] getIgnoredProperties() {
|
||||
return new Property[] {TOUCHED};
|
||||
}
|
||||
|
||||
public StackSize getMaxAmount() {
|
||||
return StackSize.XXXL;
|
||||
}
|
||||
|
||||
protected Property[] getUnsavedProperties() {
|
||||
return new Property[] {NORTH, SOUTH, WEST, EAST};
|
||||
}
|
||||
|
||||
public GuiPosition getItemPosition() {
|
||||
return GuiPosition.WIRE;
|
||||
}
|
||||
}
|
|
@ -1,654 +0,0 @@
|
|||
package common.block.tech;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
import common.block.Block;
|
||||
import common.block.Material;
|
||||
import common.entity.Entity;
|
||||
import common.entity.npc.EntityNPC;
|
||||
import common.init.Blocks;
|
||||
import common.item.StackSize;
|
||||
import common.item.tool.ItemTool;
|
||||
import common.model.Model;
|
||||
import common.model.Model.ModelProvider;
|
||||
import common.model.ModelRotation;
|
||||
import common.model.GuiPosition;
|
||||
import common.properties.Property;
|
||||
import common.properties.PropertyBool;
|
||||
import common.rng.Random;
|
||||
import common.util.BlockPos;
|
||||
import common.util.BoundingBox;
|
||||
import common.util.Clientside;
|
||||
import common.util.Facing;
|
||||
import common.util.Equipment;
|
||||
import common.world.IBlockAccess;
|
||||
import common.world.IWorldAccess;
|
||||
import common.world.State;
|
||||
import common.world.World;
|
||||
import common.world.AWorldServer;
|
||||
|
||||
public class BlockTripWire extends Block
|
||||
{
|
||||
public static final PropertyBool POWERED = PropertyBool.create("powered");
|
||||
public static final PropertyBool SUSPENDED = PropertyBool.create("suspended");
|
||||
public static final PropertyBool ATTACHED = PropertyBool.create("attached");
|
||||
public static final PropertyBool DISARMED = PropertyBool.create("disarmed");
|
||||
public static final PropertyBool NORTH = PropertyBool.create("north");
|
||||
public static final PropertyBool EAST = PropertyBool.create("east");
|
||||
public static final PropertyBool SOUTH = PropertyBool.create("south");
|
||||
public static final PropertyBool WEST = PropertyBool.create("west");
|
||||
|
||||
public BlockTripWire()
|
||||
{
|
||||
super(Material.SMALL);
|
||||
this.setDefaultState(this.getBaseState().withProperty(POWERED, Boolean.valueOf(false)).withProperty(SUSPENDED, Boolean.valueOf(false)).withProperty(ATTACHED, Boolean.valueOf(false)).withProperty(DISARMED, Boolean.valueOf(false)).withProperty(NORTH, Boolean.valueOf(false)).withProperty(EAST, Boolean.valueOf(false)).withProperty(SOUTH, Boolean.valueOf(false)).withProperty(WEST, Boolean.valueOf(false)));
|
||||
this.setBlockBounds(0.0F, 0.0F, 0.0F, 1.0F, 0.15625F, 1.0F);
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the actual Block state of this Block at the given position. This applies properties not visible in the
|
||||
* metadata, such as fence connections.
|
||||
*/
|
||||
public State getState(State state, IWorldAccess worldIn, BlockPos pos)
|
||||
{
|
||||
return state.withProperty(NORTH, Boolean.valueOf(isConnectedTo(worldIn, pos, state, Facing.NORTH))).withProperty(EAST, Boolean.valueOf(isConnectedTo(worldIn, pos, state, Facing.EAST))).withProperty(SOUTH, Boolean.valueOf(isConnectedTo(worldIn, pos, state, Facing.SOUTH))).withProperty(WEST, Boolean.valueOf(isConnectedTo(worldIn, pos, state, Facing.WEST)));
|
||||
}
|
||||
|
||||
public BoundingBox getCollisionBox(World worldIn, BlockPos pos, State state)
|
||||
{
|
||||
return null;
|
||||
}
|
||||
|
||||
/**
|
||||
* Used to determine ambient occlusion and culling when rebuilding chunks for render
|
||||
*/
|
||||
public boolean isOpaqueCube()
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
public boolean isFullCube()
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
@Clientside
|
||||
public boolean hasTransparency() {
|
||||
return true;
|
||||
}
|
||||
|
||||
/**
|
||||
* Called when a neighboring block changes.
|
||||
*/
|
||||
public void onUpdate(AWorldServer worldIn, BlockPos pos, State state, Block neighborBlock)
|
||||
{
|
||||
boolean flag = ((Boolean)state.getValue(SUSPENDED)).booleanValue();
|
||||
boolean flag1 = !worldIn.isBlockSolid(pos.down());
|
||||
|
||||
if (flag != flag1)
|
||||
{
|
||||
this.drop(worldIn, pos, state, 0);
|
||||
worldIn.setBlockToAir(pos);
|
||||
}
|
||||
}
|
||||
|
||||
public void setBlockBounds(IWorldAccess worldIn, BlockPos pos)
|
||||
{
|
||||
State iblockstate = worldIn.getState(pos);
|
||||
boolean flag = ((Boolean)iblockstate.getValue(ATTACHED)).booleanValue();
|
||||
boolean flag1 = ((Boolean)iblockstate.getValue(SUSPENDED)).booleanValue();
|
||||
|
||||
if (!flag1)
|
||||
{
|
||||
this.setBlockBounds(0.0F, 0.0F, 0.0F, 1.0F, 0.09375F, 1.0F);
|
||||
}
|
||||
else if (!flag)
|
||||
{
|
||||
this.setBlockBounds(0.0F, 0.0F, 0.0F, 1.0F, 0.5F, 1.0F);
|
||||
}
|
||||
else
|
||||
{
|
||||
this.setBlockBounds(0.0F, 0.0625F, 0.0F, 1.0F, 0.15625F, 1.0F);
|
||||
}
|
||||
}
|
||||
|
||||
public void onAdded(AWorldServer worldIn, BlockPos pos, State state)
|
||||
{
|
||||
state = state.withProperty(SUSPENDED, Boolean.valueOf(!worldIn.isBlockSolid(pos.down())));
|
||||
worldIn.setState(pos, state, 3);
|
||||
this.notifyHook(worldIn, pos, state);
|
||||
}
|
||||
|
||||
public void onRemoved(AWorldServer worldIn, BlockPos pos, State state)
|
||||
{
|
||||
this.notifyHook(worldIn, pos, state.withProperty(POWERED, Boolean.valueOf(true)));
|
||||
}
|
||||
|
||||
public void preBroken(World worldIn, BlockPos pos, State state, EntityNPC player)
|
||||
{
|
||||
if (!worldIn.client)
|
||||
{
|
||||
if (player.getHeldItem() != null && player.getHeldItem().getItem() instanceof ItemTool tool && tool.getToolType() == Equipment.SHEARS)
|
||||
{
|
||||
worldIn.setState(pos, state.withProperty(DISARMED, Boolean.valueOf(true)), 4);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private void notifyHook(AWorldServer worldIn, BlockPos pos, State state)
|
||||
{
|
||||
for (Facing enumfacing : new Facing[] {Facing.SOUTH, Facing.WEST})
|
||||
{
|
||||
for (int i = 1; i < 42; ++i)
|
||||
{
|
||||
BlockPos blockpos = pos.offset(enumfacing, i);
|
||||
State iblockstate = worldIn.getState(blockpos);
|
||||
|
||||
if (iblockstate.getBlock() == Blocks.tripwire_hook)
|
||||
{
|
||||
if (iblockstate.getValue(BlockTripWireHook.FACING) == enumfacing.getOpposite())
|
||||
{
|
||||
Blocks.tripwire_hook.triggerHookAt(worldIn, blockpos, iblockstate, false, true, i, state);
|
||||
}
|
||||
|
||||
break;
|
||||
}
|
||||
|
||||
if (iblockstate.getBlock() != Blocks.string)
|
||||
{
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Called When an Entity Collided with the Block
|
||||
*/
|
||||
public void onCollideUpdate(World worldIn, BlockPos pos, State state, Entity entityIn)
|
||||
{
|
||||
if (!worldIn.client)
|
||||
{
|
||||
if (!((Boolean)state.getValue(POWERED)).booleanValue())
|
||||
{
|
||||
this.updateState((AWorldServer)worldIn, pos);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public void tick(AWorldServer worldIn, BlockPos pos, State state, Random rand)
|
||||
{
|
||||
// if (!worldIn.client)
|
||||
// {
|
||||
if (((Boolean)worldIn.getState(pos).getValue(POWERED)).booleanValue())
|
||||
{
|
||||
this.updateState(worldIn, pos);
|
||||
}
|
||||
// }
|
||||
}
|
||||
|
||||
private void updateState(AWorldServer worldIn, BlockPos pos)
|
||||
{
|
||||
State iblockstate = worldIn.getState(pos);
|
||||
boolean flag = ((Boolean)iblockstate.getValue(POWERED)).booleanValue();
|
||||
boolean flag1 = false;
|
||||
List <? extends Entity > list = worldIn.getEntitiesWithinAABBExcludingEntity((Entity)null, new BoundingBox((double)pos.getX() + this.minX, (double)pos.getY() + this.minY, (double)pos.getZ() + this.minZ, (double)pos.getX() + this.maxX, (double)pos.getY() + this.maxY, (double)pos.getZ() + this.maxZ));
|
||||
|
||||
if (!list.isEmpty())
|
||||
{
|
||||
for (Entity entity : list)
|
||||
{
|
||||
if (!entity.doesEntityNotTriggerPressurePlate())
|
||||
{
|
||||
flag1 = true;
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (flag1 != flag)
|
||||
{
|
||||
iblockstate = iblockstate.withProperty(POWERED, Boolean.valueOf(flag1));
|
||||
worldIn.setState(pos, iblockstate, 3);
|
||||
this.notifyHook(worldIn, pos, iblockstate);
|
||||
}
|
||||
|
||||
if (flag1)
|
||||
{
|
||||
worldIn.scheduleUpdate(pos, this, this.tickRate(worldIn, pos));
|
||||
}
|
||||
}
|
||||
|
||||
public static boolean isConnectedTo(IBlockAccess worldIn, BlockPos pos, State state, Facing direction)
|
||||
{
|
||||
BlockPos blockpos = pos.offset(direction);
|
||||
State iblockstate = worldIn.getState(blockpos);
|
||||
Block block = iblockstate.getBlock();
|
||||
|
||||
if (block == Blocks.tripwire_hook)
|
||||
{
|
||||
Facing enumfacing = direction.getOpposite();
|
||||
return iblockstate.getValue(BlockTripWireHook.FACING) == enumfacing;
|
||||
}
|
||||
else if (block == Blocks.string)
|
||||
{
|
||||
boolean flag = ((Boolean)state.getValue(SUSPENDED)).booleanValue();
|
||||
boolean flag1 = ((Boolean)iblockstate.getValue(SUSPENDED)).booleanValue();
|
||||
return flag == flag1;
|
||||
}
|
||||
else
|
||||
{
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
protected Property[] getProperties()
|
||||
{
|
||||
return new Property[] {POWERED, SUSPENDED, ATTACHED, DISARMED, NORTH, EAST, WEST, SOUTH};
|
||||
}
|
||||
|
||||
private static Model getModelDetached(Model model, boolean n, boolean s, boolean w, boolean e, int sides) {
|
||||
if(sides == 1)
|
||||
return model
|
||||
.add(7.75f, 1.5f, 0, 8.25f, 1.5f, 4).noShade()
|
||||
.d().uv(0, 2, 16, 0).rot(90).noCull()
|
||||
.u().uv(0, 0, 16, 2).rot(90).noCull()
|
||||
.add(7.75f, 1.5f, 4, 8.25f, 1.5f, 8).noShade()
|
||||
.d().uv(0, 2, 16, 0).rot(90).noCull()
|
||||
.u().uv(0, 0, 16, 2).rot(90).noCull()
|
||||
.add(7.75f, 1.5f, 8, 8.25f, 1.5f, 12).noShade()
|
||||
.d().uv(0, 2, 16, 0).rot(90).noCull()
|
||||
.u().uv(0, 0, 16, 2).rot(90).noCull()
|
||||
.rotate(n ? ModelRotation.X0_Y0 : (s ? ModelRotation.X0_Y180 : (w ? ModelRotation.X0_Y270 : ModelRotation.X0_Y90)));
|
||||
else if(sides == 2 && ((e != w) || (n != s)))
|
||||
return model
|
||||
.add(7.75f, 1.5f, 0, 8.25f, 1.5f, 4).noShade()
|
||||
.d().uv(0, 2, 16, 0).rot(90).noCull()
|
||||
.u().uv(0, 0, 16, 2).rot(90).noCull()
|
||||
.add(7.75f, 1.5f, 4, 8.25f, 1.5f, 8).noShade()
|
||||
.d().uv(0, 2, 16, 0).rot(90).noCull()
|
||||
.u().uv(0, 0, 16, 2).rot(90).noCull()
|
||||
.add(8, 1.5f, 7.75f, 12, 1.5f, 8.25f).noShade()
|
||||
.d().uv(0, 2, 16, 0).noCull()
|
||||
.u().uv(0, 0, 16, 2).noCull()
|
||||
.add(12, 1.5f, 7.75f, 16, 1.5f, 8.25f).noShade()
|
||||
.d().uv(0, 2, 16, 0).noCull()
|
||||
.u().uv(0, 0, 16, 2).noCull()
|
||||
.rotate(n && e ? ModelRotation.X0_Y0 : (s && w ? ModelRotation.X0_Y180 :
|
||||
(n && w ? ModelRotation.X0_Y270 : ModelRotation.X0_Y90)));
|
||||
else if(sides == 2)
|
||||
return model
|
||||
.add(7.75f, 1.5f, 0, 8.25f, 1.5f, 4).noShade()
|
||||
.d().uv(0, 2, 16, 0).rot(90).noCull()
|
||||
.u().uv(0, 0, 16, 2).rot(90).noCull()
|
||||
.add(7.75f, 1.5f, 4, 8.25f, 1.5f, 8).noShade()
|
||||
.d().uv(0, 2, 16, 0).rot(90).noCull()
|
||||
.u().uv(0, 0, 16, 2).rot(90).noCull()
|
||||
.add(7.75f, 1.5f, 8, 8.25f, 1.5f, 12).noShade()
|
||||
.d().uv(0, 2, 16, 0).rot(90).noCull()
|
||||
.u().uv(0, 0, 16, 2).rot(90).noCull()
|
||||
.add(7.75f, 1.5f, 12, 8.25f, 1.5f, 16).noShade()
|
||||
.d().uv(0, 2, 16, 0).rot(90).noCull()
|
||||
.u().uv(0, 0, 16, 2).rot(90).noCull()
|
||||
.rotate(n ? ModelRotation.X0_Y0 : ModelRotation.X0_Y90);
|
||||
else if(sides == 3)
|
||||
return model
|
||||
.add(7.75f, 1.5f, 0, 8.25f, 1.5f, 4).noShade()
|
||||
.d().uv(0, 2, 16, 0).rot(90).noCull()
|
||||
.u().uv(0, 0, 16, 2).rot(90).noCull()
|
||||
.add(7.75f, 1.5f, 4, 8.25f, 1.5f, 8).noShade()
|
||||
.d().uv(0, 2, 16, 0).rot(90).noCull()
|
||||
.u().uv(0, 0, 16, 2).rot(90).noCull()
|
||||
.add(7.75f, 1.5f, 8, 8.25f, 1.5f, 12).noShade()
|
||||
.d().uv(0, 2, 16, 0).rot(90).noCull()
|
||||
.u().uv(0, 0, 16, 2).rot(90).noCull()
|
||||
.add(7.75f, 1.5f, 12, 8.25f, 1.5f, 16).noShade()
|
||||
.d().uv(0, 2, 16, 0).rot(90).noCull()
|
||||
.u().uv(0, 0, 16, 2).rot(90).noCull()
|
||||
.add(8, 1.5f, 7.75f, 12, 1.5f, 8.25f).noShade()
|
||||
.d().uv(0, 2, 16, 0).noCull()
|
||||
.u().uv(0, 0, 16, 2).noCull()
|
||||
.add(12, 1.5f, 7.75f, 16, 1.5f, 8.25f).noShade()
|
||||
.d().uv(0, 2, 16, 0).noCull()
|
||||
.u().uv(0, 0, 16, 2).noCull()
|
||||
.rotate(!w ? ModelRotation.X0_Y0 : (!e ? ModelRotation.X0_Y180 : (!s ? ModelRotation.X0_Y270 : ModelRotation.X0_Y90)));
|
||||
else
|
||||
return model
|
||||
.add(7.75f, 1.5f, 0, 8.25f, 1.5f, 4).noShade()
|
||||
.d().uv(0, 2, 16, 0).rot(90).noCull()
|
||||
.u().uv(0, 0, 16, 2).rot(90).noCull()
|
||||
.add(7.75f, 1.5f, 4, 8.25f, 1.5f, 8).noShade()
|
||||
.d().uv(0, 2, 16, 0).rot(90).noCull()
|
||||
.u().uv(0, 0, 16, 2).rot(90).noCull()
|
||||
.add(7.75f, 1.5f, 8, 8.25f, 1.5f, 12).noShade()
|
||||
.d().uv(0, 2, 16, 0).rot(90).noCull()
|
||||
.u().uv(0, 0, 16, 2).rot(90).noCull()
|
||||
.add(7.75f, 1.5f, 12, 8.25f, 1.5f, 16).noShade()
|
||||
.d().uv(0, 2, 16, 0).rot(90).noCull()
|
||||
.u().uv(0, 0, 16, 2).rot(90).noCull()
|
||||
.add(0, 1.5f, 7.75f, 4, 1.5f, 8.25f).noShade()
|
||||
.d().uv(0, 2, 16, 0).noCull()
|
||||
.u().uv(0, 0, 16, 2).noCull()
|
||||
.add(4, 1.5f, 7.75f, 8, 1.5f, 8.25f).noShade()
|
||||
.d().uv(0, 2, 16, 0).noCull()
|
||||
.u().uv(0, 0, 16, 2).noCull()
|
||||
.add(8, 1.5f, 7.75f, 12, 1.5f, 8.25f).noShade()
|
||||
.d().uv(0, 2, 16, 0).noCull()
|
||||
.u().uv(0, 0, 16, 2).noCull()
|
||||
.add(12, 1.5f, 7.75f, 16, 1.5f, 8.25f).noShade()
|
||||
.d().uv(0, 2, 16, 0).noCull()
|
||||
.u().uv(0, 0, 16, 2).noCull();
|
||||
}
|
||||
|
||||
private static Model getModelAttached(Model model, boolean n, boolean s, boolean w, boolean e, int sides) {
|
||||
if(sides == 1)
|
||||
return model
|
||||
.add(7.75f, 1.5f, 0, 8.25f, 1.5f, 4).noShade()
|
||||
.d().uv(0, 4, 16, 2).rot(90).noCull()
|
||||
.u().uv(0, 2, 16, 4).rot(90).noCull()
|
||||
.add(7.75f, 1.5f, 4, 8.25f, 1.5f, 8).noShade()
|
||||
.d().uv(0, 4, 16, 2).rot(90).noCull()
|
||||
.u().uv(0, 2, 16, 4).rot(90).noCull()
|
||||
.add(7.75f, 1.5f, 8, 8.25f, 1.5f, 12).noShade()
|
||||
.d().uv(0, 4, 16, 2).rot(90).noCull()
|
||||
.u().uv(0, 2, 16, 4).rot(90).noCull()
|
||||
.rotate(n ? ModelRotation.X0_Y0 : (s ? ModelRotation.X0_Y180 : (w ? ModelRotation.X0_Y270 : ModelRotation.X0_Y90)));
|
||||
else if(sides == 2 && ((e != w) || (n != s)))
|
||||
return model
|
||||
.add(7.75f, 1.5f, 0, 8.25f, 1.5f, 4).noShade()
|
||||
.d().uv(0, 4, 16, 2).rot(90).noCull()
|
||||
.u().uv(0, 2, 16, 4).rot(90).noCull()
|
||||
.add(7.75f, 1.5f, 4, 8.25f, 1.5f, 8).noShade()
|
||||
.d().uv(0, 4, 16, 2).rot(90).noCull()
|
||||
.u().uv(0, 2, 16, 4).rot(90).noCull()
|
||||
.add(8, 1.5f, 7.75f, 12, 1.5f, 8.25f).noShade()
|
||||
.d().uv(0, 4, 16, 2).noCull()
|
||||
.u().uv(0, 2, 16, 4).noCull()
|
||||
.add(12, 1.5f, 7.75f, 16, 1.5f, 8.25f).noShade()
|
||||
.d().uv(0, 4, 16, 2).noCull()
|
||||
.u().uv(0, 2, 16, 4).noCull()
|
||||
.rotate(n && e ? ModelRotation.X0_Y0 : (s && w ? ModelRotation.X0_Y180 :
|
||||
(n && w ? ModelRotation.X0_Y270 : ModelRotation.X0_Y90)));
|
||||
else if(sides == 2)
|
||||
return model
|
||||
.add(7.75f, 1.5f, 0, 8.25f, 1.5f, 4).noShade()
|
||||
.d().uv(0, 4, 16, 2).rot(90).noCull()
|
||||
.u().uv(0, 2, 16, 4).rot(90).noCull()
|
||||
.add(7.75f, 1.5f, 4, 8.25f, 1.5f, 8).noShade()
|
||||
.d().uv(0, 4, 16, 2).rot(90).noCull()
|
||||
.u().uv(0, 2, 16, 4).rot(90).noCull()
|
||||
.add(7.75f, 1.5f, 8, 8.25f, 1.5f, 12).noShade()
|
||||
.d().uv(0, 4, 16, 2).rot(90).noCull()
|
||||
.u().uv(0, 2, 16, 4).rot(90).noCull()
|
||||
.add(7.75f, 1.5f, 12, 8.25f, 1.5f, 16).noShade()
|
||||
.d().uv(0, 4, 16, 2).rot(90).noCull()
|
||||
.u().uv(0, 2, 16, 4).rot(90).noCull()
|
||||
.rotate(n ? ModelRotation.X0_Y0 : ModelRotation.X0_Y90);
|
||||
else if(sides == 3)
|
||||
return model
|
||||
.add(7.75f, 1.5f, 0, 8.25f, 1.5f, 4).noShade()
|
||||
.d().uv(0, 4, 16, 2).rot(90).noCull()
|
||||
.u().uv(0, 2, 16, 4).rot(90).noCull()
|
||||
.add(7.75f, 1.5f, 4, 8.25f, 1.5f, 8).noShade()
|
||||
.d().uv(0, 4, 16, 2).rot(90).noCull()
|
||||
.u().uv(0, 2, 16, 4).rot(90).noCull()
|
||||
.add(7.75f, 1.5f, 8, 8.25f, 1.5f, 12).noShade()
|
||||
.d().uv(0, 4, 16, 2).rot(90).noCull()
|
||||
.u().uv(0, 2, 16, 4).rot(90).noCull()
|
||||
.add(7.75f, 1.5f, 12, 8.25f, 1.5f, 16).noShade()
|
||||
.d().uv(0, 4, 16, 2).rot(90).noCull()
|
||||
.u().uv(0, 2, 16, 4).rot(90).noCull()
|
||||
.add(8, 1.5f, 7.75f, 12, 1.5f, 8.25f).noShade()
|
||||
.d().uv(0, 4, 16, 2).noCull()
|
||||
.u().uv(0, 2, 16, 4).noCull()
|
||||
.add(12, 1.5f, 7.75f, 16, 1.5f, 8.25f).noShade()
|
||||
.d().uv(0, 4, 16, 2).noCull()
|
||||
.u().uv(0, 2, 16, 4).noCull()
|
||||
.rotate(!w ? ModelRotation.X0_Y0 : (!e ? ModelRotation.X0_Y180 : (!s ? ModelRotation.X0_Y270 : ModelRotation.X0_Y90)));
|
||||
else
|
||||
return model
|
||||
.add(7.75f, 1.5f, 0, 8.25f, 1.5f, 4).noShade()
|
||||
.d().uv(0, 4, 16, 2).rot(90).noCull()
|
||||
.u().uv(0, 2, 16, 4).rot(90).noCull()
|
||||
.add(7.75f, 1.5f, 4, 8.25f, 1.5f, 8).noShade()
|
||||
.d().uv(0, 4, 16, 2).rot(90).noCull()
|
||||
.u().uv(0, 2, 16, 4).rot(90).noCull()
|
||||
.add(7.75f, 1.5f, 8, 8.25f, 1.5f, 12).noShade()
|
||||
.d().uv(0, 4, 16, 2).rot(90).noCull()
|
||||
.u().uv(0, 2, 16, 4).rot(90).noCull()
|
||||
.add(7.75f, 1.5f, 12, 8.25f, 1.5f, 16).noShade()
|
||||
.d().uv(0, 4, 16, 2).rot(90).noCull()
|
||||
.u().uv(0, 2, 16, 4).rot(90).noCull()
|
||||
.add(0, 1.5f, 7.75f, 4, 1.5f, 8.25f).noShade()
|
||||
.d().uv(0, 4, 16, 2).noCull()
|
||||
.u().uv(0, 2, 16, 4).noCull()
|
||||
.add(4, 1.5f, 7.75f, 8, 1.5f, 8.25f).noShade()
|
||||
.d().uv(0, 4, 16, 2).noCull()
|
||||
.u().uv(0, 2, 16, 4).noCull()
|
||||
.add(8, 1.5f, 7.75f, 12, 1.5f, 8.25f).noShade()
|
||||
.d().uv(0, 4, 16, 2).noCull()
|
||||
.u().uv(0, 2, 16, 4).noCull()
|
||||
.add(12, 1.5f, 7.75f, 16, 1.5f, 8.25f).noShade()
|
||||
.d().uv(0, 4, 16, 2).noCull()
|
||||
.u().uv(0, 2, 16, 4).noCull();
|
||||
}
|
||||
|
||||
private static Model getModelDetSuspend(Model model, boolean n, boolean s, boolean w, boolean e, int sides) {
|
||||
if(sides == 1)
|
||||
return model
|
||||
.add(7.75f, 3.5f, 0, 8.25f, 3.5f, 4).noShade()
|
||||
.d().uv(0, 2, 16, 0).rot(90).noCull()
|
||||
.u().uv(0, 0, 16, 2).rot(90).noCull()
|
||||
.add(7.75f, 3.5f, 4, 8.25f, 3.5f, 8).noShade()
|
||||
.d().uv(0, 2, 16, 0).rot(90).noCull()
|
||||
.u().uv(0, 0, 16, 2).rot(90).noCull()
|
||||
.add(7.75f, 3.5f, 8, 8.25f, 3.5f, 12).noShade()
|
||||
.d().uv(0, 2, 16, 0).rot(90).noCull()
|
||||
.u().uv(0, 0, 16, 2).rot(90).noCull()
|
||||
.rotate(n ? ModelRotation.X0_Y0 : (s ? ModelRotation.X0_Y180 : (w ? ModelRotation.X0_Y270 : ModelRotation.X0_Y90)));
|
||||
else if(sides == 2 && ((e != w) || (n != s)))
|
||||
return model
|
||||
.add(7.75f, 3.5f, 0, 8.25f, 3.5f, 4).noShade()
|
||||
.d().uv(0, 2, 16, 0).rot(90).noCull()
|
||||
.u().uv(0, 0, 16, 2).rot(90).noCull()
|
||||
.add(7.75f, 3.5f, 4, 8.25f, 3.5f, 8).noShade()
|
||||
.d().uv(0, 2, 16, 0).rot(90).noCull()
|
||||
.u().uv(0, 0, 16, 2).rot(90).noCull()
|
||||
.add(8, 3.5f, 7.75f, 12, 3.5f, 8.25f).noShade()
|
||||
.d().uv(0, 2, 16, 0).noCull()
|
||||
.u().uv(0, 0, 16, 2).noCull()
|
||||
.add(12, 3.5f, 7.75f, 16, 3.5f, 8.25f).noShade()
|
||||
.d().uv(0, 2, 16, 0).noCull()
|
||||
.u().uv(0, 0, 16, 2).noCull()
|
||||
.rotate(n && e ? ModelRotation.X0_Y0 : (s && w ? ModelRotation.X0_Y180 :
|
||||
(n && w ? ModelRotation.X0_Y270 : ModelRotation.X0_Y90)));
|
||||
else if(sides == 2)
|
||||
return model
|
||||
.add(7.75f, 3.5f, 0, 8.25f, 3.5f, 4).noShade()
|
||||
.d().uv(0, 2, 16, 0).rot(90).noCull()
|
||||
.u().uv(0, 0, 16, 2).rot(90).noCull()
|
||||
.add(7.75f, 3.5f, 4, 8.25f, 3.5f, 8).noShade()
|
||||
.d().uv(0, 2, 16, 0).rot(90).noCull()
|
||||
.u().uv(0, 0, 16, 2).rot(90).noCull()
|
||||
.add(7.75f, 3.5f, 8, 8.25f, 3.5f, 12).noShade()
|
||||
.d().uv(0, 2, 16, 0).rot(90).noCull()
|
||||
.u().uv(0, 0, 16, 2).rot(90).noCull()
|
||||
.add(7.75f, 3.5f, 12, 8.25f, 3.5f, 16).noShade()
|
||||
.d().uv(0, 2, 16, 0).rot(90).noCull()
|
||||
.u().uv(0, 0, 16, 2).rot(90).noCull()
|
||||
.rotate(n ? ModelRotation.X0_Y0 : ModelRotation.X0_Y90);
|
||||
else if(sides == 3)
|
||||
return model
|
||||
.add(7.75f, 3.5f, 0, 8.25f, 3.5f, 4).noShade()
|
||||
.d().uv(0, 2, 16, 0).rot(90).noCull()
|
||||
.u().uv(0, 0, 16, 2).rot(90).noCull()
|
||||
.add(7.75f, 3.5f, 4, 8.25f, 3.5f, 8).noShade()
|
||||
.d().uv(0, 2, 16, 0).rot(90).noCull()
|
||||
.u().uv(0, 0, 16, 2).rot(90).noCull()
|
||||
.add(7.75f, 3.5f, 8, 8.25f, 3.5f, 12).noShade()
|
||||
.d().uv(0, 2, 16, 0).rot(90).noCull()
|
||||
.u().uv(0, 0, 16, 2).rot(90).noCull()
|
||||
.add(7.75f, 3.5f, 12, 8.25f, 3.5f, 16).noShade()
|
||||
.d().uv(0, 2, 16, 0).rot(90).noCull()
|
||||
.u().uv(0, 0, 16, 2).rot(90).noCull()
|
||||
.add(8, 3.5f, 7.75f, 12, 3.5f, 8.25f).noShade()
|
||||
.d().uv(0, 2, 16, 0).noCull()
|
||||
.u().uv(0, 0, 16, 2).noCull()
|
||||
.add(12, 3.5f, 7.75f, 16, 3.5f, 8.25f).noShade()
|
||||
.d().uv(0, 2, 16, 0).noCull()
|
||||
.u().uv(0, 0, 16, 2).noCull()
|
||||
.rotate(!w ? ModelRotation.X0_Y0 : (!e ? ModelRotation.X0_Y180 : (!s ? ModelRotation.X0_Y270 : ModelRotation.X0_Y90)));
|
||||
else
|
||||
return model
|
||||
.add(7.75f, 3.5f, 0, 8.25f, 3.5f, 4).noShade()
|
||||
.d().uv(0, 2, 16, 0).rot(90).noCull()
|
||||
.u().uv(0, 0, 16, 2).rot(90).noCull()
|
||||
.add(7.75f, 3.5f, 4, 8.25f, 3.5f, 8).noShade()
|
||||
.d().uv(0, 2, 16, 0).rot(90).noCull()
|
||||
.u().uv(0, 0, 16, 2).rot(90).noCull()
|
||||
.add(7.75f, 3.5f, 8, 8.25f, 3.5f, 12).noShade()
|
||||
.d().uv(0, 2, 16, 0).rot(90).noCull()
|
||||
.u().uv(0, 0, 16, 2).rot(90).noCull()
|
||||
.add(7.75f, 3.5f, 12, 8.25f, 3.5f, 16).noShade()
|
||||
.d().uv(0, 2, 16, 0).rot(90).noCull()
|
||||
.u().uv(0, 0, 16, 2).rot(90).noCull()
|
||||
.add(0, 3.5f, 7.75f, 4, 3.5f, 8.25f).noShade()
|
||||
.d().uv(0, 2, 16, 0).noCull()
|
||||
.u().uv(0, 0, 16, 2).noCull()
|
||||
.add(4, 3.5f, 7.75f, 8, 3.5f, 8.25f).noShade()
|
||||
.d().uv(0, 2, 16, 0).noCull()
|
||||
.u().uv(0, 0, 16, 2).noCull()
|
||||
.add(8, 3.5f, 7.75f, 12, 3.5f, 8.25f).noShade()
|
||||
.d().uv(0, 2, 16, 0).noCull()
|
||||
.u().uv(0, 0, 16, 2).noCull()
|
||||
.add(12, 3.5f, 7.75f, 16, 3.5f, 8.25f).noShade()
|
||||
.d().uv(0, 2, 16, 0).noCull()
|
||||
.u().uv(0, 0, 16, 2).noCull();
|
||||
}
|
||||
|
||||
private static Model getModelAttSuspend(Model model, boolean n, boolean s, boolean w, boolean e, int sides) {
|
||||
if(sides == 1)
|
||||
return model
|
||||
.add(7.75f, 3.5f, 0, 8.25f, 3.5f, 4).noShade()
|
||||
.d().uv(0, 4, 16, 2).rot(90).noCull()
|
||||
.u().uv(0, 2, 16, 4).rot(90).noCull()
|
||||
.add(7.75f, 3.5f, 4, 8.25f, 3.5f, 8).noShade()
|
||||
.d().uv(0, 4, 16, 2).rot(90).noCull()
|
||||
.u().uv(0, 2, 16, 4).rot(90).noCull()
|
||||
.add(7.75f, 3.5f, 8, 8.25f, 3.5f, 12).noShade()
|
||||
.d().uv(0, 4, 16, 2).rot(90).noCull()
|
||||
.u().uv(0, 2, 16, 4).rot(90).noCull()
|
||||
.rotate(n ? ModelRotation.X0_Y0 : (s ? ModelRotation.X0_Y180 : (w ? ModelRotation.X0_Y270 : ModelRotation.X0_Y90)));
|
||||
else if(sides == 2 && ((e != w) || (n != s)))
|
||||
return model
|
||||
.add(7.75f, 3.5f, 0, 8.25f, 3.5f, 4).noShade()
|
||||
.d().uv(0, 4, 16, 2).rot(90).noCull()
|
||||
.u().uv(0, 2, 16, 4).rot(90).noCull()
|
||||
.add(7.75f, 3.5f, 4, 8.25f, 3.5f, 8).noShade()
|
||||
.d().uv(0, 4, 16, 2).rot(90).noCull()
|
||||
.u().uv(0, 2, 16, 4).rot(90).noCull()
|
||||
.add(8, 3.5f, 7.75f, 12, 3.5f, 8.25f).noShade()
|
||||
.d().uv(0, 4, 16, 2).noCull()
|
||||
.u().uv(0, 2, 16, 4).noCull()
|
||||
.add(12, 3.5f, 7.75f, 16, 3.5f, 8.25f).noShade()
|
||||
.d().uv(0, 4, 16, 2).noCull()
|
||||
.u().uv(0, 2, 16, 4).noCull()
|
||||
.rotate(n && e ? ModelRotation.X0_Y0 : (s && w ? ModelRotation.X0_Y180 :
|
||||
(n && w ? ModelRotation.X0_Y270 : ModelRotation.X0_Y90)));
|
||||
else if(sides == 2)
|
||||
return model
|
||||
.add(7.75f, 3.5f, 0, 8.25f, 3.5f, 4).noShade()
|
||||
.d().uv(0, 4, 16, 2).rot(90).noCull()
|
||||
.u().uv(0, 2, 16, 4).rot(90).noCull()
|
||||
.add(7.75f, 3.5f, 4, 8.25f, 3.5f, 8).noShade()
|
||||
.d().uv(0, 4, 16, 2).rot(90).noCull()
|
||||
.u().uv(0, 2, 16, 4).rot(90).noCull()
|
||||
.add(7.75f, 3.5f, 8, 8.25f, 3.5f, 12).noShade()
|
||||
.d().uv(0, 4, 16, 2).rot(90).noCull()
|
||||
.u().uv(0, 2, 16, 4).rot(90).noCull()
|
||||
.add(7.75f, 3.5f, 12, 8.25f, 3.5f, 16).noShade()
|
||||
.d().uv(0, 4, 16, 2).rot(90).noCull()
|
||||
.u().uv(0, 2, 16, 4).rot(90).noCull()
|
||||
.rotate(n ? ModelRotation.X0_Y0 : ModelRotation.X0_Y90);
|
||||
else if(sides == 3)
|
||||
return model
|
||||
.add(7.75f, 3.5f, 0, 8.25f, 3.5f, 4).noShade()
|
||||
.d().uv(0, 4, 16, 2).rot(90).noCull()
|
||||
.u().uv(0, 2, 16, 4).rot(90).noCull()
|
||||
.add(7.75f, 3.5f, 4, 8.25f, 3.5f, 8).noShade()
|
||||
.d().uv(0, 4, 16, 2).rot(90).noCull()
|
||||
.u().uv(0, 2, 16, 4).rot(90).noCull()
|
||||
.add(7.75f, 3.5f, 8, 8.25f, 3.5f, 12).noShade()
|
||||
.d().uv(0, 4, 16, 2).rot(90).noCull()
|
||||
.u().uv(0, 2, 16, 4).rot(90).noCull()
|
||||
.add(7.75f, 3.5f, 12, 8.25f, 3.5f, 16).noShade()
|
||||
.d().uv(0, 4, 16, 2).rot(90).noCull()
|
||||
.u().uv(0, 2, 16, 4).rot(90).noCull()
|
||||
.add(8, 3.5f, 7.75f, 12, 3.5f, 8.25f).noShade()
|
||||
.d().uv(0, 4, 16, 2).noCull()
|
||||
.u().uv(0, 2, 16, 4).noCull()
|
||||
.add(12, 3.5f, 7.75f, 16, 3.5f, 8.25f).noShade()
|
||||
.d().uv(0, 4, 16, 2).noCull()
|
||||
.u().uv(0, 2, 16, 4).noCull()
|
||||
.rotate(!w ? ModelRotation.X0_Y0 : (!e ? ModelRotation.X0_Y180 : (!s ? ModelRotation.X0_Y270 : ModelRotation.X0_Y90)));
|
||||
else
|
||||
return model
|
||||
.add(7.75f, 3.5f, 0, 8.25f, 3.5f, 4).noShade()
|
||||
.d().uv(0, 4, 16, 2).rot(90).noCull()
|
||||
.u().uv(0, 2, 16, 4).rot(90).noCull()
|
||||
.add(7.75f, 3.5f, 4, 8.25f, 3.5f, 8).noShade()
|
||||
.d().uv(0, 4, 16, 2).rot(90).noCull()
|
||||
.u().uv(0, 2, 16, 4).rot(90).noCull()
|
||||
.add(7.75f, 3.5f, 8, 8.25f, 3.5f, 12).noShade()
|
||||
.d().uv(0, 4, 16, 2).rot(90).noCull()
|
||||
.u().uv(0, 2, 16, 4).rot(90).noCull()
|
||||
.add(7.75f, 3.5f, 12, 8.25f, 3.5f, 16).noShade()
|
||||
.d().uv(0, 4, 16, 2).rot(90).noCull()
|
||||
.u().uv(0, 2, 16, 4).rot(90).noCull()
|
||||
.add(0, 3.5f, 7.75f, 4, 3.5f, 8.25f).noShade()
|
||||
.d().uv(0, 4, 16, 2).noCull()
|
||||
.u().uv(0, 2, 16, 4).noCull()
|
||||
.add(4, 3.5f, 7.75f, 8, 3.5f, 8.25f).noShade()
|
||||
.d().uv(0, 4, 16, 2).noCull()
|
||||
.u().uv(0, 2, 16, 4).noCull()
|
||||
.add(8, 3.5f, 7.75f, 12, 3.5f, 8.25f).noShade()
|
||||
.d().uv(0, 4, 16, 2).noCull()
|
||||
.u().uv(0, 2, 16, 4).noCull()
|
||||
.add(12, 3.5f, 7.75f, 16, 3.5f, 8.25f).noShade()
|
||||
.d().uv(0, 4, 16, 2).noCull()
|
||||
.u().uv(0, 2, 16, 4).noCull();
|
||||
}
|
||||
|
||||
public Model getModel(ModelProvider provider, String name, State state) {
|
||||
boolean n = state.getValue(NORTH);
|
||||
boolean s = state.getValue(SOUTH);
|
||||
boolean w = state.getValue(WEST);
|
||||
boolean e = state.getValue(EAST);
|
||||
int sides = (n ? 1 : 0) + (s ? 1 : 0) + (w ? 1 : 0) + (e ? 1 : 0);
|
||||
if(sides == 0) {
|
||||
n = true;
|
||||
s = true;
|
||||
sides = 2;
|
||||
}
|
||||
Model model = provider.getModel("trip_wire");
|
||||
return (state.getValue(SUSPENDED) ? ((state.getValue(ATTACHED) ? getModelAttSuspend(model, n, s, w, e, sides) :
|
||||
getModelDetSuspend(model, n, s, w, e, sides))) : (state.getValue(ATTACHED) ? getModelAttached(model, n, s, w, e, sides) :
|
||||
getModelDetached(model, n, s, w, e, sides)));
|
||||
}
|
||||
|
||||
public Property<?>[] getIgnoredProperties() {
|
||||
return new Property[] {DISARMED, POWERED};
|
||||
}
|
||||
|
||||
public StackSize getMaxAmount() {
|
||||
return StackSize.XXXL;
|
||||
}
|
||||
|
||||
protected Property[] getUnsavedProperties() {
|
||||
return new Property[] {NORTH, SOUTH, WEST, EAST};
|
||||
}
|
||||
|
||||
public GuiPosition getItemPosition() {
|
||||
return GuiPosition.THIN_WIRE;
|
||||
}
|
||||
}
|
|
@ -10,7 +10,7 @@ public abstract class FishConstants {
|
|||
new RngFishable(new ItemStack(Items.bone), 10), new RngFishable(new ItemStack(Items.water_bottle), 10),
|
||||
new RngFishable(new ItemStack(Items.string), 5), (new RngFishable(new ItemStack(Items.fishing_rod), 2)).setMaxDamagePercent(0.9F),
|
||||
new RngFishable(new ItemStack(Items.stick), 5), new RngFishable(new ItemStack(Items.ink_sack, 10), 1),
|
||||
new RngFishable(new ItemStack(Items.tripwire_hook), 10), new RngFishable(new ItemStack(Items.rotten_flesh), 10));
|
||||
new RngFishable(new ItemStack(Items.hook), 10), new RngFishable(new ItemStack(Items.rotten_flesh), 10));
|
||||
public static final WeightedList<RngFishable> FISHING_TREASURE = new WeightedList<RngFishable>(
|
||||
new RngFishable(new ItemStack(Items.waterlily), 1), new RngFishable(new ItemStack(Items.name_tag), 1),
|
||||
new RngFishable(new ItemStack(Items.saddle), 1),
|
||||
|
|
|
@ -505,7 +505,6 @@ public abstract class BlockRegistry {
|
|||
register("black_quartz_pillar", (new BlockQuartzPillar(true)).setSound(SoundType.STONE).setHardness(0.8F).setDisplay("Schwarze Quarzsäule"));
|
||||
|
||||
register("iron_bars", (new BlockPane(Material.SOLID)).setHardness(5.0F).setResistance(10.0F).setSound(SoundType.STONE).setDisplay("Eisengitter"));
|
||||
register("iron_trapdoor", (new BlockTrapDoor(Material.SOLID)).setHardness(5.0F).setSound(SoundType.STONE).setDisplay("Eisenfalltür"));
|
||||
|
||||
Block brick_block = (new Block(Material.SOLID)).setHardness(2.0F).setResistance(10.0F).setSound(SoundType.STONE)
|
||||
.setDisplay("Ziegelsteine").setTab(CheatTab.BLOCKS);
|
||||
|
@ -559,11 +558,9 @@ public abstract class BlockRegistry {
|
|||
register(deco.name + "_stairs", (new BlockStairs(block)).setDisplay(deco.display + " - Treppe"));
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
register("iron_door", (new BlockDoor(Material.SOLID)).setHardness(5.0F).setSound(SoundType.STONE).setDisplay("Eisentür"));
|
||||
register("trapdoor", (new BlockTrapDoor(Material.WOOD)).setHardness(3.0F).setSound(SoundType.WOOD).setDisplay("Holzfalltür").setFlammable(5, 20));
|
||||
|
||||
register("iron_trapdoor", (new BlockTrapDoor(Material.SOLID)).setHardness(5.0F).setSound(SoundType.STONE).setDisplay("Eisenfalltür"));
|
||||
|
||||
register("core", new BlockCore().setHardness(1.5F).setResistance(10.0F).setSound(SoundType.STONE)
|
||||
.setDisplay("Chunk-Lade-Kern"));
|
||||
|
@ -640,10 +637,8 @@ public abstract class BlockRegistry {
|
|||
register("lamp", (new BlockToggleableLight(false)).setHardness(0.3F).setSound(SoundType.GLASS)
|
||||
.setDisplay("Lampe").setTab(CheatTab.TECHNOLOGY));
|
||||
register("lit_lamp", (new BlockToggleableLight(true)).setHardness(0.3F).setSound(SoundType.GLASS).setDisplay("Lampe"));
|
||||
register("tripwire_hook", (new BlockTripWireHook()).setDisplay("Haken"));
|
||||
register("string", (new BlockTripWire()).setDisplay("Stolperdraht").setTab(CheatTab.TECHNOLOGY));
|
||||
|
||||
register("iron_door", (new BlockDoor(Material.SOLID)).setHardness(5.0F).setSound(SoundType.STONE).setDisplay("Eisentür"));
|
||||
register("hook", (new BlockHook()).setDisplay("Haken"));
|
||||
register("string", (new BlockString()).setDisplay("Seil").setTab(CheatTab.TECHNOLOGY));
|
||||
|
||||
for(Block block : BLOCKS) {
|
||||
for(State state : block.getSavedStates()) {
|
||||
|
|
|
@ -464,7 +464,7 @@ public abstract class Blocks {
|
|||
public static final Block stonebrick = get("stonebrick");
|
||||
public static final BlockSlab stonebrick_slab = get("stonebrick_slab");
|
||||
public static final BlockStairs stonebrick_stairs = get("stonebrick_stairs");
|
||||
public static final BlockTripWire string = get("string");
|
||||
public static final BlockString string = get("string");
|
||||
public static final BlockMetalBlock sulfur_block = get("sulfur_block");
|
||||
public static final BlockMetalOre sulfur_ore = get("sulfur_ore");
|
||||
public static final BlockDoublePlant sunflower = get("sunflower");
|
||||
|
@ -501,7 +501,7 @@ public abstract class Blocks {
|
|||
public static final BlockTNT tnt_6 = get("tnt_6");
|
||||
public static final BlockTNT tnt_7 = get("tnt_7");
|
||||
public static final BlockTrapDoor trapdoor = get("trapdoor");
|
||||
public static final BlockTripWireHook tripwire_hook = get("tripwire_hook");
|
||||
public static final BlockHook hook = get("hook");
|
||||
public static final BlockMetalBlock tungsten_block = get("tungsten_block");
|
||||
public static final BlockMetalOre tungsten_ore = get("tungsten_ore");
|
||||
public static final BlockMetalBlock uranium_block = get("uranium_block");
|
||||
|
|
|
@ -182,7 +182,7 @@ public abstract class CraftingRegistry
|
|||
add(new ItemStack(Items.sign, 3), "###", "###", " X ", '#', planks, 'X', Items.stick);
|
||||
add(new ItemStack(Items.stick, 4), "#", "#", '#', planks);
|
||||
add(new ItemStack(Items.boat, 1), "# #", "###", '#', planks);
|
||||
add(new ItemStack(Items.tripwire_hook, 2), "I", "S", "#", '#', planks, 'S', Items.stick, 'I', Items.iron_ingot);
|
||||
add(new ItemStack(Items.hook, 2), "I", "S", "#", '#', planks, 'S', Items.stick, 'I', Items.iron_ingot);
|
||||
add(new ItemStack(Items.wooden_button, 1), "#", '#', planks);
|
||||
add(new ItemStack(Items.wooden_pressure_plate, 1), "##", '#', planks);
|
||||
add(new ItemStack(Items.piston, 1), "TTT", "#X#", "#R#", '#', Items.cobblestone, 'X', Items.iron_ingot, 'R', Items.charged_powder, 'T', planks);
|
||||
|
|
|
@ -741,7 +741,7 @@ public abstract class Items {
|
|||
public static final Item tnt_6 = get("tnt_6");
|
||||
public static final Item tnt_7 = get("tnt_7");
|
||||
public static final Item trapdoor = get("trapdoor");
|
||||
public static final Item tripwire_hook = get("tripwire_hook");
|
||||
public static final Item hook = get("hook");
|
||||
public static final Item tungsten_block = get("tungsten_block");
|
||||
public static final ItemMetal tungsten_ingot = get("tungsten_ingot");
|
||||
public static final Item tungsten_ore = get("tungsten_ore");
|
||||
|
|
|
@ -12,7 +12,6 @@ public enum GuiPosition {
|
|||
CROSS(0.0f, 45.0f, 0.0f, 0.0f, 0.0f, 0.0f, 1.25f),
|
||||
CROSS_SMALL(0.0f, 45.0f, 0.0f, 0.0f, 0.5f, 0.0f, 1.5f),
|
||||
WIRE(90.0f, 45.0f, -90.0f, 0.0f, -4.0f, 0.0f, 1.75f),
|
||||
THIN_WIRE(50.0f, 45.0f, -50.0f, 5.0f, 1.75f, 0.0f, 2.25f),
|
||||
PANE(0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 1.25f),
|
||||
PANE_SIDE(0.0f, 0.0f, 0.0f, -4.5f, -3.75f, 0.0f, 1.25f),
|
||||
FENCE(0.0f, 90.0f, 0.0f, 0.0f, 0.0f, 0.0f, 1.0f);
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue