IzzelAliz / Arclight

A Bukkit(1.19/1.20) server implementation in modding environment using Mixin. ⚡
GNU General Public License v3.0
1.56k stars 230 forks source link

1.14/1.15 Error in remapper: value already present in internal BiMap cache: canPickUpLoot #42

Closed bergerkiller closed 4 years ago

bergerkiller commented 4 years ago

I am running

Description

While initializing BKCommonLib it's trying to interpret the server environment by reading the classes and declared fields inside those classes. When it calls java.lang.reflect.Field.getName(), this sometimes causes an exception to be thrown from deep inside the class loader remapper.

This happens for example with the following fields:

Similar error happens for:

java.lang.IllegalArgumentException: value already present: ZERO

Step to reproduce

  1. Install BKCommonLib
  2. Boot up
  3. Error

Reproducible in Forge N

Reproducible in Spigot N

Logs

java.lang.IllegalArgumentException: value already present: canPickUpLoot
    at com.google.common.collect.HashBiMap.put(HashBiMap.java:287) ~[arclight-forge-1.15-1.0.7.jar:arclight-1.15.2-1.0.7-ee37072] {}
    at com.google.common.collect.HashBiMap.put(HashBiMap.java:262) ~[arclight-forge-1.15-1.0.7.jar:arclight-1.15.2-1.0.7-ee37072] {}
    at io.izzel.arclight.common.mod.util.remapper.ClassLoaderRemapper.tryGetFields(ClassLoaderRemapper.java:125) ~[?:arclight-1.15.2-1.0.7-ee37072] {re:mixin,re:classloading}
    (...)
Failed to retrieve field name alias for net.minecraft.util.math.BlockPos:field_177994_h:
java.lang.IllegalArgumentException: value already present: canPickUpLoot
    at com.google.common.collect.HashBiMap.put(HashBiMap.java:287) ~[arclight-forge-1.15-1.0.7.jar:arclight-1.15.2-1.0.7-ee37072] {}
    at com.google.common.collect.HashBiMap.put(HashBiMap.java:262) ~[arclight-forge-1.15-1.0.7.jar:arclight-1.15.2-1.0.7-ee37072] {}
    at io.izzel.arclight.common.mod.util.remapper.ClassLoaderRemapper.tryGetFields(ClassLoaderRemapper.java:125) ~[?:arclight-1.15.2-1.0.7-ee37072] {re:mixin,re:classloading}
    at io.izzel.arclight.common.mod.util.remapper.ClassLoaderRemapper.lambda$getFields$1(ClassLoaderRemapper.java:114) ~[?:arclight-1.15.2-1.0.7-ee37072] {re:mixin,re:classloading}
    at java.util.concurrent.ConcurrentHashMap.computeIfAbsent(Unknown Source) ~[?:1.8.0_201] {}
    at io.izzel.arclight.common.mod.util.remapper.ClassLoaderRemapper.getFields(ClassLoaderRemapper.java:114) ~[?:arclight-1.15.2-1.0.7-ee37072] {re:mixin,re:classloading}
    at io.izzel.arclight.common.mod.util.remapper.ClassLoaderRemapper.tryMapFieldToBukkit(ClassLoaderRemapper.java:180) ~[?:arclight-1.15.2-1.0.7-ee37072] {re:mixin,re:classloading}
    at io.izzel.arclight.common.mod.util.remapper.generated.ArclightReflectionHandler_0.redirectFieldGetName(ArclightReflectionHandler.java:69) ~[?:arclight-1.15.2-1.0.7-ee37072] {}
    at com.bergerkiller.mountiplex.reflection.declarations.FieldDeclaration.(FieldDeclaration.java:51) [BKCommonLib-1.16.2-v1-SNAPSHOT.jar:?] {re:classloading}
    at com.bergerkiller.mountiplex.reflection.declarations.ClassDeclaration.resolveFields(ClassDeclaration.java:221) [BKCommonLib-1.16.2-v1-SNAPSHOT.jar:?] {re:classloading}
    at com.bergerkiller.mountiplex.reflection.declarations.ClassDeclaration.(ClassDeclaration.java:202) [BKCommonLib-1.16.2-v1-SNAPSHOT.jar:?] {re:classloading}
    at com.bergerkiller.mountiplex.reflection.declarations.Declaration.nextClass(Declaration.java:86) [BKCommonLib-1.16.2-v1-SNAPSHOT.jar:?] {re:classloading}
    at com.bergerkiller.mountiplex.reflection.declarations.SourceDeclaration.(SourceDeclaration.java:186) [BKCommonLib-1.16.2-v1-SNAPSHOT.jar:?] {re:classloading}
    at com.bergerkiller.mountiplex.reflection.declarations.SourceDeclaration.(SourceDeclaration.java:173) [BKCommonLib-1.16.2-v1-SNAPSHOT.jar:?] {re:classloading}
    at com.bergerkiller.mountiplex.reflection.declarations.SourceDeclaration.(SourceDeclaration.java:173) [BKCommonLib-1.16.2-v1-SNAPSHOT.jar:?] {re:classloading}
    at com.bergerkiller.mountiplex.reflection.declarations.SourceDeclaration.parseFromResources(SourceDeclaration.java:418) [BKCommonLib-1.16.2-v1-SNAPSHOT.jar:?] {re:classloading}
    at com.bergerkiller.templates.TemplateResolver.load(TemplateResolver.java:97) [BKCommonLib-1.16.2-v1-SNAPSHOT.jar:?] {re:classloading}
    at com.bergerkiller.bukkit.common.internal.CommonBootstrap.initTemplates(CommonBootstrap.java:164) [BKCommonLib-1.16.2-v1-SNAPSHOT.jar:?] {re:classloading}
    at com.bergerkiller.bukkit.common.Common.(Common.java:116) [BKCommonLib-1.16.2-v1-SNAPSHOT.jar:?] {re:classloading}
    at com.bergerkiller.bukkit.common.internal.CommonPlugin.onLoad(CommonPlugin.java:382) [BKCommonLib-1.16.2-v1-SNAPSHOT.jar:?] {re:classloading}
    at org.bukkit.craftbukkit.v1_15_R1.CraftServer.loadPlugins(CraftServerMixin.java:358) [?:arclight-1.15.2-1.0.7-ee37072] {re:mixin,re:classloading,pl:mixin:APP:mixins.arclight.bukkit.json:CraftServerMixin,pl:mixin:A,re:mixin}
    at net.minecraft.server.dedicated.DedicatedServer.handler$zon000$arclight$loadPlugins(DedicatedServerMixin.java:650) [?:?] {re:mixin,pl:accesstransformer:B,re:classloading,pl:accesstransformer:B,pl:mixin:APP:mixins.arclight.core.json:server.dedicated.DedicatedServerMixin,pl:mixin:A}
    at net.minecraft.server.dedicated.DedicatedServer.func_71197_b(DedicatedServerMixin.java:182) [?:?] {re:mixin,pl:accesstransformer:B,re:classloading,pl:accesstransformer:B,pl:mixin:APP:mixins.arclight.core.json:server.dedicated.DedicatedServerMixin,pl:mixin:A}
    at net.minecraft.server.MinecraftServer.run(MinecraftServerMixin.java:1932) [?:?] {re:classloading,pl:accesstransformer:B,re:mixin,pl:accesstransformer:B,pl:runtimedistcleaner:A,pl:mixin:A,pl:runtimedistcleaner:A,re:mixin,pl:accesstransformer:B,pl:runtimedistcleaner:A}
    at java.lang.Thread.run(Unknown Source) [?:1.8.0_201] {}

Similar for ZERO:

Failed to retrieve field name alias for net.minecraft.util.math.BlockPos:field_177990_b:
java.lang.IllegalArgumentException: value already present: ZERO
    at com.google.common.collect.HashBiMap.put(HashBiMap.java:287) ~[arclight-forge-1.15-1.0.7.jar:arclight-1.15.2-1.0.7-ee37072] {}
    at com.google.common.collect.HashBiMap.put(HashBiMap.java:262) ~[arclight-forge-1.15-1.0.7.jar:arclight-1.15.2-1.0.7-ee37072] {}
    at io.izzel.arclight.common.mod.util.remapper.ClassLoaderRemapper.tryGetFields(ClassLoaderRemapper.java:122) ~[?:arclight-1.15.2-1.0.7-ee37072] {re:mixin,re:classloading}
    at io.izzel.arclight.common.mod.util.remapper.ClassLoaderRemapper.lambda$getFields$1(ClassLoaderRemapper.java:114) ~[?:arclight-1.15.2-1.0.7-ee37072] {re:mixin,re:classloading}
    at java.util.concurrent.ConcurrentHashMap.computeIfAbsent(Unknown Source) ~[?:1.8.0_201] {}
    at io.izzel.arclight.common.mod.util.remapper.ClassLoaderRemapper.getFields(ClassLoaderRemapper.java:114) ~[?:arclight-1.15.2-1.0.7-ee37072] {re:mixin,re:classloading}
    at io.izzel.arclight.common.mod.util.remapper.ClassLoaderRemapper.tryMapFieldToBukkit(ClassLoaderRemapper.java:180) ~[?:arclight-1.15.2-1.0.7-ee37072] {re:mixin,re:classloading}
    at io.izzel.arclight.common.mod.util.remapper.generated.ArclightReflectionHandler_0.redirectFieldGetName(ArclightReflectionHandler.java:69) ~[?:arclight-1.15.2-1.0.7-ee37072] {}
    at com.bergerkiller.mountiplex.reflection.declarations.FieldDeclaration.(FieldDeclaration.java:51) [BKCommonLib-1.16.2-v1-SNAPSHOT.jar:?] {re:classloading}
    at com.bergerkiller.mountiplex.reflection.declarations.ClassDeclaration.resolveFields(ClassDeclaration.java:221) [BKCommonLib-1.16.2-v1-SNAPSHOT.jar:?] {re:classloading}
    at com.bergerkiller.mountiplex.reflection.declarations.ClassDeclaration.(ClassDeclaration.java:202) [BKCommonLib-1.16.2-v1-SNAPSHOT.jar:?] {re:classloading}
    at com.bergerkiller.mountiplex.reflection.declarations.Declaration.nextClass(Declaration.java:86) [BKCommonLib-1.16.2-v1-SNAPSHOT.jar:?] {re:classloading}
    at com.bergerkiller.mountiplex.reflection.declarations.SourceDeclaration.(SourceDeclaration.java:186) [BKCommonLib-1.16.2-v1-SNAPSHOT.jar:?] {re:classloading}
    at com.bergerkiller.mountiplex.reflection.declarations.SourceDeclaration.(SourceDeclaration.java:173) [BKCommonLib-1.16.2-v1-SNAPSHOT.jar:?] {re:classloading}
    at com.bergerkiller.mountiplex.reflection.declarations.SourceDeclaration.(SourceDeclaration.java:173) [BKCommonLib-1.16.2-v1-SNAPSHOT.jar:?] {re:classloading}
    at com.bergerkiller.mountiplex.reflection.declarations.SourceDeclaration.parseFromResources(SourceDeclaration.java:418) [BKCommonLib-1.16.2-v1-SNAPSHOT.jar:?] {re:classloading}
    at com.bergerkiller.templates.TemplateResolver.load(TemplateResolver.java:97) [BKCommonLib-1.16.2-v1-SNAPSHOT.jar:?] {re:classloading}
    at com.bergerkiller.bukkit.common.internal.CommonBootstrap.initTemplates(CommonBootstrap.java:164) [BKCommonLib-1.16.2-v1-SNAPSHOT.jar:?] {re:classloading}
    at com.bergerkiller.bukkit.common.Common.(Common.java:116) [BKCommonLib-1.16.2-v1-SNAPSHOT.jar:?] {re:classloading}
    at com.bergerkiller.bukkit.common.internal.CommonPlugin.onLoad(CommonPlugin.java:382) [BKCommonLib-1.16.2-v1-SNAPSHOT.jar:?] {re:classloading}
    at org.bukkit.craftbukkit.v1_15_R1.CraftServer.loadPlugins(CraftServerMixin.java:358) [?:arclight-1.15.2-1.0.7-ee37072] {re:mixin,re:classloading,pl:mixin:APP:mixins.arclight.bukkit.json:CraftServerMixin,pl:mixin:A,re:mixin}
    at net.minecraft.server.dedicated.DedicatedServer.handler$zon000$arclight$loadPlugins(DedicatedServerMixin.java:650) [?:?] {re:mixin,pl:accesstransformer:B,re:classloading,pl:accesstransformer:B,pl:mixin:APP:mixins.arclight.core.json:server.dedicated.DedicatedServerMixin,pl:mixin:A}
    at net.minecraft.server.dedicated.DedicatedServer.func_71197_b(DedicatedServerMixin.java:182) [?:?] {re:mixin,pl:accesstransformer:B,re:classloading,pl:accesstransformer:B,pl:mixin:APP:mixins.arclight.core.json:server.dedicated.DedicatedServerMixin,pl:mixin:A}
    at net.minecraft.server.MinecraftServer.run(MinecraftServerMixin.java:1932) [?:?] {re:classloading,pl:accesstransformer:B,re:mixin,pl:accesstransformer:B,pl:runtimedistcleaner:A,pl:mixin:A,pl:runtimedistcleaner:A,re:mixin,pl:accesstransformer:B,pl:runtimedistcleaner:A}
    at java.lang.Thread.run(Unknown Source) [?:1.8.0_201] {}
IzzelAliz commented 4 years ago

Thank you for your report. Working on it.

IzzelAliz commented 4 years ago

Fixed, though more errors are printed. If you need help (some helper methods, more remap rules), feel free to contact me.

Thanks for making extra compatibility for this project.