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

The following examples show how to use com.nukkitx.nbt.CompoundTagBuilder#floatTag() . 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: PistonBlockEntityTranslator.java    From Geyser with MIT License 6 votes vote down vote up
/**
 * Calculates the Nukkit CompoundTag to send to the client on chunk
 * @param blockState Java BlockState of block.
 * @param position Bedrock position of piston.
 * @return Bedrock tag of piston.
 */
public static CompoundTag getTag(BlockState blockState, Vector3i position) {
    CompoundTagBuilder tagBuilder = CompoundTagBuilder.builder()
            .intTag("x", position.getX())
            .intTag("y", position.getY())
            .intTag("z", position.getZ())
            .byteTag("isMovable", (byte) 1)
            .stringTag("id", "PistonArm");
    if (BlockStateValues.getPistonValues().containsKey(blockState.getId())) {
        boolean extended = BlockStateValues.getPistonValues().get(blockState.getId());
        // 1f if extended, otherwise 0f
        tagBuilder.floatTag("Progress", (extended) ? 1.0f : 0.0f);
        // 1 if sticky, 0 if not
        tagBuilder.byteTag("Sticky", (byte)((BlockStateValues.isStickyPiston(blockState)) ? 1 : 0));
    }
    return tagBuilder.buildRootTag();
}
 
Example 2
Source File: SkullBlockEntityTranslator.java    From Geyser with MIT License 5 votes vote down vote up
@Override
public CompoundTag getDefaultBedrockTag(String bedrockId, int x, int y, int z) {
    CompoundTagBuilder tagBuilder = getConstantBedrockTag(bedrockId, x, y, z).toBuilder();
    tagBuilder.floatTag("Rotation", 0);
    tagBuilder.byteTag("SkullType", (byte) 0);
    return tagBuilder.buildRootTag();
}
 
Example 3
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);
}