Catches any errors that occur when triggering events.

It is pretty annoying for the game to crash because of a GUI mod. This should reduce that.
This commit is contained in:
Markil3
2021-03-26 09:18:01 -06:00
parent 5e553f2e72
commit 13045618ec

View File

@@ -59,19 +59,29 @@ public class EventBus
@SubscribeEvent @SubscribeEvent
public static void onClick(final PlayerInteractEvent event) public static void onClick(final PlayerInteractEvent event)
{ {
DistExecutor.safeRunWhenOn(Dist.CLIENT, try
(DistExecutor.SafeSupplier<DistExecutor.SafeRunnable>) () -> new DistExecutor.SafeRunnable() {
{ DistExecutor.safeRunWhenOn(Dist.CLIENT,
@Override (DistExecutor.SafeSupplier<DistExecutor.SafeRunnable>) () -> new DistExecutor.SafeRunnable()
public void run()
{ {
Item item = @Override
Optional.ofNullable(event.getItemStack()) public void run()
.map(ItemStack::getItem) {
.orElse(null); Item item =
TimerUtils.onClick(event.getHand(), item); Optional.ofNullable(event.getItemStack())
} .map(ItemStack::getItem)
}); .orElse(null);
TimerUtils.onClick(event.getHand(), item);
}
});
}
catch (Exception e)
{
LOGGER.error(
"Error in running markil3.immersive_hud.EventBus#onClick " +
"event",
e);
}
} }
/** /**
@@ -86,15 +96,25 @@ public class EventBus
@SubscribeEvent @SubscribeEvent
public static void onMount(final EntityMountEvent event) public static void onMount(final EntityMountEvent event)
{ {
DistExecutor.safeRunWhenOn(Dist.CLIENT, try
(DistExecutor.SafeSupplier<DistExecutor.SafeRunnable>) () -> new DistExecutor.SafeRunnable() {
{ DistExecutor.safeRunWhenOn(Dist.CLIENT,
@Override (DistExecutor.SafeSupplier<DistExecutor.SafeRunnable>) () -> new DistExecutor.SafeRunnable()
public void run()
{ {
TimerUtils.resetMountHealth(); @Override
} public void run()
}); {
TimerUtils.resetMountHealth();
}
});
}
catch (Exception e)
{
LOGGER.error(
"Error in running markil3.immersive_hud.EventBus#onMount " +
"event",
e);
}
} }
/** /**
@@ -106,9 +126,21 @@ public class EventBus
@SubscribeEvent @SubscribeEvent
public static void onRenderHand(final RenderHandEvent event) public static void onRenderHand(final RenderHandEvent event)
{ {
if (TimerUtils.onRenderHand(event.getHand(), event.getMatrixStack(), event.getPartialTicks())) try
{ {
event.setCanceled(true); if (TimerUtils.onRenderHand(event.getHand(),
event.getMatrixStack(),
event.getPartialTicks()))
{
event.setCanceled(true);
}
}
catch (Exception e)
{
LOGGER.error(
"Error in running markil3.immersive_hud" +
".EventBus#onRenderHand event",
e);
} }
} }
@@ -121,151 +153,171 @@ public class EventBus
@SubscribeEvent @SubscribeEvent
public static void onGUIDraw(final RenderGameOverlayEvent event) public static void onGUIDraw(final RenderGameOverlayEvent event)
{ {
Minecraft mc = Minecraft.getInstance(); try
boolean fadeIn = false;
switch (event.getType())
{ {
case CROSSHAIRS: Minecraft mc = Minecraft.getInstance();
if (event instanceof RenderGameOverlayEvent.Pre) boolean fadeIn = false;
switch (event.getType())
{ {
if (TimerUtils.drawCrosshair(event.getPartialTicks())) case CROSSHAIRS:
if (event instanceof RenderGameOverlayEvent.Pre)
{
if (TimerUtils.drawCrosshair(event.getPartialTicks()))
{
event.setCanceled(true);
}
}
/*
* Reset the transparency.
*/
else if (event instanceof RenderGameOverlayEvent.Post)
{
resetAlpha();
}
break;
case POTION_ICONS:
if (event instanceof RenderGameOverlayEvent.Pre)
{
TimerUtils.updatePotions(mc.player);
event.setCanceled(true);
RenderUtils.renderPotionIcons(mc,
mc.ingameGUI,
event.getMatrixStack(), event.getPartialTicks());
resetAlpha();
}
break;
case HOTBAR:
if (event instanceof RenderGameOverlayEvent.Pre)
{ {
event.setCanceled(true); event.setCanceled(true);
if (!TimerUtils.drawHotbar(event.getPartialTicks()))
{
RenderUtils.renderHotbar(mc, mc.ingameGUI,
event.getMatrixStack(),
event.getPartialTicks(), TimerUtils.hotbarTime);
}
} }
} break;
/* case HEALTH:
* Reset the transparency. if (event instanceof RenderGameOverlayEvent.Pre)
*/
else if (event instanceof RenderGameOverlayEvent.Post)
{
resetAlpha();
}
break;
case POTION_ICONS:
if (event instanceof RenderGameOverlayEvent.Pre)
{
TimerUtils.updatePotions(mc.player);
event.setCanceled(true);
RenderUtils.renderPotionIcons(mc,
mc.ingameGUI,
event.getMatrixStack(), event.getPartialTicks());
resetAlpha();
}
break;
case HOTBAR:
if (event instanceof RenderGameOverlayEvent.Pre)
{
event.setCanceled(true);
if (!TimerUtils.drawHotbar(event.getPartialTicks()))
{ {
RenderUtils.renderHotbar(mc, mc.ingameGUI, if (TimerUtils.drawHealth(event.getMatrixStack(),
event.getMatrixStack(), event.getPartialTicks()))
event.getPartialTicks(), TimerUtils.hotbarTime); {
event.setCanceled(true);
}
} }
} else if (event instanceof RenderGameOverlayEvent.Post)
break; {
case HEALTH: event.getMatrixStack().pop();
if (event instanceof RenderGameOverlayEvent.Pre) resetAlpha();
{ }
if (TimerUtils.drawHealth(event.getMatrixStack(), event.getPartialTicks())) break;
case FOOD:
if (event instanceof RenderGameOverlayEvent.Pre)
{
if (TimerUtils.drawHunger(event.getMatrixStack(),
event.getPartialTicks()))
{
event.setCanceled(true);
}
}
/*
* Reset the transparency.
*/
else if (event instanceof RenderGameOverlayEvent.Post)
{
event.getMatrixStack().pop();
resetAlpha();
}
break;
case ARMOR:
if (event instanceof RenderGameOverlayEvent.Pre)
{
if (TimerUtils.drawArmor(event.getMatrixStack(),
event.getPartialTicks()))
{
event.setCanceled(true);
}
}
/*
* Reset the transparency.
*/
else if (event instanceof RenderGameOverlayEvent.Post)
{
event.getMatrixStack().pop();
resetAlpha();
}
break;
case AIR:
if (event instanceof RenderGameOverlayEvent.Pre)
{
if (TimerUtils.drawAir(event.getMatrixStack(),
event.getPartialTicks()))
{
event.setCanceled(true);
}
}
/*
* Reset the transparency.
*/
else if (event instanceof RenderGameOverlayEvent.Post)
{
event.getMatrixStack().pop();
resetAlpha();
}
break;
case HEALTHMOUNT:
if (event instanceof RenderGameOverlayEvent.Pre)
{
if (TimerUtils.drawMountHealth(event.getMatrixStack(),
event.getPartialTicks()))
{
event.setCanceled(true);
}
}
else if (event instanceof RenderGameOverlayEvent.Post)
{
event.getMatrixStack().pop();
resetAlpha();
}
break;
case JUMPBAR:
if (event instanceof RenderGameOverlayEvent.Pre)
{ {
event.setCanceled(true); event.setCanceled(true);
if (!TimerUtils.drawJumpbar(event.getPartialTicks()))
{
RenderUtils.renderHorseJumpBar(mc,
mc.ingameGUI,
event.getMatrixStack(),
event.getPartialTicks(),
TimerUtils.jumpTime);
}
} }
} break;
else if (event instanceof RenderGameOverlayEvent.Post) case EXPERIENCE:
{ if (event instanceof RenderGameOverlayEvent.Pre)
event.getMatrixStack().pop();
resetAlpha();
}
break;
case FOOD:
if (event instanceof RenderGameOverlayEvent.Pre)
{
if (TimerUtils.drawHunger(event.getMatrixStack(), event.getPartialTicks()))
{ {
event.setCanceled(true); event.setCanceled(true);
if (!TimerUtils.drawExperience(event.getPartialTicks()))
{
RenderUtils.renderExperience(mc,
mc.ingameGUI,
event.getMatrixStack(),
event.getPartialTicks(),
TimerUtils.experienceTime);
}
} }
break;
} }
/* }
* Reset the transparency. catch (Exception e)
*/ {
else if (event instanceof RenderGameOverlayEvent.Post) LOGGER.error(
{ "Error in running markil3.immersive_hud.EventBus#onGUIDraw event",
event.getMatrixStack().pop(); e);
resetAlpha();
}
break;
case ARMOR:
if (event instanceof RenderGameOverlayEvent.Pre)
{
if (TimerUtils.drawArmor(event.getMatrixStack(), event.getPartialTicks()))
{
event.setCanceled(true);
}
}
/*
* Reset the transparency.
*/
else if (event instanceof RenderGameOverlayEvent.Post)
{
event.getMatrixStack().pop();
resetAlpha();
}
break;
case AIR:
if (event instanceof RenderGameOverlayEvent.Pre)
{
if (TimerUtils.drawAir(event.getMatrixStack(), event.getPartialTicks()))
{
event.setCanceled(true);
}
}
/*
* Reset the transparency.
*/
else if (event instanceof RenderGameOverlayEvent.Post)
{
event.getMatrixStack().pop();
resetAlpha();
}
break;
case HEALTHMOUNT:
if (event instanceof RenderGameOverlayEvent.Pre)
{
if (TimerUtils.drawMountHealth(event.getMatrixStack(), event.getPartialTicks()))
{
event.setCanceled(true);
}
}
else if (event instanceof RenderGameOverlayEvent.Post)
{
event.getMatrixStack().pop();
resetAlpha();
}
break;
case JUMPBAR:
if (event instanceof RenderGameOverlayEvent.Pre)
{
event.setCanceled(true);
if (!TimerUtils.drawJumpbar(event.getPartialTicks()))
{
RenderUtils.renderHorseJumpBar(mc, mc.ingameGUI,
event.getMatrixStack(), event.getPartialTicks(), TimerUtils.jumpTime);
}
}
break;
case EXPERIENCE:
if (event instanceof RenderGameOverlayEvent.Pre)
{
event.setCanceled(true);
if (!TimerUtils.drawExperience(event.getPartialTicks()))
{
RenderUtils.renderExperience(mc, mc.ingameGUI,
event.getMatrixStack(), event.getPartialTicks(), TimerUtils.experienceTime);
}
}
break;
} }
} }
} }