类org.bukkit.craftbukkit.CraftWorld源码实例Demo

下面列出了怎么用org.bukkit.craftbukkit.CraftWorld的API类实例代码及写法,或者点击链接到github查看源代码。

源代码1 项目: Kettle   文件: CraftEntity.java
public boolean teleport(Location location, TeleportCause cause) {
    Preconditions.checkArgument(location != null, "location");
    location.checkFinite();

    if (entity.isBeingRidden() || entity.isDead) {
        return false;
    }

    // If this entity is riding another entity, we must dismount before teleporting.
    entity.dismountRidingEntity();

    entity.world = ((CraftWorld) location.getWorld()).getHandle();
    // entity.setLocation() throws no event, and so cannot be cancelled
    entity.setPositionAndRotation(location.getX(), location.getY(), location.getZ(), location.getYaw(), location.getPitch());
    // SPIGOT-619: Force sync head rotation also
    entity.setRotationYawHead(location.getYaw());

    return true;
}
 
源代码2 项目: Kettle   文件: CraftJukebox.java
@Override
public boolean update(boolean force, boolean applyPhysics) {
    boolean result = super.update(force, applyPhysics);

    if (result && this.isPlaced() && this.getType() == Material.JUKEBOX) {
        CraftWorld world = (CraftWorld) this.getWorld();
        Material record = this.getPlaying();
        if (record == Material.AIR) {
            world.getHandle().setBlockState(new BlockPos(this.getX(), this.getY(), this.getZ()),
                    Blocks.JUKEBOX.getDefaultState()
                            .withProperty(BlockJukebox.HAS_RECORD, false), 3);
        } else {
            world.getHandle().setBlockState(new BlockPos(this.getX(), this.getY(), this.getZ()),
                    Blocks.JUKEBOX.getDefaultState()
                            .withProperty(BlockJukebox.HAS_RECORD, true), 3);
        }
        world.playEffect(this.getLocation(), Effect.RECORD_PLAY, record.getId());
    }

    return result;
}
 
源代码3 项目: Kettle   文件: CraftBlockState.java
public CraftBlockState(final Block block) {
    this.world = (CraftWorld) block.getWorld();
    this.x = block.getX();
    this.y = block.getY();
    this.z = block.getZ();
    this.type = block.getTypeId();
    this.chunk = (CraftChunk) block.getChunk();
    this.flag = 3;

    createData(block.getData());
    TileEntity te = world.getHandle().getTileEntity(new BlockPos(this.x, this.y, this.z));
    if (te != null) {
        nbt = new NBTTagCompound();
        te.writeToNBT(nbt);
    } else nbt = null;
}
 
源代码4 项目: Kettle   文件: CraftEventFactory.java
public static BlockPlaceEvent callBlockPlaceEvent(World world, EntityPlayer who, EnumHand hand, BlockState replacedBlockState, int clickedX, int clickedY, int clickedZ) {
    CraftWorld craftWorld = world.getWorld();
    CraftServer craftServer = world.getServer();

    Player player = (Player) who.getBukkitEntity();

    Block blockClicked = craftWorld.getBlockAt(clickedX, clickedY, clickedZ);
    Block placedBlock = replacedBlockState.getBlock();

    boolean canBuild = canBuild(craftWorld, player, placedBlock.getX(), placedBlock.getZ());

    org.bukkit.inventory.ItemStack item;
    EquipmentSlot equipmentSlot;
    if (hand == EnumHand.MAIN_HAND) {
        item = player.getInventory().getItemInMainHand();
        equipmentSlot = EquipmentSlot.HAND;
    } else {
        item = player.getInventory().getItemInOffHand();
        equipmentSlot = EquipmentSlot.OFF_HAND;
    }

    BlockPlaceEvent event = new BlockPlaceEvent(placedBlock, replacedBlockState, blockClicked, item, player, canBuild, equipmentSlot);
    craftServer.getPluginManager().callEvent(event);

    return event;
}
 
源代码5 项目: Kettle   文件: CraftEventFactory.java
private static PlayerEvent getPlayerBucketEvent(boolean isFilling, EntityPlayer who, int clickedX, int clickedY, int clickedZ, EnumFacing clickedFace, ItemStack itemstack, net.minecraft.item.Item item) {
    Player player = (who == null) ? null : (Player) who.getBukkitEntity();
    CraftItemStack itemInHand = CraftItemStack.asNewCraftStack(item);
    Material bucket = CraftMagicNumbers.getMaterial(itemstack.getItem());

    CraftWorld craftWorld = (CraftWorld) player.getWorld();
    CraftServer craftServer = (CraftServer) player.getServer();

    Block blockClicked = craftWorld.getBlockAt(clickedX, clickedY, clickedZ);
    BlockFace blockFace = CraftBlock.notchToBlockFace(clickedFace);

    PlayerEvent event = null;
    if (isFilling) {
        event = new PlayerBucketFillEvent(player, blockClicked, blockFace, bucket, itemInHand);
        ((PlayerBucketFillEvent) event).setCancelled(!canBuild(craftWorld, player, clickedX, clickedZ));
    } else {
        event = new PlayerBucketEmptyEvent(player, blockClicked, blockFace, bucket, itemInHand);
        ((PlayerBucketEmptyEvent) event).setCancelled(!canBuild(craftWorld, player, clickedX, clickedZ));
    }

    craftServer.getPluginManager().callEvent(event);

    return event;
}
 
源代码6 项目: Thermos   文件: CraftEntity.java
public boolean teleport(Location location, TeleportCause cause) {
       if (entity.ridingEntity != null || entity.riddenByEntity != null || entity.isDead) {
           return false;
       }

       // Spigot start
       net.minecraft.world.WorldServer newWorld = ((CraftWorld) location.getWorld()).getHandle();
       if (newWorld != entity.worldObj) {
           entity.teleportTo(location, cause.isPortal());
           return true;
       }
       // Spigot end
       entity.setPositionAndRotation(location.getX(), location.getY(), location.getZ(), location.getYaw(), location.getPitch());
//entity.worldObj.entityJoinedWorld(entity, false); // PaperSpigot - Prevent Server from thinking a player teleporting within the world has joined the world
       // entity.setLocation() throws no event, and so cannot be cancelled
       return true;
   }
 
源代码7 项目: Thermos   文件: CraftBlockState.java
public CraftBlockState(final Block block) {
    this.world = (CraftWorld) block.getWorld();
    this.x = block.getX();
    this.y = block.getY();
    this.z = block.getZ();
    this.type = block.getTypeId();
    this.light = block.getLightLevel();
    this.chunk = (CraftChunk) block.getChunk();
    this.flag = 3;
    // Cauldron start - save TE data
    TileEntity te = world.getHandle().getTileEntity(x, y, z);
    if (te != null)
    {
        nbt = new NBTTagCompound();
        te.writeToNBT(nbt);
    }
    else nbt = null;
    // Cauldron end

    createData(block.getData());
}
 
源代码8 项目: Thermos   文件: VanillaCommandWrapper.java
private static net.minecraft.command.ICommandSender getListener(CommandSender sender)
{
    if ( sender instanceof CraftPlayer )
    {
        return new PlayerListener( ( (CraftPlayer) sender ).getHandle() );
    }
    if ( sender instanceof CraftBlockCommandSender )
    {
        CraftBlockCommandSender commandBlock = (CraftBlockCommandSender) sender;
        Block block = commandBlock.getBlock();
        return ( (net.minecraft.tileentity.TileEntityCommandBlock) ( (CraftWorld) block.getWorld() ).getTileEntityAt( block.getX(), block.getY(), block.getZ() ) ).func_145993_a();
    }
    if ( sender instanceof CraftMinecartCommand )
    {
        return ( (net.minecraft.entity.EntityMinecartCommandBlock) ( (CraftMinecartCommand) sender ).getHandle() ).func_145822_e();
    }
    return new ConsoleListener(sender); // Assume console/rcon
}
 
源代码9 项目: Kettle   文件: CraftPainting.java
private void update() {
    WorldServer world = ((CraftWorld) getWorld()).getHandle();
    EntityPainting painting = new EntityPainting(world);
    painting.hangingPosition = getHandle().getHangingPosition();
    painting.art = getHandle().art;
    painting.updateFacingWithBoundingBox(getHandle().facingDirection);
    getHandle().setDead();
    getHandle().velocityChanged = true; // because this occurs when the painting is broken, so it might be important
    world.spawnEntity(painting);
    this.entity = painting;
}
 
源代码10 项目: Kettle   文件: CraftItemFrame.java
private void update() {
    EntityItemFrame old = this.getHandle();

    WorldServer world = ((CraftWorld) getWorld()).getHandle();
    BlockPos position = old.getPosition();
    EnumFacing direction = old.getHorizontalFacing();
    ItemStack item = old.getDisplayedItem() != null ? old.getDisplayedItem().copy() : null;

    old.setDead();

    EntityItemFrame frame = new EntityItemFrame(world, position, direction);
    frame.setDisplayedItem(item);
    world.spawnEntity(frame);
    this.entity = frame;
}
 
源代码11 项目: Kettle   文件: CraftRabbit.java
@Override
public void setRabbitType(Type type) {
    EntityRabbit entity = getHandle();
    if (getRabbitType() == Type.THE_KILLER_BUNNY) {
        // Reset goals and target finders.
        World world = ((CraftWorld) this.getWorld()).getHandle();
        entity.tasks = new EntityAITasks(world != null && world.profiler != null ? world.profiler : null);
        entity.targetTasks = new EntityAITasks(world != null && world.profiler != null ? world.profiler : null);
        entity.initializePathFinderGoals();
    }

    entity.setRabbitType(CraftMagicMapping.toMagic(type));
}
 
源代码12 项目: Kettle   文件: CraftMapView.java
public World getWorld() {
    int dimension = worldMap.dimension;
    for (World world : Bukkit.getServer().getWorlds()) {
        if (((CraftWorld) world).getHandle().dimension == dimension) {
            return world;
        }
    }
    return null;
}
 
源代码13 项目: Kettle   文件: CraftJukebox.java
@Override
public boolean eject() {
    requirePlaced();
    TileEntity tileEntity = this.getTileEntityFromWorld();
    if (!(tileEntity instanceof TileEntityJukebox)) return false;

    TileEntityJukebox jukebox = (TileEntityJukebox) tileEntity;
    boolean result = !jukebox.getRecord().isEmpty();
    CraftWorld world = (CraftWorld) this.getWorld();
    ((BlockJukebox) Blocks.JUKEBOX).dropRecord(world.getHandle(), new BlockPos(getX(), getY(), getZ()), null);
    return result;
}
 
源代码14 项目: Kettle   文件: CraftNoteBlock.java
@Override
public boolean play() {
    Block block = getBlock();

    if (block.getType() == Material.NOTE_BLOCK) {
        TileEntityNote note = (TileEntityNote) this.getTileEntityFromWorld();
        CraftWorld world = (CraftWorld) this.getWorld();
        note.triggerNote(world.getHandle(), new BlockPos(getX(), getY(), getZ()));
        return true;
    } else {
        return false;
    }
}
 
源代码15 项目: Kettle   文件: CraftNoteBlock.java
@Override
public boolean play(byte instrument, byte note) {
    Block block = getBlock();

    if (block.getType() == Material.NOTE_BLOCK) {
        CraftWorld world = (CraftWorld) this.getWorld();
        world.getHandle().addBlockEvent(new BlockPos(getX(), getY(), getZ()), CraftMagicNumbers.getBlock(block), instrument, note);
        return true;
    } else {
        return false;
    }
}
 
源代码16 项目: Kettle   文件: CraftNoteBlock.java
@Override
public boolean play(Instrument instrument, Note note) {
    Block block = getBlock();

    if (block.getType() == Material.NOTE_BLOCK) {
        CraftWorld world = (CraftWorld) this.getWorld();
        world.getHandle().addBlockEvent(new BlockPos(getX(), getY(), getZ()), CraftMagicNumbers.getBlock(block), instrument.getType(), note.getId());
        return true;
    } else {
        return false;
    }
}
 
源代码17 项目: Kettle   文件: CraftBlockEntityState.java
public CraftBlockEntityState(Block block, Class<T> tileEntityClass) {
    super(block);

    this.tileEntityClass = tileEntityClass;

    // get tile entity from block:
    CraftWorld world = (CraftWorld) this.getWorld();
    this.tileEntity = tileEntityClass.cast(world.getTileEntityAt(this.getX(), this.getY(), this.getZ()));

    // copy tile entity data:
    this.snapshot = this.createSnapshot(tileEntity);
    this.load(snapshot);
}
 
源代码18 项目: Kettle   文件: CraftEventFactory.java
private static boolean canBuild(CraftWorld world, Player player, int x, int z) {
    WorldServer worldServer = world.getHandle();
    int spawnSize = Bukkit.getServer().getSpawnRadius();

    if (world.getHandle().dimension != 0) return true;
    if (spawnSize <= 0) return true;
    if (((CraftServer) Bukkit.getServer()).getHandle().getOppedPlayers().isEmpty()) return true;
    if (player.isOp()) return true;

    BlockPos chunkcoordinates = worldServer.getSpawnPoint();

    int distanceFromSpawn = Math.max(Math.abs(x - chunkcoordinates.getX()), Math.abs(z - chunkcoordinates.getZ()));
    return distanceFromSpawn > spawnSize;
}
 
源代码19 项目: Kettle   文件: CraftEventFactory.java
/**
 * Block place methods
 */
public static BlockMultiPlaceEvent callBlockMultiPlaceEvent(World world, EntityPlayer who, EnumHand hand, List<BlockState> blockStates, int clickedX, int clickedY, int clickedZ) {
    CraftWorld craftWorld = world.getWorld();
    CraftServer craftServer = world.getServer();
    Player player = (Player) who.getBukkitEntity();

    Block blockClicked = craftWorld.getBlockAt(clickedX, clickedY, clickedZ);

    boolean canBuild = true;
    for (int i = 0; i < blockStates.size(); i++) {
        if (!canBuild(craftWorld, player, blockStates.get(i).getX(), blockStates.get(i).getZ())) {
            canBuild = false;
            break;
        }
    }

    org.bukkit.inventory.ItemStack item;
    if (hand == EnumHand.MAIN_HAND) {
        item = player.getInventory().getItemInMainHand();
    } else {
        item = player.getInventory().getItemInOffHand();
    }

    BlockMultiPlaceEvent event = new BlockMultiPlaceEvent(blockStates, blockClicked, item, player, canBuild);
    craftServer.getPluginManager().callEvent(event);

    return event;
}
 
源代码20 项目: Kettle   文件: CraftEventFactory.java
public static PlayerInteractEvent callPlayerInteractEvent(EntityPlayer who, Action action, BlockPos position, EnumFacing direction, ItemStack itemstack, boolean cancelledBlock, EnumHand hand) {
    Player player = (who == null) ? null : (Player) who.getBukkitEntity();
    CraftItemStack itemInHand = CraftItemStack.asCraftMirror(itemstack);

    CraftWorld craftWorld = (CraftWorld) player.getWorld();
    CraftServer craftServer = (CraftServer) player.getServer();

    Block blockClicked = null;
    if (position != null) {
        blockClicked = craftWorld.getBlockAt(position.getX(), position.getY(), position.getZ());
    } else {
        switch (action) {
            case LEFT_CLICK_BLOCK:
                action = Action.LEFT_CLICK_AIR;
                break;
            case RIGHT_CLICK_BLOCK:
                action = Action.RIGHT_CLICK_AIR;
                break;
        }
    }
    BlockFace blockFace = CraftBlock.notchToBlockFace(direction);

    if (itemInHand.getType() == Material.AIR || itemInHand.getAmount() == 0) {
        itemInHand = null;
    }

    PlayerInteractEvent event = new PlayerInteractEvent(player, action, itemInHand, blockClicked, blockFace, (hand == null) ? null : ((hand == EnumHand.OFF_HAND) ? EquipmentSlot.OFF_HAND : EquipmentSlot.HAND));
    if (cancelledBlock) {
        event.setUseInteractedBlock(Event.Result.DENY);
    }
    craftServer.getPluginManager().callEvent(event);

    return event;
}
 
源代码21 项目: Kettle   文件: CraftEventFactory.java
/**
 * BlockDamageEvent
 */
public static BlockDamageEvent callBlockDamageEvent(EntityPlayer who, int x, int y, int z, ItemStack itemstack, boolean instaBreak) {
    Player player = (who == null) ? null : (Player) who.getBukkitEntity();
    CraftItemStack itemInHand = CraftItemStack.asCraftMirror(itemstack);

    CraftWorld craftWorld = (CraftWorld) player.getWorld();
    CraftServer craftServer = (CraftServer) player.getServer();

    Block blockClicked = craftWorld.getBlockAt(x, y, z);

    BlockDamageEvent event = new BlockDamageEvent(player, blockClicked, itemInHand, instaBreak);
    craftServer.getPluginManager().callEvent(event);

    return event;
}
 
源代码22 项目: ProjectAres   文件: NMSHacks.java
public FakeArmorStand(World world, @Nullable String name, boolean invisible, boolean marker, boolean small) {
    super(new EntityArmorStand(((CraftWorld) world).getHandle()));

    entity.setInvisible(invisible);
    entity.setMarker(marker);
    entity.setSmall(small);
    entity.setBasePlate(false);
    entity.setArms(false);

    if(name != null) {
        entity.setCustomName(name);
        entity.setCustomNameVisible(true);
    }
}
 
源代码23 项目: Thermos   文件: CraftPlayer.java
@Override
public void sendBlockChange(Location loc, int material, byte data) {
    if (getHandle().playerNetServerHandler == null) return;

    S23PacketBlockChange packet = new S23PacketBlockChange(loc.getBlockX(), loc.getBlockY(), loc.getBlockZ(), ((CraftWorld) loc.getWorld()).getHandle());

    packet.field_148883_d = CraftMagicNumbers.getBlock(material);
    packet.field_148884_e = data;
    getHandle().playerNetServerHandler.sendPacket(packet);
}
 
源代码24 项目: Thermos   文件: CraftPlayer.java
public Location getBedSpawnLocation() {
    World world = getServer().getWorld(getHandle().spawnWorld);
    net.minecraft.util.ChunkCoordinates bed = getHandle().getBedLocation();

    if (world != null && bed != null) {
        bed = net.minecraft.entity.player.EntityPlayer.verifyRespawnCoordinates(((CraftWorld) world).getHandle(), bed, getHandle().isSpawnForced());
        if (bed != null) {
            return new Location(world, bed.posX, bed.posY, bed.posZ);
        }
    }
    return null;
}
 
源代码25 项目: Thermos   文件: CraftPainting.java
private void update() {
    net.minecraft.world.WorldServer world = ((CraftWorld) getWorld()).getHandle();
    net.minecraft.entity.item.EntityPainting painting = new net.minecraft.entity.item.EntityPainting(world);
    painting.field_146063_b = getHandle().field_146063_b;
    painting.field_146064_c = getHandle().field_146064_c;
    painting.field_146062_d = getHandle().field_146062_d;
    painting.art = getHandle().art;
    painting.setDirection(getHandle().hangingDirection);
    getHandle().setDead();
    getHandle().velocityChanged = true; // because this occurs when the painting is broken, so it might be important
    world.spawnEntityInWorld(painting);
    this.entity = painting;
}
 
源代码26 项目: Thermos   文件: CraftItemFrame.java
public boolean setFacingDirection(BlockFace face, boolean force) {
    if (!super.setFacingDirection(face, force)) {
        return false;
    }

    net.minecraft.world.WorldServer world = ((CraftWorld) this.getWorld()).getHandle();
    world.getEntityTracker().removeEntityFromAllTrackingPlayers(this.getHandle());
    world.getEntityTracker().addEntityToTracker(this.getHandle());
    return true;
}
 
源代码27 项目: Thermos   文件: CraftMapView.java
public World getWorld() {
    int dimension = worldMap.dimension; // Cauldron - byte -> int for Forge
    for (World world : Bukkit.getServer().getWorlds()) {
        if (((CraftWorld) world).getHandle().provider.dimensionId == dimension) {
            return world;
        }
    }
    return null;
}
 
源代码28 项目: Thermos   文件: CraftBlock.java
public boolean isEmpty() {
    // Cauldron start - support custom air blocks (Railcraft player aura tracking block)
    //return getType() == Material.AIR;
    if (getType() == Material.AIR) return true;
    if (!(getWorld() instanceof CraftWorld)) return false;
    return ((CraftWorld) getWorld()).getHandle().isAirBlock(getX(), getY(), getZ());
    // Cauldron end
}
 
源代码29 项目: Thermos   文件: CraftCommandBlock.java
public CraftCommandBlock(Block block) {
    super(block);

    CraftWorld world = (CraftWorld) block.getWorld();
    commandBlock = (TileEntityCommandBlock) world.getTileEntityAt(getX(), getY(), getZ());
    command = commandBlock.func_145993_a().field_145763_e;
    name = commandBlock.func_145993_a().getCommandSenderName();
}
 
源代码30 项目: Thermos   文件: CraftSign.java
public CraftSign(final Block block) {
    super(block);

    CraftWorld world = (CraftWorld) block.getWorld();
    sign = (net.minecraft.tileentity.TileEntitySign) world.getTileEntityAt(getX(), getY(), getZ());
    // Spigot start
    if (sign == null) {
        lines = new String[]{"", "", "", ""};
        return;
    }
    // Spigot end
    lines = new String[sign.signText.length];
    System.arraycopy(sign.signText, 0, lines, 0, lines.length);
}
 
 类所在包
 类方法
 同包方法