jredfox
Members-
Posts
660 -
Joined
-
Last visited
Everything posted by jredfox
-
Edit: format is "key =value" no specific forced format like I think they should. The reason why item. or whatever is because it's hard coded into the objects specific adds a prefix and or suffix How does minecraft know what format the line files are suppose to be parsed? I took a look at twlight forest yes there are some fixed formats but, they have their own custom ones and how does minecraft know how to parse it? twilightforest.book.tfstronghold.4 From the previous formats I have seen I would normally assume it would be object.stringname.identifier or object.string.string.identifier where identifier is ".tooltip". ".name" or ".desc" but, this above breaks the format. I would like to know this because I am going to be making a dynamic lang file that loads automatically from peoples registered objects and load it into the game from an IResourcePack. If I had to guess I gues it would always be parsed as "groupname"."stringinternal"."identifier" but, some of them don't contain the identifier at all I am so confused. To make matters worse the middle string can contain a "." so assuming there is two formats with a "." and without is also a wrong assumption advancement.twilight_magic_map_focus=With Fire It Writes
-
Mods Can Changing Assets Folder Location of a mod?
jredfox replied to jredfox's topic in Modder Support
but, the mod doesn't exist if the domain doesn't exist I would except forge to throw a crash writing to them as an enhancement for them to do. I think since they already enforce toLowerCase() they should also enforce that it has to be a valid modid not necessarily yours. -
Mods Can Changing Assets Folder Location of a mod?
jredfox replied to jredfox's topic in Modder Support
well where does a mod specify it's resource domain? just curious Also does this mean I can register an item with "blizzardfox:23" when blizzardfox mod isn't loaded or do registry names get tied to mod ids? -
Mods Can Changing Assets Folder Location of a mod?
jredfox replied to jredfox's topic in Modder Support
"examplemod?" causes a crash for invalid character "?" in 1.12 but, buildcraft got away with this somehow maybe it's because I was looking at the earlier buildcraft but, it did get away with this. The modid was like Buildcraft|Robotics with invalid char of "|" and the assets folder was toLowerCase() and invalid chars removed? Did forge use to have a safeguard? -
Hi I was investigating why and how buildcraft's modid was "BuildCraft|Robotics" when their folder destination was buildcraftrobotics. I Need to know how mods are doing this so I can add support for some of my mods comparing if a mod is loaded? Why: I save the modid toFileCharacters() my own method it basically removes any invalid characters "*/<>?\":|" + "\\" along with some specific os windows names. For instance buildcraft would be incompatible since it would say this mod isn't loaded "BuildCraft|Robotics" when the name is "BuildCraftRobotics"
-
I have reproduced this in vanilla with the /summon command I spawned two jockies and a regular one went out of render distence then came back console spammed I think this might now be my issue should forge fix this for 1.12? Did this exists before the passenger system when using riding tags? https://bugs.mojang.com/browse/MC-90683
-
the debugger doesn't trace to there after my event it just stops. I really don't know what the issue is here. Can't really trace this I noticed you posted on this specific error on multiple occasions what is happening in order for that error to occur is the client not expecting any passengers if so why does this not happen every time and with the /summon command and my custom /spawnMob command? I did the java thing to replace the class with same package name and class name to replace the worldentityspawner since it does work in decompiled mode not compiled don't know why and it had the same resaults the only difference is A: the mob is toofar away or something or B: client isn't expecting any jockies from anything is this even a mod issue or is it forge's/vanilla's job to patch it? How can I get around this? Could it be that the chunk isn't loaded yet it's spawning or something stated above or something else?
-
yeah I don't know what is going on
-
I always debug it before posting for help. Even after I post I still debug and usually fix a bug or two that's not related to it My issue is this: the console keeps spamming received passengers for unknown entity. This is my code to spawn in the entity the rest of the event and custom spawn entry is found on github starting at mobspawnage main java. Since I last posted here I fixed adding and removing entities from the hashmap by memory location only as it's suppose to be only that instance for comparing, before I didn't know the entity overrode the .equals method https://github.com/jredfox/mobspawnage-beta Entity e = AnvilChunkLoader.readWorldEntityPos(nbt, entity.world, x, y, z, true); I debuged by using vanilla's chunk loader for entities from pos same as the /summon command currently works but, if the boolean attempt spawn is true I get that error messege spaming in the console and if I move it spams faster, if it's false nothing happens but, no entities spawn
-
my code isn't quite working for this yet and the other people keep getting mad that I use nbt as an argument. I tested this with jeb sheeps for(nbt) and a skeleton jockey for the monster and that's what's bugging out https://github.com/jredfox/mobspawnage-beta If this is true during the spawn check it freaks out if it's false it doesn't AnvilChunkLoader.readWorldEntityPos(nbt, entity.world, x, y, z, true); I have my github here it appears to work then spams: [21:52:24] [main/WARN]: Received passengers for unknown entity
-
Sorry forge isn't as dynamic as my mods are. If it were they would have nbttagcompound object as an arg for dungeon mobs via their hooks as described by mine and choonsters frustrations in 2016, nbt also for spawnlist entries similar to the way I am doing it, if no nbt use onInitialSpawn(). Also they would have TileEntity boolean isMobSpawner() since TileEntity from vanilla are nearly impossible to extend since everything is private so nobody extends TileEntityMobSpawner Currently there is no set design to get passengers I could put in a new system with xml but, I want users to use the /summon command format. So this means you can still have skeleton jockies with their bows without manually typing the gear. It's my system if people want any specific mob to force nbt reading they simply add another tag doesn't matter if it does anything. So use the onInitialSpawn() if specifies no actual tags besides passengers. Good for people use to using the /summon command , good for people who don't know how to add anything with equipment and mob specific data best of both worlds. The EnityUtil translations are "halarious" so it doesn't crash with 400 mods I had literal 30 crash reports before the null checks try and catch out of every step of the way. After changes none if anything the string returns null and it says null mob spawner for silkspawners I solved it I was noob after the init check forge does it also checks isnotcolliding and getCanSpawnHere()
-
Ok It appears that with my current code the skeleton jockies spawn repetitive during the day how do I know whether or not A mob is suppose to naturally spawn there I thought it already checked it before the check spawn event was firing???? I seen that even vanilla mobs are still getting fired during that event even after it's supposedly checked can spawn here? What am I do Look at mobspawnage > MainJava then you can browse the classes of com.evilnotch.lib.util.registry https://github.com/jredfox/mobspawnage-beta
-
Ok the EntityJoinWorldEvent fires 1 tick after the spawn event is my best guess because, the sheep flashed white and then went orange. Or maybe the client thought hey this entity that was dead last tick on server exists o wait now it's this new mob because, my method that supports jockies is kind of hard to code for a base that was already existent, I could code around this but, I was lazy I fixed this by using LivingSpawnEvent.CheckSpawn instead works perfect now, I simply always deny the event if it's on my hashmap and spawn in my entity.
-
I guess I was still use to using the old terms I will be more generic in the future. I guess I had a brain fart I was planing on using entity attachments since block pos wasn't an argument but, I see now that comparing the memory location from the hashmap is a way better idea thanks
-
After WorldEntitySpawner > new Entity > uses my newInstance() that then starting on line Line 159 it overrides me by always using the interface if (!net.minecraftforge.event.ForgeEventFactory.doSpecialSpawn(entityliving, worldServerIn, f, i3, f1)) ientitylivingdata = entityliving.onInitialSpawn(worldServerIn.getDifficultyForLocation(new BlockPos(entityliving)), ientitylivingdata); Also used by the overworld line 302 forces the use of the onInitialSpawn() after the newInstance. To me this seems like a program design issue the onInitalSpawn() should be used if and only if the spawn list entry decides to use it, and the forge event special spawn could be integrated into that if (net.minecraftforge.event.ForgeEventFactory.canEntitySpawn(entityliving, worldIn, j + 0.5f, (float) blockpos.getY(), k +0.5f, false) == net.minecraftforge.fml.common.eventhandler.Event.Result.DENY) continue; entityliving.setLocationAndAngles((double)((float)j + 0.5F), (double)blockpos.getY(), (double)((float)k + 0.5F), randomIn.nextFloat() * 360.0F, 0.0F); My Class for the custom spawn list entry https://gist.github.com/jredfox/73052b200bc50511466f26b4736a9c7f So in conclusion even if I did set the EnumFleece color of the sheep to orange via fleece it would have still gotten overridden
-
Take a look at the Entity.class readFromNBT() Take a look at the /summon command you see nbt as the argument nbt isn't just for serialization it's to update values as well /summon zombie ~ ~ ~ {isBaby:1} /summon spider ~ ~ ~ {Passengers:[{id:skeleton}]} I want to add baby zombie husk entry to the plains biome and only that it doesn't change after it's initial spawn NBT Is necessary arg I want to add a jockie entry nbt is necessary arg. This is what is expected. This is an example don't say well you can just create an event scan for zombies no, I want a new entry that the user configures to any nbt from that new entry. Saying nbt is for just serialization is like saying EntityLiving.onInitialSpawn() is just for serialization
-
You don't understand NBT is what mobs use for their values mob spawnage mod is all about setting those values orange sheep is just a test you can use nbt to summon a powered creeper nbt is a powerful tool everything should have been upgraded to use this long ago if it wasn't using the interface for entity. Yes the default spawn entry and interface has their benefits also but, if you specify nbt in my entry I expect it to readFromNBT() and not to use the interface at all Specified Specific Entity per spawn list entry of type like husk and only husk, zombie villager only zombie villager, want it to work as the /suommon comamnd if nbt is specified use nbt else spawn in use interface This has everything to do with nbt say I want a baby zombie to add spawns or a husk in the middle of an ice biome I would do EntityModRegistry.register(EnittyZombie.class,NBTUtil.getNBTFromString("{isBaby:true}",20,1,8,EnumCreatureType.MONSTER); or something like that. When People add an nbt entry it's expected that that mob will always be in that way. This can also be done with the /summon command if you can do it with the /summon command you should be able to do it via spawn list entry that's my upgrade if nbt isn't null make nbt not use interface use nbt. Also NBT is a universal system I could add modded mob entries without being dependent upon them and you can get the class from the resource location so... WorldEntitySpawner Is overriding my spawn list entry.newInstance(world); by always making it use the entity interface and forge is of no help with the events the spawn list entry
-
Nothing is spawning but, it is calling the spawnlist entry new instance I don't know what is going on. It prints that it's called but, somehow never gets spawned in no orange sheep https://gist.github.com/jredfox/04150b6c839011c814dd01a502a382da Biome Spawn List [EntitySheep*(4-4):12, EntityPig*(4-4):10, EntityChicken*(4-4):10, EntityCow*(4-4):8, EntityHorse*(2-6):5, EntityDonkey*(1-3):1, EntitySheep (4-4) 12 {Color:1}] NBT For Orange Sheep Test [15:17:16] [Server thread/INFO] [STDOUT]: [com.EvilNotch.lib.util.minecraft.SpawnListEntryAdvanced:newInstance:57]: NBT Read Edit: I narrowed it down to EntityWorldSpawner Doing Special Spawn Forge doesn't send in the spawn entry this is an issue, Also I just posted a form to get help on replacing a class it went down without explanation I said that format use to work I don't understand why it's not working now. Replace the class by naming it the same package and class name and just make sure your mod fires after xmod/vanilla well it's not working anymore at least in vanilla do you know what I am doing wrong? It works in the decompiled environment but, not the compiled environment
-
I can just simply override it to add an entry thanks I will try it out. Didn't know I could add my own object extending it thought it had to only be that. Question: Does that also work for passive spawning or is this another registry?
-
Those don't support anything but, default, no nbt, no jockies
-
I don't understand where the biome spawn entries are tied into the chunk and passive spawning. My goal is to add biome spawn entity entries with nbt and jockie support. What classes and what forge events should I be using? Edit: I have almost solved this
-
already planned out I am editing my library now painfully editing it, changing from base class to interface and two base classes for line parsing. Yep I know this is for dungeon tweaks and tweaks will come not just mob editing this thread is now marked as solved
-
there is no mob tile entity spawning event the mob spawner tile entity spawns them in if and only if the mob can spawn their via entity getCanSpawnHere() boolean. The living spawn event is for biome spawns
-
Then that would involve replacing the tile entity mob spawner not going to happen. Also the width and dungeon height will get adjusted if entity is to big. It would make sense if you have a sheep dungeon you have good green floor with torches. So you go why do I hear sheep in a cave sheep spawner! I am thinking of having some kind of loot tables per entity in the dungeon for entity definitions so for a creeper spawner you might find a bedrock pickaxe, or a sheep spawner find wool apples, golden apples, wood water healing and light, and coal. Main dungeon only though
-
it's a dungeon, with a spawner that could be any mob. I plan on not adding any entities to the game it's a server utility. An override for the current dungeon