Search in sources :

Example 41 with Item

use of com.viaversion.viaversion.api.minecraft.item.Item in project ViaVersion by ViaVersion.

the class FlatItemType method read.

@Override
public Item read(ByteBuf buffer) throws Exception {
    short id = buffer.readShort();
    if (id < 0) {
        return null;
    } else {
        Item item = new DataItem();
        item.setIdentifier(id);
        item.setAmount(buffer.readByte());
        item.setTag(Type.NBT.read(buffer));
        return item;
    }
}
Also used : DataItem(com.viaversion.viaversion.api.minecraft.item.DataItem) Item(com.viaversion.viaversion.api.minecraft.item.Item) DataItem(com.viaversion.viaversion.api.minecraft.item.DataItem)

Example 42 with Item

use of com.viaversion.viaversion.api.minecraft.item.Item in project ViaVersion by ViaVersion.

the class ItemType method read.

@Override
public Item read(ByteBuf buffer) throws Exception {
    short id = buffer.readShort();
    if (id < 0) {
        return null;
    } else {
        Item item = new DataItem();
        item.setIdentifier(id);
        item.setAmount(buffer.readByte());
        item.setData(buffer.readShort());
        item.setTag(NBT.read(buffer));
        return item;
    }
}
Also used : DataItem(com.viaversion.viaversion.api.minecraft.item.DataItem) Item(com.viaversion.viaversion.api.minecraft.item.Item) DataItem(com.viaversion.viaversion.api.minecraft.item.DataItem)

Example 43 with Item

use of com.viaversion.viaversion.api.minecraft.item.Item in project ViaVersion by ViaVersion.

the class BukkitViaLoader method load.

@Override
public void load() {
    // Update Listener
    registerListener(new UpdateListener());
    /* Base Protocol */
    final ViaVersionPlugin plugin = (ViaVersionPlugin) Bukkit.getPluginManager().getPlugin("ViaVersion");
    // Add ProtocolSupport ConnectListener if necessary.
    ClassGenerator.registerPSConnectListener(plugin);
    int serverProtocolVersion = Via.getAPI().getServerVersion().lowestSupportedVersion();
    /* 1.9 client to 1.8 server */
    if (serverProtocolVersion < ProtocolVersion.v1_9.getVersion()) {
        storeListener(new ArmorListener(plugin)).register();
        storeListener(new DeathListener(plugin)).register();
        storeListener(new BlockListener(plugin)).register();
        if (plugin.getConf().isItemCache()) {
            handItemCache = new HandItemCache();
            // Updates player's items :)
            tasks.add(handItemCache.runTaskTimerAsynchronously(plugin, 1L, 1L));
        }
    }
    if (serverProtocolVersion < ProtocolVersion.v1_14.getVersion()) {
        boolean use1_9Fix = plugin.getConf().is1_9HitboxFix() && serverProtocolVersion < ProtocolVersion.v1_9.getVersion();
        if (use1_9Fix || plugin.getConf().is1_14HitboxFix()) {
            try {
                storeListener(new PlayerSneakListener(plugin, use1_9Fix, plugin.getConf().is1_14HitboxFix())).register();
            } catch (ReflectiveOperationException e) {
                Via.getPlatform().getLogger().warning("Could not load hitbox fix - please report this on our GitHub");
                e.printStackTrace();
            }
        }
    }
    if (serverProtocolVersion < ProtocolVersion.v1_15.getVersion()) {
        try {
            Class.forName("org.bukkit.event.entity.EntityToggleGlideEvent");
            storeListener(new EntityToggleGlideListener(plugin)).register();
        } catch (ClassNotFoundException ignored) {
        }
    }
    if (serverProtocolVersion < ProtocolVersion.v1_12.getVersion() && !Boolean.getBoolean("com.viaversion.ignorePaperBlockPlacePatch")) {
        boolean paper = true;
        try {
            // Paper 1.8 ?
            Class.forName("org.github.paperspigot.PaperSpigotConfig");
        } catch (ClassNotFoundException ignored) {
            try {
                // Paper 1.9+ ?
                Class.forName("com.destroystokyo.paper.PaperConfig");
            } catch (ClassNotFoundException alsoIgnored) {
                // Definitely not Paper
                paper = false;
            }
        }
        if (paper) {
            storeListener(new PaperPatch(plugin)).register();
        }
    }
    /* Providers */
    if (serverProtocolVersion < ProtocolVersion.v1_9.getVersion()) {
        Via.getManager().getProviders().use(MovementTransmitterProvider.class, new BukkitViaMovementTransmitter());
        Via.getManager().getProviders().use(HandItemProvider.class, new HandItemProvider() {

            @Override
            public Item getHandItem(final UserConnection info) {
                if (handItemCache != null) {
                    return handItemCache.getHandItem(info.getProtocolInfo().getUuid());
                }
                try {
                    return Bukkit.getScheduler().callSyncMethod(Bukkit.getPluginManager().getPlugin("ViaVersion"), () -> {
                        UUID playerUUID = info.getProtocolInfo().getUuid();
                        Player player = Bukkit.getPlayer(playerUUID);
                        if (player != null) {
                            return HandItemCache.convert(player.getItemInHand());
                        }
                        return null;
                    }).get(10, TimeUnit.SECONDS);
                } catch (Exception e) {
                    Via.getPlatform().getLogger().severe("Error fetching hand item: " + e.getClass().getName());
                    if (Via.getManager().isDebug())
                        e.printStackTrace();
                    return null;
                }
            }
        });
    }
    if (serverProtocolVersion < ProtocolVersion.v1_12.getVersion()) {
        if (plugin.getConf().is1_12QuickMoveActionFix()) {
            Via.getManager().getProviders().use(InventoryQuickMoveProvider.class, new BukkitInventoryQuickMoveProvider());
        }
    }
    if (serverProtocolVersion < ProtocolVersion.v1_13.getVersion()) {
        if (Via.getConfig().getBlockConnectionMethod().equalsIgnoreCase("world")) {
            BukkitBlockConnectionProvider blockConnectionProvider = new BukkitBlockConnectionProvider();
            Via.getManager().getProviders().use(BlockConnectionProvider.class, blockConnectionProvider);
            ConnectionData.blockConnectionProvider = blockConnectionProvider;
        }
    }
}
Also used : Player(org.bukkit.entity.Player) PaperPatch(com.viaversion.viaversion.bukkit.listeners.protocol1_9to1_8.PaperPatch) BukkitViaMovementTransmitter(com.viaversion.viaversion.bukkit.providers.BukkitViaMovementTransmitter) UserConnection(com.viaversion.viaversion.api.connection.UserConnection) BukkitBlockConnectionProvider(com.viaversion.viaversion.bukkit.providers.BukkitBlockConnectionProvider) Item(com.viaversion.viaversion.api.minecraft.item.Item) EntityToggleGlideListener(com.viaversion.viaversion.bukkit.listeners.protocol1_15to1_14_4.EntityToggleGlideListener) BukkitInventoryQuickMoveProvider(com.viaversion.viaversion.bukkit.providers.BukkitInventoryQuickMoveProvider) ArmorListener(com.viaversion.viaversion.bukkit.listeners.protocol1_9to1_8.ArmorListener) BlockListener(com.viaversion.viaversion.bukkit.listeners.protocol1_9to1_8.BlockListener) PlayerSneakListener(com.viaversion.viaversion.bukkit.listeners.multiversion.PlayerSneakListener) HandItemProvider(com.viaversion.viaversion.protocols.protocol1_9to1_8.providers.HandItemProvider) ViaVersionPlugin(com.viaversion.viaversion.ViaVersionPlugin) UpdateListener(com.viaversion.viaversion.bukkit.listeners.UpdateListener) UUID(java.util.UUID) HandItemCache(com.viaversion.viaversion.bukkit.listeners.protocol1_9to1_8.HandItemCache) DeathListener(com.viaversion.viaversion.bukkit.listeners.protocol1_9to1_8.DeathListener)

Aggregations

Item (com.viaversion.viaversion.api.minecraft.item.Item)43 PacketWrapper (com.viaversion.viaversion.api.protocol.packet.PacketWrapper)28 PacketRemapper (com.viaversion.viaversion.api.protocol.remapper.PacketRemapper)27 PacketHandler (com.viaversion.viaversion.api.protocol.remapper.PacketHandler)23 Type (com.viaversion.viaversion.api.type.Type)15 DataItem (com.viaversion.viaversion.api.minecraft.item.DataItem)13 ClientWorld (com.viaversion.viaversion.protocols.protocol1_9_3to1_9_1_2.storage.ClientWorld)9 Metadata (com.viaversion.viaversion.api.minecraft.metadata.Metadata)8 ArrayList (java.util.ArrayList)8 CompoundTag (com.github.steveice10.opennbt.tag.builtin.CompoundTag)6 Position (com.viaversion.viaversion.api.minecraft.Position)6 Chunk (com.viaversion.viaversion.api.minecraft.chunks.Chunk)6 ClientboundPackets1_13 (com.viaversion.viaversion.protocols.protocol1_13to1_12_2.ClientboundPackets1_13)6 List (java.util.List)6 StringTag (com.github.steveice10.opennbt.tag.builtin.StringTag)5 Via (com.viaversion.viaversion.api.Via)5 UserConnection (com.viaversion.viaversion.api.connection.UserConnection)5 UUID (java.util.UUID)5 ListTag (com.github.steveice10.opennbt.tag.builtin.ListTag)4 ViaBackwards (com.viaversion.viabackwards.ViaBackwards)4