Jump to content

GUI-Item dragging


Zombiepriester

Recommended Posts

Block:

public class OreDisgenerator extends BlockContainer{

 

public OreDisgenerator(int id, Material Material) {

super(id, 15, Material.iron);

setStepSound(soundMetalFootstep);

}

 

public String getTextureFile(){

return "/modTextures/Blocks.png";

}

public boolean renderAsNormalBlock() {

return false;

}

@Override

public TileEntity createNewTileEntity(World var1) {

return new TileDisgenerator();

}

 

 

@Override

public boolean onBlockActivated(World par1World, int x, int y, int z, EntityPlayer par5EntityPlayer, int par6, float par7, float par8, float par9){

 

Object tileD = (TileDisgenerator)par1World.getBlockTileEntity(x, y, z);

par5EntityPlayer.openGui(OreGenerators.instance, 0, par1World, x, y, z);

return true;

 

}

 

@Override

    public void breakBlock(World world, int x, int y, int z, int par5, int par6) {

            dropItems(world, x, y, z);

            super.breakBlock(world, x, y, z, par5, par6);

    }

 

private void dropItems(World world, int x, int y, int z){

        Random rand = new Random();

 

        TileEntity tileEntity = world.getBlockTileEntity(x, y, z);

        if (!(tileEntity instanceof IInventory)) {

                return;

        }

        IInventory inventory = (IInventory) tileEntity;

 

        for (int i = 0; i < inventory.getSizeInventory(); i++) {

                ItemStack item = inventory.getStackInSlot(i);

 

                if (item != null && item.stackSize > 0) {

                        float rx = rand.nextFloat() * 0.8F + 0.1F;

                        float ry = rand.nextFloat() * 0.8F + 0.1F;

                        float rz = rand.nextFloat() * 0.8F + 0.1F;

 

                        EntityItem entityItem = new EntityItem(world,

                                        x + rx, y + ry, z + rz,

                                        new ItemStack(item.itemID, item.stackSize, item.getItemDamage()));

 

                        if (item.hasTagCompound()) {

                                entityItem.getEntityItem().setTagCompound((NBTTagCompound) item.getTagCompound().copy());

                        }

 

                        float factor = 0.05F;

                        entityItem.motionX = rand.nextGaussian() * factor;

                        entityItem.motionY = rand.nextGaussian() * factor + 0.2F;

                        entityItem.motionZ = rand.nextGaussian() * factor;

                        world.spawnEntityInWorld(entityItem);

                        item.stackSize = 0;

                }

        }

}

}

 

TileEntity:

 

public class TileDisgenerator extends TileEntity implements IInventory {

 

ItemStack[] items = new ItemStack[1];

 

@Override

public int getSizeInventory() {

return 1;

}

 

@Override

public ItemStack getStackInSlot(int slot) {

return items[slot];

}

 

@Override

public ItemStack decrStackSize(int slot, int amt) {

ItemStack stack = getStackInSlot(slot);

        if (stack != null) {

                if (stack.stackSize <= amt) {

                        setInventorySlotContents(slot, null);

                } else {

                        stack = stack.splitStack(amt);

                        if (stack.stackSize == 0) {

                                setInventorySlotContents(slot, null);

                        }

                }

        }

        return stack;

}

 

@Override

public ItemStack getStackInSlotOnClosing(int slot) {

ItemStack stack = getStackInSlot(slot);

        if (stack != null) {

                setInventorySlotContents(slot, null);

        }

        return stack;

}

 

@Override

public void setInventorySlotContents(int slot, ItemStack stack) {

items[slot] = stack;

        if (stack != null && stack.stackSize > getInventoryStackLimit()) {

                stack.stackSize = getInventoryStackLimit();

        } 

}

 

@Override

public String getInvName() {

return "Ore Disgenerator";

}

 

@Override

public int getInventoryStackLimit() {

return 1;

}

 

@Override

public void onInventoryChanged() {

 

}

 

@Override

public boolean isUseableByPlayer(EntityPlayer var1) {

return true;

}

 

@Override

public void openChest() {

 

}

 

@Override

public void closeChest() {

 

}

 

@Override

    public void readFromNBT(NBTTagCompound tagCompound) {

            super.readFromNBT(tagCompound);

            this.setInventorySlotContents(0, new ItemStack(tagCompound.getInteger("ItemID"), tagCompound.getInteger("StackSize"), 0));

    }

 

@Override

    public void writeToNBT(NBTTagCompound tagCompound) {

            super.writeToNBT(tagCompound);

            tagCompound.setInteger("ItemID", this.getStackInSlot(0).itemID); 

            tagCompound.setInteger("StackSize", this.getStackInSlot(0).stackSize);

    }

 

}

 

Container:

 

public class ContainerDisgenerator extends Container{

 

 

private TileDisgenerator inv;

 

public ContainerDisgenerator(InventoryPlayer inventory, TileDisgenerator entity) {

inv = entity;

addSlotToContainer(new Slot(entity, 0, 10, 29));

for (int i = 0; i < 3; i++) {

for (int k = 0; k < 9; k++) {

        addSlotToContainer(new Slot(inventory, k + i * 9 + 9, 8 + k * 18, 84 + i * 18));

    }

}

 

for (int j = 0; j < 9; j++) {

addSlotToContainer(new Slot(inventory, j, 8 + j * 18, 142));

}

 

}

 

@Override

public boolean canInteractWith(EntityPlayer var1) {

inv.isUseableByPlayer(var1);

return false;

}

 

@Override

    public ItemStack transferStackInSlot(EntityPlayer player, int i) {

Slot slot = (Slot) getSlot(i);

ItemStack itemstack1 = slot.getStack();

Slot slot1 = (Slot)this.getSlot(0);

slot1.putStack(itemstack1);

slot.putStack(null);

return itemstack1;

 

}

}

 

GUIHandler:

 

public class GuiHandler implements IGuiHandler {

 

        @Override

        public Object getServerGuiElement(int id, EntityPlayer player, World world,

                        int x, int y, int z) {

                TileEntity tileEntity = world.getBlockTileEntity(x, y, z);

                if(tileEntity instanceof TileDisgenerator){

                        return new ContainerDisgenerator(player.inventory, (TileDisgenerator) tileEntity);

                }

                return null;

        }

        @Override

        public Object getClientGuiElement(int id, EntityPlayer player, World world,

                        int x, int y, int z) {

                TileEntity tileEntity = world.getBlockTileEntity(x, y, z);

                if(tileEntity instanceof TileDisgenerator){

                        return new GUIDisgenerator(player.inventory, (TileDisgenerator) tileEntity);

                }

                return null;

 

        }

}

 

GUI:

 

public class GUIDisgenerator extends GuiContainer{

 

Container DisCon;

int x;

int y;

 

public GUIDisgenerator(InventoryPlayer inventory, TileDisgenerator tileD) {

super(new ContainerDisgenerator(inventory,tileD));

DisCon = new ContainerDisgenerator(inventory,tileD);

}

 

protected void drawGuiContainerForegroundLayer() {

fontRenderer.drawString("Ore Disgenerator", x+10, y+10, 0xffffff);

}

 

@Override

protected void drawGuiContainerBackgroundLayer(float var1, int var2,

int var3) {

x = (width - xSize) / 2;

y = (height - ySize) / 2;

int i = mc.renderEngine.getTexture("/modTextures/GUIDisgen.png");

GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F);

mc.renderEngine.bindTexture(i);

drawTexturedModalRect(x, y, 0, 0, xSize, ySize);

}

 

    @Override

    public void initGui() {

            super.initGui();

            controlList.add(new GuiButton(1, x + (width -150)/2, y + 95, 150, 20, "Disgenerate"));//id,x,y,w,h,n

    }

 

    protected void actionPerformed(GuiButton guibutton) {

            System.out.println("geht");

    }

}

Link to comment
Share on other sites

Somehow your onBlockActivated is not called on the server. That shouldn't happen.

Don't PM me with questions. They will be ignored! Make a thread on the appropriate board for support.

 

1.12 -> 1.13 primer by williewillus.

 

1.7.10 and older versions of Minecraft are no longer supported due to it's age! Update to the latest version for support.

 

http://www.howoldisminecraft1710.today/

Link to comment
Share on other sites

Try checking with a !world.isRemote before the getTileEntity and openGui method.

Don't PM me with questions. They will be ignored! Make a thread on the appropriate board for support.

 

1.12 -> 1.13 primer by williewillus.

 

1.7.10 and older versions of Minecraft are no longer supported due to it's age! Update to the latest version for support.

 

http://www.howoldisminecraft1710.today/

Link to comment
Share on other sites

If i write:

if(!par1World.isRemote){

Object tileD = (TileDisgenerator)par1World.getBlockTileEntity(x, y, z);

par5EntityPlayer.openGui(OreGenerators.instance, 0, par1World, x, y, z);

}

Into the onBlockActivated Method, Nothing happens when I rightclicK the Block

Link to comment
Share on other sites

So you say you are never gonna update because of RedPower2? Just use Project Red, a good alternative to RedPower2. RedPower2 is never gonna be updated because Eloraam, the writer of the mod, decided to go missing and not update the mod anymore.

Don't PM me with questions. They will be ignored! Make a thread on the appropriate board for support.

 

1.12 -> 1.13 primer by williewillus.

 

1.7.10 and older versions of Minecraft are no longer supported due to it's age! Update to the latest version for support.

 

http://www.howoldisminecraft1710.today/

Link to comment
Share on other sites

Guest
This topic is now closed to further replies.

Announcements



  • Recently Browsing

    • No registered users viewing this page.
  • Posts

    • version used : minecraft forge 1.20.1 Logs : https://bytebin.lucko.me/rtG4EA0vfb hi! so when i try to create a new minecraft world in single player, it just crashes?? does anyone has an idea what could be causing this ?
    • Hey today I was trying to play in 1.21 modpack that I made on fabric (my version of fabric is in 0.16.0) with this list of mods : - Entity Model Features (by traben_0) - Entity Texture Features (by traben_0) - Advanced Chat (by Wesley8081) - Ambient Environment (by Jaredlll08) - Ambient Souds 6 (by CreativeMD) - Animatica (by FoundationGames) - Armor Statues (by Fuzs) - Auto HUD (by Crendgrim) - Bad Packets (by badasintended) - Balm (by BlayTheNinth) - Better Beds (by Motschen) - Better Chunk Loading (by someaddon) - Better Compatibility Checker (by Gaz-) - Better FPS [Render Distance] (by someaddon) - Better Ping Display (by Quintinity) - Better Statistics Screen (by TheCSDev) - Better Armor HUD (by efekos) - Better F3 ( by cominixo) - Blur + (by Motschen) - Bobby (by Johni0702) - Cat Jam (by shmove) - Catalogue (by MrCrayfish) - Chat Heads (by dzwdz) - Cherished Worlds (by TheIllusiveC4) - Chunk Sending (by someaddon) - Chunks Fade In (by kerudion) - Chunky (by pop4959) - Cloth Config (by shedaniel) - Clumps (by Jaredlll08) - Cobweb (CrystalSpider) - Collective (by Serilum) - Configured (by MrCrayfish) - Connectivity (by someaddon) - Continuity (by Pepper_Bell) - Creative Core (by CreativeMD) - Cupboard (by someaddon) - Cut Through (by Fuzs) - Dark Loading Screen (by Neecko5b84) - Debugify (by XanderIsDev) - Double Doors (by Serilum) - Dynamic FPS (by juliand665) - Dynamic Lights (by Tschipcraft) - Easy Anvils (by Fuzs) - Easy Magic (by Fuzs) - Easy Shulker Boxes (by Fuzs) - Eating Animation (by theone-ss) - Enhanced Attack Indicator (by Mineash) - Enhanced Block Entities (by FoundationGames) - Enhanced Visuals (by CreativeMD) - Entity Culling (by tr7zw) - Environmental Water (by AgentMindStorm) - Essential (by SparkUniverse_) - Extra Thicc Packets (by JaselUmena) - Fabric (by modmuss50) - Fabric Language Kotlin (by modmuss50) - Falling Leaves (by RandomMcSomethin) - Fancy Block Particles (by Hantonik) - Fancy Health Bar (by efekos) - Farsight (by someaddon) - Fast IP Ping (by Fallen_Breath) - Ferrite Core (by  malte0811) - Fish On The Line (by Serilum) - Fix GPU Memory Leak  (by someaddon) - Forge Config API Port (by Fuzs) - FPS Reducer (by bre2el) - Freecam (by hashalite) - Fzzy Config (by fzzyhmstrs) - Get It Together (by bl4ckscor3) - Global Packs (by JTK222) - Harvest With Ease (by CrystalSpider) - Ichuntil Util (by iChun) - Immediately Fast (by RaphilMC) - Immersive UI (by SSKirillSS) - Indium (by comp500) - Inventory HUD+ (by dmitrylovin) - Iris Shaders (by coderbot) - Item Physic Full (by CreativeMD) - Jade (by Snownee) - Journey Map (by techbrew) - Just Enough Breeding (by Christofmeg) - Just Enough Items (by mezz) - Just Enough Professions (by Mrbysco) - Language Reload (by Jerozgen) - Leaves Be Gone (by Fuzs) - Let Me Despawn (by frikinjay) - Let Sleeping Dogs Lie (by iChun) - Lithium (by JellySquid) - Loading Backgrounds (by Lupin) - Mineblock's Repeated Utilities (by itsmineblock11) - Menulogue (by MrCrayfish) - Mob Plaques (by Fuzs) - Mod Menu (by Prospector) - Model Gap Fix (by MehVahdJukaar) - Mouse Tweaks (by YaLTeR) - Nether Portal Fix (by BlayTheNinth) - Nicer Skies (by ztereohype) - Noisium (by Steveplays28) - Not Enough Animations (by tr7zw) - Opti GUI (by opekope2) - Packet Fixer (by TonimatasDEV) - Particle Core (by fzzyhmstrs) - Passive Shields (by Serilum) - Pick Up Notifier (by Fuzs) - Ping Wheel (by LukenSkyne) - Puzzle (by Motschen) - Puzzles LIB (by Fuzs) - Reese's Sodium Options (by FlashyReese) - Resource Pack Overrides (by Fuzs) - Server Country Flags (by khajiitos) - Server Performance (by someaddon) - Skin Layer 3D (by tr7zw) - Sodium (by JellySquid) - Sodium Extra (by FlashyReese) - Sodium Shadowy Path Blocks (by Rynnavinx) - Sound Physics Remastered (by henkelmax) - Sounds (by itsmineblock11) - Spark (by lucko) - Stack Refill (by Serilum) - Structure Essentials (by someaddon) - TCD Commons API (by TheCSDev) - Text Placeholder API (by Patbox) - Villager Names (by Serilum) - Visual Overhaul (by Motschen) - Visual Workbench (by Fuzs) - Visuality (by PinkGoosik) - Wakes (by Goby56) - Wavey Capes (by tr7zw) - YDM'S Weapon Master  (by YourDailyModderx) - Yet Another Config LIB (by XanderIsDev) - Zoomify (by XanderIsDev) And When I load it it work, I can create a world and even let him open forever at least I didn't move cause if so the game just crash and tell me this message :   Encountered an unexpected exception net.minecraft.class_148: Ticking entity at net.minecraft.server.MinecraftServer.method_3813(MinecraftServer.java:1025) at net.minecraft.server.MinecraftServer.method_3748(MinecraftServer.java:912) at net.minecraft.class_1132.method_3748(class_1132.java:114) at net.minecraft.server.MinecraftServer.method_29741(MinecraftServer.java:697) at net.minecraft.server.MinecraftServer.method_29739(MinecraftServer.java:281) at java.base/java.lang.Thread.run(Thread.java:1583) Caused by: java.lang.NullPointerException: Cannot invoke "net.minecraft.class_4706.isEmpty()" because "tickets" is null at net.minecraft.class_3204.canNoneExpire(class_3204.java:1034) at net.minecraft.class_3204.handler$dln000$lithium$unregisterExpiringTicket(class_3204.java:1075) at net.minecraft.class_3204.method_17645(class_3204.java:172) at net.minecraft.class_3204.method_17292(class_3204.java:194) at net.minecraft.class_3215.method_17300(class_3215.java:443) at com.betterchunkloading.chunk.PlayerChunkData.checkPrediction(PlayerChunkData.java:406) at com.betterchunkloading.chunk.PlayerChunkData.checkDirection(PlayerChunkData.java:353) at com.betterchunkloading.chunk.PlayerChunkData.trackPlayerMovement(PlayerChunkData.java:177) at com.betterchunkloading.chunk.PlayerChunkData.onChunkChanged(PlayerChunkData.java:130) at com.betterchunkloading.event.EventHandler.onPlayerTick(EventHandler.java:200) at net.minecraft.class_3222.handler$zed000$betterchunkloading$onPlayerTick(class_3222.java:2618) at net.minecraft.class_3222.method_5773(class_3222.java:564) at net.minecraft.class_3218.mixinextras$bridge$method_5773$202(class_3218.java) at net.minecraft.class_3218.wrapOperation$eei000$puzzleslib$tickNonPassenger(class_3218.java:7797) at net.minecraft.class_3218.method_18762(class_3218.java:770) at net.minecraft.class_1937.method_18472(class_1937.java:498) at net.minecraft.class_3218.method_31420(class_3218.java:408) at net.minecraft.class_5574.method_31791(class_5574.java:54) at net.minecraft.class_3218.method_18765(class_3218.java:372) at net.minecraft.server.MinecraftServer.method_3813(MinecraftServer.java:1021) ... 5 more Sorry guys if it obvious but actually I'm an old player of Minecraft but I'm new in modding so yup. But Thanks everyone by advance to help me with this.
    • These forums are for Minecraft Forge, not Fabric. You would probably be better served posting this question wherever fabric support is given, most likely their discord server.
    • Add the new latest.log (logs-folder) with sites like https://mclo.gs/ and paste the link to it here
    • Update: I tried to reproduce the bug and found out that if I place a flare on a block and then dismantle it with the pickarang (Quark), the flare gets no NBT Tag after getting assigned an empty one through the offhand.
  • Topics

×
×
  • Create New...

Important Information

By using this site, you agree to our Terms of Use.