Java Code Examples for com.nukkitx.nbt.CompoundTagBuilder#listTag()

The following examples show how to use com.nukkitx.nbt.CompoundTagBuilder#listTag() . You can vote up the ones you like or vote down the ones you don't like, and go to the original project or source file by following the links above each example. You may check out the related API usage on the sidebar.
Example 1
Source File: EndGatewayBlockEntityTranslator.java    From Geyser with MIT License 5 votes vote down vote up
@Override
public com.nukkitx.nbt.tag.CompoundTag getDefaultBedrockTag(String bedrockId, int x, int y, int z) {
    CompoundTagBuilder tagBuilder = getConstantBedrockTag(bedrockId, x, y, z).toBuilder();
    List<IntTag> tagsList = new ArrayList<>();
    tagsList.add(new IntTag("", 0));
    tagsList.add(new IntTag("", 0));
    tagsList.add(new IntTag("", 0));
    tagBuilder.listTag("ExitPortal", IntTag.class, tagsList);
    return tagBuilder.buildRootTag();
}
 
Example 2
Source File: InventoryUtils.java    From Geyser with MIT License 5 votes vote down vote up
/**
 * Returns a barrier block with custom name and lore to explain why
 * part of the inventory is unusable.
 */
public static ItemData createUnusableSpaceBlock(String description) {
    CompoundTagBuilder root = CompoundTagBuilder.builder();
    CompoundTagBuilder display = CompoundTagBuilder.builder();

    display.stringTag("Name", ChatColor.RESET + "Unusable inventory space");
    display.listTag("Lore", StringTag.class, Collections.singletonList(new StringTag("", ChatColor.RESET + ChatColor.DARK_PURPLE + description)));

    root.tag(display.build("display"));
    return ItemData.of(ItemRegistry.ITEM_ENTRIES.get(ItemRegistry.BARRIER_INDEX).getBedrockId(), (short) 0, 1, root.buildRootTag());
}
 
Example 3
Source File: BannerBlockEntityTranslator.java    From Geyser with MIT License 4 votes vote down vote up
@Override
public com.nukkitx.nbt.tag.CompoundTag getDefaultBedrockTag(String bedrockId, int x, int y, int z) {
    CompoundTagBuilder tagBuilder = getConstantBedrockTag(bedrockId, x, y, z).toBuilder();
    tagBuilder.listTag("Patterns", com.nukkitx.nbt.tag.CompoundTag.class, new ArrayList<>());
    return tagBuilder.buildRootTag();
}
 
Example 4
Source File: JavaTradeListTranslator.java    From Geyser with MIT License 4 votes vote down vote up
@Override
public void translate(ServerTradeListPacket packet, GeyserSession session) {
    Entity villager = session.getPlayerEntity();
    session.setVillagerTrades(packet.getTrades());
    villager.getMetadata().put(EntityData.TRADE_TIER, packet.getVillagerLevel() - 1);
    villager.getMetadata().put(EntityData.MAX_TRADE_TIER, 4);
    villager.getMetadata().put(EntityData.TRADE_XP, packet.getExperience());
    villager.updateBedrockMetadata(session);

    UpdateTradePacket updateTradePacket = new UpdateTradePacket();
    updateTradePacket.setTradeTier(packet.getVillagerLevel() - 1);
    updateTradePacket.setWindowId((short) packet.getWindowId());
    updateTradePacket.setWindowType((short) ContainerType.TRADING.id());
    String displayName;
    Entity realVillager = session.getEntityCache().getEntityByGeyserId(session.getLastInteractedVillagerEid());
    if (realVillager != null && realVillager.getMetadata().containsKey(EntityData.NAMETAG) && realVillager.getMetadata().getString(EntityData.NAMETAG) != null) {
        displayName = realVillager.getMetadata().getString(EntityData.NAMETAG);
    } else {
        displayName = packet.isRegularVillager() ? "Villager" : "Wandering Trader";
    }
    updateTradePacket.setDisplayName(displayName);
    updateTradePacket.setUnknownInt(0);
    updateTradePacket.setScreen2(true);
    updateTradePacket.setWilling(true);
    updateTradePacket.setPlayerUniqueEntityId(session.getPlayerEntity().getGeyserId());
    updateTradePacket.setTraderUniqueEntityId(session.getPlayerEntity().getGeyserId());
    CompoundTagBuilder builder = CompoundTagBuilder.builder();
    List<CompoundTag> tags = new ArrayList<>();
    for (VillagerTrade trade : packet.getTrades()) {
        CompoundTagBuilder recipe = CompoundTagBuilder.builder();
        recipe.intTag("maxUses", trade.getMaxUses());
        recipe.intTag("traderExp", trade.getXp());
        recipe.floatTag("priceMultiplierA", trade.getPriceMultiplier());
        recipe.tag(getItemTag(session, trade.getOutput(), "sell", 0));
        recipe.floatTag("priceMultiplierB", 0.0f);
        recipe.intTag("buyCountB", trade.getSecondInput() != null ? trade.getSecondInput().getAmount() : 0);
        recipe.intTag("buyCountA", trade.getFirstInput().getAmount());
        recipe.intTag("demand", trade.getDemand());
        recipe.intTag("tier", packet.getVillagerLevel() - 1);
        recipe.tag(getItemTag(session, trade.getFirstInput(), "buyA", trade.getSpecialPrice()));
        if (trade.getSecondInput() != null) {
            recipe.tag(getItemTag(session, trade.getSecondInput(), "buyB", 0));
        }
        recipe.intTag("uses", trade.getNumUses());
        recipe.byteTag("rewardExp", (byte) 1);
        tags.add(recipe.buildRootTag());
    }

    //Hidden trade to fix visual experience bug
    if (packet.isRegularVillager() && packet.getVillagerLevel() < 5) {
        tags.add(CompoundTagBuilder.builder()
                .intTag("maxUses", 0)
                .intTag("traderExp", 0)
                .floatTag("priceMultiplierA", 0.0f)
                .floatTag("priceMultiplierB", 0.0f)
                .intTag("buyCountB", 0)
                .intTag("buyCountA", 0)
                .intTag("demand", 0)
                .intTag("tier", 5)
                .intTag("uses", 0)
                .byteTag("rewardExp", (byte) 0)
                .buildRootTag());
    }

    builder.listTag("Recipes", CompoundTag.class, tags);
    List<CompoundTag> expTags = new ArrayList<>();
    expTags.add(CompoundTagBuilder.builder().intTag("0", 0).buildRootTag());
    expTags.add(CompoundTagBuilder.builder().intTag("1", 10).buildRootTag());
    expTags.add(CompoundTagBuilder.builder().intTag("2", 70).buildRootTag());
    expTags.add(CompoundTagBuilder.builder().intTag("3", 150).buildRootTag());
    expTags.add(CompoundTagBuilder.builder().intTag("4", 250).buildRootTag());
    builder.listTag("TierExpRequirements", CompoundTag.class, expTags);
    updateTradePacket.setOffers(builder.buildRootTag());
    session.sendUpstreamPacket(updateTradePacket);
}