Jump to content

Efficient way to compare lots of items


Bregor

Recommended Posts

Hi,

 

is there a way to compare lots of items fast and correct other than probing each item with isItemEqual.

 

As far as I know there is no override for hashCode/equals for items.

 

I thought about using itemId and damage for this purpose (according to writeToNBT both are shorts and could combined into an int as a form of hash code), but getting the item ID doesn't seem to be very efficient with 1.7.

 

How do you test an item against a large list of possible items, like for an item storage system?

Link to comment
Share on other sites

While it is good to be worried about efficiency, do you already know you have a problem with perf or are you just worrying about it?

 

A few things to think about:

 

You should organize any series of tests by how likely they are to happen to stop the tests as early as possible.  Basically test the least likely first.  Imagine you have code that needs to check if you're walking on grass and holding a "grass staff" item.  Walking on grass happens a lot, but presumably holding a grass staff would only be occasional. So it would be much faster to go if (holding grass staff) { if (walking on grass) { // do something cool here}  } than the other way around because most of the time it would only do the first test then quit.

 

The same thing happens with expressions using &&.  Java will "short circuit" (meaning quit as fast as possible) when it finds the first false part of the expression.  So holding grass staff && walking on grass is faster than the other way around.

 

Instead of equals you may also want to consider instanceof.  I'm not actually sure which is faster, but it is quite possible that instanceof is fast.

 

Lastly, in most languages switch statements can be quite efficient.  In Java though you can only switch on certain types of values, so that might limit your particular case.  Ideally you'd just switch based on the item itself, but instead you'll need to resolve it to some sort of int or similar.

 

But anyway, only optimize when you know you need to.  Otherwise you should just write well organized and straight-forward code.  Profile your code and then tackle the parts that are actually causing trouble. 

Check out my tutorials here: http://jabelarminecraft.blogspot.com/

Link to comment
Share on other sites

Your statements are all very valid of course. But as I want to develop something like an item storage system, and I think that there O(n) vs O(log2(n)) matters.

 

Sure, but you still need to look at it in perspective of whether that still gets to point of being a problem.  There are lots of similar sorts of algorithms going on in a video game, for example multiple entities in same area checking for collisions with each other, blocks checking for changes in neighbors, and so forth.

 

Anyway, while it is good to make the basic code efficient where you have a choice, I still think short-circuiting is the bigger band for your buck if you can find such opportunities.  I don't quite understand how an "item storage system" would create such a problem.

 

Maybe you can be more specific about the problem you're trying to solve.

Check out my tutorials here: http://jabelarminecraft.blogspot.com/

Link to comment
Share on other sites

Anyway, while it is good to make the basic code efficient where you have a choice, I still think short-circuiting is the bigger band for your buck if you can find such opportunities.  I don't quite understand how an "item storage system" would create such a problem.

 

Maybe you can be more specific about the problem you're trying to solve.

 

Well think of a centralized storage system where you can add items to and retrieve them again - not like a chest more like Applied Energistics. There the number of different items you have to match can easily go over a few hundred (especially with enchanted stuff and other items with an NBT tag) - if every retrieval process has to lookup the required item storage location with the trivial method it means for every available item in the storage a comparison required in the worst case.

Link to comment
Share on other sites

Your statements are all very valid of course. But as I want to develop something like an item storage system, and I think that there O(n) vs O(log2(n)) matters.

That depends.  If you have (say) 1000 items, and you only query your items storage system a couple of times second (for example- when the player wants to retrieve an item), then I guarantee you that no-one will ever notice the difference between O(n) or O(log2(n)).

 

If you are certain you really want a faster lookup, you could place your Item into a HashMap, which is O(1) for retrieval.  It will check whether the Item object is the same instance.  If you want ItemStacks (includes damage) then your idea of using ItemID and damage as the key would also work.  ID retrieval for 1.7.2 is not slow, don't worry about that.

 

-TGG

Link to comment
Share on other sites

You might want to look into a modified trie data structure. You can represent items as binary strings, and you can store integers with each state (instead of booleans).

 

It stores efficiently (memory wise) and has constant lookup and storage time (the binary strings that represent items won't grow as the number of items increase). Of course, I'm assuming that n is the number of items.

 

However, this is probably unnecessary work, and tries are limited in other ways. For example, iterating through the "elements" in a trie is a bit strange. This means that it will be a bit difficult to retrieve items from it. Sorting also isn't possible. If anything, this would be a good programming exercise, if you're interested. I can explain in more detail via PM if you want.

 

Also keep in mind that Java is a bit strange sometimes. If I recall correctly, the boolean primitive uses 8 bytes for some reason.

 

Link to comment
Share on other sites

Anyway, while it is good to make the basic code efficient where you have a choice, I still think short-circuiting is the bigger band for your buck if you can find such opportunities.  I don't quite understand how an "item storage system" would create such a problem.

 

Maybe you can be more specific about the problem you're trying to solve.

 

Well think of a centralized storage system where you can add items to and retrieve them again - not like a chest more like Applied Energistics. There the number of different items you have to match can easily go over a few hundred (especially with enchanted stuff and other items with an NBT tag) - if every retrieval process has to lookup the required item storage location with the trivial method it means for every available item in the storage a comparison required in the worst case.

 

So you only do the lookup when you're taking from or adding to this inventory?  I wouldn't worry much about perf as you'll be in a GUI and user can tolerate some delay.

Check out my tutorials here: http://jabelarminecraft.blogspot.com/

Link to comment
Share on other sites

To add, if we're strictly talking about comparison, a fast way would be to convert the items into binary strings (in integer form) and use the bitwise xor operator to see if the binary strings match. (Bitwise operations are extremely fast.) However, this probably isn't worth the work. The speed improvement, if there is any, will be negligible. Not to mention, the conversion might not be easy.

 

Also, when you bring runtime complexity into question and talk about number of items, it's no longer a question of comparison, but a question of sorting and searching.

 

If you want to compare a large number of items, you'll have to compare the same amount regardless of what comparison algorithm you chose. The search algorithm is what determines how many comparisons you do, not the comparison algorithm. So talking about O(n) vs O(log(n)) doesn't really make that much sense if you're talking about the comparison algorithm, since the size of each item is essentially bounded by a constant (unless you have tons of lists stored in NBT for a bunch of items, which is probably a design problem).

Link to comment
Share on other sites

So you only do the lookup when you're taking from or adding to this inventory?  I wouldn't worry much about perf as you'll be in a GUI and user can tolerate some delay.

 

No basically I am more concerned about automation as I want to supply various things from it.

 

 

Also, when you bring runtime complexity into question and talk about number of items, it's no longer a question of comparison, but a question of sorting and searching.

 

This is why I was asking for hashing :) I got some ideas from the comments I got here, just have to examine them.

Link to comment
Share on other sites

As a side note, a comparison algorithm that performs better than O(n) cannot exist. (n is the size of the item in bits.) I'll put the reason why in spoilers if you want to think about it.

 

 

 

To confirm that two items are equal, you must somehow compare every bit of information about those two items. You can't get away with comparing less. For example, you can't say that two lists are equal if you don't compare all the elements of the lists.

 

If you're going to use a hash function, keep in mind that the hash function might get expensive. You probably don't have to worry about this; even things like AE disks (if you're planning on your system storing them) have a limited inventory (64 item types I believe), so their size is still bound by a constant.

 

 

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
Unfortunately, your content contains terms that we do not allow. Please edit your content to remove the highlighted words below.
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.

Announcements



  • Recently Browsing

    • No registered users viewing this page.
  • Posts

    • I am setting up a modded server using Aternos and I have gotten this error:   [06Oct2024 18:53:53.588] [main/ERROR] [net.minecraftforge.fml.loading.RuntimeDistCleaner/DISTXFORM]: Attempted to load class com/minecolonies/core/compatibility/jei/GenericRecipeCategory for invalid dist DEDICATED_SERVER I removed JEI from the server to see if that would fix anything. All I know is that Minecolonies is the main problem, I have seen similar errors though I still am unsure.   I am not wanting to remove Minecolonies as it will be a major part of the server I am setting up.   FULL LOG:   [06Oct2024 18:53:37.486] [main/INFO] [Arclight/]: ___ ___ __ /\ / | ________/ (_)__ / / / / / /| |/ __/ __/ / / _ / _ \/__/ / ___ / / / /_/ / / / / // / / /_/ |/_/ \__/_/_/\_ /_//_/ / /__/ \/ Version 顿顽 (Trials) / arclight-1.20.1-1.0.6-SNAPSHOT-b2cde4a Build Date 2024-08-11 16:15:13 [06Oct2024 18:53:37.535] [main/INFO] [cpw.mods.modlauncher.Launcher/MODLAUNCHER]: ModLauncher running: args [--launchTarget, arclightserver, --fml.forgeVersion, 47.2.20, --fml.mcVersion, 1.20.1, --fml.forgeGroup, net.minecraftforge, --fml.mcpVersion, 20230612.114412, nogui] [06Oct2024 18:53:37.537] [main/INFO] [cpw.mods.modlauncher.Launcher/MODLAUNCHER]: ModLauncher 10.0.9+10.0.9+main.dcd20f30 starting: java version 17.0.12 by Eclipse Adoptium; OS Linux arch amd64 version 5.15.0-112-generic [06Oct2024 18:53:39.238] [main/INFO] [net.minecraftforge.fml.loading.ImmediateWindowHandler/]: ImmediateWindowProvider not loading because launch target is arclightserver [06Oct2024 18:53:39.272] [main/INFO] [mixin/]: SpongePowered MIXIN Subsystem Version=0.8.5 Source=union:/server/libraries/org/spongepowered/mixin/0.8.5/mixin-0.8.5.jar%2399!/ Service=ModLauncher Env=SERVER [06Oct2024 18:53:40.002] [main/WARN] [net.minecraftforge.fml.loading.moddiscovery.ModFileParser/LOADING]: Mod file /server/libraries/net/minecraftforge/fmlcore/1.20.1-47.2.20/fmlcore-1.20.1-47.2.20.jar is missing mods.toml file [06Oct2024 18:53:40.002] [main/WARN] [net.minecraftforge.fml.loading.moddiscovery.ModFileParser/LOADING]: Mod file /server/libraries/net/minecraftforge/javafmllanguage/1.20.1-47.2.20/javafmllanguage-1.20.1-47.2.20.jar is missing mods.toml file [06Oct2024 18:53:40.003] [main/WARN] [net.minecraftforge.fml.loading.moddiscovery.ModFileParser/LOADING]: Mod file /server/libraries/net/minecraftforge/lowcodelanguage/1.20.1-47.2.20/lowcodelanguage-1.20.1-47.2.20.jar is missing mods.toml file [06Oct2024 18:53:40.003] [main/WARN] [net.minecraftforge.fml.loading.moddiscovery.ModFileParser/LOADING]: Mod file /server/libraries/net/minecraftforge/mclanguage/1.20.1-47.2.20/mclanguage-1.20.1-47.2.20.jar is missing mods.toml file [06Oct2024 18:53:40.502] [main/WARN] [net.minecraftforge.jarjar.selection.JarSelector/]: Attempted to select two dependency jars from JarJar which have the same identification: Mod File: and Mod File: . Using Mod File: [06Oct2024 18:53:40.504] [main/WARN] [net.minecraftforge.jarjar.selection.JarSelector/]: Attempted to select a dependency jar for JarJar which was passed in as source: aeroblender. Using Mod File: /server/mods/aeroblender-1.20.1-1.0.1-neoforge.jar [06Oct2024 18:53:40.504] [main/WARN] [net.minecraftforge.jarjar.selection.JarSelector/]: Attempted to select a dependency jar for JarJar which was passed in as source: expandability. Using Mod File: /server/mods/expandability-9.0.4.jar [06Oct2024 18:53:40.504] [main/WARN] [net.minecraftforge.jarjar.selection.JarSelector/]: Attempted to select a dependency jar for JarJar which was passed in as source: curios. Using Mod File: /server/mods/curios-forge-5.10.0+1.20.1.jar [06Oct2024 18:53:40.504] [main/INFO] [net.minecraftforge.fml.loading.moddiscovery.JarInJarDependencyLocator/]: Found 15 dependencies adding them to mods collection [06Oct2024 18:53:48.289] [main/INFO] [mixin/]: Compatibility level set to JAVA_17 [06Oct2024 18:53:49.330] [main/INFO] [mixin/]: Successfully loaded Mixin Connector [io.izzel.arclight.common.mod.ArclightConnector] [06Oct2024 18:53:49.359] [main/INFO] [Arclight/]: Arclight core mixin added. [06Oct2024 18:53:49.362] [main/INFO] [Arclight/]: Arclight optimization mixin added. [06Oct2024 18:53:49.367] [main/INFO] [cpw.mods.modlauncher.LaunchServiceHandler/MODLAUNCHER]: Launching target 'arclightserver' with arguments [nogui] [06Oct2024 18:53:49.491] [main/INFO] [ModernFix/]: Loaded configuration file for ModernFix 5.19.4+mc1.20.1: 84 options available, 0 override(s) found [06Oct2024 18:53:49.492] [main/INFO] [ModernFix/]: Applying Nashorn fix [06Oct2024 18:53:49.544] [main/INFO] [ModernFix/]: Applied Forge config corruption patch [06Oct2024 18:53:49.646] [main/WARN] [mixin/]: Reference map 'expanded_ecosphere-forge-refmap.json' for wwoo.mixins.json could not be read. If this is a development environment you can ignore this message [06Oct2024 18:53:49.669] [main/WARN] [mixin/]: Reference map 'nitrogen_internals.refmap.json' for nitrogen_internals.mixins.json could not be read. If this is a development environment you can ignore this message [06Oct2024 18:53:49.845] [main/WARN] [mixin/]: Reference map 'AxesAreWeapons-forge-refmap.json' for axesareweapons.forge.mixins.json could not be read. If this is a development environment you can ignore this message [06Oct2024 18:53:49.957] [main/INFO] [Puzzles Lib/]: Loading 209 mods: - additionalbanners 14.0.4 - additionalstructures 4.2.2 - aeroblender 1.20.1-1.0.1-neoforge - aether 0.0NONE |-- cumulus_menus 0.0NONE |-- mixinextras 0.2.0-beta.9 \-- nitrogen_internals 0.0NONE - aether_protect_your_moa 1.20.1-1.0.0-neoforge - aether_villages 1.0.7 - aethersdelight 0.1.1-1.20.1 - alexsdelight 1.5 - alexsmobs 1.22.9 - amendments 1.20-1.2.11 - appleskin 2.5.1+mc1.20.1 - aquamirae 6.API15 - architectury 9.2.14 - arclight 1.20.1-1.0.6-SNAPSHOT-b2cde4a - armorstatues 8.0.6 |-- puzzlesaccessapi 8.0.7 \-- puzzlesapi 8.1.4 - artifacts 9.5.13 - axesareweapons 1.7.3 - backported_wolves 1.0.3-1.20.1 - bagus_lib 1.20.1-5.3.0 - balm 7.3.9 \-- kuma_api 20.1.8 - beekeeperhut 2.0.1 - bettercombat 1.8.6+1.20.1 - betterdeserttemples 1.20-Forge-3.0.3 - betterdungeons 1.20-Forge-4.0.4 - betterendisland 1.20-Forge-2.0.6 - betterfortresses 1.20-Forge-2.0.6 - betterjungletemples 1.20-Forge-2.0.5 - bettermineshafts 1.20-Forge-4.0.4 - betteroceanmonuments 1.20-Forge-3.0.4 - betterstrongholds 1.20-Forge-4.0.3 - bettertridents 8.0.1 - betterwitchhuts 1.20-Forge-3.0.3 - betterwithminecolonies 1.20-1.19.19 - bfendcities 1.0 - biome_backlog 1.3.0 - blockrunner 8.0.4 - blockui 1.20.1-1.0.186-beta - blueprint 7.1.0 - boatload 5.0.1 - bookshelf 20.2.13 - born_in_chaos_v1 1.0.0 - brutalbosses 1.20.1-7.1 - buzzier_bees 6.0.0 - bygonenether 1.3.2 - caelus 3.2.0+1.20.1 - cataclysm 2.05 - cataclysmiccombat 1.3.5 - caveore 1.20.1-3.7 - cavesanddepths 1.2.7 - charmofundying 6.5.0+1.20.1 \-- spectrelib 0.13.15+1.20.1 - charms 2.0.1-1.20.1 - chefsdelight 1.0.3-forge-1.20.1 - citadel 2.6.0 - clayworks 3.0.1 - cloth_config 11.1.136 - clumps 12.0.0.4 - cobweb 1.0.0 - collective 7.84 - comforts 6.4.0+1.20.1 - connectivity 1.20.1-5.6 - corgilib 4.0.3.2 - cosmeticarmorreworked 1.20.1-v1a - cristellib 1.1.5 - crittersandcompanions 1.20.1-2.1.7 - ctov 3.4.9b - cupboard 1.20.1-2.7 - curios 5.10.0+1.20.1 - curiosquarkobp 1.2.5 - curious_armor_stands 1.20-5.1.0 - curiouslanterns 1.20.1-1.3.3 - deep_aether 1.20.1-1.0.4 - deeperdarker 1.3.2 - domum_ornamentum 1.20.1-1.0.282-snapshot - dragonfight 1.20.1-4.6 - dragonmounts 1.2.3-beta - dynamiclights 1.20.1.2 - earthmobsmod 1.20.1-10.5.0 - easyanvils 8.0.2 - echochest 8.0.0 - elytraslot 6.4.4+1.20.1 \-- mixinsquared 0.1.2-beta.6 - enchantwithmob 1.20.1-11.13.1 - endrem 5.3.3-R-1.20.1 - ends_delight 2.4 - everycomp 1.20-2.6.80 - expandability 9.0.4 - expanded_ecosphere 3.2.4 - explorify 1.6.2 - farmersdelight 1.20.1-1.2.4 - ferritecore 6.0.1 - flowerymooblooms 2.0.2 - followersteleporttoo 2.6 - forge 47.2.20 - formations 1.0.2+a - formationsnether 1.0.5 - formationsoverworld 1.0.4 - friendsandfoes 3.0.3 - geckolib 4.4.9 - geode_plus 1.2.5 - guardvillagers 1.20.1-1.6.7 - hoporp 1.3.7 - hopour 1.1.4 - horsecombatcontrols 1.20.1-1.0.2 - hunters_return 1.20.1-11.5.0 - iceandfire 1.19.2-2.1.13+build.beta-2 - illagerinvasion 8.0.6 - immersive_armors 1.6.1+1.20.1 - immersive_weathering 1.20.1-2.0.3 - irons_spellbooks 1.20.1-3.4.0.2 - iter_rpg 0.7.3 - leaky 1.20.1-2.1 - lionfishapi 1.9 - lithostitched 1.3.0 - lolmha 2.0.0 - 1.20.1 - lootintegrationaddonyung 1.18-1.20.1-1.1 - lootintegrations 1.20.1-3.7 - luminoustag 1.0.0 - luminousworld 1.4.42 - magistuarmory 9.16 - mavapi 1.1.4 - mavm 1.2.6 - mcwbridges 3.0.0 - mcwdoors 1.1.1 - mcwfences 1.1.2 - mcwfurnitures 3.3.0 - mcwlights 1.1.0 - mcwpaintings 1.0.5 - mcwpaths 1.0.5 - mcwroofs 2.3.1 - mcwtrpdoors 1.1.3 - mcwwindows 2.3.0 - minecolonies 1.20.1-1.1.683-snapshot - minecolonies_compatibility 2.43 - minecolonies_tweaks 2.36 - minecraft 1.20.1 - modernfix 5.19.4+mc1.20.1 - moonlight 1.20-2.13.3 - moreadvancementsmod 1.3.0-1.20.1 - moremobvariants 1.3.0.1 - mowziesdelight 1.0.3.1-1.20.1 - mowziesmobs 1.6.4 - mr_ctov_domesticatedinnovationcompat 2.0 - mr_ctov_farmersdelightcompat 2.1 - mr_ctov_friendsandfoescompat 2.0 - mr_ctov_ironsspellsnspellbookscompat 1.2 - multipiston 1.20-1.2.43-RELEASE - nameless_trinkets 1.20.1-1.7.8 - netherdepthsupgrade 3.1.5-1.20 - nethersdelight 1.20.1-4.0 - obscure_api 15 - onlyhammersandexcavators 1.20.1-0.3 - openpartiesandclaims 0.23.2 - personality 4.0.0 - pet_cemetery 2.0.0 - phantasm 0.4.1 - philipsruins 4.6 - playeranimator 1.0.2-rc1+1.20 - polymorph 0.49.5+1.20.1 - proplacer 8.0.2 - puzzleslib 8.1.24 - quark 4.0-460 - quarkoddities 1.20.1 - radiantgear 2.1.5+1.20.1 - resource_ghouls 1.8.0 - sawmill 1.20-1.4.3 - sereneseasons 9.0.0.46 - simple_weapons 1.4.4 - simplecorinthium 1.2.2 - smoothchunk 1.20.1-3.6 - sophisticatedbackpacks 3.20.11.1115 - sophisticatedcore 0.6.33.711 - soul_fire_d 4.0.4 - spelunkers_charm 3.6.0 - stoneworks 8.0.0 - strongersnowballs 13.0.2 - structureessentials 1.20.1-3.4 - structurize 1.20.1-1.0.760-snapshot - supplementaries 1.20-2.8.17 - swordblockingmechanics 8.0.1 - t_and_t 0.0NONE - terrablender 3.0.1.7 - the_fletching_table_mod 1.3 - totw_additions 1.3.1 - totw_modded 1.0.5 - towntalk 1.1.0 - treechop 0.19.0 - twilightdelight 2.0.12 \-- l2library 2.4.16 - twilightforest 4.3.2508 - upgrade_aquatic 6.0.1 - valhelsia_core 1.1.2 - valhelsia_structures 1.20.1-1.1.2 - villagernames 8.1 - w2w2 1.0 - waystones 14.1.5 - woodworks 3.0.1 - wwoo_forge 2.0.0 - xaerominimap 24.5.0 - xaeroworldmap 1.39.0 - yungsapi 1.20-Forge-4.0.6 - yungsbridges 1.20-Forge-4.0.3 - zeta 1.0-24 [06Oct2024 18:53:49.973] [main/WARN] [mixin/]: Reference map 'Aquamirae.refmap.json' for aquamirae.mixins.json could not be read. If this is a development environment you can ignore this message [06Oct2024 18:53:49.980] [main/WARN] [mixin/]: Reference map 'cristellib-forge-refmap.json' for cristellib.mixins.json could not be read. If this is a development environment you can ignore this message [06Oct2024 18:53:50.064] [main/WARN] [mixin/]: Reference map 'cobweb.refmap.json' for cobweb.mixins.json could not be read. If this is a development environment you can ignore this message [06Oct2024 18:53:50.066] [main/WARN] [mixin/]: Reference map 'cobweb.refmap.json' for cobweb.forge.mixins.json could not be read. If this is a development environment you can ignore this message [06Oct2024 18:53:50.287] [main/WARN] [mixin/]: Reference map 'netherdepthsupgrade.refmap.json' for netherdepthsupgrade.mixins.json could not be read. If this is a development environment you can ignore this message [06Oct2024 18:53:53.145] [main/WARN] [mixin/]: Error loading class: com/legacy/lost_aether/entity/AerwhaleKingEntity (java.lang.ClassNotFoundException: com.legacy.lost_aether.entity.AerwhaleKingEntity) [06Oct2024 18:53:53.588] [main/ERROR] [net.minecraftforge.fml.loading.RuntimeDistCleaner/DISTXFORM]: Attempted to load class com/minecolonies/core/compatibility/jei/GenericRecipeCategory for invalid dist DEDICATED_SERVER [06Oct2024 18:53:53.589] [main/WARN] [mixin/]: Error loading class: com/minecolonies/core/compatibility/jei/GenericRecipeCategory (java.lang.RuntimeException: Attempted to load class com/minecolonies/core/compatibility/jei/GenericRecipeCategory for invalid dist DEDICATED_SERVER) [06Oct2024 18:53:53.589] [main/WARN] [mixin/]: @Mixin target com.minecolonies.core.compatibility.jei.GenericRecipeCategory was not found minecolonies_compatibility.mixin.common.json:minecolonies.GenericRecipeCategoryMixin [06Oct2024 18:53:53.640] [main/WARN] [mixin/]: Error loading class: com/legacy/blue_skies/blocks/natural/BrewberryBushBlock (java.lang.ClassNotFoundException: com.legacy.blue_skies.blocks.natural.BrewberryBushBlock) [06Oct2024 18:53:53.640] [main/WARN] [mixin/]: @Mixin target com.legacy.blue_skies.blocks.natural.BrewberryBushBlock was not found minecolonies_compatibility.mixin.common.json:blue_skies.BrewberryBushBlockAccessor [06Oct2024 18:53:53.645] [main/WARN] [mixin/]: Error loading class: com/cobblemon/mod/common/block/BerryBlock (java.lang.ClassNotFoundException: com.cobblemon.mod.common.block.BerryBlock) [06Oct2024 18:53:53.645] [main/WARN] [mixin/]: @Mixin target com.cobblemon.mod.common.block.BerryBlock was not found minecolonies_compatibility.mixin.common.json:cobblemon.BerryBlockAccessor [06Oct2024 18:53:53.654] [main/WARN] [mixin/]: Error loading class: com/lothrazar/cyclic/block/apple/AppleCropBlock (java.lang.ClassNotFoundException: com.lothrazar.cyclic.block.apple.AppleCropBlock) [06Oct2024 18:53:53.654] [main/WARN] [mixin/]: @Mixin target com.lothrazar.cyclic.block.apple.AppleCropBlock was not found minecolonies_compatibility.mixin.common.json:cyclic.AppleCropBlockAccessor [06Oct2024 18:53:53.659] [main/WARN] [mixin/]: Error loading class: com/mrbysco/oreberriesreplanted/block/OreBerryBushBlock (java.lang.ClassNotFoundException: com.mrbysco.oreberriesreplanted.block.OreBerryBushBlock) [06Oct2024 18:53:53.659] [main/WARN] [mixin/]: @Mixin target com.mrbysco.oreberriesreplanted.block.OreBerryBushBlock was not found minecolonies_compatibility.mixin.common.json:oreberries.OreBerryBushBlockAccessor [06Oct2024 18:53:53.664] [main/WARN] [mixin/]: Error loading class: reliquary/items/HandgunItem (java.lang.ClassNotFoundException: reliquary.items.HandgunItem) [06Oct2024 18:53:53.664] [main/WARN] [mixin/]: @Mixin target reliquary.items.HandgunItem was not found minecolonies_compatibility.mixin.common.json:reliquary.HandgunItemAccessor [06Oct2024 18:53:53.669] [main/WARN] [mixin/]: Error loading class: reliquary/entities/shot/NeutralShotEntity (java.lang.ClassNotFoundException: reliquary.entities.shot.NeutralShotEntity) [06Oct2024 18:53:53.669] [main/WARN] [mixin/]: @Mixin target reliquary.entities.shot.NeutralShotEntity was not found minecolonies_compatibility.mixin.common.json:reliquary.NeutralShotEntityMixin [06Oct2024 18:53:53.674] [main/WARN] [mixin/]: Error loading class: com/lothrazar/storagenetwork/block/main/NetworkModule (java.lang.ClassNotFoundException: com.lothrazar.storagenetwork.block.main.NetworkModule) [06Oct2024 18:53:53.674] [main/WARN] [mixin/]: @Mixin target com.lothrazar.storagenetwork.block.main.NetworkModule was not found minecolonies_compatibility.mixin.common.json:storagenetwork.NetworkModuleAccessor [06Oct2024 18:53:53.678] [main/WARN] [mixin/]: Error loading class: com/lothrazar/storagenetwork/util/UtilConnections (java.lang.ClassNotFoundException: com.lothrazar.storagenetwork.util.UtilConnections) [06Oct2024 18:53:53.678] [main/WARN] [mixin/]: @Mixin target com.lothrazar.storagenetwork.util.UtilConnections was not found minecolonies_compatibility.mixin.common.json:storagenetwork.UtilConnectionsMixin [06Oct2024 18:53:53.683] [main/WARN] [mixin/]: Error loading class: cofh/lib/common/block/CropBlockCoFH (java.lang.ClassNotFoundException: cofh.lib.common.block.CropBlockCoFH) [06Oct2024 18:53:53.683] [main/WARN] [mixin/]: @Mixin target cofh.lib.common.block.CropBlockCoFH was not found minecolonies_compatibility.mixin.common.json:thermal.CropBlockCoFHAccessor [06Oct2024 18:53:54.080] [main/INFO] [com.cupboard.Cupboard/]: Loaded config for: structureessentials.json [06Oct2024 18:53:54.236] [main/WARN] [mixin/]: Error loading class: net/minecraft/client/model/geom/builders/LayerDefinition (java.lang.ClassNotFoundException: net.minecraft.client.model.geom.builders.LayerDefinition) [06Oct2024 18:53:54.236] [main/WARN] [mixin/]: @Mixin target net.minecraft.client.model.geom.builders.LayerDefinition was not found aether_protect_your_moa.mixins.json:client.accessor.LayerDefinitionAccessor [06Oct2024 18:53:54.351] [main/WARN] [mixin/]: Error loading class: net/minecraft/client/renderer/entity/PhantomRenderer (java.lang.ClassNotFoundException: net.minecraft.client.renderer.entity.PhantomRenderer) [06Oct2024 18:53:54.351] [main/WARN] [mixin/]: @Mixin target net.minecraft.client.renderer.entity.PhantomRenderer was not found mixins.deeperdarker.json:PhantomRendererMixin [06Oct2024 18:53:55.165] [main/WARN] [mixin/]: Error loading class: noobanidus/mods/lootr/config/ConfigManager (java.lang.ClassNotFoundException: noobanidus.mods.lootr.config.ConfigManager) [06Oct2024 18:53:57.039] [main/INFO] [MixinExtras|Service/]: Initializing MixinExtras via com.llamalad7.mixinextras.service.MixinExtrasServiceImpl(version=0.4.0). [06Oct2024 18:53:57.861] [main/INFO] [net.minecraft.server.Bootstrap/]: ModernFix reached bootstrap stage (24.02 s after launch) [06Oct2024 18:53:57.999] [main/WARN] [mixin/]: @Final field delegatesByName:Ljava/util/Map; in modernfix-forge.mixins.json:perf.forge_registry_alloc.ForgeRegistryMixin should be final [06Oct2024 18:53:58.000] [main/WARN] [mixin/]: @Final field delegatesByValue:Ljava/util/Map; in modernfix-forge.mixins.json:perf.forge_registry_alloc.ForgeRegistryMixin should be final [06Oct2024 18:53:58.647] [main/WARN] [mixin/]: @Redirect conflict. Skipping mixins.arclight.core.json:world.entity.EntityMixin->@Redirect::arclight$setOnFireFromLava$bukkitEvent(Lnet/minecraft/world/entity/Entity;I)V with priority 500, already redirected by soul_fire_d.mixins.json:EntityMixin->@Redirect::redirectSetSecondsOnFire(Lnet/minecraft/world/entity/Entity;I)V with priority 1000  
    • idk why mine was flagged, like i said earlier it didn't give him a crash report because it never opened the MC launcher!
    • Si o El Dda adareklama reklamowa adreklama reklamowa reklama reklamowa
    • Jestem koksem pvp  
  • Topics

×
×
  • Create New...

Important Information

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