Vampirism - Become a vampire!

Vampirism - Become a vampire!

16M Downloads

hunters and vampires don't show up on journeymap

Twisted-Code opened this issue ยท 31 comments

commented

Versions

  • Minecraft: 1.10.2
  • Forge: build 2185
  • Vampirism: 1.1.2
  • JourneyMap 5.4.6

Issue Description

vampires and hunters do not show on my preferred minimap, JourneyMap. I realize this might be intentional to make inter-faction combat harder, but if it is, it should be optional.

Reproduce Steps

It may have something to do with the server I am playing on running SpongeForge, but if it is, it's still my responsibility to report since it's my own server.
Otherwise, as far as I know, the only reproduction step to see the issue in action is install JourneyMap 5.4.6 and Vampirism. then walk up to a hunter or vampire and check the minimap

Additional Information

commented

@macks2008 Did you use JourneyMap and Vampirism together lately.
All Vampirism mobs are implementing IAnimals since last July now.

commented

This is not intentional by Vampirism.

Does this affect singleplayer as well? I remember some there were some settings required server side to allow mobs to be shown (not sure which minimap mod it was).

Are they not showing up at all or is a generic icon showing?

To show the actual icons, some work is needed: http://journeymap.info/Custom_Mob_Icon_Sets
You can either wait until I find time for this, or create a folder with the correctly named and cut mob faces yourself and send it to me.

commented

not sure. Let me check

commented

@maxanier yes it affects a single player. As far as the settings to show mobs, these appear to already enabled, as I can see other mobs, both hostile and passive.

commented

they are not showing up at all. I don't even see a dot

commented

@maxanier well maybe you can borrow from vanilla's playbook. Spiders have a similar functionality. I'm not sure how they do it exactly, but maybe you could try to figure it out next time you find yourself rewriting a significant portion of your entity code? In the meantime, could you give me a link to the issue so I can see if I can talk JM's author into extending an API or otherwise trying to help the issue? Personally, I don't understand why they wouldn't be displayed if JM were programmed to display all "living" entities (you apparently consider vampires living enough to not be considered "undead" for the purpose of instant health/damage potions, something I disagree with by the way), and I don't understand why JM wouldn't do that way already (I can't think of a vanilla living entity that isn't displayed), so that kind of has me scratching my head as to which of you dropped the ball there... though I suspect it's JM

commented

If mobs of other mods are showing, but Vampirism's ones are not showing, there must be a strange bug. I will contact the author of JourneyMap maybe he has an idea

commented

I've talked to the creator of JourneyMap. This problem is caused by the fact that Vampirism's entities are codewise different from Vanilla mobs (as they are neither always a hostile mob nor a friendly animal).
There currently seems no way of solving this issue as JourneyMap does not provide an API.
Only workaround would be to look for a different Minimap (which either works differently or has an API)

commented

I'm familiar enough with programming to understand class inheritance, so I understand what you said. It still doesn't change the fact that, as far as I understand, there is no reason JM should not be displaying anything that's considered a "living" entity. I'm not sure the exact details about what's considered "living" and what's not, but if I'm not mistaken, it's a superclass to IMob and the other vanilla classes you mentioned.... and I'm pretty sure Minecarts are not considered living ๐Ÿ˜›. If I'm correct, perhaps you should change your code to inherit from that if it doesn't already, and if it does, then JM needs to fix its shit

commented

I'm extending a class that clearly states that it is a living entity (EntityCreature). Many mods respect that and consider Vampirism mods as living entities.
However, @techbrew-mc said he had problems with displaying all EntityCreatures, because some (stupid?) mod authors used subclasses of this as dummies for something (not sure how exactly), which would then show up on the map even though they were not visible(?) in the world.

commented

ah, well that's unfortunate...

commented

I guess I'll just deal with it for now, and then use a different minimap when I rebuild the modpack (which I was planning on doing anyway)

commented

Did not create an issue, but talked to him on his Discord.

I will try to explain the entity problem (not sure how familiar you are with programming):
There are different codewise types of entities in the game, some implement IMob others are IAnimal.
JM only checks for IMob, EntityVillager, EntityAnimal and a few more, but the only relevant here might be IMob.
All vanilla hostile enemies (including Spiders) include this (or maybe IBoss).
Any creature implementing this is considered hostile and therefore affected by anything (modded) that should protect the player, e.g. turrets, combat minions, special magic stuff ...
While this is wanted in some situations (you are a hunter and there is a vampire), it's unwanted in others (you are a hunter and have hunters that protect your base or you want to level up with one of them).

Thereby I did decide to not make them IMobs. This solution is far from perfect, but I did not find something better yet.

One solution for your problem might be, JM creating a interface that other mods could copy to their code and implement it for creatures that should be displayed, but are neither of the classes above.
Alternatively, he could check the class name or entity name (in addition to IMob etc.) and make those configurable.

commented

@maxanier something you may have missed on the Discord, as it appears you had already left the server:
"techbrew - Last Thursday at 6:38 PM
I mean, IMob is literally an empty interface -- shouldn't be too much trouble, @maxanier ๐Ÿ˜ƒ"
is he wrong, or do you just not feel like worrying about a mini map compatibility issue? because I've been thinking, and I would really prefer not switching to a different minimap as well known and familiar as JM is... so it kind of sucks that it's not completely compatible. On the other hand, I do understand not wanting to fix an issue that's a simple matter of "I can't see where something is on the map"

at any rate, I'm going to see if I can talk TechBrew into adding a more compatibility-friendly means of making entities visible on the map, such as an API as you suggested, Maybe he could at least add a blacklist/whitelist config which would allow people to manually add entities by un-localized name.

IDK, but there's got to be a mutually agreeable solution somewhere here

commented
commented

I don't think the JM API is called for in this case. Simply add "implements IMob" to the class declaration and you're covered.

commented

Any creature implementing this (IMob) is considered hostile and therefore affected by anything (modded) that should protect the player, e.g. turrets, combat minions, special magic stuff ...
While this is wanted in some situations (you are a hunter and there is a vampire), it's unwanted in others (you are a hunter and have hunters that protect your base or you want to level up with one of them).
Therfore I did decide to not make them IMobs. This solution is far from perfect, but I did not find something better yet.

Maybe I will try to suggest/PR some kind of isHostileTo method into Forge, but I don't think this will be successful.

One posibility might be to add some kind of "IEntityToShow" interface (empty) to the API, which I can then add to my classes (and let FML strip it if JM is not installed), but I can understand if you do not like this idea.

commented

Oh, I just found out there is a IAnimals interface in Minecraft. IMob and apparently all other relevant entities implement this.
Since this is not implemented by EntityCreature there should not be the same issue. So maybe you can display all entities implementing this, @techbrew-mc, and I will add it to all my entities.

commented

IAnimal is also supported by JM. The isHostile() method on EntityCreature is checked to determine whether to show the creature as passive or hostile on the mob radar.

commented

Ok, then I'm sorry, I always assumed that IAnimals was reserved for animals, so I didn't really think about it when you said that JM supports it.
But since IAnimals seems to be implemented by any kind of living entity, I will simply add that to my entities.

However, I'm not sure which EntityCreature#isHostile() method you are referring to (can't find any at MC 1.11)

commented

I am on my phone and AFK, sorry, was going from memory. It might be just a field, or on EntityLivingCreature.

commented

ok, np

commented

Looks like we just check if the entity's attack target is the player to see if it is hostile. It is not a method on any entity class.

commented

Yeah, I could well be remembering something from MC 1.0 or anything since. It's been abstracted in JM code for a long time. Thanks Mystic.

commented

Thx, that works perfectly

commented

@techbrew-mc I've added the IAnimals interface to all my entities. But they still do not show up, while all vanilla entities show up. (Edit: Using JM 1.11.2 4.3.5.277)
Do I have to activate a special setting to make them show? Or are you share JM looks for IAnimals and not just EntityAnimal?

commented

If you need a test mod, the latest 1.11 beta of Vampirism includes these changes: https://minecraft.curseforge.com/projects/vampirism-become-a-vampire/files/2443231

commented

hi, I actually started using these mods together again recently on Minecraft 1.15.

as you said, It seems to work okay in single player, but on my server it's still not showing the IMobs on journeymap. I would understand if they didn't show as hostile (since factions kind of blur that line), but I wish they at least showed a gray dot like passive mobs do.

also worth noting (though this might belong in a separate issue), the mobs have unlocalized names when examined with HWYLA/WAWLA or when something like Neat is used to display their entity name. Most notably, it shows when killed by one of them
image

commented

I have marked vampires and hunters as INPC according to JourneyMap Wiki that should make them show up. (Maybe hostile, maybe not).
Probably only Vampirismm 1.7+ though

commented

ok, not sure when I will get around to updating but I'll definitely let you know if it didn't work ๐Ÿ˜‰

commented

Going to close this.
In SP this should work acceptable.
On servers I am not sure what the current situation is, but I didn't hear any complaints lately

I added a wiki entry to summarize this issue
https://github.com/TeamLapen/Vampirism/wiki/IMob-issue