Jump to content

Koward

Forge Modder
  • Posts

    141
  • Joined

  • Last visited

Converted

  • Gender
    Male
  • Location
    Belgium
  • Personal Text
    ¯\_(シ)_/¯

Recent Profile Visitors

The recent visitors block is disabled and is not being shown to other users.

Koward's Achievements

Creeper Killer

Creeper Killer (4/8)

3

Reputation

  1. I would like to change the base knockback applied when you punch a mob (without any item). There's no way to change that at the moment. I tried a work around applying a "reverse knockback", but has it depends on random values sometimes the knockback would still happen or only the reverse one, resulting in "pulling" the mob towards the player. There are also other mechanics in this method that could be useful for some modders.
  2. Hello, I would like to edit the way attack is done in EntityLivingBase#attackEntityFrom(DamageSource source, float amount). I could cancel LivingAttackEvent and apply the effects myself, but obviously the return value of attackEntityFrom would always be false which could break many parts of the game. If instead of always returning false, we could set the return value via a result of the event, it would allow us that kind of modification. So, to quote the doc, instead of "If this event is canceled, the Entity does not take attack damage." it would be "If this event is canceled, no more computation is done. the Entity does not take attack damage. If the result is DENY, the Entity did not take attack damage". A DEFAULT to false would not break existing mods.
  3. Well it's a bit hard to help "just like that", all I can recommend you is to watch CPW's video ( https://www.youtube.com/watch?v=yanCpy8p2ZE ) if it's not already done. There is already a PR to extend substitution, but it's for 1.10 so this one will not be accepted. You can find it here : https://github.com/MinecraftForge/MinecraftForge/pull/3462 Maybe there could also be a method in IForgeRegistry<T>, that would feel consistent with the new register events introduced in 1.11. But all of this is a bit useless if that bloody bug is left unfixed ><".
  4. Your problem could still reappear later with your mod. If you register or substitue new items, for example. If it happens try changing the order of registration or try to register placeholder entries. I reported this bug with substitution here : https://github.com/MinecraftForge/MinecraftForge/issues/3837 Note I said 19 in the report, but I think there are other value threshold than can trigger the bug. I have been trying for the last few days to precisely figure out the pattern without much success, but there's definitely one. Your classes&JSON are good and unrelated with this.
  5. Hello. For some months I encounter a bug preventing me from using GameRegistry.addSubstitutionAlias. Since I saw at least some people on this forum got it working, I'm posting hoping to get some help. I always substitute things at the Register<Block> event. What I do for my Blocks is GameRegistry.addSubstitutionAlias(oldBlock.getRegistryName().toString(), GameRegistry.Type.BLOCK, newBlock.setRegistryName(oldBlock.getRegistryName().getResourcePath()).setUnlocalizedName(oldBlock.getUnlocalizedName().split("\\.")[1])); Crash log : https://pastebin.com/riFX21WF I'm not sure what could be wrong. EDIT : Problem solved. As I was not using the Item object for anything other than the substitution I did not hold it in a static reference, instead creating it directly when passing the parameters of addSubstitution. This probably resulted in two separate instances for each thread and funky times.
  6. Imagine you use builtin capabilities made for Forge Energy. You could create in your mod a machine that outputs Forge Energy. If another mod has a machine that receives Forge Energy, it will work with your FE machine too. Imagine you create new capabilities for your energy, then it will only work with machines made for that energy too. And that's why when people got the idea "machines from many mods compatible together" they needed a standard. For a long time this standard has been RF, now it's becoming FE.
  7. I do not interpret Lex's message the same way. Of course anyone can use, or not, the Forge capabilities. You can always do whatever energy system you want, that's obvious. But if you want to operate with other mods machine, you have to set a standard. Many energy systems, like RF, were meant to be universal standards, a lot of them proliferated. Now Forge uses its de facto authority to set the new standard. If you want your machine to not work with/like Forge Energy machines, you can create your own energy with new capabilities (there are a lot of very good reasons to do that). If you want to do compatible machines that use the same Energy as the majority, you use Forge Energy.
  8. If I remember RF is basically completely deprecated. All mods should move to the standard energy offered directly by Forge.
  9. You can't. There is nothing triggered before generation of every tree. The Decorate event is triggered once before the generation of all trees, though. You may cancel it then generate things your own way. Find with your IDE where it's triggered in the code and you'll see how vanilla spawns all of its trees.
  10. As I said the event is triggered once before all pumpkins are generated in chunk. Not for each pumpkin. You have to mimic the way pumpkins are generated. In vanilla (note : build 1.10.2 2185, check if it's the same for you, it's in BiomeDecorator.java), that is : if (random.nextInt(32) == 0) { int i5 = random.nextInt(16) + 8; int k9 = random.nextInt(16) + 8; int j13 = worldIn.getHeight(this.chunkPos.add(i5, 0, k9)).getY() * 2; if (j13 > 0) { int k16 = random.nextInt(j13); (new WorldGenPumpkin()).generate(worldIn, random, this.chunkPos.add(i5, k16, k9)); } } (Use the random of the Decorate event, else you'll break seeds). I found this by looking with my IDE where the Decorate event was called, and I saw the one where the type PUMPKIN is checked. If you paste this code in your event, vanilla pumpkins will generate. Now if you want something different, you have to create a new WorldGenPumpkin. Just extend it and override the methods you need (probably at least generate() as it's called there). The pos that's given by the event are coordinates of the chunk (or at least the chunk cross-shaped intersection, but that's the idea). So it's basically a position on a 2D map seen from above, and a y value would be meaningless. That's why y = 0. Anyway you do not need it for pumpkins. If you wanted to edit trees that would have been trickier because some data used to calculate them are not passed to the event, but for pumpkins everything seems okay.
  11. I would never have been able to find this, thank you. I have a new bug with the grass slab whose color is not correct anymore, but I'm sure that's not as tricky as the previous issue. EDIT : fixed by setting the model at the variant level (each time setting block/half_slab). So no dummy needed anymore. Maybe that's why the format requires it ?
  12. Could you show the code where you catch the event ?
  13. Hi, You could subscribe to DecorateBiomeEvent.Decorate and check event.getType() to PUMPKIN. It triggers before all pumpkins in the chunk. So you cancel it with setResult, then you do whatever you want.
  14. I have a Github repository here : https://github.com/Koward/BetterWithMods/commits/ground (It's a fork, I'm only contributor) After the commit 817a the models don't work (Forge format). Before that it works using multiple models and vanilla format. I really wonder how something like that can happen. I don't use any special state mapper.
  15. I'd like to reup this thread. In the end I have never managed to do what Choonster did in his mirror_plane.json. The json is here : http://pastebin.com/8PRtt1YD The log is here : http://pastebin.com/mPGEPdLs As you can see, the variants can't be found. The items freak out too. When using vanilla variants that points to separate models, everything works, but it takes a lot of short json files.
×
×
  • Create New...

Important Information

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