Esempio n. 1
0
  @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;
  }
Esempio n. 5
0
 @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));
 }
Esempio n. 14
0
 @Override
 public boolean isSideSolid(IBlockAccess world, BlockPos pos, EnumFacing direction) {
   return direction.ordinal() != getMetaFromState(world.getBlockState(pos));
 }