net.minecraft.world.World.isBlockModifiable()方法的使用及代码示例

x33g5p2x  于2022-02-02 转载在 其他  
字(16.6k)|赞(0)|评价(0)|浏览(159)

本文整理了Java中net.minecraft.world.World.isBlockModifiable()方法的一些代码示例,展示了World.isBlockModifiable()的具体用法。这些代码示例主要来源于Github/Stackoverflow/Maven等平台,是从一些精选项目中提取出来的代码,具有较强的参考意义,能在一定程度帮忙到你。World.isBlockModifiable()方法的具体详情如下:
包路径:net.minecraft.world.World
类名称:World
方法名:isBlockModifiable

World.isBlockModifiable介绍

暂无

代码示例

代码示例来源:origin: Vazkii/Botania

  1. @Nonnull
  2. @Override
  3. public EnumActionResult onItemUse(EntityPlayer player, World world, BlockPos pos, EnumHand hand, EnumFacing side, float par8, float par9, float par10) {
  4. ItemStack stack = player.getHeldItem(hand);
  5. if(ManaItemHandler.requestManaExactForTool(stack, player, COST, false) && !world.provider.doesWaterVaporize()) {
  6. // Adapted from bucket code
  7. RayTraceResult mop = rayTrace(world, player, false);
  8. if (mop != null && mop.typeOfHit == RayTraceResult.Type.BLOCK) {
  9. BlockPos hitPos = mop.getBlockPos();
  10. if(!world.isBlockModifiable(player, hitPos))
  11. return EnumActionResult.FAIL;
  12. BlockPos placePos = hitPos.offset(mop.sideHit);
  13. if(player.canPlayerEdit(placePos, mop.sideHit, stack)) {
  14. if (ManaItemHandler.requestManaExactForTool(stack, player, COST, true)
  15. && ((ItemBucket) Items.WATER_BUCKET).tryPlaceContainedLiquid(player, world, placePos)) {
  16. for(int i = 0; i < 6; i++)
  17. Botania.proxy.sparkleFX(pos.getX() + side.getXOffset() + Math.random(), pos.getY() + side.getYOffset() + Math.random(), pos.getZ() + side.getZOffset() + Math.random(), 0.2F, 0.2F, 1F, 1F, 5);
  18. return EnumActionResult.SUCCESS;
  19. }
  20. }
  21. }
  22. return EnumActionResult.FAIL;
  23. }
  24. return EnumActionResult.PASS;
  25. }

代码示例来源:origin: Vazkii/Botania

  1. @Nonnull
  2. @Override
  3. public ActionResult<ItemStack> onItemRightClick(World world, EntityPlayer player, @Nonnull EnumHand hand) {
  4. RayTraceResult rtr = rayTrace(world, player, true);
  5. ItemStack stack = player.getHeldItem(hand);
  6. if(rtr == null)
  7. return ActionResult.newResult(EnumActionResult.PASS, stack);
  8. else {
  9. if(rtr.typeOfHit == net.minecraft.util.math.RayTraceResult.Type.BLOCK) {
  10. BlockPos pos = rtr.getBlockPos();
  11. if(!world.isBlockModifiable(player, pos))
  12. return ActionResult.newResult(EnumActionResult.PASS, stack);
  13. if(!player.canPlayerEdit(pos, rtr.sideHit, stack))
  14. return ActionResult.newResult(EnumActionResult.PASS, stack);
  15. IBlockState state = world.getBlockState(pos);
  16. Fluid fluid = FluidRegistry.lookupFluidForBlock(state.getBlock());
  17. boolean isFull = state.getBlock() instanceof BlockLiquid && state.getValue(BlockLiquid.LEVEL) == 0
  18. || state.getBlock() instanceof IFluidBlock && Math.abs(((IFluidBlock) state.getBlock()).getFilledPercentage(world, pos)) >= 1;
  19. if(fluid != null && isFull) {
  20. player.playSound(fluid.getFillSound(world, pos), 1.0f, 1.0f);
  21. world.setBlockToAir(pos);
  22. for(int x = 0; x < 5; x++)
  23. world.spawnParticle(EnumParticleTypes.EXPLOSION_NORMAL, pos.getX() + Math.random(), pos.getY() + Math.random(), pos.getZ() + Math.random(), 0, 0, 0);
  24. return ActionResult.newResult(EnumActionResult.SUCCESS, stack);
  25. }
  26. }
  27. return ActionResult.newResult(EnumActionResult.PASS, stack);
  28. }
  29. }

代码示例来源:origin: SleepyTrousers/EnderIO

  1. @Override
  2. public boolean isBlockModifiable(@Nonnull EntityPlayer player1, @Nonnull BlockPos pos) {
  3. return wrapped.isBlockModifiable(player1, pos);
  4. }

代码示例来源:origin: amadornes/MCMultiPart

  1. @Override
  2. public boolean isBlockModifiable(EntityPlayer player, BlockPos pos) {
  3. return getActualWorld().isBlockModifiable(player, pos);
  4. }

代码示例来源:origin: AlgorithmX2/Chisels-and-Bits

  1. public boolean canPlayerManipulate(
  2. final @Nonnull BlockPos pos,
  3. final @Nonnull EnumFacing side,
  4. final @Nonnull ItemStack is,
  5. final boolean placement )
  6. {
  7. // only re-test if something changes.
  8. if ( permissionResult == null || lastPermissionBit != is || lastPos != pos || placement != lastPlacement )
  9. {
  10. lastPos = pos;
  11. lastPlacement = placement;
  12. lastPermissionBit = is;
  13. if ( innerPlayer.canPlayerEdit( pos, side, is ) && innerPlayer.worldObj.isBlockModifiable( innerPlayer, pos ) )
  14. {
  15. final EventBlockBitModification event = new EventBlockBitModification( innerPlayer.worldObj, pos, innerPlayer, hand, is, placement );
  16. MinecraftForge.EVENT_BUS.post( event );
  17. permissionResult = !event.isCanceled();
  18. }
  19. else
  20. {
  21. permissionResult = false;
  22. }
  23. }
  24. return permissionResult;
  25. }

代码示例来源:origin: Vazkii/Psi

  1. public static void conjure(World world, BlockPos pos, EntityPlayer player, IBlockState state) {
  2. if(world.isRemote || !world.isBlockLoaded(pos) || !world.isBlockModifiable(player, pos))
  3. return;
  4. IBlockState inWorld = world.getBlockState(pos);
  5. Block block = inWorld.getBlock();
  6. if(block.isAir(inWorld, world, pos) || block.isReplaceable(world, pos))
  7. world.setBlockState(pos, state);
  8. }

代码示例来源:origin: OpenMods/OpenModsLib

  1. public boolean place(IBlockState state, EnumFacing direction, EnumHand hand) {
  2. if (!world.isBlockLoaded(blockPos)) return false;
  3. if (spawnProtection) {
  4. if (!world.isBlockModifiable(player, blockPos)) return false;
  5. }
  6. final BlockSnapshot snapshot = BlockSnapshot.getBlockSnapshot(world, blockPos);
  7. if (!world.setBlockState(blockPos, state, blockPlaceFlags)) return false;
  8. if (ForgeEventFactory.onPlayerBlockPlace(player, snapshot, direction, hand).isCanceled()) {
  9. world.restoringBlockSnapshots = true;
  10. snapshot.restore(true, false);
  11. world.restoringBlockSnapshots = false;
  12. return false;
  13. }
  14. return true;
  15. }
  16. }

代码示例来源:origin: GregTechCE/GregTech

  1. public static int applyTimberAxe(World world, BlockPos blockPos, IBlockState blockState, EntityPlayer harvester, List<ItemStack> drops) {
  2. if(harvester.isSneaking() ||
  3. !GTUtility.isBlockOrePrefixed(world, blockPos, blockState, OrePrefix.log, drops))
  4. return 0; //do not try to convert while shift-clicking or non-log blocks
  5. MutableBlockPos mutableBlockPos = new MutableBlockPos(blockPos);
  6. int destroyedAmount = 0;
  7. while(true) {
  8. mutableBlockPos.move(EnumFacing.UP);
  9. IBlockState targetState = world.getBlockState(mutableBlockPos);
  10. if(targetState != blockState ||
  11. !world.isBlockModifiable(harvester, mutableBlockPos) ||
  12. !((EntityPlayerMP) harvester).interactionManager.tryHarvestBlock(mutableBlockPos))
  13. return destroyedAmount;
  14. destroyedAmount++;
  15. }
  16. }

代码示例来源:origin: CoFH/ThermalExpansion

  1. ActionResult<ItemStack> doBucketFill(ItemStack stack, @Nonnull World world, @Nonnull EntityPlayer player, @Nonnull EnumHand hand) {
  2. if (getSpace(stack) < Fluid.BUCKET_VOLUME) {
  3. return ActionResult.newResult(EnumActionResult.PASS, stack);
  4. }
  5. RayTraceResult traceResult = RayTracer.retrace(player, true);
  6. if (traceResult == null || traceResult.sideHit == null || traceResult.typeOfHit != RayTraceResult.Type.BLOCK) {
  7. return ActionResult.newResult(EnumActionResult.PASS, stack);
  8. }
  9. BlockPos pos = traceResult.getBlockPos();
  10. if (world.isBlockModifiable(player, pos)) {
  11. if (player.canPlayerEdit(pos, traceResult.sideHit, stack)) {
  12. FluidActionResult result = FluidUtil.tryPickUpFluid(stack, player, world, pos, traceResult.sideHit);
  13. if (result.isSuccess() && !player.capabilities.isCreativeMode) {
  14. player.addStat(StatList.getObjectUseStats(this));
  15. return ActionResult.newResult(EnumActionResult.SUCCESS, result.getResult());
  16. }
  17. }
  18. }
  19. return ActionResult.newResult(EnumActionResult.FAIL, stack);
  20. }

代码示例来源:origin: OpenMods/OpenModsLib

  1. public boolean remove() {
  2. if (!world.isBlockLoaded(blockPos)) return false;
  3. if (spawnProtection) {
  4. if (!world.isBlockModifiable(player, blockPos)) return false;
  5. }
  6. if (eventCheck) {
  7. final IBlockState blockState = world.getBlockState(blockPos);
  8. BlockEvent.BreakEvent event = new BlockEvent.BreakEvent(world, blockPos, blockState, player);
  9. event.setExpToDrop(0);
  10. MinecraftForge.EVENT_BUS.post(event);
  11. if (event.isCanceled()) return false;
  12. }
  13. if (silentTeRemove) world.removeTileEntity(blockPos);
  14. return world.setBlockToAir(blockPos);
  15. }

代码示例来源:origin: CoFH/ThermalExpansion

  1. ActionResult<ItemStack> doBucketEmpty(ItemStack stack, @Nonnull World world, @Nonnull EntityPlayer player, @Nonnull EnumHand hand) {
  2. if (getFluidAmount(stack) < Fluid.BUCKET_VOLUME) {
  3. return ActionResult.newResult(EnumActionResult.PASS, stack);
  4. }
  5. RayTraceResult traceResult = this.rayTrace(world, player, false);
  6. if (traceResult == null || traceResult.typeOfHit != RayTraceResult.Type.BLOCK) {
  7. return ActionResult.newResult(EnumActionResult.PASS, stack);
  8. }
  9. BlockPos pos = traceResult.getBlockPos();
  10. if (world.isBlockModifiable(player, pos)) {
  11. BlockPos targetPos = pos.offset(traceResult.sideHit);
  12. if (player.canPlayerEdit(targetPos, traceResult.sideHit.getOpposite(), stack)) {
  13. FluidActionResult result = FluidUtil.tryPlaceFluid(player, world, targetPos, stack, new FluidStack(getFluid(stack), Fluid.BUCKET_VOLUME));
  14. if (result.isSuccess() && !player.capabilities.isCreativeMode) {
  15. player.addStat(StatList.getObjectUseStats(this));
  16. return ActionResult.newResult(EnumActionResult.SUCCESS, result.getResult());
  17. }
  18. }
  19. }
  20. return ActionResult.newResult(EnumActionResult.FAIL, stack);
  21. }

代码示例来源:origin: OpenMods/OpenModsLib

  1. @Override
  2. public List<EntityItem> usePlayer(OpenModsFakePlayer fakePlayer) {
  3. if (!worldObj.isBlockModifiable(fakePlayer, blockPos)) return Lists.newArrayList();

代码示例来源:origin: Vazkii/Psi

  1. @Override
  2. public Object execute(SpellContext context) throws SpellRuntimeException {
  3. Vector3 positionVal = this.getParamValue(context, position);
  4. Double timeVal = this.<Double>getParamValue(context, time);
  5. if(positionVal == null)
  6. throw new SpellRuntimeException(SpellRuntimeException.NULL_VECTOR);
  7. if(!context.isInRadius(positionVal))
  8. throw new SpellRuntimeException(SpellRuntimeException.OUTSIDE_RADIUS);
  9. BlockPos pos = positionVal.toBlockPos();
  10. World world = context.caster.getEntityWorld();
  11. if(!world.isBlockModifiable(context.caster, pos))
  12. return null;
  13. conjure(context, timeVal, pos, world, messWithState(ModBlocks.conjured.getDefaultState()));
  14. return null;
  15. }

代码示例来源:origin: Vazkii/Psi

  1. @Override
  2. public Object execute(SpellContext context) throws SpellRuntimeException {
  3. Vector3 positionVal = this.getParamValue(context, position);
  4. Vector3 targetVal = this.getParamValue(context, target);
  5. Double maxBlocksVal = this.<Double>getParamValue(context, maxBlocks);
  6. Double timeVal = this.<Double>getParamValue(context, time);
  7. int maxBlocksInt = maxBlocksVal.intValue();
  8. if(positionVal == null)
  9. throw new SpellRuntimeException(SpellRuntimeException.NULL_VECTOR);
  10. int len = (int) targetVal.mag();
  11. Vector3 targetNorm = targetVal.copy().normalize();
  12. World world = context.caster.getEntityWorld();
  13. for(int i = 0; i < Math.min(len, maxBlocksInt); i++) {
  14. Vector3 blockVec = positionVal.copy().add(targetNorm.copy().multiply(i));
  15. if(!context.isInRadius(blockVec))
  16. throw new SpellRuntimeException(SpellRuntimeException.OUTSIDE_RADIUS);
  17. BlockPos pos = blockVec.toBlockPos();
  18. if(!world.isBlockModifiable(context.caster, pos))
  19. continue;
  20. PieceTrickConjureBlock.conjure(context, timeVal, pos, world, messWithState(ModBlocks.conjured.getDefaultState()));
  21. }
  22. return null;
  23. }

代码示例来源:origin: MatterOverdrive/MatterOverdrive-Legacy-Edition

  1. @Override
  2. public ItemStack onItemUseFinish(ItemStack stack, World worldIn, EntityLivingBase entityLiving) {
  3. if (!(entityLiving instanceof EntityPlayer)) {
  4. return stack;
  5. }
  6. if (worldIn.isRemote) {
  7. if (!MinecraftForge.EVENT_BUS.post(new MOEventScan((EntityPlayer) entityLiving, stack, getScanningPos(stack, entityLiving)))) {
  8. stopScanSounds();
  9. }
  10. } else {
  11. MOEventScan event = new MOEventScan((EntityPlayer) entityLiving, stack, getScanningPos(stack, entityLiving));
  12. if (!MinecraftForge.EVENT_BUS.post(event)) {
  13. if (destroysBlocks(stack) && worldIn.isBlockModifiable((EntityPlayer) entityLiving, event.position.getBlockPos())) {
  14. worldIn.setBlockToAir(event.position.getBlockPos());
  15. }
  16. SoundHandler.PlaySoundAt(worldIn, MatterOverdriveSounds.scannerSuccess, SoundCategory.PLAYERS, entityLiving);
  17. }
  18. }
  19. return stack;
  20. }

代码示例来源:origin: Glitchfiend/ToughAsNails

  1. @SubscribeEvent
  2. public void onRightClickHoldingBucket(FillBucketEvent event)
  3. {
  4. // check we're using a bucket, on a block we can modify
  5. if (event.getEmptyBucket().getItem() != Items.BUCKET) {return;}
  6. if (event.getTarget() == null || event.getTarget().typeOfHit != RayTraceResult.Type.BLOCK) {return;}
  7. BlockPos blockpos = event.getTarget().getBlockPos();
  8. if (!event.getWorld().isBlockModifiable(event.getEntityPlayer(), blockpos)) {return;}
  9. if (!event.getEntityPlayer().canPlayerEdit(blockpos.offset(event.getTarget().sideHit), event.getTarget().sideHit, event.getEmptyBucket())) {return;}
  10. // determine if the block is one of our TAN fluids
  11. IBlockState iblockstate = event.getWorld().getBlockState(blockpos);
  12. Fluid filled_fluid = null;
  13. if (iblockstate.getBlock() == TANBlocks.purified_water && iblockstate.getValue(BlockPurifiedWaterFluid.LEVEL).intValue() == 0)
  14. {
  15. filled_fluid = PurifiedWaterFluid.instance;
  16. }
  17. else
  18. {
  19. return;
  20. }
  21. // remove the fluid and return the appropriate filled bucket
  22. event.setResult(Result.ALLOW);
  23. event.setFilledBucket(UniversalBucket.getFilledBucket(ForgeModContainer.getInstance().universalBucket, filled_fluid));
  24. event.getWorld().setBlockToAir(blockpos);
  25. //TODO: event.entityPlayer.triggerAchievement(StatList.objectUseStats[Item.getIdFromItem(event.getEmptyBucket().getItem())]);
  26. }
  27. }

代码示例来源:origin: Vazkii/Psi

  1. public static void removeBlockWithDrops(SpellContext context, EntityPlayer player, World world, ItemStack tool, BlockPos pos, boolean particles) {
  2. if(!world.isBlockLoaded(pos) || (context.positionBroken != null && pos.equals(context.positionBroken.getBlockPos())) || !world.isBlockModifiable(player, pos))
  3. return;
  4. if (tool.isEmpty())
  5. tool = PsiAPI.getPlayerCAD(player);
  6. IBlockState state = world.getBlockState(pos);
  7. Block block = state.getBlock();
  8. if(!world.isRemote && !block.isAir(state, world, pos) && !(block instanceof BlockLiquid) && !(block instanceof IFluidBlock) && state.getPlayerRelativeBlockHardness(player, world, pos) > 0) {
  9. if(!canHarvestBlock(block, player, world, pos, tool))
  10. return;
  11. BreakEvent event = createBreakEvent(state, player, world, pos, tool);
  12. MinecraftForge.EVENT_BUS.post(event);
  13. if(!event.isCanceled()) {
  14. if(!player.capabilities.isCreativeMode) {
  15. TileEntity tile = world.getTileEntity(pos);
  16. if(block.removedByPlayer(state, world, pos, player, true)) {
  17. block.onBlockDestroyedByPlayer(world, pos, state);
  18. block.harvestBlock(world, player, pos, state, tile, tool);
  19. }
  20. } else world.setBlockToAir(pos);
  21. }
  22. if(particles)
  23. world.playEvent(2001, pos, Block.getStateId(state));
  24. }
  25. }

代码示例来源:origin: Vazkii/Psi

  1. public static void placeBlock(EntityPlayer player, World world, BlockPos pos, int slot, boolean particles, boolean conjure) {
  2. if(!world.isBlockLoaded(pos) || !world.isBlockModifiable(player, pos))
  3. return;
  4. IBlockState state = world.getBlockState(pos);
  5. Block block = state.getBlock();
  6. if(block.isAir(state, world, pos) || block.isReplaceable(world, pos)) {
  7. if(conjure) {
  8. if(!world.isRemote)
  9. world.setBlockState(pos, ModBlocks.conjured.getDefaultState());
  10. } else {
  11. ItemStack stack = player.inventory.getStackInSlot(slot);
  12. if(!stack.isEmpty() && stack.getItem() instanceof ItemBlock) {
  13. ItemStack rem = removeFromInventory(player, stack);
  14. ItemBlock iblock = (ItemBlock) rem.getItem();
  15. Block blockToPlace = Block.getBlockFromItem(rem.getItem());
  16. if(!world.isRemote) {
  17. IBlockState newState = blockToPlace.getStateForPlacement(world, pos, EnumFacing.UP, 0, 0, 0, rem.getItemDamage(), player, EnumHand.MAIN_HAND);
  18. iblock.placeBlockAt(stack, player, world, pos, EnumFacing.UP, 0, 0, 0, newState);
  19. }
  20. if(player.capabilities.isCreativeMode)
  21. HUDHandler.setRemaining(rem, -1);
  22. else HUDHandler.setRemaining(player, rem, null);
  23. }
  24. }
  25. if(particles && !world.isRemote)
  26. world.playEvent(2001, pos, Block.getStateId(world.getBlockState(pos)));
  27. }
  28. }

代码示例来源:origin: Vazkii/Psi

  1. @Override
  2. public Object execute(SpellContext context) throws SpellRuntimeException {
  3. if(context.caster.getEntityWorld().isRemote)
  4. return null;
  5. Vector3 positionVal = this.getParamValue(context, position);
  6. if(positionVal == null)
  7. throw new SpellRuntimeException(SpellRuntimeException.NULL_VECTOR);
  8. if(!context.isInRadius(positionVal))
  9. throw new SpellRuntimeException(SpellRuntimeException.OUTSIDE_RADIUS);
  10. BlockPos pos = positionVal.toBlockPos();
  11. if(!context.caster.getEntityWorld().isBlockModifiable(context.caster, pos))
  12. return null;
  13. IBlockState state = context.caster.getEntityWorld().getBlockState(pos);
  14. Block block = state.getBlock();
  15. int meta = block.getMetaFromState(state);
  16. ItemStack stack = new ItemStack(block, 1, meta);
  17. ItemStack result = FurnaceRecipes.instance().getSmeltingResult(stack);
  18. if(!result.isEmpty()) {
  19. Item item = result.getItem();
  20. Block block1 = Block.getBlockFromItem(item);
  21. if(block1 != Blocks.AIR) {
  22. context.caster.getEntityWorld().setBlockState(pos, block1.getStateFromMeta(result.getMetadata()));
  23. state = context.caster.getEntityWorld().getBlockState(pos);
  24. context.caster.getEntityWorld().playEvent(2001, pos, Block.getStateId(state));
  25. }
  26. }
  27. return null;
  28. }

代码示例来源:origin: CyclopsMC/EvilCraft

  1. @SubscribeEvent
  2. public void onPoisonRightClick(PlayerInteractEvent.RightClickBlock event) {
  3. EnumHand hand = event.getEntityPlayer().getActiveHand();
  4. // Return poison bottle instead of water bottle when right clicking poison fluid source with empty bottle.
  5. if(hand != null && !event.getEntityPlayer().getHeldItem(hand).isEmpty() &&
  6. event.getEntityPlayer().getHeldItem(hand).getItem() == Items.GLASS_BOTTLE && Configs.isEnabled(PoisonConfig.class)) {
  7. RayTraceResult pos = this.rayTrace(event.getWorld(), event.getEntityPlayer(), true);
  8. if(pos != null && pos.typeOfHit == RayTraceResult.Type.BLOCK) {
  9. if(event.getWorld().isBlockModifiable(event.getEntityPlayer(), pos.getBlockPos()) &&
  10. event.getEntityPlayer().canPlayerEdit(pos.getBlockPos(), pos.sideHit, event.getEntityPlayer().getHeldItem(hand)) &&
  11. event.getWorld().getBlockState(pos.getBlockPos()).getMaterial() == Material.WATER) {
  12. if(event.getWorld().getBlockState(pos.getBlockPos()).getBlock() == FluidBlockPoison.getInstance()) {
  13. InventoryHelpers.tryReAddToStack(event.getEntityPlayer(), event.getEntityPlayer().getHeldItem(hand), new ItemStack(this), hand);
  14. event.getWorld().setBlockToAir(pos.getBlockPos());
  15. event.setCanceled(true);
  16. }
  17. }
  18. }
  19. }
  20. }

相关文章

World类方法