Skip to content

IndexOutOfBoundsException when lootbag's loot table returns no items #7

@Revvilo

Description

@Revvilo

Line referenced in stack trace: LootBagToast.java#L26

Crash Report
[05Jun2023 11:03:46.285] [Render thread/ERROR] [net.minecraft.client.main.Main/]: Unhandled game exception
java.lang.IndexOutOfBoundsException: Index -1 out of bounds for length 0
	at jdk.internal.util.Preconditions.outOfBounds(Preconditions.java:64) ~[?:?]
	at jdk.internal.util.Preconditions.outOfBoundsCheckIndex(Preconditions.java:70) ~[?:?]
	at jdk.internal.util.Preconditions.checkIndex(Preconditions.java:266) ~[?:?]
	at java.util.Objects.checkIndex(Objects.java:361) ~[?:?]
	at java.util.ArrayList.get(ArrayList.java:427) ~[?:?]
	at tech.thatgravyboat.lootbags.client.LootBagToast.m_7172_(LootBagToast.java:26) ~[lootbags-1.1.1-forge.jar%23176!/:?]
	at net.minecraft.client.gui.components.toasts.ToastComponent$ToastInstance.m_94943_(ToastComponent.java:115) ~[client-1.18.2-20220404.173914-srg.jar%23302!/:?]
	at net.minecraft.client.gui.components.toasts.ToastComponent.m_94920_(ToastComponent.java:32) ~[client-1.18.2-20220404.173914-srg.jar%23302!/:?]
	at net.minecraft.client.Minecraft.m_91383_(Minecraft.java:1048) ~[client-1.18.2-20220404.173914-srg.jar%23302!/:?]
	at net.minecraft.client.Minecraft.m_91362_(Minecraft.java:2166) ~[client-1.18.2-20220404.173914-srg.jar%23302!/:?]
	at net.minecraft.client.Minecraft.m_91320_(Minecraft.java:2133) ~[client-1.18.2-20220404.173914-srg.jar%23302!/:?]
	at fudge.notenoughcrashes.mixinhandlers.InGameCatcher.cleanupBeforeMinecraft(InGameCatcher.java:54) ~[notenoughcrashes-4.2.0+1.18.2-forge.jar%23204!/:?]
	at net.minecraft.client.Minecraft.handler$cnh000$beforeCleanUpAfterCrash(Minecraft.java:13438) ~[client-1.18.2-20220404.173914-srg.jar%23302!/:?]
	at net.minecraft.client.Minecraft.m_91394_(Minecraft.java) ~[client-1.18.2-20220404.173914-srg.jar%23302!/:?]
	at net.minecraft.client.Minecraft.m_91374_(Minecraft.java:689) ~[client-1.18.2-20220404.173914-srg.jar%23302!/:?]
	at net.minecraft.client.main.Main.main(Main.java:205) ~[client-1.18.2-20220404.173914-srg.jar%23302!/:?]
	at jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:?]
	at jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77) ~[?:?]
	at jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[?:?]
	at java.lang.reflect.Method.invoke(Method.java:568) ~[?:?]
	at net.minecraftforge.fml.loading.targets.CommonClientLaunchHandler.lambda$launchService$0(CommonClientLaunchHandler.java:31) ~[fmlloader-1.18.2-40.2.2.jar%2351!/:?]
	at cpw.mods.modlauncher.LaunchServiceHandlerDecorator.launch(LaunchServiceHandlerDecorator.java:37) [modlauncher-9.1.3.jar%2339!/:?]
	at cpw.mods.modlauncher.LaunchServiceHandler.launch(LaunchServiceHandler.java:53) [modlauncher-9.1.3.jar%2339!/:?]
	at cpw.mods.modlauncher.LaunchServiceHandler.launch(LaunchServiceHandler.java:71) [modlauncher-9.1.3.jar%2339!/:?]
	at cpw.mods.modlauncher.Launcher.run(Launcher.java:106) [modlauncher-9.1.3.jar%2339!/:?]
	at cpw.mods.modlauncher.Launcher.main(Launcher.java:77) [modlauncher-9.1.3.jar%2339!/:?]
	at cpw.mods.modlauncher.BootstrapLaunchConsumer.accept(BootstrapLaunchConsumer.java:26) [modlauncher-9.1.3.jar%2339!/:?]
	at cpw.mods.modlauncher.BootstrapLaunchConsumer.accept(BootstrapLaunchConsumer.java:23) [modlauncher-9.1.3.jar%2339!/:?]
	at cpw.mods.bootstraplauncher.BootstrapLauncher.main(BootstrapLauncher.java:149) [bootstraplauncher-1.0.0.jar:?]
	at jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:?]
	at jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77) ~[?:?]
	at jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[?:?]
	at java.lang.reflect.Method.invoke(Method.java:568) ~[?:?]
	at io.github.zekerzhayard.forgewrapper.installer.Main.main(Main.java:57) [ForgeWrapper-mmc2.jar:mmc2]
	at org.prismlauncher.launcher.impl.StandardLauncher.launch(StandardLauncher.java:88) [NewLaunch.jar:?]
	at org.prismlauncher.EntryPoint.listen(EntryPoint.java:126) [NewLaunch.jar:?]
	at org.prismlauncher.EntryPoint.main(EntryPoint.java:71) [NewLaunch.jar:?]

I think notenoughcrashes is preventing it from generating a full report even tho it hard crashes. Lemme know if you need a full report and I'll get it to make one.

Datapack

Crashing Lootbag.zip

Also includes a 50/50 lootbag to display how you can get an item but then crash the game if the table happens to roll no items
/loot give @s loot test_namespace:lootbags/test_lootbag
/loot give @s loot test_namespace:lootbags/fifty_fifty_lootbag

test_namespace
├── loot_tables
│   └── lootbags
│       ├── test_lootbag.json
│       ├── fifty_fifty_lootbag.json
│       └── pools
│           ├── test_lootbag.json
│           └── fifty_fifty_lootbag.json
└── recipes
    └── lootbags
        ├── test_lootbag.json
        └── fifty_fifty_lootbag.json

File Contents

Bag Spawn Loot Table (loot_tables/lootbags/)

{
  "pools": [
    {
      "rolls": 1,
      "entries": [
        {
          "type": "minecraft:item",
          "name": "lootbags:loot_bag",
          "functions": [
            {
              "function": "minecraft:set_nbt",
              "tag": "{ Loot:\"test_namespace:lootbags/test_lootbag\", Name:\"Test Lootbag\", Color:13013136, Type:\"UNCOMMON\"}"
            }
          ]
        }
      ]
    }
  ]
}

Reward Pool (loot_tables/lootbags/pools/)

{
  "pools": [
    {
      "rolls": 1,
      "entries": [
        {
          "type": "minecraft:empty",
          "weight": 1
        }
      ]
    }
  ]
}

Recipe (recipes/lootbags/)

{
  "type": "lootbags:loot",
  "name": "Test Lootbag",
  "output": {
    "table": "test_namespace:lootbags/pools/test_lootbag"
  }
}

Thanks for such a great packdev mod ❤️

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions