Search in sources :

Example 1 with PacketItemToggle

use of com.lothrazar.cyclic.net.PacketItemToggle in project Cyclic by Lothrazar.

the class ClientInputEvents method onMouseEvent.

@SubscribeEvent(priority = EventPriority.HIGH)
public void onMouseEvent(ScreenEvent.MouseClickedEvent.Pre event) {
    if (event.getScreen() == null || !(event.getScreen() instanceof AbstractContainerScreen<?>)) {
        return;
    }
    AbstractContainerScreen<?> gui = (AbstractContainerScreen<?>) event.getScreen();
    boolean rightClickDown = event.getButton() == 1;
    try {
        if (rightClickDown && gui.getSlotUnderMouse() != null) {
            Slot slotHit = gui.getSlotUnderMouse();
            if (!slotHit.getItem().isEmpty()) {
                ItemStack maybeCharm = slotHit.getItem();
                if (maybeCharm.getItem() instanceof IHasClickToggle) {
                    PacketRegistry.INSTANCE.sendToServer(new PacketItemToggle(slotHit.index));
                    event.setCanceled(true);
                // UtilSound.playSound(ModCyclic.proxy.getClientPlayer(), SoundEvents.UI_BUTTON_CLICK);
                } else if (maybeCharm.getItem() instanceof ItemStorageBag) {
                    PacketRegistry.INSTANCE.sendToServer(new PacketItemGui(slotHit.index));
                    event.setCanceled(true);
                }
            }
        }
    } catch (Exception e) {
        // array out of bounds, or we are in a strange third party GUI that doesnt have slots like this
        // EXAMPLE:  mod.chiselsandbits.bitbag.BagGui
        ModCyclic.LOGGER.error("click error", e);
    // so this fixes ithttps://github.com/PrinceOfAmber/Cyclic/issues/410
    }
}
Also used : PacketItemToggle(com.lothrazar.cyclic.net.PacketItemToggle) IHasClickToggle(com.lothrazar.cyclic.api.IHasClickToggle) AbstractContainerScreen(net.minecraft.client.gui.screens.inventory.AbstractContainerScreen) PacketItemGui(com.lothrazar.cyclic.net.PacketItemGui) Slot(net.minecraft.world.inventory.Slot) ItemStack(net.minecraft.world.item.ItemStack) ItemStorageBag(com.lothrazar.cyclic.item.storagebag.ItemStorageBag) SubscribeEvent(net.minecraftforge.eventbus.api.SubscribeEvent)

Aggregations

IHasClickToggle (com.lothrazar.cyclic.api.IHasClickToggle)1 ItemStorageBag (com.lothrazar.cyclic.item.storagebag.ItemStorageBag)1 PacketItemGui (com.lothrazar.cyclic.net.PacketItemGui)1 PacketItemToggle (com.lothrazar.cyclic.net.PacketItemToggle)1 AbstractContainerScreen (net.minecraft.client.gui.screens.inventory.AbstractContainerScreen)1 Slot (net.minecraft.world.inventory.Slot)1 ItemStack (net.minecraft.world.item.ItemStack)1 SubscribeEvent (net.minecraftforge.eventbus.api.SubscribeEvent)1