Jump to content
Search In
  • More options...
Find results that contain...
Find results in...

The Entity Attribute System - How to manipulate it in code


Recommended Posts

If you create a new entity, you may have stumbled across the Attribute System, for example if you want a custom max. health value.

Now a detailed explanation on what the Attribute System actually is can be found here: http://minecraft.gamepedia.com/Attribute

 

Here I will show you how to create your own Attributes for your entity and modify all of them in code.

 

NOTE: all attribute classes mentioned in this tutorial can be found in the package net.minecraft.entity.ai.attributes.

 

 

 

Create a new Attribute


Step 1:

To create a new attribute, you first need to create a new IAttribute instance (preferably static final in your entity registry class or somewhere). Now you don't need to make a new class which implements that interface!

Minecraft provides us with a standard class currently used for all its own Attributes called RangedAttribute. The constructor of that has the following parameters:

  • IAttribute parentIn - a parent attribute if available, can be null
  • String unlocalizedNameIn - the unlocalized name of the attribute. You can't add an attribute with the same name to an entity, so I usually precede the name with my Mod ID separated with a dot like TurretMod.MOD_ID + ".maxAmmoCapacity"
  • double defaultValue - the default value of the attribute. This value is set as base value when the entity is first created. It can't be lower than the minimum nor higher than the maximum value or else it will throw an IllegalArgumentException
  • double minimumValueIn - the minimum value of the attribute. This value is usually 0.0D. If the entity's attribute value falls below that, this value is used for it instead. It can't be bigger than the maximum value or else it will throw an IllegalArgumentException
  • double maximumValueIn - the maximum value of the attribute. This value is usually Double.MAX_VALUE. If the entity's attribute value falls above that, this value is used for it instead. It can't be smaller than the minimum value or else it will throw an IllegalArgumentException
     

Now at the end, my IAttribute instance variable looks like this:

public static final IAttribute MAX_AMMO_CAPACITY = new RangedAttribute(null, TurretMod.MOD_ID + ".maxAmmoCapacity", 256.0D, 0.0D, Double.MAX_VALUE);
 

But wait! If you want to share the attribute value and modifiers with the client, you'll need to call setShouldWatch(true) on that variable. The same way you can disable it, for whatever reason, with false instead of true as the parameter value. Conveniently it returns itself, so you can make a neat one-liner like this:

public static final IAttribute MAX_AMMO_CAPACITY = new RangedAttribute(null, TurretMod.MOD_ID + ".maxAmmoCapacity", 256.0D, 0.0D, Double.MAX_VALUE).setShouldWatch(true);

 

Step 2:

Great, now you have this useless variable the entity doesn't know about. To make it useful and working with the entity, you first need to register it to the entity's attribute list. To do so, override applyEntityAttributes()(if you've not already done so while changing the entity's max. health) and call this.getAttributeMap().registerAttribute(MY_OWN_ATTRIBUTE_VARIABLE), where MY_OWN_ATTRIBUTE_VARIABLE is firstly an overly long name, but more importantly your variable of your attribute instance created in Step 1. Here's an example from my mod:

    @Override
    protected void applyEntityAttributes() {
        super.applyEntityAttributes(); // Make sure to ALWAYS call the super method, or else max. health and other attributes from Minecraft aren't registered!!!

        this.getAttributeMap().registerAttribute(TurretAttributes.MAX_AMMO_CAPACITY);
    }
 

Step 3:

The attribute is now instanciated and registered, but how do I use its value? Simple! Just call this.getEntityAttribute(MY_OWN_ATTRIBUTE_VARIABLE).getAttributeValue(). It returns a double. If you want it to be an int, just use the MathHelper from Minecraft, for example MathHelper.ceiling_double_int(doubleVal)

 

 

 

Modify an Attribute


Now, to modify an attribute, there are 2 ways of doing so:

1. modify its base value

This is simple and straight forward, and as mentioned 2 times here so far, you may have already done this via the entity's max. health attribute. But to be complete, here's how you change the base value of an attribute with the example on the max. health:

this.getEntityAttribute(SharedMonsterAttributes.maxHealth).setBaseValue(40.0D); //sets the entity max. health to 40 HP (20 hearts)
 

Please note: this does NOT get synched with the client! If you need to edit the base value, make sure you use packets if you want it to be shared (or change it on both sides). Otherwise use modifiers!

 

2. add modifiers to the attribute

This is a "reversable" way of changing the attribute value w/o messing with the base value. What we will do here is essentally this: http://minecraft.gamepedia.com/Attribute#Modifiers

That said, much like the Attribute Instance, we need to create our own AttributeModifier instance variable. Conveniently, there is already a class for us to use called AttributeModifier. It's constructor parameters are as follows:

  • UUID idIn - the UUID of this modifier, much like the Attribute name, this needs to be unique per Attribute. I usually give it a pre-defined, hardcoded Ver. 4 UUID via UUID.fromString("MY-UUID"), which was generated on this site. Mine looks like this:
    UUID.fromString("e6107045-134f-4c54-a645-75c3ae5c7a27")
     
  • String nameIn - the Modifier name, can be anything except empty, preferably readable and unique for the Attribute. Since the "uniqueness" of the modifier is already defined in the UUID, you can have duplicate names.
  • double amountIn - the Modifier value, can be anything. Note that the attribute, as prevously explained, has a min/max value and it can't get past that!
  • int operationIn - the Operation of the Modifier (careful, magic numbers over here!). Have a direct quote from the Minecraft Wiki:
    Quote
    The mathematical behavior is as follows:
        Operation 0: Increment X by Amount
        Operation 1: Increment Y by X * Amount,
        Operation 2: Y = Y * (1 + Amount) (equivalent to Increment Y by Y * Amount).
    The game first sets X = Base, then executes all Operation 0 modifiers, then sets Y = X, then executes all Operation 1 modifiers, and finally executes all Operation 2 modifiers.
    Brief explanation: Operation number is the value you feed the parameter.
    I also made an enum for it complete with javadoc for you to copy (with credits of course) if you want: https://github.com/SanAndreasP/SAPManagerPack/blob/master/java/de/sanandrew/core/manpack/util/EnumAttrModifierOperation.java

 

Now I've covered the parameters, it's time to make a new instance like this:

MY_CUSTOM_MODIFIER = new AttributeModifier(UUID.fromString("e6107045-134f-4c54-a645-75c3ae5c7a27"), "myCustomModifier420BlazeIt", 0.360D, EnumAttrModifierOperation.ADD_PERC_VAL_TO_SUM.ordinal());

 

You have the new modifier instance, but what do do with it? You can add or remove modifiers from an attribute like this (method names are self-explanatory):

entity.getEntityAttribute(MY_ATTRIBUTE_INSTANCE).applyModifier(MY_CUSTOM_MODIFIER);
entity.getEntityAttribute(MY_ATTRIBUTE_INSTANCE).removeModifier(MY_CUSTOM_MODIFIER);
 

Alright, you know now everything there is to know about attributes... wait, there's one more thing: attributes are saved and loaded automatically by the entity, no need to do that manually! Just make sure the client knows about the Attribute (register it properly as I've shown).

Edited by SanAndreasP
  • Like 3

Don't ask for support per PM! They'll get ignored! | If a post helped you, click the "Thank You" button at the top right corner of said post! |

mah twitter

This thread makes me sad because people just post copy-paste-ready code when it's obvious that the OP has little to no programming experience. This is not how learning works.

Link to comment
Share on other sites

Updated tutorial, because: After experimenting with attributes for awhile I noticed that Attributes in on themselves don't get send to the client automatically. So I looked for the cause of this, because the netcode actually was there, and found out you need to call

setShouldWatch(boolean)

after initializing.

Added this to Step 1 of the Create a new Attribute part.

Don't ask for support per PM! They'll get ignored! | If a post helped you, click the "Thank You" button at the top right corner of said post! |

mah twitter

This thread makes me sad because people just post copy-paste-ready code when it's obvious that the OP has little to no programming experience. This is not how learning works.

Link to comment
Share on other sites

I've updated the tutorial to accommodate for 1.10/1.11 and also fix formatting that broke due to the new forum software migration.

  • Like 1

Don't ask for support per PM! They'll get ignored! | If a post helped you, click the "Thank You" button at the top right corner of said post! |

mah twitter

This thread makes me sad because people just post copy-paste-ready code when it's obvious that the OP has little to no programming experience. This is not how learning works.

Link to comment
Share on other sites

  • 3 months later...
  • 1 year later...

Currently adding a custom set of attributes to all LivingEntityBase for my Dynamic Stealth mod (ie. adding a custom attribute to vanilla / unknown mod entities).  Had some trouble before I found a usable event for doing so, but I believe it's working now, so figured I'd chime in:

The event for doing such a thing (by which I mean, the ONLY event that works, when the entity is reloaded from disk, afaik) is 

EntityEvent.EntityConstructing

 

If there is another event with the correct timing, I do not know of it.  the join world event is too late to add attributes to the attribute map without warning spam in the server log.

Hopefully someone finds this useful

  • Like 1
Link to comment
Share on other sites

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
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.

 Share



  • Recently Browsing

    No registered users viewing this page.

  • Posts

    • C:\Users\namno\Desktop\Nobec>REM Forge requires a configured set of both JVM and program arguments. C:\Users\namno\Desktop\Nobec>REM Add custom JVM arguments to the user_jvm_args.txt C:\Users\namno\Desktop\Nobec>REM Add custom program arguments {such as nogui} to this file in the next line before the  or C:\Users\namno\Desktop\Nobec>REM  pass them to this script directly C:\Users\namno\Desktop\Nobec>java @user_jvm_args.txt @libraries/net/minecraftforge/forge/1.18-38.0.14/win_args.txt Error: Could not find or load main class @user_jvm_args.txt C:\Users\namno\Desktop\Nobec>pause Press any key to continue . . . I get this when i try to start my 1.18 server
    • Ok, here's what I've come up with. For some reason, I can't put the potions in the brewing stand though, they're not recognized as ingredients, I guess. I think I need to initialize the super with something other than "null", but I don't know what to put there, it's expecting a Stream<IItemList> package com.derpyninjafrog.worldoffood.init; import net.minecraft.item.ItemStack; import net.minecraft.item.Items; import net.minecraft.item.crafting.Ingredient; import net.minecraftforge.common.brewing.IBrewingRecipe; import java.util.function.Predicate; public class PotionIngredient extends Ingredient implements Predicate<ItemStack> { String potion; public PotionIngredient(String potion) { super(null); this.potion = potion; } @Override public boolean test(ItemStack itemStack) { return itemStack.getTag().getString("Potion").equals(this.potion); } @Override public Predicate<ItemStack> and(Predicate<? super ItemStack> other) { return Predicate.super.and(other); } }  
    • I'm using MCP fields  ObfuscationReflectionHelper.getPrivateValue(AnyClass.class, foo, "bar") It's works when using runClient task, but the generated jar (build/libs/example.jar) has no converted fields (errors: [net.minecraftforge.fml.util.ObfuscationReflectionHelper/REFLECTION]: Unable to locate field ...). For the jar build I tried ./gradlew build and intellij idea. What have I missed or could have done wrong? version: client: 1.18 forge: 38.0.14
    • Okay, tested a new world and it worked just fine then loaded into my old one and it crashed instantly, here's the part of the log that's relevant to the old world: [06Dec2021 02:45:23.768] [Server thread/INFO] [net.minecraft.network.play.ServerPlayNetHandler/]: Stopping singleplayer server as player logged out [06Dec2021 02:45:23.804] [Server thread/INFO] [net.minecraft.server.MinecraftServer/]: Stopping server [06Dec2021 02:45:23.805] [Server thread/INFO] [net.minecraft.server.MinecraftServer/]: Saving players [06Dec2021 02:45:23.805] [Server thread/INFO] [net.minecraft.server.MinecraftServer/]: Saving worlds [06Dec2021 02:45:23.805] [Server thread/INFO] [net.minecraft.server.MinecraftServer/]: Saving chunks for level 'New World'/minecraft:overworld [06Dec2021 02:45:23.975] [Server thread/INFO] [net.minecraft.world.server.ChunkManager/]: ThreadedAnvilChunkStorage (New World): All chunks are saved [06Dec2021 02:45:23.976] [Server thread/DEBUG] [net.minecraftforge.fml.FMLWorldPersistenceHook/WP]: Gathering id map for writing to world save New World [06Dec2021 02:45:24.042] [Server thread/INFO] [net.minecraft.world.server.ChunkManager/]: ThreadedAnvilChunkStorage (New World): All chunks are saved [06Dec2021 02:45:24.123] [Server thread/DEBUG] [net.minecraftforge.registries.ClearableRegistry/REGISTRY]: minecraft:feature: Clearing registry [06Dec2021 02:45:25.748] [Server thread/DEBUG] [net.minecraftforge.registries.ObjectHolderRef/]: Unable to lookup midnight:tree_hopper for public static net.minecraft.entity.EntityType com.mushroom.midnight.common.registry.MidnightEntities.TREE_HOPPER. This means the object wasn't registered. It's likely just mod options. [06Dec2021 02:45:25.749] [Server thread/DEBUG] [net.minecraftforge.registries.ObjectHolderRef/]: Unable to lookup aquaculture:fish_fillet for public static net.minecraft.item.Item com.teammetallurgy.aquaculture.init.AquaItems.FISH_FILLET. This means the object wasn't registered. It's likely just mod options. [06Dec2021 02:45:25.749] [Server thread/DEBUG] [net.minecraftforge.registries.ObjectHolderRef/]: Unable to lookup aquaculture:nessage_in_a_bottle for public static net.minecraft.item.Item com.teammetallurgy.aquaculture.init.AquaItems.NESSAGE_IN_A_BOTTLE. This means the object wasn't registered. It's likely just mod options. [06Dec2021 02:45:25.749] [Server thread/DEBUG] [net.minecraftforge.registries.ObjectHolderRef/]: Unable to lookup waddles:adelie_death for public static net.minecraft.util.SoundEvent com.girafi.waddles.init.WaddlesSounds.ADELIE_DEATH. This means the object wasn't registered. It's likely just mod options. [06Dec2021 02:45:25.749] [Server thread/DEBUG] [net.minecraftforge.registries.ObjectHolderRef/]: Unable to lookup aquaculture:cooked_fillet for public static net.minecraft.item.Item com.teammetallurgy.aquaculture.init.AquaItems.COOKED_FILLET. This means the object wasn't registered. It's likely just mod options. [06Dec2021 02:45:25.749] [Server thread/DEBUG] [net.minecraftforge.registries.ObjectHolderRef/]: Unable to lookup aquaculture:frog_legs for public static net.minecraft.item.Item com.teammetallurgy.aquaculture.init.AquaItems.FROG_LEGS. This means the object wasn't registered. It's likely just mod options. [06Dec2021 02:45:25.749] [Server thread/DEBUG] [net.minecraftforge.registries.ObjectHolderRef/]: Unable to lookup snowundertrees:snow_under_trees for public static net.minecraft.world.gen.feature.Feature bl4ckscor3.mod.snowundertrees.SnowUnderTrees.SNOW_UNDER_TREES. This means the object wasn't registered. It's likely just mod options. [06Dec2021 02:45:25.750] [Server thread/DEBUG] [net.minecraftforge.registries.ObjectHolderRef/]: Unable to lookup midnight:dead_viridshroom_and_cache for public static net.minecraft.world.gen.feature.Feature com.mushroom.midnight.common.registry.MidnightFeatures.DEAD_VIRIDSHROOM_AND_CACHE. This means the object wasn't registered. It's likely just mod options. [06Dec2021 02:45:25.750] [Server thread/DEBUG] [net.minecraftforge.registries.ObjectHolderRef/]: Unable to lookup aquaculture:neptunium_legs for public static net.minecraft.item.Item com.teammetallurgy.aquaculture.init.AquaItems.NEPTUNIUM_LEGS. This means the object wasn't registered. It's likely just mod options. [06Dec2021 02:45:25.750] [Server thread/DEBUG] [net.minecraftforge.registries.ObjectHolderRef/]: Unable to lookup aquaculture:neptinium_fillet_knife for public static net.minecraft.item.Item com.teammetallurgy.aquaculture.init.AquaItems.NEPTINIUM_FILLET_KNIFE. This means the object wasn't registered. It's likely just mod options. [06Dec2021 02:45:25.751] [Server thread/DEBUG] [net.minecraftforge.registries.ObjectHolderRef/]: Unable to lookup waddles:adelie_baby_ambient for public static net.minecraft.util.SoundEvent com.girafi.waddles.init.WaddlesSounds.ADELIE_BABY_AMBIENT. This means the object wasn't registered. It's likely just mod options. [06Dec2021 02:45:25.751] [Server thread/DEBUG] [net.minecraftforge.registries.ObjectHolderRef/]: Unable to lookup midnight:penumbrian for public static net.minecraft.entity.EntityType com.mushroom.midnight.common.registry.MidnightEntities.PENUMBRIAN. This means the object wasn't registered. It's likely just mod options. [06Dec2021 02:45:25.751] [Server thread/DEBUG] [net.minecraftforge.registries.ObjectHolderRef/]: Unable to lookup aquaculture:neptunium_plate for public static net.minecraft.item.Item com.teammetallurgy.aquaculture.init.AquaItems.NEPTUNIUM_PLATE. This means the object wasn't registered. It's likely just mod options. [06Dec2021 02:45:25.751] [Server thread/DEBUG] [net.minecraftforge.registries.ObjectHolderRef/]: Unable to lookup midnight:shade_squirrel for public static net.minecraft.entity.EntityType com.mushroom.midnight.common.registry.MidnightEntities.SHADE_SQUIRREL. This means the object wasn't registered. It's likely just mod options. [06Dec2021 02:45:25.751] [Server thread/DEBUG] [net.minecraftforge.registries.ObjectHolderRef/]: Unable to lookup essentialfeatures:portable_jukebox for public static net.minecraft.item.Item its_meow.betteranimalsplus.common.CommonEventHandler.PORTABLE_JUKEBOX. This means the object wasn't registered. It's likely just mod options. [06Dec2021 02:45:25.752] [Server thread/DEBUG] [net.minecraftforge.registries.ObjectHolderRef/]: Unable to lookup aquaculture:cooked_frog_legs for public static net.minecraft.item.Item com.teammetallurgy.aquaculture.init.AquaItems.COOKED_FROG_LEGS. This means the object wasn't registered. It's likely just mod options. [06Dec2021 02:45:25.752] [Server thread/DEBUG] [net.minecraftforge.registries.ObjectHolderRef/]: Unable to lookup waddles:adelie_ambient for public static net.minecraft.util.SoundEvent com.girafi.waddles.init.WaddlesSounds.ADELIE_AMBIENT. This means the object wasn't registered. It's likely just mod options. [06Dec2021 02:45:25.752] [Server thread/DEBUG] [net.minecraftforge.registries.ObjectHolderRef/]: Unable to lookup waddles:adelie_hurt for public static net.minecraft.util.SoundEvent com.girafi.waddles.init.WaddlesSounds.ADELIE_HURT. This means the object wasn't registered. It's likely just mod options. [06Dec2021 02:45:25.756] [Server thread/DEBUG] [com.direwolf20.buildinggadgets.common.BuildingGadgets/]: Clearing save caches [06Dec2021 02:45:25.756] [Server thread/DEBUG] [com.direwolf20.buildinggadgets.common.BuildingGadgets/]: Finished clearing save caches [06Dec2021 02:45:25.756] [Server thread/DEBUG] [net.minecraftforge.fml.loading.FileUtils/CORE]: Found existing serverconfig directory : F:\Games\MultiMC\instances\HR- New Beginnings\minecraft\saves\New World\serverconfig [06Dec2021 02:45:25.756] [Server thread/DEBUG] [net.minecraftforge.fml.config.ConfigTracker/CONFIG]: Unloading configs type SERVER [06Dec2021 02:45:25.757] [Thread-1/DEBUG] [net.minecraftforge.fml.config.ConfigFileTypeHandler/CONFIG]: Config file mining_dimension-server.toml changed, sending notifies [06Dec2021 02:45:25.757] [Thread-1/DEBUG] [net.minecraftforge.fml.config.ConfigFileTypeHandler/CONFIG]: Config file mining_dimension-server.toml changed, sending notifies [06Dec2021 02:45:25.919] [Render thread/DEBUG] [IPCClient/]: Sending RichPresence to discord: {"assets":{"small_image":"uteamcore","small_text":"U-Team Core","large_image":"minecraft","large_text":"Minecraft"},"instance":false,"timestamps":{"start":1638709383},"details":"1.15.2 with 109 Mods","state":"Idling in menu","secrets":{}} [06Dec2021 02:45:25.920] [Render thread/DEBUG] [IPCClient/]: Sent packet: Pkt:FRAME{"args":{"activity":{"assets":{"small_image":"uteamcore","small_text":"U-Team Core","large_image":"minecraft","large_text":"Minecraft"},"instance":false,"timestamps":{"start":1638709383},"details":"1.15.2 with 109 Mods","state":"Idling in menu","secrets":{}},"pid":9856},"cmd":"SET_ACTIVITY","nonce":"b9a90fd3-4c82-43b5-8150-cd6a4b67b83f"} [06Dec2021 02:45:25.964] [Thread-26/DEBUG] [IPCClient/]: Received packet: Pkt:FRAME{"evt":null,"data":{"assets":{"small_image":"449588211862208512","small_text":"U-Team Core","large_image":"427223277530906624","large_text":"Minecraft"},"timestamps":{"start":1638709383000},"name":"Minecraft","details":"1.15.2 with 109 Mods","state":"Idling in menu","type":0,"secrets":{},"application_id":"427196986064764928"},"cmd":"SET_ACTIVITY","nonce":"b9a90fd3-4c82-43b5-8150-cd6a4b67b83f"} [06Dec2021 02:45:46.611] [Render thread/WARN] [net.minecraft.command.Commands/]: Ambiguity between arguments [teleport, destination] and [teleport, targets] with inputs: [Player, 0123, @e, dd12be42-52a9-4a91-a8a1-11c01849e498] [06Dec2021 02:45:46.612] [Render thread/WARN] [net.minecraft.command.Commands/]: Ambiguity between arguments [teleport, location] and [teleport, destination] with inputs: [0.1 -0.5 .9, 0 0 0] [06Dec2021 02:45:46.612] [Render thread/WARN] [net.minecraft.command.Commands/]: Ambiguity between arguments [teleport, location] and [teleport, targets] with inputs: [0.1 -0.5 .9, 0 0 0] [06Dec2021 02:45:46.613] [Render thread/WARN] [net.minecraft.command.Commands/]: Ambiguity between arguments [teleport, targets] and [teleport, destination] with inputs: [Player, 0123, dd12be42-52a9-4a91-a8a1-11c01849e498] [06Dec2021 02:45:46.614] [Render thread/WARN] [net.minecraft.command.Commands/]: Ambiguity between arguments [teleport, targets, location] and [teleport, targets, destination] with inputs: [0.1 -0.5 .9, 0 0 0] [06Dec2021 02:45:46.616] [Server thread/INFO] [net.minecraft.server.integrated.IntegratedServer/]: Starting integrated minecraft server version 1.15.2 [06Dec2021 02:45:46.616] [Server thread/INFO] [net.minecraft.server.integrated.IntegratedServer/]: Generating keypair [06Dec2021 02:45:46.695] [Server thread/DEBUG] [net.minecraftforge.fml.loading.FileUtils/CORE]: Found existing serverconfig directory : F:\Games\MultiMC\instances\HR- New Beginnings\minecraft\saves\Wooooorld\serverconfig [06Dec2021 02:45:46.695] [Server thread/DEBUG] [net.minecraftforge.fml.config.ConfigTracker/CONFIG]: Loading configs type SERVER [06Dec2021 02:45:46.695] [Server thread/DEBUG] [net.minecraftforge.fml.config.ConfigFileTypeHandler/CONFIG]: Built TOML config for F:\Games\MultiMC\instances\HR- New Beginnings\minecraft\saves\Wooooorld\serverconfig\mining_dimension-server.toml [06Dec2021 02:45:46.696] [Server thread/DEBUG] [net.minecraftforge.fml.config.ConfigFileTypeHandler/CONFIG]: Loaded TOML config file F:\Games\MultiMC\instances\HR- New Beginnings\minecraft\saves\Wooooorld\serverconfig\mining_dimension-server.toml [06Dec2021 02:45:46.697] [Server thread/DEBUG] [net.minecraftforge.fml.config.ConfigFileTypeHandler/CONFIG]: Watching TOML config file F:\Games\MultiMC\instances\HR- New Beginnings\minecraft\saves\Wooooorld\serverconfig\mining_dimension-server.toml for changes [06Dec2021 02:45:46.698] [Server thread/DEBUG] [net.minecraftforge.fml.config.ConfigFileTypeHandler/CONFIG]: Built TOML config for F:\Games\MultiMC\instances\HR- New Beginnings\minecraft\config\vanillatweaks\Content.toml [06Dec2021 02:45:46.700] [Server thread/DEBUG] [net.minecraftforge.fml.config.ConfigFileTypeHandler/CONFIG]: Loaded TOML config file F:\Games\MultiMC\instances\HR- New Beginnings\minecraft\config\vanillatweaks\Content.toml [06Dec2021 02:45:46.701] [Server thread/DEBUG] [net.minecraftforge.fml.config.ConfigFileTypeHandler/CONFIG]: Watching TOML config file F:\Games\MultiMC\instances\HR- New Beginnings\minecraft\config\vanillatweaks\Content.toml for changes [06Dec2021 02:45:46.703] [Server thread/DEBUG] [net.minecraftforge.fml.config.ConfigFileTypeHandler/CONFIG]: Built TOML config for F:\Games\MultiMC\instances\HR- New Beginnings\minecraft\config\vanillatweaks\Enchanting.toml [06Dec2021 02:45:46.705] [Server thread/DEBUG] [net.minecraftforge.fml.config.ConfigFileTypeHandler/CONFIG]: Loaded TOML config file F:\Games\MultiMC\instances\HR- New Beginnings\minecraft\config\vanillatweaks\Enchanting.toml [06Dec2021 02:45:46.705] [Server thread/DEBUG] [net.minecraftforge.fml.config.ConfigFileTypeHandler/CONFIG]: Watching TOML config file F:\Games\MultiMC\instances\HR- New Beginnings\minecraft\config\vanillatweaks\Enchanting.toml for changes [06Dec2021 02:45:46.707] [Server thread/DEBUG] [net.minecraftforge.fml.config.ConfigFileTypeHandler/CONFIG]: Built TOML config for F:\Games\MultiMC\instances\HR- New Beginnings\minecraft\config\vanillatweaks\Loot.toml [06Dec2021 02:45:46.708] [Server thread/DEBUG] [net.minecraftforge.fml.config.ConfigFileTypeHandler/CONFIG]: Loaded TOML config file F:\Games\MultiMC\instances\HR- New Beginnings\minecraft\config\vanillatweaks\Loot.toml [06Dec2021 02:45:46.709] [Server thread/DEBUG] [net.minecraftforge.fml.config.ConfigFileTypeHandler/CONFIG]: Watching TOML config file F:\Games\MultiMC\instances\HR- New Beginnings\minecraft\config\vanillatweaks\Loot.toml for changes [06Dec2021 02:45:46.710] [Server thread/DEBUG] [net.minecraftforge.fml.config.ConfigFileTypeHandler/CONFIG]: Built TOML config for F:\Games\MultiMC\instances\HR- New Beginnings\minecraft\config\vanillatweaks\Crafting.toml [06Dec2021 02:45:46.711] [Server thread/DEBUG] [net.minecraftforge.fml.config.ConfigFileTypeHandler/CONFIG]: Loaded TOML config file F:\Games\MultiMC\instances\HR- New Beginnings\minecraft\config\vanillatweaks\Crafting.toml [06Dec2021 02:45:46.712] [Server thread/DEBUG] [net.minecraftforge.fml.config.ConfigFileTypeHandler/CONFIG]: Watching TOML config file F:\Games\MultiMC\instances\HR- New Beginnings\minecraft\config\vanillatweaks\Crafting.toml for changes [06Dec2021 02:45:46.713] [Server thread/DEBUG] [net.minecraftforge.fml.config.ConfigFileTypeHandler/CONFIG]: Built TOML config for F:\Games\MultiMC\instances\HR- New Beginnings\minecraft\config\vanillatweaks\Tweaks.toml [06Dec2021 02:45:46.719] [Server thread/DEBUG] [net.minecraftforge.fml.config.ConfigFileTypeHandler/CONFIG]: Loaded TOML config file F:\Games\MultiMC\instances\HR- New Beginnings\minecraft\config\vanillatweaks\Tweaks.toml [06Dec2021 02:45:46.719] [Server thread/DEBUG] [net.minecraftforge.fml.config.ConfigFileTypeHandler/CONFIG]: Watching TOML config file F:\Games\MultiMC\instances\HR- New Beginnings\minecraft\config\vanillatweaks\Tweaks.toml for changes [06Dec2021 02:45:46.735] [Server thread/DEBUG] [net.minecraftforge.fml.config.ConfigFileTypeHandler/CONFIG]: Built TOML config for F:\Games\MultiMC\instances\HR- New Beginnings\minecraft\config\vanillatweaks\world.toml [06Dec2021 02:45:46.736] [Server thread/DEBUG] [net.minecraftforge.fml.config.ConfigFileTypeHandler/CONFIG]: Loaded TOML config file F:\Games\MultiMC\instances\HR- New Beginnings\minecraft\config\vanillatweaks\world.toml [06Dec2021 02:45:46.736] [Server thread/DEBUG] [net.minecraftforge.fml.config.ConfigFileTypeHandler/CONFIG]: Watching TOML config file F:\Games\MultiMC\instances\HR- New Beginnings\minecraft\config\vanillatweaks\world.toml for changes [06Dec2021 02:45:46.745] [Server thread/DEBUG] [net.minecraftforge.fml.config.ConfigFileTypeHandler/CONFIG]: Built TOML config for F:\Games\MultiMC\instances\HR- New Beginnings\minecraft\saves\Wooooorld\serverconfig\essentials-server.toml [06Dec2021 02:45:46.746] [Server thread/DEBUG] [net.minecraftforge.fml.config.ConfigFileTypeHandler/CONFIG]: Loaded TOML config file F:\Games\MultiMC\instances\HR- New Beginnings\minecraft\saves\Wooooorld\serverconfig\essentials-server.toml [06Dec2021 02:45:46.746] [Server thread/DEBUG] [net.minecraftforge.fml.config.ConfigFileTypeHandler/CONFIG]: Watching TOML config file F:\Games\MultiMC\instances\HR- New Beginnings\minecraft\saves\Wooooorld\serverconfig\essentials-server.toml for changes [06Dec2021 02:45:46.747] [Server thread/DEBUG] [net.minecraftforge.fml.config.ConfigFileTypeHandler/CONFIG]: Built TOML config for F:\Games\MultiMC\instances\HR- New Beginnings\minecraft\saves\Wooooorld\serverconfig\morpheus-server.toml [06Dec2021 02:45:46.748] [Server thread/ERROR] [net.minecraft.server.MinecraftServer/]: Encountered an unexpected exception com.electronwill.nightconfig.core.io.ParsingException: Invalid bare key: INDX( at com.electronwill.nightconfig.toml.TableParser.parseKey(TableParser.java:175) ~[toml-3.6.2.jar:?] at com.electronwill.nightconfig.toml.TableParser.parseDottedKey(TableParser.java:145) ~[toml-3.6.2.jar:?] at com.electronwill.nightconfig.toml.TableParser.parseNormal(TableParser.java:55) ~[toml-3.6.2.jar:?] at com.electronwill.nightconfig.toml.TomlParser.parse(TomlParser.java:44) ~[toml-3.6.2.jar:?] at com.electronwill.nightconfig.toml.TomlParser.parse(TomlParser.java:37) ~[toml-3.6.2.jar:?] at com.electronwill.nightconfig.core.io.ConfigParser.parse(ConfigParser.java:113) ~[core-3.6.2.jar:?] at com.electronwill.nightconfig.core.io.ConfigParser.parse(ConfigParser.java:219) ~[core-3.6.2.jar:?] at com.electronwill.nightconfig.core.io.ConfigParser.parse(ConfigParser.java:202) ~[core-3.6.2.jar:?] at com.electronwill.nightconfig.core.file.WriteSyncFileConfig.load(WriteSyncFileConfig.java:73) ~[core-3.6.2.jar:?] at com.electronwill.nightconfig.core.file.AutosaveCommentedFileConfig.load(AutosaveCommentedFileConfig.java:85) ~[core-3.6.2.jar:?] at net.minecraftforge.fml.config.ConfigFileTypeHandler.lambda$reader$1(ConfigFileTypeHandler.java:53) ~[?:?] at net.minecraftforge.fml.config.ConfigTracker.openConfig(ConfigTracker.java:104) ~[?:?] at net.minecraftforge.fml.config.ConfigTracker.lambda$loadConfigs$1(ConfigTracker.java:83) ~[?:?] at java.lang.Iterable.forEach(Unknown Source) ~[?:1.8.0_311] at java.util.Collections$SynchronizedCollection.forEach(Unknown Source) ~[?:1.8.0_311] at net.minecraftforge.fml.config.ConfigTracker.loadConfigs(ConfigTracker.java:83) ~[?:?] at net.minecraftforge.fml.server.ServerLifecycleHooks.handleServerAboutToStart(ServerLifecycleHooks.java:87) ~[?:?] at net.minecraft.server.integrated.IntegratedServer.func_71197_b(IntegratedServer.java:95) ~[?:?] at net.minecraft.server.MinecraftServer.run(MinecraftServer.java:613) [?:?] at java.lang.Thread.run(Unknown Source) [?:1.8.0_311] [06Dec2021 02:45:46.756] [Server thread/ERROR] [net.minecraft.server.MinecraftServer/]: This crash report has been saved to: F:\Games\MultiMC\instances\HR- New Beginnings\minecraft\crash-reports\crash-2021-12-06_02.45.46-server.txt [06Dec2021 02:45:46.757] [Server thread/INFO] [net.minecraft.server.MinecraftServer/]: Stopping server [06Dec2021 02:45:46.757] [Server thread/INFO] [net.minecraft.server.MinecraftServer/]: Saving players [06Dec2021 02:45:46.757] [Server thread/INFO] [net.minecraft.server.MinecraftServer/]: Saving worlds [06Dec2021 02:45:46.758] [Server thread/ERROR] [net.minecraft.server.MinecraftServer/]: Exception stopping the server java.lang.IllegalArgumentException: Can not hotload overworld. This must be loaded at all times by main Server. at org.apache.commons.lang3.Validate.isTrue(Validate.java:158) ~[commons-lang3-3.5.jar:3.5] at net.minecraftforge.common.DimensionManager.initWorld(DimensionManager.java:274) ~[?:?] at net.minecraftforge.common.DimensionManager.getWorld(DimensionManager.java:208) ~[?:?] at net.minecraft.server.MinecraftServer.func_71218_a(MinecraftServer.java:1004) ~[?:?] at net.minecraft.server.MinecraftServer.func_213211_a(MinecraftServer.java:536) ~[?:?] at net.minecraft.server.MinecraftServer.func_71260_j(MinecraftServer.java:568) ~[?:?] at net.minecraft.server.integrated.IntegratedServer.func_71260_j(IntegratedServer.java:216) ~[?:?] at net.minecraft.server.MinecraftServer.run(MinecraftServer.java:676) [?:?] at java.lang.Thread.run(Unknown Source) [?:1.8.0_311] [06Dec2021 02:45:46.802] [Server thread/DEBUG] [net.minecraftforge.registries.ClearableRegistry/REGISTRY]: minecraft:feature: Clearing registry [06Dec2021 02:45:48.620] [Server thread/DEBUG] [net.minecraftforge.registries.ObjectHolderRef/]: Unable to lookup midnight:tree_hopper for public static net.minecraft.entity.EntityType com.mushroom.midnight.common.registry.MidnightEntities.TREE_HOPPER. This means the object wasn't registered. It's likely just mod options. [06Dec2021 02:45:48.620] [Server thread/DEBUG] [net.minecraftforge.registries.ObjectHolderRef/]: Unable to lookup aquaculture:fish_fillet for public static net.minecraft.item.Item com.teammetallurgy.aquaculture.init.AquaItems.FISH_FILLET. This means the object wasn't registered. It's likely just mod options. [06Dec2021 02:45:48.620] [Server thread/DEBUG] [net.minecraftforge.registries.ObjectHolderRef/]: Unable to lookup aquaculture:nessage_in_a_bottle for public static net.minecraft.item.Item com.teammetallurgy.aquaculture.init.AquaItems.NESSAGE_IN_A_BOTTLE. This means the object wasn't registered. It's likely just mod options. [06Dec2021 02:45:48.621] [Server thread/DEBUG] [net.minecraftforge.registries.ObjectHolderRef/]: Unable to lookup waddles:adelie_death for public static net.minecraft.util.SoundEvent com.girafi.waddles.init.WaddlesSounds.ADELIE_DEATH. This means the object wasn't registered. It's likely just mod options. [06Dec2021 02:45:48.621] [Server thread/DEBUG] [net.minecraftforge.registries.ObjectHolderRef/]: Unable to lookup aquaculture:cooked_fillet for public static net.minecraft.item.Item com.teammetallurgy.aquaculture.init.AquaItems.COOKED_FILLET. This means the object wasn't registered. It's likely just mod options. [06Dec2021 02:45:48.621] [Server thread/DEBUG] [net.minecraftforge.registries.ObjectHolderRef/]: Unable to lookup aquaculture:frog_legs for public static net.minecraft.item.Item com.teammetallurgy.aquaculture.init.AquaItems.FROG_LEGS. This means the object wasn't registered. It's likely just mod options. [06Dec2021 02:45:48.621] [Server thread/DEBUG] [net.minecraftforge.registries.ObjectHolderRef/]: Unable to lookup snowundertrees:snow_under_trees for public static net.minecraft.world.gen.feature.Feature bl4ckscor3.mod.snowundertrees.SnowUnderTrees.SNOW_UNDER_TREES. This means the object wasn't registered. It's likely just mod options. [06Dec2021 02:45:48.621] [Server thread/DEBUG] [net.minecraftforge.registries.ObjectHolderRef/]: Unable to lookup midnight:dead_viridshroom_and_cache for public static net.minecraft.world.gen.feature.Feature com.mushroom.midnight.common.registry.MidnightFeatures.DEAD_VIRIDSHROOM_AND_CACHE. This means the object wasn't registered. It's likely just mod options. [06Dec2021 02:45:48.621] [Server thread/DEBUG] [net.minecraftforge.registries.ObjectHolderRef/]: Unable to lookup aquaculture:neptunium_legs for public static net.minecraft.item.Item com.teammetallurgy.aquaculture.init.AquaItems.NEPTUNIUM_LEGS. This means the object wasn't registered. It's likely just mod options. [06Dec2021 02:45:48.622] [Server thread/DEBUG] [net.minecraftforge.registries.ObjectHolderRef/]: Unable to lookup aquaculture:neptinium_fillet_knife for public static net.minecraft.item.Item com.teammetallurgy.aquaculture.init.AquaItems.NEPTINIUM_FILLET_KNIFE. This means the object wasn't registered. It's likely just mod options. [06Dec2021 02:45:48.622] [Server thread/DEBUG] [net.minecraftforge.registries.ObjectHolderRef/]: Unable to lookup waddles:adelie_baby_ambient for public static net.minecraft.util.SoundEvent com.girafi.waddles.init.WaddlesSounds.ADELIE_BABY_AMBIENT. This means the object wasn't registered. It's likely just mod options. [06Dec2021 02:45:48.622] [Server thread/DEBUG] [net.minecraftforge.registries.ObjectHolderRef/]: Unable to lookup midnight:penumbrian for public static net.minecraft.entity.EntityType com.mushroom.midnight.common.registry.MidnightEntities.PENUMBRIAN. This means the object wasn't registered. It's likely just mod options. [06Dec2021 02:45:48.622] [Server thread/DEBUG] [net.minecraftforge.registries.ObjectHolderRef/]: Unable to lookup aquaculture:neptunium_plate for public static net.minecraft.item.Item com.teammetallurgy.aquaculture.init.AquaItems.NEPTUNIUM_PLATE. This means the object wasn't registered. It's likely just mod options. [06Dec2021 02:45:48.622] [Server thread/DEBUG] [net.minecraftforge.registries.ObjectHolderRef/]: Unable to lookup midnight:shade_squirrel for public static net.minecraft.entity.EntityType com.mushroom.midnight.common.registry.MidnightEntities.SHADE_SQUIRREL. This means the object wasn't registered. It's likely just mod options. [06Dec2021 02:45:48.623] [Server thread/DEBUG] [net.minecraftforge.registries.ObjectHolderRef/]: Unable to lookup essentialfeatures:portable_jukebox for public static net.minecraft.item.Item its_meow.betteranimalsplus.common.CommonEventHandler.PORTABLE_JUKEBOX. This means the object wasn't registered. It's likely just mod options. [06Dec2021 02:45:48.623] [Server thread/DEBUG] [net.minecraftforge.registries.ObjectHolderRef/]: Unable to lookup aquaculture:cooked_frog_legs for public static net.minecraft.item.Item com.teammetallurgy.aquaculture.init.AquaItems.COOKED_FROG_LEGS. This means the object wasn't registered. It's likely just mod options. [06Dec2021 02:45:48.623] [Server thread/DEBUG] [net.minecraftforge.registries.ObjectHolderRef/]: Unable to lookup waddles:adelie_ambient for public static net.minecraft.util.SoundEvent com.girafi.waddles.init.WaddlesSounds.ADELIE_AMBIENT. This means the object wasn't registered. It's likely just mod options. [06Dec2021 02:45:48.623] [Server thread/DEBUG] [net.minecraftforge.registries.ObjectHolderRef/]: Unable to lookup waddles:adelie_hurt for public static net.minecraft.util.SoundEvent com.girafi.waddles.init.WaddlesSounds.ADELIE_HURT. This means the object wasn't registered. It's likely just mod options. [06Dec2021 02:45:48.623] [Server thread/DEBUG] [com.direwolf20.buildinggadgets.common.BuildingGadgets/]: Clearing save caches [06Dec2021 02:45:48.623] [Server thread/DEBUG] [com.direwolf20.buildinggadgets.common.BuildingGadgets/]: Finished clearing save caches [06Dec2021 02:45:48.623] [Server thread/DEBUG] [net.minecraftforge.fml.loading.FileUtils/CORE]: Found existing serverconfig directory : F:\Games\MultiMC\instances\HR- New Beginnings\minecraft\saves\Wooooorld\serverconfig [06Dec2021 02:45:48.623] [Server thread/DEBUG] [net.minecraftforge.fml.config.ConfigTracker/CONFIG]: Unloading configs type SERVER what stands out to me is this: [06Dec2021 02:45:46.748] [Server thread/ERROR] [net.minecraft.server.MinecraftServer/]: Encountered an unexpected exception com.electronwill.nightconfig.core.io.ParsingException: Invalid bare key: INDX( which on the crash report which i've opened with notepad++ shows Invalid bare key: INDX(  as in a null value or the "NUL" black rectangle. Starting to feel that my issue is a differnet one but just gives the same end result of a crash as soon as I click "Play Selected World"
    • Don't directly modify the mod jars.
  • Topics

  • Who's Online (See full list)

×
×
  • Create New...

Important Information

By using this site, you agree to our Privacy Policy.