當前位置: 首頁>>代碼示例>>Java>>正文


Java WorldServer.getTileEntity方法代碼示例

本文整理匯總了Java中net.minecraft.world.WorldServer.getTileEntity方法的典型用法代碼示例。如果您正苦於以下問題:Java WorldServer.getTileEntity方法的具體用法?Java WorldServer.getTileEntity怎麽用?Java WorldServer.getTileEntity使用的例子?那麽, 這裏精選的方法代碼示例或許可以為您提供幫助。您也可以進一步了解該方法所在net.minecraft.world.WorldServer的用法示例。


在下文中一共展示了WorldServer.getTileEntity方法的8個代碼示例,這些例子默認根據受歡迎程度排序。您可以為喜歡或者感覺有用的代碼點讚,您的評價將有助於係統推薦出更棒的Java代碼示例。

示例1: isAllowedToEdit

import net.minecraft.world.WorldServer; //導入方法依賴的package包/類
private boolean isAllowedToEdit(EntityPlayer player, ItemStack remote) {
    NBTTagCompound tag = remote.getTagCompound();
    if (tag != null) {
        if (tag.hasKey("securityX")) {
            int x = tag.getInteger("securityX");
            int y = tag.getInteger("securityY");
            int z = tag.getInteger("securityZ");
            int dimensionId = tag.getInteger("securityDimension");
            WorldServer world = DimensionManager.getWorld(dimensionId);
            if (world != null) {
                TileEntity te = world.getTileEntity(new BlockPos(x, y, z));
                if (te instanceof TileEntitySecurityStation) {
                    boolean canAccess = ((TileEntitySecurityStation) te).doesAllowPlayer(player);
                    if (!canAccess) {
                        player.sendStatusMessage(new TextComponentTranslation("gui.remote.noEditRights", x, y, z), false);
                    }
                    return canAccess;
                }
            }
        }
    }
    return true;
}
 
開發者ID:TeamPneumatic,項目名稱:pnc-repressurized,代碼行數:24,代碼來源:ItemRemote.java

示例2: onUpdate

import net.minecraft.world.WorldServer; //導入方法依賴的package包/類
@Override
public void onUpdate(ItemStack remote, World worl, Entity entity, int slot, boolean holdingItem) {
    if (!worl.isRemote) {
        NBTTagCompound tag = remote.getTagCompound();
        if (tag != null) {
            if (tag.hasKey("securityX")) {
                int x = tag.getInteger("securityX");
                int y = tag.getInteger("securityY");
                int z = tag.getInteger("securityZ");
                int dimensionId = tag.getInteger("securityDimension");
                WorldServer world = DimensionManager.getWorld(dimensionId);
                if (world != null) {
                    TileEntity te = world.getTileEntity(new BlockPos(x, y, z));
                    if (!(te instanceof TileEntitySecurityStation)) {
                        tag.removeTag("securityX");
                        tag.removeTag("securityY");
                        tag.removeTag("securityZ");
                        tag.removeTag("securityDimension");
                    }
                }
            }
        }
    }
}
 
開發者ID:TeamPneumatic,項目名稱:pnc-repressurized,代碼行數:25,代碼來源:ItemRemote.java

示例3: processUpdateSign

import net.minecraft.world.WorldServer; //導入方法依賴的package包/類
public void processUpdateSign(C12PacketUpdateSign packetIn)
{
    PacketThreadUtil.checkThreadAndEnqueue(packetIn, this, this.playerEntity.getServerForPlayer());
    this.playerEntity.markPlayerActive();
    WorldServer worldserver = this.serverController.worldServerForDimension(this.playerEntity.dimension);
    BlockPos blockpos = packetIn.getPosition();

    if (worldserver.isBlockLoaded(blockpos))
    {
        TileEntity tileentity = worldserver.getTileEntity(blockpos);

        if (!(tileentity instanceof TileEntitySign))
        {
            return;
        }

        TileEntitySign tileentitysign = (TileEntitySign)tileentity;

        if (!tileentitysign.getIsEditable() || tileentitysign.getPlayer() != this.playerEntity)
        {
            this.serverController.logWarning("Player " + this.playerEntity.getName() + " just tried to change non-editable sign");
            return;
        }

        IChatComponent[] aichatcomponent = packetIn.getLines();

        for (int i = 0; i < aichatcomponent.length; ++i)
        {
            tileentitysign.signText[i] = new ChatComponentText(EnumChatFormatting.getTextWithoutFormattingCodes(aichatcomponent[i].getUnformattedText()));
        }

        tileentitysign.markDirty();
        worldserver.markBlockForUpdate(blockpos);
    }
}
 
開發者ID:Notoh,項目名稱:DecompiledMinecraft,代碼行數:36,代碼來源:NetHandlerPlayServer.java

示例4: process

import net.minecraft.world.WorldServer; //導入方法依賴的package包/類
@Override
public void process(StructureProcessorData data, WorldServer world, Random rand)
{
    Data d = (Data) data;
    PMConfig cfg = PurMag.INSTANCE.config;
    IExpression.ExpressionData expr = PurMag.INSTANCE.getExpressionRegistry().getRegistry().getValue(cfg.enabledExpressions.get(rand.nextInt(cfg.enabledExpressions.size()))).generateExpression(rand);
    TileEntity te = world.getTileEntity(d.getAbsolutePos());
    if(te != null && te instanceof TileCodeStorage)
    {
        TileCodeStorage storage = (TileCodeStorage) te;
        storage.tryLock(true, expr.getText(), expr.getResult());
        PXLMC.fillBlockWithLoot(world, rand, d.getAbsolutePos(), EnumFacing.NORTH, d.table, expr.getLuck());
    }
}
 
開發者ID:PearXTeam,項目名稱:PurificatiMagicae,代碼行數:15,代碼來源:CodeStorageProcessor.java

示例5: processUpdateSign

import net.minecraft.world.WorldServer; //導入方法依賴的package包/類
public void processUpdateSign(CPacketUpdateSign packetIn)
{
    PacketThreadUtil.checkThreadAndEnqueue(packetIn, this, this.playerEntity.getServerWorld());
    this.playerEntity.markPlayerActive();
    WorldServer worldserver = this.serverController.worldServerForDimension(this.playerEntity.dimension);
    BlockPos blockpos = packetIn.getPosition();

    if (worldserver.isBlockLoaded(blockpos))
    {
        IBlockState iblockstate = worldserver.getBlockState(blockpos);
        TileEntity tileentity = worldserver.getTileEntity(blockpos);

        if (!(tileentity instanceof TileEntitySign))
        {
            return;
        }

        TileEntitySign tileentitysign = (TileEntitySign)tileentity;

        if (!tileentitysign.getIsEditable() || tileentitysign.getPlayer() != this.playerEntity)
        {
            this.serverController.logWarning("Player " + this.playerEntity.getName() + " just tried to change non-editable sign");
            return;
        }

        String[] astring = packetIn.getLines();

        for (int i = 0; i < astring.length; ++i)
        {
            tileentitysign.signText[i] = new TextComponentString(TextFormatting.getTextWithoutFormattingCodes(astring[i]));
        }

        tileentitysign.markDirty();
        worldserver.notifyBlockUpdate(blockpos, iblockstate, iblockstate, 3);
    }
}
 
開發者ID:NSExceptional,項目名稱:Zombe-Modpack,代碼行數:37,代碼來源:NetHandlerPlayServer.java

示例6: generateTower

import net.minecraft.world.WorldServer; //導入方法依賴的package包/類
public void generateTower(WorldServer world, BlockPos pos, Random rand) {
	MinecraftServer server = world.getMinecraftServer();
	Template template = world.getStructureTemplateManager().getTemplate(server, TOWER_STRUCTURE);
	PlacementSettings settings = new PlacementSettings();
	settings.setRotation(Rotation.values()[rand.nextInt(Rotation.values().length)]);
	
	BlockPos size = template.getSize();
	int airBlocks = 0;
	for(int x = 0; x < size.getX(); x++) {
		for (int z = 0; z < size.getZ(); z++) {
			if (world.isAirBlock(pos.add(template.transformedBlockPos(settings, new BlockPos(x, 0, z))))) {
				airBlocks++;
				if (airBlocks > 0.33 * (size.getX() * size.getZ())) {
					return;
				}
			}
		}
	}
	for (int x = 0; x < size.getX(); x++) {
		for (int z = 0; z < size.getZ(); z++) {
			if (x == 0 || x == size.getX() - 1 || z == 0 || z == size.getZ() - 1) {
				for (int y = 0; y < size.getY(); y++) {
					BlockPos checkPos = pos.add(template.transformedBlockPos(settings, new BlockPos(x, y, z)));
					IBlockState checkState = world.getBlockState(checkPos);
					if (!checkState.getBlock().isAir(checkState, world, checkPos)) {
						if (!(y <= 3 && (checkState.getBlock() == Blocks.NETHERRACK || checkState.getBlock() == Blocks.QUARTZ_ORE || checkState.getBlock() == Blocks.MAGMA))) {
							return;
						}
					}
				}
			}
		}
	}

	template.addBlocksToWorld(world, pos, settings);

	Map<BlockPos, String> dataBlocks = template.getDataBlocks(pos, settings);
	for (Entry<BlockPos, String> entry : dataBlocks.entrySet()) {
		String[] tokens = entry.getValue().split(" ");
		if (tokens.length == 0)
			return;

		BlockPos dataPos = entry.getKey();
		EntityPigMage pigMage;

		switch (tokens[0]) {
		case "pigman_mage":
			pigMage = new EntityPigMage(world);
			pigMage.setPosition(dataPos.getX() + 0.5, dataPos.getY(), dataPos.getZ() + 0.5);
			pigMage.onInitialSpawn(world.getDifficultyForLocation(dataPos), null);
			world.spawnEntity(pigMage);
			break;
		case "fortress_chest":
			IBlockState chestState = Blocks.CHEST.getDefaultState().withRotation(settings.getRotation());
			chestState = chestState.withMirror(Mirror.FRONT_BACK);
			world.setBlockState(dataPos, chestState);
			TileEntity tile = world.getTileEntity(dataPos);
			if (tile != null && tile instanceof TileEntityLockableLoot)
				((TileEntityLockableLoot) tile).setLootTable(NETHER_BRIDGE_LOOT_TABLE, rand.nextLong());
			break;
		}
	}

}
 
開發者ID:the-realest-stu,項目名稱:Infernum,代碼行數:65,代碼來源:PigmanMageTowerGenerator.java

示例7: generateMonument

import net.minecraft.world.WorldServer; //導入方法依賴的package包/類
public void generateMonument(WorldServer world, BlockPos pos, Random rand) {
	MinecraftServer server = world.getMinecraftServer();
	Template template = world.getStructureTemplateManager().getTemplate(server, MONUMENT_STRUCTURE);
	PlacementSettings settings = new PlacementSettings();
	settings.setRotation(Rotation.values()[rand.nextInt(Rotation.values().length)]);
	
	BlockPos size = template.getSize();
	int airBlocks = 0;
	for(int x = 0; x < size.getX(); x++) {
		for (int z = 0; z < size.getZ(); z++) {
			if (world.isAirBlock(pos.add(template.transformedBlockPos(settings, new BlockPos(x, -1, z))))) {
				airBlocks++;
				if (airBlocks > 0.33 * (size.getX() * size.getZ())) {
					return;
				}
			}
		}
	}
	for (int x = 0; x < size.getX(); x++) {
		for (int z = 0; z < size.getZ(); z++) {
			if (x == 0 || x == size.getX() - 1 || z == 0 || z == size.getZ() - 1) {
				for (int y = 0; y < size.getY(); y++) {
					BlockPos checkPos = pos.add(template.transformedBlockPos(settings, new BlockPos(x, y, z)));
					IBlockState checkState = world.getBlockState(checkPos);
					if (!checkState.getBlock().isAir(checkState, world, checkPos)) {
						if (!(y <= 0 && (checkState.getBlock() == Blocks.NETHERRACK || checkState.getBlock() == Blocks.QUARTZ_ORE || checkState.getBlock() == Blocks.MAGMA))) {
							return;
						}
					}
				}
			}
		}
	}

	template.addBlocksToWorld(world, pos, settings);

	Map<BlockPos, String> dataBlocks = template.getDataBlocks(pos, settings);
	for (Entry<BlockPos, String> entry : dataBlocks.entrySet()) {
		String[] tokens = entry.getValue().split(" ");
		if (tokens.length == 0)
			return;

		BlockPos dataPos = entry.getKey();

		if (tokens[0].equals("pedestal")) {
			IBlockState chestState = InfernumBlocks.PEDESTAL.getDefaultState();
			world.setBlockState(dataPos, chestState);
			TileEntity tile = world.getTileEntity(dataPos);
			if (tile instanceof TilePedestal) {
				((TilePedestal) tile).setStack(new ItemStack(InfernumItems.KNOWLEDGE_BOOK));
			}
		}

	}

}
 
開發者ID:the-realest-stu,項目名稱:Infernum,代碼行數:57,代碼來源:InfernalMonumentGenerator.java

示例8: PrepareForRemoteActivation

import net.minecraft.world.WorldServer; //導入方法依賴的package包/類
public void PrepareForRemoteActivation(WorldServer world, EntityPlayerMP player, BlockPos blockPosition, Vec3d playerPos)
{

   	IBlockState state = world.getBlockState(blockPosition);

	int id = Block.getStateId(state);

	TileEntity tile = world.getTileEntity(blockPosition);

	NBTTagCompound tileUpdateTag = null;
	NBTTagCompound tileReadTag = null;

	if (tile != null)
	{
		tileUpdateTag = tile.getUpdateTag();
		tile.writeToNBT(tileReadTag = new NBTTagCompound());
	}

	String modId = Util.getBlockModId(state.getBlock());

	// make sure any old entries are properly cleaned up
	CancelRemoteActivation(player);

	m_playerData.put(player,
			new RemoteGuiPlayerData(id, tileUpdateTag, tileReadTag, blockPosition, modId, world.provider.getDimension(), playerPos));

}
 
開發者ID:orbwoi,項目名稱:UniversalRemote,代碼行數:28,代碼來源:PlayerRemoteGuiDataManagerServer.java


注:本文中的net.minecraft.world.WorldServer.getTileEntity方法示例由純淨天空整理自Github/MSDocs等開源代碼及文檔管理平台,相關代碼片段篩選自各路編程大神貢獻的開源項目,源碼版權歸原作者所有,傳播和使用請參考對應項目的License;未經允許,請勿轉載。