-
Notifications
You must be signed in to change notification settings - Fork 106
Troubleshooting
This page is a how-to for those unfamiliar with fixing mod problems.
- Troubleshooting 101: Start here!
- How to Find Stuff: How to locate useful information for troubleshooting and bug reports
- Tips and Tricks: Useful techniques for tracking down problems
- Crash Report Cheat Sheet: How to read a crash report and which bits are important
- Tools and Resources: Useful tools and resources for diagnosing and fixing problems
If you encounter a problem with Wizardry, here's what you should do.
Help me to help you! If you've gone through these steps first, it makes it a lot easier for me to help fix your issue.
For Wizardry plus any addons you have installed, check that you're running the latest mod version for the Minecraft version you are playing, and update them if necessary.
Go to the issue tracker and try searching for things related to your issue. For example, if something went wrong when you cast the possession spell, try searching for 'possession' and see what comes up. If you find an existing open issue that matches your problem, then feel free to add a comment with any extra information you might have.
If an issue can be reliably reproduced, it's a lot easier to investigate. Try to remember what you were doing when the issue happened and see if you can make it happen again by doing any of those things. If you can't reproduce the issue, it is still worth reporting though!
Many issues can be solved by changing one or two config settings. For example, if you find a mob is not resisting fire magic when it should be, you can add it to the resistances config. Some particularly issue-prone features such as player animations have an option to disable them entirely so you can at least play the game without them.
If you think you've found a bug and none of the above steps fixed it, please report it on the issue tracker. The more information you give me, the more likely I'll be able to fix it!
First, you need to navigate to your game directory. This is the folder that Minecraft runs in, and it contains all of your world saves, mods, resource packs and so on. For vanilla Minecraft, this is the .minecraft
folder. Depending on how you set up your modded game, it may be in a different folder.
If you're not sure where it is, an easy way of getting there is to launch your modded game and go to the resource packs menu. Click Open Resource Pack Folder to open up a file explorer window in the resource packs folder, then go up one level. You should see a bunch of folders including saves
, mods
, and screenshots
- this is your game directory.
Navigate to your game directory and find the folder called crash-reports
. Every time Minecraft crashes, it creates a plain text (.txt
) file in here. They are named with the date and time they were created so it should be easy to find the most recent one.
Navigate to your game directory and find the folder called logs
. In here will be a bunch of files with dates as their filenames; these are previous log files. Most of them will be .gz
files, meaning they are compressed (gzipped). You can open these with an archive program such as 7zip.
The most important file in this folder is latest.log
. If you are asked for a log file, this is probably the one you want. This is the console output for the most recent time the game was run; you can open this one directly with a text editor. It gets overwritten every time the game is launched so make a copy if you need to keep it!
The rest of the files in the logs
folder provide more detailed logs of various parts of the game, including startup, client and server. They can also be opened directly with a text editor, but are rarely needed.
A good way of getting a mod list is to open the most recent crash report and find the loaded mods table at the end. This is particularly helpful because it gives the version numbers and mod IDs of each mod. If you don't have a suitable crash report, navigate to your game directory, open the mods
folder and take a screenshot of everything inside it.
If it's not obvious whether the problem is caused by Wizardry alone or if it's a compatibility issue with other mods, the easiest way to check is to make a fresh installation in a new game directory with just Forge and Wizardry (and any addons, if they are relevant to the problem). Create a new world and then try to reproduce the issue.
If you can't reproduce the issue, it's likely to be a compatibility problem (see below). If not, it's probably a bug with Wizardry itself.
Think you have a compatibility issue, but not sure which other mod is causing it? Try the following:
- Locate the most recent crash report and find the loaded mods table. This gives the mod loading order.
- Go to your
mods
folder and remove all mods in the second half of that list, except for wizardry and any addons that caused the problem. - Launch the game again, create a new world and try to reproduce the issue.
- If the issue still happens, repeat from step 2, removing the second half of the remaining mods. If the issue no longer happens, put back the first half of the removed mods and repeat from step 3.
- Keep repeating in this way until you have narrowed it down to a single mod.
Doing it by halves is the quickest way to narrow down the list. By always removing mods according to load order, you can be sure you haven't removed a dependency by mistake.
Performance issues are a pain to diagnose! You can help by describing what kind of lag you're experiencing.
- Server lag is when the server can't update the world quickly enough, and the ticks-per-second (tps) drops below 20. This causes the world to react to player interaction in a delayed manner, for example, if you break a block but you can still stand on it, or if you hit a mob and it doesn't take damage for a while. Server lag affects all connected players similarly.
- Connection lag is when your connection to the server is slow. This can result in the world freezing and will mean you appear to other players like you are teleporting around rather than moving smoothly. From your perspective this looks very similar to server lag, the key difference is it doesn't affect other players.
- Client lag is when the client can't update and render the game world fast enough. This is normally very obvious since it results in framerate (fps) drop.
When in singleplayer or hosting a LAN game, server lag can cause client lag (and vice versa) because both are running on the same computer, though this is not always the case.
When it comes to lag, LagGoggles is your friend!
Crash reports are plain text (.txt
) files with names that start with crash-
and contain the date and time the crash happened and whether it happened on the client or server side. They are stored in the crash-reports
folder inside your game directory.
Example filename:
crash-2021-01-31_20.16.21-client.txt
This crash happened at 8:16 pm on 31st January 2021, and the crash occurred in client-side code.
Contains a title, randomised splash text, timestamp and general description.
Example:
---- Minecraft Crash Report ----
// Surprise! Haha. Well, this is awkward.
Time: M/DD/YY H:MM AM/PM
Description: Unexpected error
The first two lines are unimportant. The timestamp simply tells you when the crash occurred.
The description gives a very basic overview of what was happening when the error occurred. The main ones are:
-
Ticking entity
: The crash happened while updating an entity (basically anything that moves - mobs, xp orbs, etc.) in the game world -
Ticking player
: As above, but for players -
Ticking block entity
: As above, but for tile entities (container blocks - chests, furnaces, etc.) -
Ticking world
orServer tick loop
: Something happened while updating the world in general -
Rendering ___
orTessellating ___
: The crash happened while drawing something in the world or on-screen -
Updating screen events
: Something related to GUIs -
Saving ___ NBT
orLoading ___ NBT
: The crash happened while saving or loading a world or chunk -
Initializing game
orThere was a severe problem during mod loading...
: The crash happened during game startup -
Unexpected error
: Anything else
The main part of the crash report.
Example:
java.lang.NullPointerException: Unexpected error
at electroblob.wizardry.util.SpellModifiers.combine(SpellModifiers.java:82)
at electroblob.wizardry.item.ItemWizardArmour.onSpellCastPreEvent(ItemWizardArmour.java:359)
... etc.
The first line tells you the specific type of error followed by a short description message (often the same as the general description from earlier). Some types usually indicate certain kinds of problem:
-
NoSuchFieldError
,NoSuchMethodError
andNoClassDefFoundError
usually indicate out-of-date mods or addons. On a dedicated server, these can occasionally be caused by mistakes in the code. -
JSONSyntaxException
indicates there is something wrong with the JSON files (usually a missing bracket or comma), i.e. recipes, advancements, spell properties and so on - usually the description message will give more details. -
OutOfMemoryError
indicates that the game has run out of memory (RAM) - contrary to popular belief, allocating more RAM will not fix this issue! It is almost always an mistake in the code. Usually this error is preceded by large amounts of lag - LagGoggles can really help with diagnosing this. -
StackOverflowError
indicates that something has caused an infinite loop, usually two mods triggering each other's event handlers repeatedly. The stacktrace following this error type normally repeats itself many times.
Sometimes you get a second line starting with Caused by:
, this indicates the underlying error that caused the first one.
The following list of indented lines mostly starting with at
are called the stacktrace. This shows the path through the code (in reverse order) that led to the error. Each of these lines refers to a specific line in the code. For example, the line:
at electroblob.wizardry.util.SpellModifiers.combine(SpellModifiers.java:82)
refers to the combine
method in the SpellModifiers
class, which is located in the package (folder) electroblob.wizardry.util
. The part in brackets gives the line number within that file, which in this case is line 82.
Pretty much a repeat of the previous section.
Example:
A detailed walkthrough of the error, its code path and all known details is as follows:
---------------------------------------------------------------------------------------
-- Head --
Thread: Client thread
Stacktrace:
at electroblob.wizardry.util.SpellModifiers.combine(SpellModifiers.java:82)
at electroblob.wizardry.item.ItemWizardArmour.onSpellCastPreEvent(ItemWizardArmour.java:359)
... etc.
The only useful line here is the one starting with Thread:
. Minecraft runs several processes at once, and this line tells you which one crashed. This indicates whether the crash happened on the client or server side, and will also tell you if it was related to networking.
Gives information about the world at the time of the crash.
Example:
-- Affected level --
Details:
Level name: MpServer
All players: 1 total; [EntityPlayerSP['Player677'/2068, l='MpServer', x=402.01, y=64.00, z=368.02]]
Chunk stats: MultiplayerChunkCache: 289, 289
... etc.
There is lots of potentially useful information in here, including the world seed, the number and location of loaded entities, the in-world time and weather, and so on.
Gives information about your computer and Minecraft setup (don't worry, it's not sensitive info).
Example:
-- System Details --
Details:
Minecraft Version: 1.12.2
Operating System: Windows 10 (amd64) version 10.0
Java Version: 1.8.0_191, Oracle Corporation
... etc.
Again, there is lots of potentially useful information here. Probably the most useful part is the table of loaded mods, which gives the mod ID and version for every mod that was loaded when the crash happened, sorted by load order. It is near the end and looks like the following example:
| State | ID | Version | Source | Signature |
|:------ |:------------------- |:------------ |:-------------------------------- |:--------- |
| LCHIJA | minecraft | 1.12.2 | minecraft.jar | None |
| LCHIJA | mcp | 9.42 | minecraft.jar | None |
| LCHIJA | FML | 8.0.99.99 | forgeSrc-1.12.2-14.23.5.2847.jar | None |
| LCHIJA | forge | 14.23.5.2847 | forgeSrc-1.12.2-14.23.5.2847.jar | None |
| LCHIJA | baubles | 1.5.2 | Baubles-1.12.jar | None |
| LCHIJA | antiqueatlas | 4.6.3 | antiqueatlas-1.12.2.jar | None |
| LCHIJA | jei | 4.15.0.291 | jei_1.12.2-4.15.0.291.jar | None |
| LCHIJA | ebwizardry | 4.3.3 | 1.12.2_main | None |
| LCHIJA | antiqueatlasoverlay | 1.2 | antiqueatlas-1.12.2.jar | None |
LagGoggles is a mod that shows you what objects in the world are causing lag, and has a bunch of useful profiling tools for narrowing down the problematic code. LagGoggles is available here - simply install it like any other mod and you'll have access to a load of useful troubleshooting tools!
© Electroblob 2021. Details of permissions can be found in the license.
Getting Started
Blocks
Items
Spells
Mobs
Structures
Status Effects
Crafting Recipes
Commands
Ally Designation System
Minion Targeting
Configuration
Loot Functions
Spell Properties
🎯 Troubleshooting
Changelog
Developing Addons
About and Credits
⮡ Curseforge Page
⮡ Minecraft Forum Thread
⮡ Feed the Beast Wiki Page
⮡ Legacy Documentation