Jump to content

Recommended Posts

Posted

Hi guys,

like the title says I want to open a GUI when you rightclick my mob. I know the methods and so but Player#openGUI does only feature the arguments @Mod, World, int, int, int (I suppose the ints are coordinates) so I don't know what to do here. Second problem is that I want the Inventory in the GUI to be persistant over all worlds and blocks just like the enderchest. Here is what I have so far:

package de.gmx.worldsbegin.entity;

import de.gmx.worldsbegin.MobsterHunterMinedomUnite;
import net.minecraft.entity.EntityLiving;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.scoreboard.ScorePlayerTeam;
import net.minecraft.util.ChunkCoordinates;
import net.minecraft.world.World;

public class EntityMHVillager extends EntityLiving{
private String name;

public EntityMHVillager(World par1World) {
	super(par1World);
}

@Override
protected boolean isAIEnabled() {
	return true;
}

@Override
public boolean interact(EntityPlayer player) {
	// I know that I have to do something here... but what?
	return true;
}

@Override
public int getMaxHealth() {
	return 10;
}
}

Not much huh?

Posted

There are four ints.

 

@Mod, int, World, x, y, z

 

The second param is the ID of the gui being opened.

 

player.openGui(DragonEconomyBase.instance, YourModBase.MOB_INTERACT_GUI_ID, world, 0, 0, 0);

 

Then you need a gui handler and probably a packet handler too.

Apparently I'm a complete and utter jerk and come to this forum just like to make fun of people, be confrontational, and make your personal life miserable.  If you think this is the case, JUST REPORT ME.  Otherwise you're just going to get reported when you reply to my posts and point it out, because odds are, I was trying to be nice.

 

Exception: If you do not understand Java, I WILL NOT HELP YOU and your thread will get locked.

 

DO NOT PM ME WITH PROBLEMS. No help will be given.

Posted

Use an EntityInteractEvent handler.  Verify that the mob you just interacted with is the desired mob, then trigger the GUI. You can do so with FMLClientHandler.getClient().openGui(...), or whatever it's actually called.

Posted

You don't need all that fancy stuff, I found out. I was just a bit stumbled by all the code I found http://www.minecraftforge.net/wiki/Containers_and_GUIs. Then I realized that you use the Container on both, CLIENT and SERVER and I was released from the code-ghosts that haunted me ;D

All works fine. As it is MY mob I just use the method interact and it now works fine. Only thing that does not work yet is placing items inot the GUI. They just get thrown out when I click on the slot but I am very much convinced that I can get it working myself. Thanks for the help

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

    • https://mclo.gs/46Xf7Sq thanks
    • That seems to have fixed it, thank you!
    • I am having some issues starting an RLCraft server on a minimal install of Debian 12. I have Java installed and I'm able to start the vanilla Minecraft server jar no problem and people can join and play without any issues, as soon as I try to create a new directory with the Forge jar the initial install with the INSTALLER jar works when I use the java command with the --installServer flag, but as soon as I try to start the server using the forge jar that is NOT labelled with installer I get the following error: A problem occurred running the Server launcher.java.lang.reflect.InvocationTargetException         at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)         at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77)         at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)         at java.base/java.lang.reflect.Method.invoke(Method.java:569)         at net.minecraftforge.fml.relauncher.ServerLaunchWrapper.run(ServerLaunchWrapper.java:70)         at net.minecraftforge.fml.relauncher.ServerLaunchWrapper.main(ServerLaunchWrapper.java:34) Caused by: java.lang.ClassCastException: class jdk.internal.loader.ClassLoaders$AppClassLoader cannot be cast to class java.net.URLClassLoader (jdk.internal.loader.ClassLoaders$AppClassLoader and java.net.URLClassLoader are in module java.base of loader 'bootstrap')         at net.minecraft.launchwrapper.Launch.<init>(Launch.java:34)         at net.minecraft.launchwrapper.Launch.main(Launch.java:28)         ... 6 more   I have tried using newer versions of Java directly from Oracle as well. Has anybody been successful in starting and running a RLCraft server from the terminal on a Linux machine? I cannot figure out why it doesn't want to work but the vanilla jar works without issue. Thank you in advance!
    • This is my latest attempt :  public class ManaScreen extends Screen { Mana mana = new Mana(); boolean removeManaBar = false; ResourceLocation manaBar = ResourceLocation.fromNamespaceAndPath(RSGArmoury.MOD_ID, "/textures/block/spawnable_arena_wall.png"); public ManaScreen() { super(Component.literal("Mana")); } @Override protected void init() { super.init(); Minecraft.getInstance().setScreen(this); } @Override public boolean isPauseScreen() { return false; } @Override public void render(GuiGraphics pGuiGraphics, int pMouseX, int pMouseY, float pPartialTick) { pGuiGraphics.blit(manaBar, 10, -10, 0, 0, mana.getMana(), 10, mana.getMana(), 10); if (removeManaBar) { this.onClose(); return; } super.render(pGuiGraphics, pMouseX, pMouseY, pPartialTick); } public void addManaBar() { removeManaBar = false; Minecraft.getInstance().setScreen(new ManaScreen()); } public boolean removeManaBar() { return removeManaBar = true; } }
  • Topics

×
×
  • Create New...

Important Information

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