FoxxCommand Posted April 30, 2013 Posted April 30, 2013 So I'm aware that in Forge you're not allowed to edit the base class files and you're definitely not allowed to edit the player class file (found out the hard way) so I'm wondering what's the best way to edit player functions and what not in a custom mod or if it's possible to make a custom player file and get the game to use that, any ideas or help? Quote
Mazetar Posted April 30, 2013 Posted April 30, 2013 There are a few ways of doing this, some involving reflection or being a core mod and utilizing the asm library. Depending on your skill with java this can take a while to get into. On the other hand, depending on why you want to use this there may be easier and better ways to a achive your goal so what do ya need it for? Quote Quote If you guys dont get it.. then well ya.. try harder...
FoxxCommand Posted April 30, 2013 Author Posted April 30, 2013 Well I code my own games in Java and for Android (Which uses Java) and I'm pretty well versed in it, I just suck at online/multiplayer stuff Pretty much these bunch of items use like 'mana' and whenever the player uses them it uses their mana and then goes on a cooldown and does things according to what level the player is, I also need to cap the level the player can reach as well as doing some stuff to it's inventory like not drop the stuff when they die and do things like "When holding shift they go invisible" and have like custom player models as well Quote
FoxxCommand Posted April 30, 2013 Author Posted April 30, 2013 I see.. think you could help me with an example class or something? like would it be like package whatever public class CustomPlayer extends IExtendedEntityProperties { private int mana; public void setMana(int m) { mana = m; } public int getMana() { return mana; } } and then how would I use those functions in an item would I just use a normal player statement and it'll fill itself out for me? Quote
FoxxCommand Posted April 30, 2013 Author Posted April 30, 2013 Think you could give me an example, cause this is a little confusing to me [EDIT] Like if you could give me an example of how to add variables and then get those variables in other things is pretty much all I need to know and I'll figure the rest out myself c: Quote
FoxxCommand Posted May 2, 2013 Author Posted May 2, 2013 So I read up a bit on what you said, but is it possible to use custom functions with it? Because I did everything right I assume but when I use a custome function to get a variable or change it the whole thing crashes How I registered it public class EventHookContainerClass { @ForgeSubscribe public void entityConstructed(EntityConstructing event) { if (event.entity instanceof EntityLiving) { //event.entity.dropItem(Item.arrow.itemID, 1); event.entity.registerExtendedProperties("custom Player", new EntityCustomPlayer(event.entity.worldObj)); } } @ForgeSubscribe public void entityHurt(LivingHurtEvent event) { if (event.entity instanceof EntityLiving) { if (((EntityCustomPlayer) event.entity).getMana() >= 5) { ((EntityLiving) event.entity).addPotionEffect(new PotionEffect(Potion.moveSlowdown.id, 1000)); } } } } the 'custom entity' class public class EntityCustomPlayer extends Entity implements IExtendedEntityProperties { private int mana; public EntityCustomPlayer(World worldObj) { //this.mana = 0; super(worldObj); } public void setMana(int m) { this.mana = m; } public int getMana() { return this.mana; } @Override public void saveNBTData(NBTTagCompound compound) { // TODO Auto-generated method stub } @Override public void loadNBTData(NBTTagCompound compound) { // TODO Auto-generated method stub } @Override public void init(Entity entity, World world) { mana = 0; } @Override protected void entityInit() { // TODO Auto-generated method stub } @Override protected void readEntityFromNBT(NBTTagCompound nbttagcompound) { // TODO Auto-generated method stub } @Override protected void writeEntityToNBT(NBTTagCompound nbttagcompound) { // TODO Auto-generated method stub } } Quote
FoxxCommand Posted May 2, 2013 Author Posted May 2, 2013 Like adding in functions to the entity like I have "getMana()" and the only reason I have it extending entity was because of something so I could use it for something but I can't remember what and I can't check now cause I'm at work Quote
FoxxCommand Posted May 3, 2013 Author Posted May 3, 2013 I'm not sure what the problem is but whenever I try to use one of the functions it gives me an error and crashes the game, something about and uninitialized variable or something, and I know it's the functions causing it because when I take it out I don't get the errors Quote
RANKSHANK Posted May 3, 2013 Posted May 3, 2013 Just throwing my two cents in, You could create your own extension of EntityPlayerMP and use that to access values. I've done the same with my own extension of WorldServer so I could remove random block ticking and modify spawning layouts and a few other tweaks that can't be done in a world provider. However you'd have to wrap all of the spawned players, and accessing the variables which is a tad more intensive that physically setting a world. And then you would have the issue of accessing the values in a non EntityPlayerMP scenario. This is why forge is great. Also post your crash report Quote Quote I think its my java of the variables.
TuxCraft Posted May 4, 2013 Posted May 4, 2013 On 5/3/2013 at 8:10 AM, FoxxCommand said: I'm not sure what the problem is but whenever I try to use one of the functions it gives me an error and crashes the game, something about and uninitialized variable or something, and I know it's the functions causing it because when I take it out I don't get the errors When eclipse says you have an uninitialized variable that means nowhere in your code there is something that says variable x equals something. To solve it either have your uninitialized variable as a parameter or just set it equal to 0, or null and then have another method change it later on. Hoped that made sense. Quote
Recommended Posts
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.