@Override public boolean interactFirst(EntityPlayer player) { if (MinecraftForge.EVENT_BUS.post(new MinecartInteractEvent(this, player))) { return true; } else if (this.riddenByEntity != null && this.riddenByEntity instanceof EntityPlayer && this.riddenByEntity != player) { return true; } else if (this.riddenByEntity != null && this.riddenByEntity != player) { return false; } else { if (player != null) { ItemStack stack = player.getCurrentEquippedItem(); if (stack != null) { if (stack.getItem() instanceof Item1N4148 || stack.getItem() instanceof ItemTrainController8Bit || stack.getItem() instanceof ItemTrainController32Bit) { return true; } if (stack.getItem() instanceof ItemMinecart) return true; } if (!this.worldObj.isRemote) { player.mountEntity(this); } } return true; } }
/** * Spawns a new cart entity using the provided item. * <p/> * The backing item must implement <code>IMinecartItem</code> and/or extend * <code>ItemMinecart</code>. * <p/> * Generally Forge requires all cart items to extend ItemMinecart. * * @param owner The player name that should used as the owner * @param cart An ItemStack containing a cart item, will not be changed by * the function * @param world The World object * @param x x-Coord * @param y y-Coord * @param z z-Coord * @return the cart placed or null if failed * @see IMinecartItem, ItemMinecart */ public static EntityMinecart placeCart(GameProfile owner, ItemStack cart, WorldServer world, int x, int y, int z) { if (cart == null) return null; cart = cart.copy(); if (cart.getItem() instanceof IMinecartItem) { IMinecartItem mi = (IMinecartItem) cart.getItem(); return mi.placeCart(owner, cart, world, x, y, z); } else if (cart.getItem() instanceof ItemMinecart) try { boolean placed = cart.getItem().onItemUse(cart, FakePlayerFactory.get(world, railcraftProfile), world, x, y, z , 0, 0, 0, 0); if (placed) { List<EntityMinecart> carts = getMinecartsAt(world, x, y, z, 0.3f); if (carts.size() > 0) { setCartOwner(carts.get(0), owner); return carts.get(0); } } } catch (Exception e) { return null; } return null; }
/** * Spawns a new cart entity using the provided item. * * The backing item must implement * <code>IMinecartItem</code> and/or extend * <code>ItemMinecart</code>. * * Generally Forge requires all cart items to extend ItemMinecart. * * @param owner The player name that should used as the owner * @param cart An ItemStack containing a cart item, will not be changed by * the function * @param world The World object * @param i x-Coord * @param j y-Coord * @param k z-Coord * @return the cart placed or null if failed * @see IMinecartItem, ItemMinecart */ public static EntityMinecart placeCart(String owner, ItemStack cart, World world, int i, int j, int k) { if (cart == null) { return null; } cart = cart.copy(); if (cart.getItem() instanceof IMinecartItem) { IMinecartItem mi = (IMinecartItem) cart.getItem(); return mi.placeCart(owner, cart, world, i, j, k); } else if (cart.getItem() instanceof ItemMinecart) { try { boolean placed = cart.getItem().onItemUse(cart, null, world, i, j, k, 0, 0, 0, 0); if (placed) { List<EntityMinecart> carts = getMinecartsAt(world, i, j, k, 0.3f); if (carts.size() > 0) { setCartOwner(carts.get(0), owner); return carts.get(0); } } } catch (Exception e) { return null; } } return null; }
public static boolean canItemAcceptSockets(ItemStack stack) { Item item = stack.getItem(); if (item == PhysisItems.socketable) { return false; } if (item instanceof ItemBlock || item instanceof ItemReed || item instanceof ItemBed || item instanceof ItemFood || item instanceof ItemPotion || item instanceof ItemMinecart || item instanceof ItemBoat || item instanceof ItemEnchantedBook || item instanceof ItemWritableBook || item instanceof ItemBucket || item instanceof ItemBucketMilk || item instanceof ItemDoor) { return false; } if (item.getItemStackLimit(stack) > 1) { return false; } if (item.hasContainerItem(stack)){ ItemStack container = item.getContainerItem(stack); if (container != null && container.getItem() instanceof ItemBucket) { return false; } } if (item.getUnlocalizedName(stack).toLowerCase().contains("bucket")) { return false; } return true; }
public ItemStack func_82487_b(IBlockSource p_82487_1_, ItemStack p_82487_2_) { EnumFacing var3 = BlockDispenser.func_100009_j_(p_82487_1_.func_82620_h()); World var4 = p_82487_1_.func_82618_k(); double var5 = p_82487_1_.func_82615_a() + (double)((float)var3.func_82601_c() * 1.125F); double var7 = p_82487_1_.func_82617_b() + (double)((float)var3.func_96559_d() * 1.125F); double var9 = p_82487_1_.func_82616_c() + (double)((float)var3.func_82599_e() * 1.125F); int var11 = p_82487_1_.func_82623_d() + var3.func_82601_c(); int var12 = p_82487_1_.func_82622_e() + var3.func_96559_d(); int var13 = p_82487_1_.func_82621_f() + var3.func_82599_e(); int var14 = var4.func_72798_a(var11, var12, var13); double var15; if(BlockRailBase.func_72184_d(var14)) { var15 = 0.0D; } else { if(var14 != 0 || !BlockRailBase.func_72184_d(var4.func_72798_a(var11, var12 - 1, var13))) { return this.field_96465_b.func_82482_a(p_82487_1_, p_82487_2_); } var15 = -1.0D; } EntityMinecart var17 = EntityMinecart.func_94090_a(var4, var5, var7 + var15, var9, ((ItemMinecart)p_82487_2_.func_77973_b()).field_77841_a); if(p_82487_2_.func_82837_s()) { var17.func_96094_a(p_82487_2_.func_82833_r()); } var4.func_72838_d(var17); p_82487_2_.func_77979_a(1); return p_82487_2_; }