Jump to content

Problem Creating a Gui Handler


clowcadia

Recommended Posts

Ok I think i got what you are saying , and so i launched the game, clicked the mob and still no screen. no output other then the one i already have in eclipse.

 

code in my mob is

	@Override
	public boolean processInteract(EntityPlayer player, EnumHand hand)
    {
		if (!this.world.isRemote)
		{
			System.out.println("Player has interacted with the mob");
			player.openGui(ClowcadiaMod.modInstance, 1, this.world, (int) player.posX, (int)player.posY, (int)player.posZ);
			
		}
		return true;
    }

 

Link to comment
Share on other sites

I am used to coding from scratch, my programs tend to be small and short. I have projects that vary with ecommerce Etsy that works, different languages as well. Have done small projectrs with c,c++,c# and vb and i am sure i can code any program i wish, its just the dificulty with java i am in a foregn enviorment not so much as the syntax missunderstanding. if i was able to write my own program and for example actually write a method that requires resource location i would understand what it is for and such. I dont believe its the java language i am having issues with it the large forge api enviorment is whats hard for me to grasp.

ever been to a huge college/university campus or a big hospital. ever get lost?

well this is it for me i hope you can understand i am trying my best, as this is only first week in campus forge

Link to comment
Share on other sites

Back to the issue, now i realize the clientGui element does not even react

 

@Override
	public Object getClientGuiElement(int ID, EntityPlayer player, World world, int x, int y, int z)
	{
		System.out.println("Handler Activated");
		if (ID == GUI)
	        return new Gui();
	    return null;
	}

 

Link to comment
Share on other sites

I do read code, i dont just pop up and be like write my project for me, I go through researching multiple tutorials, yes their outdate but i work with what i got, and with the forge classes. alot of it is mombojambo to me, not because i dont get the syntax i just dont understand where variables and what the variable are coming fromor representing. everything is so tightly interconnected its like, being an immigrant all over again, thousand of people speaking a different language then my own(variables) and doing things different then what i am used to (functions)

Link to comment
Share on other sites

10 minutes ago, clowcadia said:

Back to the issue, now i realize the clientGui element does not even react

 


@Override
	public Object getClientGuiElement(int ID, EntityPlayer player, World world, int x, int y, int z)
	{
		System.out.println("Handler Activated");
		if (ID == GUI)
	        return new Gui();
	    return null;
	}

 

getServerGuiElement does respond....

Link to comment
Share on other sites

Nothing Happens...

Handler

package com.clowcadia.mod;

import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.world.World;
import net.minecraftforge.fml.common.network.IGuiHandler;

public class GuiHandler implements IGuiHandler {

	public static final int GUI = 0;
	
	@Override
	public Object getClientGuiElement(int ID, EntityPlayer player, World world, int x, int y, int z)
	{
		//System.out.println("Handler Activated");
		if (ID == GUI)
	        return new Gui();
	    return null;
	}
	
	@Override
	public Object getServerGuiElement(int ID, EntityPlayer player, World world, int x, int y, int z)
	{
	    return null;
		
	}
}

Gui

package com.clowcadia.mod;

import net.minecraft.client.gui.GuiScreen;

public class Gui extends GuiScreen 
{
	@Override
	public void drawScreen(int mouseX, int mouseY, float partialTicks) 
	{
		this.drawDefaultBackground();
	    super.drawScreen(mouseX, mouseY, partialTicks);
	}
	
	
}

Entity

package com.clowcadia.mob;

import com.clowcadia.mod.ClowcadiaMod;

import net.minecraft.entity.monster.EntityMob;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.util.EnumHand;
import net.minecraft.world.World;

public class Blank extends EntityMob{

	
	public Blank(World worldIn) {
		
		super(worldIn);
		// TODO Auto-generated constructor stub
	}
	@Override
	public boolean processInteract(EntityPlayer player, EnumHand hand)
    {
		if (!this.world.isRemote)
		{
			
			System.out.println("Player has interacted with the mob");
			player.openGui(ClowcadiaMod.modInstance, 0, this.world, (int) player.posX, (int)player.posY, (int)player.posZ);
			
		}
		return true;
    }
	
	

}

 

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Unfortunately, your content contains terms that we do not allow. Please edit your content to remove the highlighted words below.
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Announcements



  • Recently Browsing

    • No registered users viewing this page.
  • Posts

    • As the title says i keep on crashing on forge 1.20.1 even without any mods downloaded, i have the latest drivers (nvidia) and vanilla minecraft works perfectly fine for me logs: https://pastebin.com/5UR01yG9
    • Hello everyone, I'm making this post to seek help for my modded block, It's a special block called FrozenBlock supposed to take the place of an old block, then after a set amount of ticks, it's supposed to revert its Block State, Entity, data... to the old block like this :  The problem I have is that the system breaks when handling multi blocks (I tried some fix but none of them worked) :  The bug I have identified is that the function "setOldBlockFields" in the item's "setFrozenBlock" function gets called once for the 1st block of multiblock getting frozen (as it should), but gets called a second time BEFORE creating the first FrozenBlock with the data of the 1st block, hence giving the same data to the two FrozenBlock :   Old Block Fields set BlockState : Block{minecraft:black_bed}[facing=east,occupied=false,part=head] BlockEntity : net.minecraft.world.level.block.entity.BedBlockEntity@73681674 BlockEntityData : id:"minecraft:bed",x:3,y:-60,z:-6} Old Block Fields set BlockState : Block{minecraft:black_bed}[facing=east,occupied=false,part=foot] BlockEntity : net.minecraft.world.level.block.entity.BedBlockEntity@6d1aa3da BlockEntityData : {id:"minecraft:bed",x:2,y:-60,z:-6} Frozen Block Entity set BlockState : Block{minecraft:black_bed}[facing=east,occupied=false,part=foot] BlockPos{x=3, y=-60, z=-6} BlockEntity : net.minecraft.world.level.block.entity.BedBlockEntity@6d1aa3da BlockEntityData : {id:"minecraft:bed",x:2,y:-60,z:-6} Frozen Block Entity set BlockState : Block{minecraft:black_bed}[facing=east,occupied=false,part=foot] BlockPos{x=2, y=-60, z=-6} BlockEntity : net.minecraft.world.level.block.entity.BedBlockEntity@6d1aa3da BlockEntityData : {id:"minecraft:bed",x:2,y:-60,z:-6} here is the code inside my custom "freeze" item :    @Override     public @NotNull InteractionResult useOn(@NotNull UseOnContext pContext) {         if (!pContext.getLevel().isClientSide() && pContext.getHand() == InteractionHand.MAIN_HAND) {             BlockPos blockPos = pContext.getClickedPos();             BlockPos secondBlockPos = getMultiblockPos(blockPos, pContext.getLevel().getBlockState(blockPos));             if (secondBlockPos != null) {                 createFrozenBlock(pContext, secondBlockPos);             }             createFrozenBlock(pContext, blockPos);             return InteractionResult.SUCCESS;         }         return super.useOn(pContext);     }     public static void createFrozenBlock(UseOnContext pContext, BlockPos blockPos) {         BlockState oldState = pContext.getLevel().getBlockState(blockPos);         BlockEntity oldBlockEntity = oldState.hasBlockEntity() ? pContext.getLevel().getBlockEntity(blockPos) : null;         CompoundTag oldBlockEntityData = oldState.hasBlockEntity() ? oldBlockEntity.serializeNBT() : null;         if (oldBlockEntity != null) {             pContext.getLevel().removeBlockEntity(blockPos);         }         BlockState FrozenBlock = setFrozenBlock(oldState, oldBlockEntity, oldBlockEntityData);         pContext.getLevel().setBlockAndUpdate(blockPos, FrozenBlock);     }     public static BlockState setFrozenBlock(BlockState blockState, @Nullable BlockEntity blockEntity, @Nullable CompoundTag blockEntityData) {         BlockState FrozenBlock = BlockRegister.FROZEN_BLOCK.get().defaultBlockState();         ((FrozenBlock) FrozenBlock.getBlock()).setOldBlockFields(blockState, blockEntity, blockEntityData);         return FrozenBlock;     }  
    • It is an issue with quark - update it to this build: https://www.curseforge.com/minecraft/mc-mods/quark/files/3642325
    • Remove Instant Massive Structures Mod from your server     Add new crash-reports with sites like https://paste.ee/  
  • Topics

×
×
  • Create New...

Important Information

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