|
13 | 13 | import dev.ryanhcode.sable.sublevel.plot.LevelPlot; |
14 | 14 | import dev.ryanhcode.sable.sublevel.render.SubLevelRenderData; |
15 | 15 | import dev.ryanhcode.sable.sublevel.render.dispatcher.SubLevelRenderDispatcher; |
| 16 | +import net.minecraft.CrashReport; |
| 17 | +import net.minecraft.CrashReportCategory; |
| 18 | +import net.minecraft.ReportedException; |
16 | 19 | import net.minecraft.client.Minecraft; |
17 | 20 | import net.minecraft.client.multiplayer.ClientLevel; |
18 | 21 | import net.minecraft.core.BlockPos; |
@@ -246,10 +249,17 @@ public void onRemove() { |
246 | 249 | * Re-creates the render data using the current renderer. |
247 | 250 | */ |
248 | 251 | public void updateRenderData() { |
249 | | - if (this.renderData != null) { |
250 | | - this.renderData.close(); |
| 252 | + try { |
| 253 | + if (this.renderData != null) { |
| 254 | + this.renderData.close(); |
| 255 | + } |
| 256 | + this.renderData = SubLevelRenderDispatcher.get().createRenderData(this); |
| 257 | + } catch (final Throwable t) { |
| 258 | + final CrashReport crashreport = CrashReport.forThrowable(t, "Updating render data"); |
| 259 | + final CrashReportCategory crashreportcategory = crashreport.addCategory("Render Dispatcher"); |
| 260 | + crashreportcategory.setDetail("Class", () -> SubLevelRenderDispatcher.get().getClass().getName()); |
| 261 | + throw new ReportedException(crashreport); |
251 | 262 | } |
252 | | - this.renderData = SubLevelRenderDispatcher.get().createRenderData(this); |
253 | 263 | } |
254 | 264 |
|
255 | 265 | /** |
|
0 commit comments