pick 97420a31d The big reformat of 2020

This commit is contained in:
yueh
2020-06-16 21:41:28 +02:00
parent 5304b3febe
commit 5225ea426b
2252 changed files with 95466 additions and 118582 deletions
+308 -376
View File
@@ -18,20 +18,10 @@
package appeng.parts;
import java.util.ArrayList;
import java.util.List;
import java.util.Optional;
import appeng.api.AEApi;
import appeng.api.definitions.IBlockDefinition;
import appeng.api.definitions.IItems;
import appeng.api.parts.*;
import appeng.api.util.AEPartLocation;
import appeng.api.util.DimensionalCoord;
import appeng.core.AppEng;
import appeng.core.sync.network.NetworkHandler;
import appeng.core.sync.packets.PacketClick;
import appeng.core.sync.packets.PacketPartPlacement;
import appeng.facade.IFacadeItem;
import appeng.util.LookDirection;
import appeng.util.Platform;
import net.minecraft.block.Block;
import net.minecraft.block.BlockState;
import net.minecraft.block.SoundType;
@@ -48,427 +38,369 @@ import net.minecraftforge.event.entity.player.PlayerDestroyItemEvent;
import net.minecraftforge.event.entity.player.PlayerInteractEvent;
import net.minecraftforge.eventbus.api.SubscribeEvent;
import java.util.ArrayList;
import java.util.List;
import java.util.Optional;
import appeng.api.AEApi;
import appeng.api.definitions.IBlockDefinition;
import appeng.api.definitions.IItems;
import appeng.api.parts.*;
import appeng.api.util.AEPartLocation;
import appeng.api.util.DimensionalCoord;
import appeng.core.AppEng;
import appeng.core.sync.network.NetworkHandler;
import appeng.core.sync.packets.PacketClick;
import appeng.core.sync.packets.PacketPartPlacement;
import appeng.facade.IFacadeItem;
import appeng.util.LookDirection;
import appeng.util.Platform;
public class PartPlacement {
public class PartPlacement
{
private static float eyeHeight = 0.0f;
private final ThreadLocal<Object> placing = new ThreadLocal<>();
private boolean wasCanceled = false;
private static float eyeHeight = 0.0f;
private final ThreadLocal<Object> placing = new ThreadLocal<>();
private boolean wasCanceled = false;
public static ActionResultType place(final ItemStack held, final BlockPos pos, Direction side,
final PlayerEntity player, final Hand hand, final World world, PlaceType pass, final int depth) {
if (depth > 3) {
return ActionResultType.FAIL;
}
public static ActionResultType place( final ItemStack held, final BlockPos pos, Direction side, final PlayerEntity player, final Hand hand, final World world, PlaceType pass, final int depth )
{
if( depth > 3 )
{
return ActionResultType.FAIL;
}
// FIXME: This was changed alot.
final LookDirection dir = Platform.getPlayerRay(player);
RayTraceContext rtc = new RayTraceContext(dir.getA(), dir.getB(), RayTraceContext.BlockMode.OUTLINE,
RayTraceContext.FluidMode.NONE, player);
final BlockRayTraceResult mop = world.rayTraceBlocks(rtc);
BlockItemUseContext useContext = new BlockItemUseContext(new ItemUseContext(player, hand, mop));
// FIXME: This was changed alot.
final LookDirection dir = Platform.getPlayerRay( player );
RayTraceContext rtc = new RayTraceContext(dir.getA(), dir.getB(), RayTraceContext.BlockMode.OUTLINE, RayTraceContext.FluidMode.NONE, player);
final BlockRayTraceResult mop = world.rayTraceBlocks( rtc );
BlockItemUseContext useContext = new BlockItemUseContext(new ItemUseContext(
player, hand, mop
));
if (!held.isEmpty() && Platform.isWrench(player, held, pos) && player.isCrouching()) {
if (!Platform.hasPermissions(new DimensionalCoord(world, pos), player)) {
return ActionResultType.FAIL;
}
if( !held.isEmpty() && Platform.isWrench( player, held, pos ) && player.isCrouching() )
{
if( !Platform.hasPermissions( new DimensionalCoord( world, pos ), player ) )
{
return ActionResultType.FAIL;
}
final TileEntity tile = world.getTileEntity(pos);
IPartHost host = null;
final TileEntity tile = world.getTileEntity( pos );
IPartHost host = null;
if (tile instanceof IPartHost) {
host = (IPartHost) tile;
}
if( tile instanceof IPartHost )
{
host = (IPartHost) tile;
}
if (host != null) {
if (!world.isRemote) {
if (mop.getType() == RayTraceResult.Type.BLOCK) {
final List<ItemStack> is = new ArrayList<>();
final SelectedPart sp = selectPart(player, host,
mop.getHitVec().add(-mop.getPos().getX(), -mop.getPos().getY(), -mop.getPos().getZ()));
if( host != null )
{
if( !world.isRemote )
{
if( mop.getType() == RayTraceResult.Type.BLOCK )
{
final List<ItemStack> is = new ArrayList<>();
final SelectedPart sp = selectPart( player, host,
mop.getHitVec().add( -mop.getPos().getX(), -mop.getPos().getY(), -mop.getPos().getZ() ) );
if (sp.part != null) {
is.add(sp.part.getItemStack(PartItemStack.WRENCH));
sp.part.getDrops(is, true);
host.removePart(sp.side, false);
}
if( sp.part != null )
{
is.add( sp.part.getItemStack( PartItemStack.WRENCH ) );
sp.part.getDrops( is, true );
host.removePart( sp.side, false );
}
if (sp.facade != null) {
is.add(sp.facade.getItemStack());
host.getFacadeContainer().removeFacade(host, sp.side);
Platform.notifyBlocksOfNeighbors(world, pos);
}
if( sp.facade != null )
{
is.add( sp.facade.getItemStack() );
host.getFacadeContainer().removeFacade( host, sp.side );
Platform.notifyBlocksOfNeighbors( world, pos );
}
if (host.isEmpty()) {
host.cleanup();
}
if( host.isEmpty() )
{
host.cleanup();
}
if (!is.isEmpty()) {
Platform.spawnDrops(world, pos, is);
}
}
} else {
player.swingArm(hand);
NetworkHandler.instance()
.sendToServer(new PacketPartPlacement(pos, side, getEyeOffset(player), hand));
}
return ActionResultType.SUCCESS;
}
if( !is.isEmpty() )
{
Platform.spawnDrops( world, pos, is );
}
}
}
else
{
player.swingArm( hand );
NetworkHandler.instance().sendToServer( new PacketPartPlacement( pos, side, getEyeOffset( player ), hand ) );
}
return ActionResultType.SUCCESS;
}
return ActionResultType.FAIL;
}
return ActionResultType.FAIL;
}
TileEntity tile = world.getTileEntity(pos);
IPartHost host = null;
TileEntity tile = world.getTileEntity( pos );
IPartHost host = null;
if (tile instanceof IPartHost) {
host = (IPartHost) tile;
}
if( tile instanceof IPartHost )
{
host = (IPartHost) tile;
}
if (!held.isEmpty()) {
final IFacadePart fp = isFacade(held, AEPartLocation.fromFacing(side));
if (fp != null) {
if (host != null) {
if (!world.isRemote) {
if (host.getPart(AEPartLocation.INTERNAL) == null) {
return ActionResultType.FAIL;
}
if( !held.isEmpty() )
{
final IFacadePart fp = isFacade( held, AEPartLocation.fromFacing( side ) );
if( fp != null )
{
if( host != null )
{
if( !world.isRemote )
{
if( host.getPart( AEPartLocation.INTERNAL ) == null )
{
return ActionResultType.FAIL;
}
if (host.canAddPart(held, AEPartLocation.fromFacing(side))) {
if (host.getFacadeContainer().addFacade(fp)) {
host.markForSave();
host.markForUpdate();
if (!player.isCreative()) {
held.grow(-1);
;
if (held.getCount() == 0) {
player.inventory.mainInventory.set(player.inventory.currentItem,
ItemStack.EMPTY);
MinecraftForge.EVENT_BUS.post(new PlayerDestroyItemEvent(player, held, hand));
}
}
return ActionResultType.CONSUME;
}
}
} else {
player.swingArm(hand);
NetworkHandler.instance()
.sendToServer(new PacketPartPlacement(pos, side, getEyeOffset(player), hand));
return ActionResultType.SUCCESS;
}
}
return ActionResultType.FAIL;
}
}
if( host.canAddPart( held, AEPartLocation.fromFacing( side ) ) )
{
if( host.getFacadeContainer().addFacade( fp ) )
{
host.markForSave();
host.markForUpdate();
if( !player.isCreative() )
{
held.grow( -1 );
;
if( held.getCount() == 0 )
{
player.inventory.mainInventory.set( player.inventory.currentItem, ItemStack.EMPTY );
MinecraftForge.EVENT_BUS.post( new PlayerDestroyItemEvent( player, held, hand ) );
}
}
return ActionResultType.CONSUME;
}
}
}
else
{
player.swingArm( hand );
NetworkHandler.instance().sendToServer( new PacketPartPlacement( pos, side, getEyeOffset( player ), hand ) );
return ActionResultType.SUCCESS;
}
}
return ActionResultType.FAIL;
}
}
if (held.isEmpty()) {
if (host != null && player.isCrouching() && world.isAirBlock(pos)) {
if (mop.getType() == RayTraceResult.Type.BLOCK) {
Vec3d hitVec = mop.getHitVec().add(-mop.getPos().getX(), -mop.getPos().getY(),
-mop.getPos().getZ());
final SelectedPart sPart = selectPart(player, host, hitVec);
if (sPart != null && sPart.part != null) {
if (sPart.part.onShiftActivate(player, hand, hitVec)) {
if (world.isRemote) {
NetworkHandler.instance()
.sendToServer(new PacketPartPlacement(pos, side, getEyeOffset(player), hand));
}
return ActionResultType.SUCCESS;
}
}
}
}
}
if( held.isEmpty() )
{
if( host != null && player.isCrouching() && world.isAirBlock(pos) )
{
if( mop.getType() == RayTraceResult.Type.BLOCK )
{
Vec3d hitVec = mop.getHitVec().add(-mop.getPos().getX(), -mop.getPos().getY(), -mop.getPos().getZ());
final SelectedPart sPart = selectPart( player, host, hitVec );
if( sPart != null && sPart.part != null )
{
if( sPart.part.onShiftActivate( player, hand, hitVec ) )
{
if( world.isRemote )
{
NetworkHandler.instance().sendToServer( new PacketPartPlacement( pos, side, getEyeOffset( player ), hand ) );
}
return ActionResultType.SUCCESS;
}
}
}
}
}
if (held.isEmpty() || !(held.getItem() instanceof IPartItem)) {
return ActionResultType.PASS;
}
if( held.isEmpty() || !( held.getItem() instanceof IPartItem ) )
{
return ActionResultType.PASS;
}
BlockPos te_pos = pos;
BlockPos te_pos = pos;
final IBlockDefinition multiPart = AEApi.instance().definitions().blocks().multiPart();
if (host == null && pass == PlaceType.PLACE_ITEM) {
Direction offset = null;
final IBlockDefinition multiPart = AEApi.instance().definitions().blocks().multiPart();
if( host == null && pass == PlaceType.PLACE_ITEM )
{
Direction offset = null;
BlockState blockState = world.getBlockState(pos);
// FIXME isReplacable on the block state allows for more control, but requires
// an item use context
if (!blockState.isAir(world, pos) && !blockState.isReplaceable(useContext)) {
offset = side;
if (Platform.isServer()) {
side = side.getOpposite();
}
}
BlockState blockState = world.getBlockState(pos);
// FIXME isReplacable on the block state allows for more control, but requires an item use context
if( !blockState.isAir(world, pos) && !blockState.isReplaceable(useContext) )
{
offset = side;
if( Platform.isServer() )
{
side = side.getOpposite();
}
}
te_pos = offset == null ? pos : pos.offset(offset);
te_pos = offset == null ? pos : pos.offset( offset );
tile = world.getTileEntity(te_pos);
if (tile instanceof IPartHost) {
host = (IPartHost) tile;
}
tile = world.getTileEntity( te_pos );
if( tile instanceof IPartHost )
{
host = (IPartHost) tile;
}
final Optional<ItemStack> maybeMultiPartStack = multiPart.maybeStack(1);
final Optional<Block> maybeMultiPartBlock = multiPart.maybeBlock();
final Optional<BlockItem> maybeMultiPartBlockItem = multiPart.maybeBlockItem();
final Optional<ItemStack> maybeMultiPartStack = multiPart.maybeStack( 1 );
final Optional<Block> maybeMultiPartBlock = multiPart.maybeBlock();
final Optional<BlockItem> maybeMultiPartBlockItem = multiPart.maybeBlockItem();
final boolean hostIsNotPresent = host == null;
final boolean multiPartPresent = maybeMultiPartBlock.isPresent() && maybeMultiPartStack.isPresent()
&& maybeMultiPartBlockItem.isPresent();
BlockState multiPartBlockState = maybeMultiPartBlock.get().getDefaultState();
final boolean canMultiPartBePlaced = multiPartBlockState.isValidPosition(world, te_pos);
final boolean hostIsNotPresent = host == null;
final boolean multiPartPresent = maybeMultiPartBlock.isPresent() && maybeMultiPartStack.isPresent() && maybeMultiPartBlockItem.isPresent();
BlockState multiPartBlockState = maybeMultiPartBlock.get().getDefaultState();
final boolean canMultiPartBePlaced = multiPartBlockState.isValidPosition(world, te_pos);
// We cannot override the item stack of normal use context, so we use this hack
BlockItemUseContext mpUseCtx = new BlockItemUseContext(
new DirectionalPlaceContext(world, te_pos, side, maybeMultiPartStack.get(), side));
// We cannot override the item stack of normal use context, so we use this hack
BlockItemUseContext mpUseCtx = new BlockItemUseContext(new DirectionalPlaceContext(world, te_pos, side, maybeMultiPartStack.get(), side));
// FIXME: This is super-fishy and all needs to be re-checked. what does this
// even do???
if (hostIsNotPresent && multiPartPresent && canMultiPartBePlaced
&& maybeMultiPartBlockItem.get().tryPlace(mpUseCtx) == ActionResultType.SUCCESS) {
if (!world.isRemote) {
tile = world.getTileEntity(te_pos);
// FIXME: This is super-fishy and all needs to be re-checked. what does this even do???
if( hostIsNotPresent && multiPartPresent && canMultiPartBePlaced && maybeMultiPartBlockItem.get()
.tryPlace( mpUseCtx ) == ActionResultType.SUCCESS )
{
if( !world.isRemote )
{
tile = world.getTileEntity( te_pos );
if (tile instanceof IPartHost) {
host = (IPartHost) tile;
}
if( tile instanceof IPartHost )
{
host = (IPartHost) tile;
}
pass = PlaceType.INTERACT_SECOND_PASS;
} else {
player.swingArm(hand);
NetworkHandler.instance()
.sendToServer(new PacketPartPlacement(pos, side, getEyeOffset(player), hand));
return ActionResultType.SUCCESS;
}
} else if (host != null && !host.canAddPart(held, AEPartLocation.fromFacing(side))) {
return ActionResultType.FAIL;
}
}
pass = PlaceType.INTERACT_SECOND_PASS;
}
else
{
player.swingArm( hand );
NetworkHandler.instance().sendToServer( new PacketPartPlacement( pos, side, getEyeOffset( player ), hand ) );
return ActionResultType.SUCCESS;
}
}
else if( host != null && !host.canAddPart( held, AEPartLocation.fromFacing( side ) ) )
{
return ActionResultType.FAIL;
}
}
if (host == null) {
return ActionResultType.PASS;
}
if( host == null )
{
return ActionResultType.PASS;
}
if (!host.canAddPart(held, AEPartLocation.fromFacing(side))) {
if (pass == PlaceType.INTERACT_FIRST_PASS || pass == PlaceType.PLACE_ITEM) {
te_pos = pos.offset(side);
if( !host.canAddPart( held, AEPartLocation.fromFacing( side ) ) )
{
if( pass == PlaceType.INTERACT_FIRST_PASS || pass == PlaceType.PLACE_ITEM )
{
te_pos = pos.offset( side );
final BlockState blkState = world.getBlockState(te_pos);
final BlockState blkState = world.getBlockState( te_pos );
// FIXME: this is always true (host was de-referenced above)
if (blkState.isAir(world, te_pos) || blkState.isReplaceable(useContext) || host != null) {
return place(held, te_pos, side.getOpposite(), player, hand, world,
pass == PlaceType.INTERACT_FIRST_PASS ? PlaceType.INTERACT_SECOND_PASS
: PlaceType.PLACE_ITEM,
depth + 1);
}
}
return ActionResultType.PASS;
}
// FIXME: this is always true (host was de-referenced above)
if( blkState.isAir(world, te_pos) || blkState.isReplaceable( useContext ) || host != null )
{
return place( held, te_pos, side.getOpposite(), player, hand, world,
pass == PlaceType.INTERACT_FIRST_PASS ? PlaceType.INTERACT_SECOND_PASS : PlaceType.PLACE_ITEM, depth + 1 );
}
}
return ActionResultType.PASS;
}
if (!world.isRemote) {
if (mop.getType() != RayTraceResult.Type.MISS) {
final SelectedPart sp = selectPart(player, host,
mop.getHitVec().add(-mop.getPos().getX(), -mop.getPos().getY(), -mop.getPos().getZ()));
if( !world.isRemote )
{
if( mop.getType() != RayTraceResult.Type.MISS )
{
final SelectedPart sp = selectPart( player, host,
mop.getHitVec().add( -mop.getPos().getX(), -mop.getPos().getY(), -mop.getPos().getZ() ) );
if (sp.part != null) {
if (!player.isCrouching() && sp.part.onActivate(player, hand, mop.getHitVec())) {
return ActionResultType.FAIL;
}
}
}
if( sp.part != null )
{
if( !player.isCrouching() && sp.part.onActivate( player, hand, mop.getHitVec() ) )
{
return ActionResultType.FAIL;
}
}
}
final DimensionalCoord dc = host.getLocation();
if (!Platform.hasPermissions(dc, player)) {
return ActionResultType.FAIL;
}
final DimensionalCoord dc = host.getLocation();
if( !Platform.hasPermissions( dc, player ) )
{
return ActionResultType.FAIL;
}
final AEPartLocation mySide = host.addPart(held, AEPartLocation.fromFacing(side), player, hand);
if (mySide != null) {
multiPart.maybeBlock().ifPresent(multiPartBlock -> {
BlockState blockState = world.getBlockState(pos);
final SoundType ss = multiPartBlock.getSoundType(blockState, world, pos, player);
final AEPartLocation mySide = host.addPart( held, AEPartLocation.fromFacing( side ), player, hand );
if( mySide != null )
{
multiPart.maybeBlock().ifPresent( multiPartBlock ->
{
BlockState blockState = world.getBlockState(pos);
final SoundType ss = multiPartBlock.getSoundType( blockState, world, pos, player );
world.playSound(null, pos, ss.getPlaceSound(), SoundCategory.BLOCKS, (ss.getVolume() + 1.0F) / 2.0F,
ss.getPitch() * 0.8F);
});
world.playSound( null, pos, ss.getPlaceSound(), SoundCategory.BLOCKS, ( ss.getVolume() + 1.0F ) / 2.0F, ss.getPitch() * 0.8F );
} );
if (!player.isCreative()) {
held.grow(-1);
if (held.getCount() == 0) {
player.setHeldItem(hand, ItemStack.EMPTY);
MinecraftForge.EVENT_BUS.post(new PlayerDestroyItemEvent(player, held, hand));
}
}
}
} else {
player.swingArm(hand);
}
return ActionResultType.SUCCESS;
}
if( !player.isCreative() )
{
held.grow( -1 );
if( held.getCount() == 0 )
{
player.setHeldItem( hand, ItemStack.EMPTY );
MinecraftForge.EVENT_BUS.post( new PlayerDestroyItemEvent( player, held, hand ) );
}
}
}
}
else
{
player.swingArm( hand );
}
return ActionResultType.SUCCESS;
}
private static float getEyeOffset(final PlayerEntity p) {
if (p.world.isRemote) {
return Platform.getEyeOffset(p);
}
private static float getEyeOffset( final PlayerEntity p )
{
if( p.world.isRemote )
{
return Platform.getEyeOffset( p );
}
return getEyeHeight();
}
return getEyeHeight();
}
private static SelectedPart selectPart(final PlayerEntity player, final IPartHost host, final Vec3d pos) {
AppEng.proxy.updateRenderMode(player);
final SelectedPart sp = host.selectPart(pos);
AppEng.proxy.updateRenderMode(null);
private static SelectedPart selectPart( final PlayerEntity player, final IPartHost host, final Vec3d pos )
{
AppEng.proxy.updateRenderMode( player );
final SelectedPart sp = host.selectPart( pos );
AppEng.proxy.updateRenderMode( null );
return sp;
}
return sp;
}
public static IFacadePart isFacade(final ItemStack held, final AEPartLocation side) {
if (held.getItem() instanceof IFacadeItem) {
return ((IFacadeItem) held.getItem()).createPartFromItemStack(held, side);
}
public static IFacadePart isFacade( final ItemStack held, final AEPartLocation side )
{
if( held.getItem() instanceof IFacadeItem )
{
return ( (IFacadeItem) held.getItem() ).createPartFromItemStack( held, side );
}
return null;
}
return null;
}
@SubscribeEvent
public void playerInteract(final TickEvent.ClientTickEvent event) {
this.wasCanceled = false;
}
@SubscribeEvent
public void playerInteract( final TickEvent.ClientTickEvent event )
{
this.wasCanceled = false;
}
@SubscribeEvent
public void playerInteract(final PlayerInteractEvent event) {
// Only handle the main hand event
if (event.getHand() != Hand.MAIN_HAND) {
return;
}
@SubscribeEvent
public void playerInteract( final PlayerInteractEvent event )
{
// Only handle the main hand event
if( event.getHand() != Hand.MAIN_HAND )
{
return;
}
if (event instanceof PlayerInteractEvent.RightClickEmpty && event.getPlayer().world.isRemote) {
// re-check to see if this event was already channeled, cause these two events
// are really stupid...
final RayTraceResult mop = Platform.rayTrace(event.getPlayer(), true, false);
final Minecraft mc = Minecraft.getInstance();
if( event instanceof PlayerInteractEvent.RightClickEmpty && event.getPlayer().world.isRemote )
{
// re-check to see if this event was already channeled, cause these two events are really stupid...
final RayTraceResult mop = Platform.rayTrace( event.getPlayer(), true, false );
final Minecraft mc = Minecraft.getInstance();
final float f = 1.0F;
final double d0 = mc.playerController.getBlockReachDistance();
final Vec3d vec3 = mc.getRenderViewEntity().getEyePosition(f);
final float f = 1.0F;
final double d0 = mc.playerController.getBlockReachDistance();
final Vec3d vec3 = mc.getRenderViewEntity().getEyePosition( f );
if (mop instanceof BlockRayTraceResult && mop.getHitVec().distanceTo(vec3) < d0) {
BlockRayTraceResult brtr = (BlockRayTraceResult) mop;
if( mop instanceof BlockRayTraceResult && mop.getHitVec().distanceTo( vec3 ) < d0 )
{
BlockRayTraceResult brtr = (BlockRayTraceResult) mop;
final World w = event.getEntity().world;
final TileEntity te = w.getTileEntity(brtr.getPos());
if (te instanceof IPartHost && this.wasCanceled) {
event.setCanceled(true);
}
} else {
final ItemStack held = event.getPlayer().getHeldItem(event.getHand());
final IItems items = AEApi.instance().definitions().items();
final World w = event.getEntity().world;
final TileEntity te = w.getTileEntity( brtr.getPos() );
if( te instanceof IPartHost && this.wasCanceled )
{
event.setCanceled( true );
}
}
else
{
final ItemStack held = event.getPlayer().getHeldItem( event.getHand() );
final IItems items = AEApi.instance().definitions().items();
boolean supportedItem = items.memoryCard().isSameAs(held);
supportedItem |= items.colorApplicator().isSameAs(held);
boolean supportedItem = items.memoryCard().isSameAs( held );
supportedItem |= items.colorApplicator().isSameAs( held );
if (event.getPlayer().isCrouching() && !held.isEmpty() && supportedItem) {
NetworkHandler.instance().sendToServer(new PacketClick(event.getHand()));
}
}
} else if (event instanceof PlayerInteractEvent.RightClickBlock && !event.getPlayer().world.isRemote) {
if (this.placing.get() != null) {
return;
}
if( event.getPlayer().isCrouching() && !held.isEmpty() && supportedItem )
{
NetworkHandler.instance().sendToServer( new PacketClick( event.getHand() ) );
}
}
}
else if( event instanceof PlayerInteractEvent.RightClickBlock && !event.getPlayer().world.isRemote )
{
if( this.placing.get() != null )
{
return;
}
this.placing.set(event);
this.placing.set( event );
final ItemStack held = event.getPlayer().getHeldItem(event.getHand());
if (place(held, event.getPos(), event.getFace(), event.getPlayer(), event.getHand(),
event.getPlayer().world, PlaceType.INTERACT_FIRST_PASS, 0) == ActionResultType.SUCCESS) {
event.setCanceled(true);
this.wasCanceled = true;
}
final ItemStack held = event.getPlayer().getHeldItem( event.getHand() );
if( place( held, event.getPos(), event.getFace(), event.getPlayer(), event.getHand(), event.getPlayer().world,
PlaceType.INTERACT_FIRST_PASS, 0 ) == ActionResultType.SUCCESS )
{
event.setCanceled( true );
this.wasCanceled = true;
}
this.placing.set(null);
}
}
this.placing.set( null );
}
}
private static float getEyeHeight() {
return eyeHeight;
}
private static float getEyeHeight()
{
return eyeHeight;
}
public static void setEyeHeight(final float eyeHeight) {
PartPlacement.eyeHeight = eyeHeight;
}
public static void setEyeHeight( final float eyeHeight )
{
PartPlacement.eyeHeight = eyeHeight;
}
public enum PlaceType
{
PLACE_ITEM, INTERACT_FIRST_PASS, INTERACT_SECOND_PASS
}
public enum PlaceType {
PLACE_ITEM, INTERACT_FIRST_PASS, INTERACT_SECOND_PASS
}
}