@Override public IBlockState getActualState(IBlockState state, IBlockAccess worldIn, BlockPos pos) { EnumBlockMultiType type = (EnumBlockMultiType) state.getValue(MULTI_TYPE); int renderType = 0; switch (type) { case CRYO_CHAMBER: IBlockState stateAbove = worldIn.getBlockState(pos.up()); TileEntityMulti tile = (TileEntityMulti) worldIn.getTileEntity(pos); if (stateAbove.getBlock() == this && (stateAbove.getValue(MULTI_TYPE)) == EnumBlockMultiType.CRYO_CHAMBER) { renderType = 0; } else { renderType = 4; } if (tile != null && tile.mainBlockPosition != null) { IBlockState stateMain = worldIn.getBlockState(tile.mainBlockPosition); if (stateMain.getBlock() == MarsBlocks.machine && stateMain.getValue(BlockMachineMars.TYPE) == BlockMachineMars.EnumMachineType.CRYOGENIC_CHAMBER) { EnumFacing dir = stateMain.getValue(BlockMachineMars.FACING); renderType += dir.getHorizontalIndex(); } } break; default: break; } return state.withProperty(RENDER_TYPE, renderType); }
public ItemStack b(ISourceBlock isourceblock, ItemStack itemstack) { EnumFacing enumfacing = BlockDispenser.b(isourceblock.h()); double d0 = isourceblock.getX() + (double) enumfacing.c(); double d1 = (double) ((float) isourceblock.getBlockY() + 0.2F); double d2 = isourceblock.getZ() + (double) enumfacing.e(); // CraftBukkit start World world = isourceblock.k(); ItemStack itemstack1 = itemstack.a(1); org.bukkit.block.Block block = world .getWorld() .getBlockAt( isourceblock.getBlockX(), isourceblock.getBlockY(), isourceblock.getBlockZ()); CraftItemStack craftItem = CraftItemStack.asCraftMirror(itemstack1); BlockDispenseEvent event = new BlockDispenseEvent(block, craftItem.clone(), new org.bukkit.util.Vector(d0, d1, d2)); if (!BlockDispenser.eventFired) { world.getServer().getPluginManager().callEvent(event); } if (event.isCancelled()) { itemstack.count++; return itemstack; } if (!event.getItem().equals(craftItem)) { itemstack.count++; // Chain to handler for new item ItemStack eventStack = CraftItemStack.asNMSCopy(event.getItem()); IDispenseBehavior idispensebehavior = (IDispenseBehavior) BlockDispenser.a.a(eventStack.getItem()); if (idispensebehavior != IDispenseBehavior.a && idispensebehavior != this) { idispensebehavior.a(isourceblock, eventStack); return itemstack; } } itemstack1 = CraftItemStack.asNMSCopy(event.getItem()); EntityFireworks entityfireworks = new EntityFireworks( isourceblock.k(), event.getVelocity().getX(), event.getVelocity().getY(), event.getVelocity().getZ(), itemstack1); isourceblock.k().addEntity(entityfireworks); // itemstack.a(1); // Handled during event processing // CraftBukkit end return itemstack; }
ClayLump extrudeLump(ClayLump against, EnumFacing dir) { ClayLump lump = against.copy(); Block b = FzUtil.getTraceHelper(); against.toBlockBounds(b); int wX = lump.maxX - lump.minX; int wY = lump.maxY - lump.minY; int wZ = lump.maxZ - lump.minZ; lump.maxX += wX * dir.getDirectionVec().getX(); lump.maxY += wY * dir.getDirectionVec().getY(); lump.maxZ += wZ * dir.getDirectionVec().getZ(); lump.minX += wX * dir.getDirectionVec().getX(); lump.minY += wY * dir.getDirectionVec().getY(); lump.minZ += wZ * dir.getDirectionVec().getZ(); return lump; }
/** Dispense the specified stack, play the dispense sound and spawn particles. */ public ItemStack dispenseStack(IBlockSource par1IBlockSource, ItemStack par2ItemStack) { EnumFacing var3 = BlockDispenser.getFacing(par1IBlockSource.getBlockMetadata()); double var4 = par1IBlockSource.getX() + (double) var3.getFrontOffsetX(); double var6 = (double) ((float) par1IBlockSource.getYInt() + 0.2F); double var8 = par1IBlockSource.getZ() + (double) var3.getFrontOffsetZ(); Entity var10 = ItemMonsterPlacer.spawnCreature( par1IBlockSource.getWorld(), par2ItemStack.getItemDamage(), var4, var6, var8); if (var10 instanceof EntityLiving && par2ItemStack.hasDisplayName()) { ((EntityLiving) var10).func_94058_c(par2ItemStack.getDisplayName()); } par2ItemStack.splitStack(1); return par2ItemStack; }
@Override public void onBlockPlacedBy( World worldIn, BlockPos pos, IBlockState state, EntityLivingBase placer, ItemStack stack) { final int angle = MathHelper.floor_double(placer.rotationYaw * 4.0F / 360.0F + 0.5D) & 3; int change = EnumFacing.getHorizontal(angle).getOpposite().getIndex(); worldIn.setBlockState(pos, getStateFromMeta(change), 3); }
/** Dispense the specified stack, play the dispense sound and spawn particles. */ public ItemStack dispenseStack(IBlockSource par1IBlockSource, ItemStack par2ItemStack) { EnumFacing var3 = EnumFacing.func_82600_a(par1IBlockSource.func_82620_h()); World var4 = par1IBlockSource.getWorld(); double var5 = par1IBlockSource.getX() + (double) ((float) var3.func_82601_c() * 1.125F); double var7 = par1IBlockSource.getY(); double var9 = par1IBlockSource.getZ() + (double) ((float) var3.func_82599_e() * 1.125F); int var11 = par1IBlockSource.getXInt() + var3.func_82601_c(); int var12 = par1IBlockSource.getYInt(); int var13 = par1IBlockSource.getZInt() + var3.func_82599_e(); Material var14 = var4.getBlockMaterial(var11, var12, var13); double var15; if (Material.water.equals(var14)) { var15 = 1.0D; } else { if (!Material.air.equals(var14) || !Material.water.equals(var4.getBlockMaterial(var11, var12 - 1, var13))) { return this.defaultItemDispenseBehavior.dispense(par1IBlockSource, par2ItemStack); } var15 = 0.0D; } EntityBoat var17 = new EntityBoat(var4, var5, var7 + var15, var9); var4.spawnEntityInWorld(var17); par2ItemStack.splitStack(1); return par2ItemStack; }
public ItemStack b(IBlockSource iblocksource, ItemStack itemstack) { EnumFacing enumfacing = BlockDispenser.j_(iblocksource.h()); World world = iblocksource.k(); int i0 = iblocksource.d() + enumfacing.c(); int i1 = iblocksource.e() + enumfacing.d(); int i2 = iblocksource.f() + enumfacing.e(); Material material = world.g(i0, i1, i2); int i3 = world.h(i0, i1, i2); Item item; if (Material.h.equals(material) && i3 == 0) { item = Item.ay; } else { if (!Material.i.equals(material) || i3 != 0) { return super.b(iblocksource, itemstack); } item = Item.az; } world.i(i0, i1, i2); if (--itemstack.a == 0) { // CanaryMod: Dispense DispenseHook hook = new DispenseHook(((TileEntityDispenser) iblocksource.j()).getCanaryDispenser(), null); Canary.hooks().callHook(hook); if (!hook.isCanceled()) { itemstack.c = item.cp; itemstack.a = 1; } // } else if (((TileEntityDispenser) iblocksource.j()).a(new ItemStack(item)) < 0) { this.b.a(iblocksource, new ItemStack(item)); } return itemstack; }
@Override public void onPlacedBy( EntityPlayer player, ItemStack is, EnumFacing side, float hitX, float hitY, float hitZ) { super.onPlacedBy(player, is, side, hitX, hitY, hitZ); NBTTagCompound tag = null; if (is.hasTagCompound()) { tag = is.getTagCompound(); try { putData(new DataInNBT(tag)); } catch (IOException e) { e.printStackTrace(); } } else { addLump(); } EnumFacing placement = SpaceUtil.determineFlatOrientation(player); if (tag == null || !tag.hasKey("front")) { front = placement; setRotation((byte) 0); } else if (placement.getDirectionVec().getY() == 0 && placement != null) { front = SpaceUtil.getOrientation(tag.getByte("front")); if (front == null || front.getDirectionVec().getY() != 0) { setRotation((byte) 0); front = placement; } else { EnumFacing f = placement; byte r = 0; for (byte i = 0; i < 4; i++) { if (f == front) { r = i; break; } f = SpaceUtil.rotate(f, EnumFacing.UP); } setRotation(r); } } }
public ItemStack getItem() { ItemStack ret = Core.registry.greenware_item.copy(); NBTTagCompound tag = new NBTTagCompound(); byte r = rotation; setRotation((byte) 0); try { putData(new DataOutNBT(tag)); } catch (IOException e) { e.printStackTrace(); } setRotation(r); tag.setByte("front", (byte) front.ordinal()); ret.setTagCompound(tag); if (customName != null) { ret.setStackDisplayName(customName); } return ret; }
public ItemStack b(IBlockSource iblocksource, ItemStack itemstack) { EnumFacing enumfacing = BlockDispenser.j_(iblocksource.h()); World world = iblocksource.k(); double d0 = iblocksource.a() + (double) ((float) enumfacing.c() * 1.125F); double d1 = iblocksource.b() + (double) ((float) enumfacing.d() * 1.125F); double d2 = iblocksource.c() + (double) ((float) enumfacing.e() * 1.125F); int i0 = iblocksource.d() + enumfacing.c(); int i1 = iblocksource.e() + enumfacing.d(); int i2 = iblocksource.f() + enumfacing.e(); int i3 = world.a(i0, i1, i2); double d3; if (BlockRailBase.d_(i3)) { d3 = 0.0D; } else { if (i3 != 0 || !BlockRailBase.d_(world.a(i0, i1 - 1, i2))) { return this.b.a(iblocksource, itemstack); } d3 = -1.0D; } EntityMinecart entityminecart = EntityMinecart.a(world, d0, d1 + d3, d2, ((ItemMinecart) itemstack.b()).a); // CanaryMod: Dispense DispenseHook hook = new DispenseHook( ((TileEntityDispenser) iblocksource.j()).getCanaryDispenser(), entityminecart.getCanaryEntity()); Canary.hooks().callHook(hook); if (!hook.isCanceled()) { world.d((Entity) entityminecart); itemstack.a(1); } // return itemstack; }
@Override public EnumFacing getElectricInputDirection() { return EnumFacing.getFront((this.getBlockMetadata() & 3) + 2); }
@Override public void onBlockPlacedBy( World world, BlockPos pos, IBlockState state, EntityLivingBase player, ItemStack stack) { int l = MathHelper.floor_double((double) (player.rotationYaw * 4.0F / 360.0F) + 2.5D) & 3; world.setBlockState(pos, getDefaultState().withProperty(FACING, EnumFacing.fromAngle(90 * l))); }
@Override public IBlockState getStateFromMeta(int meta) { return this.getDefaultState().withProperty(FACING, EnumFacing.getFront(meta)); }
@Override public boolean isSideSolid(IBlockAccess world, BlockPos pos, EnumFacing direction) { return direction.ordinal() != getMetaFromState(world.getBlockState(pos)); }