BentoBoxWorld / Challenges

Add-on for BentoBox to add challenges for BSkyBlock and AcidIsland
Eclipse Public License 2.0
13 stars 33 forks source link

Non-translation of renamed items #345

Closed CuteLittleSky closed 3 months ago

CuteLittleSky commented 3 months ago

Is your feature request related to a problem?

Renamed items will be replaced with the original name of the item after using this replacement, is it possible to detect when an item has been renamed and not replace it? (Because Slimefun's items are all original items with NBT)

Describe the solution you'd like.

Non-translation of renamed items

Describe alternatives you've considered.

none

Agreements

Other

No response

tastybento commented 3 months ago

I'm sorry but I do not understand the problem. Can you give more information? I don't understand how this is related to BentoBox.

CuteLittleSky commented 3 months ago

I'm sorry but I do not understand the problem. Can you give more information? I don't understand how this is related to BentoBox.

In Bentobox/plugins/locales/Challenges/zh-CN.yml add:

materials:
  book: 书

The Chinese translation of Book is "书". If you rename Book to "粘液科技指南" by using an anvil or other means, it will still be displayed "书" in /is challenges GUI.This will affect Slimefun or other plugins that rename items.

From en-US.yml notes:

#    # Showcase for manual material translation
#    materials:
#        # Names should be lowercase.
#        cobblestone: "Cobblestone"
BONNe commented 3 months ago

https://github.com/BentoBoxWorld/Challenges/blob/7fb20e74f38417362806aac8bfd3278519df9cad/src/main/java/world/bentobox/challenges/utils/Utils.java#L565

Probably before parsing item translation, we could add a code that checks if display name is set.

The display name is stored in ItemMeta, and it has a method hasDisplayName and getDisplayName

This should still allow all translation keys, but items with display name would be kept as they are.

tastybento commented 3 months ago

Yes, that sounds like a great idea. Should this be a common BentoBox thing, @BONNe ? Is it possible?

BONNe commented 3 months ago

Ideally, we would want Utils that translate things in BentoBox core. As currently every addon has it's own Util implementation.

We had this LibraryLang or something like that, but to my knowledge, it does not work or is not updating.

We could make that util method from Challenges addon to BentoBox, and use it in every addon, instead of having translation in addon file, it would be in core bentobox file.

Or maybe we could introduce a new translation file: locales/Minecraft that would store all translations in other languages. Currently, it uses Spigot constants, but if we have a separate file, we could use Minecraft translationsKey, and Util method would just match item with a proper translation key. I think all things have translation keys and it would be easier for anyone to translate things.

I would prefer to have the Minecraft folder.

tastybento commented 3 months ago

I did a PR for Challenges to skip objects that already have a display name. If that works, then I think we can start to move some of these generic Utils into BentoBox.

@CuteLittleSky Please try the latest SNAPSHOT from ci.bentobox.world and let me know if that worked.

CuteLittleSky commented 3 months ago

I did a PR for Challenges to skip objects that already have a display name. If that works, then I think we can start to move some of these generic Utils into BentoBox.

@CuteLittleSky Please try the latest SNAPSHOT from ci.bentobox.world and let me know if that worked.

It works, I tested it myself using the same method.

Edit: I tested b548,It works perfectly.

But there seems to be a problem with the Challenges build test. I get an error when I use mvn clean package:

[ERROR] Tests run: 17, Failures: 0, Errors: 8, Skipped: 0, Time elapsed: 9.071 s <<< FAILURE! - in world.bentobox.challenges.ChallengesAddonTest
[ERROR] world.bentobox.challenges.ChallengesAddonTest.testGetChallengesManager  Time elapsed: 0.396 s  <<< ERROR!
java.lang.IllegalArgumentException: The embedded resource 'panels/main_panel.yml' cannot be found in addon.jar
        at world.bentobox.challenges.ChallengesAddonTest.testOnEnableHooked(ChallengesAddonTest.java:298)
        at world.bentobox.challenges.ChallengesAddonTest.testGetChallengesManager(ChallengesAddonTest.java:353)

[ERROR] world.bentobox.challenges.ChallengesAddonTest.testOnEnableNotHooked  Time elapsed: 0.04 s  <<< ERROR!
java.lang.IllegalArgumentException: The embedded resource 'panels/main_panel.yml' cannot be found in addon.jar
        at world.bentobox.challenges.ChallengesAddonTest.testOnEnableNotHooked(ChallengesAddonTest.java:312)

[ERROR] world.bentobox.challenges.ChallengesAddonTest.testGetChallengesSettings  Time elapsed: 0.034 s  <<< ERROR!
java.lang.IllegalArgumentException: The embedded resource 'panels/main_panel.yml' cannot be found in addon.jar
        at world.bentobox.challenges.ChallengesAddonTest.testGetChallengesSettings(ChallengesAddonTest.java:391)

[ERROR] world.bentobox.challenges.ChallengesAddonTest.testGetImportManager  Time elapsed: 0.035 s  <<< ERROR!
java.lang.IllegalArgumentException: The embedded resource 'panels/main_panel.yml' cannot be found in addon.jar
        at world.bentobox.challenges.ChallengesAddonTest.testOnEnableHooked(ChallengesAddonTest.java:298)
        at world.bentobox.challenges.ChallengesAddonTest.testGetImportManager(ChallengesAddonTest.java:371)

[ERROR] world.bentobox.challenges.ChallengesAddonTest.testOnEnableHooked  Time elapsed: 0.039 s  <<< ERROR!
java.lang.IllegalArgumentException: The embedded resource 'panels/main_panel.yml' cannot be found in addon.jar
        at world.bentobox.challenges.ChallengesAddonTest.testOnEnableHooked(ChallengesAddonTest.java:298)

[ERROR] world.bentobox.challenges.ChallengesAddonTest.testOnLoad  Time elapsed: 0.036 s  <<< ERROR!
java.lang.IllegalArgumentException: The embedded resource 'panels/main_panel.yml' cannot be found in addon.jar
        at world.bentobox.challenges.ChallengesAddonTest.testOnLoad(ChallengesAddonTest.java:249)

[ERROR] world.bentobox.challenges.ChallengesAddonTest.testOnDisable  Time elapsed: 0.056 s  <<< ERROR!
java.lang.IllegalArgumentException: The embedded resource 'panels/main_panel.yml' cannot be found in addon.jar
        at world.bentobox.challenges.ChallengesAddonTest.testOnEnableHooked(ChallengesAddonTest.java:298)
        at world.bentobox.challenges.ChallengesAddonTest.testOnDisable(ChallengesAddonTest.java:336)

[ERROR] world.bentobox.challenges.ChallengesAddonTest.testGetWebManager  Time elapsed: 0.044 s  <<< ERROR!
java.lang.IllegalArgumentException: The embedded resource 'panels/main_panel.yml' cannot be found in addon.jar
        at world.bentobox.challenges.ChallengesAddonTest.testOnEnableHooked(ChallengesAddonTest.java:298)
        at world.bentobox.challenges.ChallengesAddonTest.testGetWebManager(ChallengesAddonTest.java:381)

[INFO] Running world.bentobox.challenges.ChallengesManagerTest
[ERROR] Tests run: 52, Failures: 12, Errors: 0, Skipped: 1, Time elapsed: 19.728 s <<< FAILURE! - in world.bentobox.challenges.ChallengesManagerTest
[ERROR] world.bentobox.challenges.ChallengesManagerTest.testLoad  Time elapsed: 1.115 s  <<< FAILURE!
java.lang.AssertionError
        at world.bentobox.challenges.ChallengesManagerTest.testLoad(ChallengesManagerTest.java:230)

[ERROR] world.bentobox.challenges.ChallengesManagerTest.testWipeDatabase  Time elapsed: 1.053 s  <<< FAILURE!
java.lang.AssertionError
        at world.bentobox.challenges.ChallengesManagerTest.testLoad(ChallengesManagerTest.java:230)
        at world.bentobox.challenges.ChallengesManagerTest.testWipeDatabase(ChallengesManagerTest.java:361)

[ERROR] world.bentobox.challenges.ChallengesManagerTest.testWipePlayers  Time elapsed: 1.051 s  <<< FAILURE!
java.lang.AssertionError
        at world.bentobox.challenges.ChallengesManagerTest.testLoad(ChallengesManagerTest.java:230)
        at world.bentobox.challenges.ChallengesManagerTest.testWipePlayers(ChallengesManagerTest.java:397)

[ERROR] world.bentobox.challenges.ChallengesManagerTest.testReload  Time elapsed: 1.052 s  <<< FAILURE!
java.lang.AssertionError
        at world.bentobox.challenges.ChallengesManagerTest.testReload(ChallengesManagerTest.java:246)

[ERROR] world.bentobox.challenges.ChallengesManagerTest.testGetChallenge  Time elapsed: 1.054 s  <<< FAILURE!
java.lang.AssertionError
        at world.bentobox.challenges.ChallengesManagerTest.testGetChallenge(ChallengesManagerTest.java:731)

[ERROR] world.bentobox.challenges.ChallengesManagerTest.testDeleteChallenge  Time elapsed: 1.037 s  <<< FAILURE!
java.lang.AssertionError
        at world.bentobox.challenges.ChallengesManagerTest.testDeleteChallenge(ChallengesManagerTest.java:763)

[ERROR] world.bentobox.challenges.ChallengesManagerTest.testAddChallengeToLevel  Time elapsed: 1.053 s  <<< FAILURE!
java.lang.AssertionError
        at world.bentobox.challenges.ChallengesManagerTest.testLoad(ChallengesManagerTest.java:230)
        at world.bentobox.challenges.ChallengesManagerTest.testAddChallengeToLevel(ChallengesManagerTest.java:817)

[ERROR] world.bentobox.challenges.ChallengesManagerTest.testDeleteChallengeLevel  Time elapsed: 1.058 s  <<< FAILURE!
java.lang.AssertionError
        at world.bentobox.challenges.ChallengesManagerTest.testLoad(ChallengesManagerTest.java:230)
        at world.bentobox.challenges.ChallengesManagerTest.testAddChallengeToLevel(ChallengesManagerTest.java:817)
        at world.bentobox.challenges.ChallengesManagerTest.testDeleteChallengeLevel(ChallengesManagerTest.java:852)

[ERROR] world.bentobox.challenges.ChallengesManagerTest.testRemoveChallengeFromLevel  Time elapsed: 1.05 s  <<< FAILURE!
java.lang.AssertionError
        at world.bentobox.challenges.ChallengesManagerTest.testLoad(ChallengesManagerTest.java:230)
        at world.bentobox.challenges.ChallengesManagerTest.testAddChallengeToLevel(ChallengesManagerTest.java:817)
        at world.bentobox.challenges.ChallengesManagerTest.testRemoveChallengeFromLevel(ChallengesManagerTest.java:830)

[ERROR] world.bentobox.challenges.ChallengesManagerTest.testGetLevelChallenges  Time elapsed: 1.042 s  <<< FAILURE!
java.lang.AssertionError
        at world.bentobox.challenges.ChallengesManagerTest.testGetLevelChallenges(ChallengesManagerTest.java:717)

[ERROR] world.bentobox.challenges.ChallengesManagerTest.testHasAnyChallengeDataWorld  Time elapsed: 1.061 s  <<< FAILURE!
java.lang.AssertionError
        at world.bentobox.challenges.ChallengesManagerTest.testLoad(ChallengesManagerTest.java:230)
        at world.bentobox.challenges.ChallengesManagerTest.testHasAnyChallengeDataWorld(ChallengesManagerTest.java:865)

[ERROR] world.bentobox.challenges.ChallengesManagerTest.testHasAnyChallengeDataString  Time elapsed: 1.047 s  <<< FAILURE!
java.lang.AssertionError
        at world.bentobox.challenges.ChallengesManagerTest.testLoad(ChallengesManagerTest.java:230)
        at world.bentobox.challenges.ChallengesManagerTest.testHasAnyChallengeDataString(ChallengesManagerTest.java:876)

[INFO] Running world.bentobox.challenges.commands.ChallengesCommandTest
[INFO] Tests run: 9, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 3.96 s - in world.bentobox.challenges.commands.ChallengesCommandTest
[INFO] Running world.bentobox.challenges.commands.CompleteChallengeCommandTest
[INFO] Tests run: 15, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 4.455 s - in world.bentobox.challenges.commands.CompleteChallengeCommandTest
[INFO] Running world.bentobox.challenges.tasks.TryToCompleteTest
[WARNING] Tests run: 27, Failures: 0, Errors: 0, Skipped: 2, Time elapsed: 4.809 s - in world.bentobox.challenges.tasks.TryToCompleteTest
[INFO] Running world.bentobox.challenges.utils.UtilsTest
[INFO] Tests run: 7, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 2.659 s - in world.bentobox.challenges.utils.UtilsTest
[INFO]
[INFO] Results:
[INFO]
[ERROR] Failures:
[ERROR]   ChallengesManagerTest.testAddChallengeToLevel:817->testLoad:230
[ERROR]   ChallengesManagerTest.testDeleteChallenge:763
[ERROR]   ChallengesManagerTest.testDeleteChallengeLevel:852->testAddChallengeToLevel:817->testLoad:230
[ERROR]   ChallengesManagerTest.testGetChallenge:731
[ERROR]   ChallengesManagerTest.testGetLevelChallenges:717
[ERROR]   ChallengesManagerTest.testHasAnyChallengeDataString:876->testLoad:230
[ERROR]   ChallengesManagerTest.testHasAnyChallengeDataWorld:865->testLoad:230
[ERROR]   ChallengesManagerTest.testLoad:230
[ERROR]   ChallengesManagerTest.testReload:246
[ERROR]   ChallengesManagerTest.testRemoveChallengeFromLevel:830->testAddChallengeToLevel:817->testLoad:230
[ERROR]   ChallengesManagerTest.testWipeDatabase:361->testLoad:230
[ERROR]   ChallengesManagerTest.testWipePlayers:397->testLoad:230
[ERROR] Errors:
[ERROR]   ChallengesAddonTest.testGetChallengesManager:353->testOnEnableHooked:298 ? IllegalArgument
[ERROR]   ChallengesAddonTest.testGetChallengesSettings:391 ? IllegalArgument The embedd...
[ERROR]   ChallengesAddonTest.testGetImportManager:371->testOnEnableHooked:298 ? IllegalArgument
[ERROR]   ChallengesAddonTest.testGetWebManager:381->testOnEnableHooked:298 ? IllegalArgument
[ERROR]   ChallengesAddonTest.testOnDisable:336->testOnEnableHooked:298 ? IllegalArgument
[ERROR]   ChallengesAddonTest.testOnEnableHooked:298 ? IllegalArgument The embedded reso...
[ERROR]   ChallengesAddonTest.testOnEnableNotHooked:312 ? IllegalArgument The embedded r...
[ERROR]   ChallengesAddonTest.testOnLoad:249 ? IllegalArgument The embedded resource 'pa...
[INFO]
[ERROR] Tests run: 127, Failures: 12, Errors: 8, Skipped: 3

When I deleted all the contents of the test folder and it can be built normally

tastybento commented 3 months ago

Hmm, weird. It passes on mine and on GitHub https://github.com/BentoBoxWorld/Challenges/actions/runs/9528482633 and on the CI https://ci.codemc.io/job/BentoBoxWorld/job/Challenges/

Could it be your setup? It looks like it may not be able to make some files during the testing, like the database or panels.

CuteLittleSky commented 3 months ago

Hmm, weird. It passes on mine and on GitHub https://github.com/BentoBoxWorld/Challenges/actions/runs/9528482633 and on the CI https://ci.codemc.io/job/BentoBoxWorld/job/Challenges/

Could it be your setup? It looks like it may not be able to make some files during the testing, like the database or panels.

Maybe it's a problem with my Maven...