Jump to content

[1.6.4] BugSnag4MC v1.0.0 - Allowing Modders to Utilize BugSnag


dmillerw

Recommended Posts

dk2PoYI.png

 

BugSnag4MC allows modders to easily utilize the full power of BugSnag with no extra work on their part, other than a few simple method calls. This allows modders to easily keep track of crash reports automatically, so they don't have to rely on the player to supply it.

 

What is BugSnag you ask? Well, I think the devs themselves explain it best.

Bugsnag detects crashes in web and mobile apps, collecting diagnostic information and notifying your dev team over email, sms or chat. You can then use Bugsnag's sophisticated dashboard to find exactly where and how each error happened.

 

Okay, so I'm your average player. What does this mean for me?

On the surface, nothing. All you have to do is include this mod along with whatever mods you choose to play with. If any of those mods have support, those authors will instantly be informed of any crashes you may encounter, without any work on your end. It means less hassle for the Player, less hassle for the mod author, and hopefully less work for everyone involved.

 

Okay, so I'm a modder. What does this mean for me?

BugSnag logs all crashes sent to it, and categorizes them in an easy to read format. It also has automatic submission support for most of the main issue trackers out there, including GitHub issues and JIRA. By implementing this mod you no longer have to rely on users to report crashes, they're instantly stored to your BugSnag account and you're notified in whatever way you choose.

 

Now unfortunately, even if you do use the API supplied, it won't do anything unless the Player has BugSnag4MC installed along with their other mods, but I would highly advise you to recommend it!

 

API Usage:

This section is only useful for modders. If you're just interested in including this mod, skip down to the section marked Download

 

In the download section there is a separate link for the API. I've tried to make this API as simple to use as possible, while still retaining all the features of BugSnap I feel like modders will use. If there's a feature you'd like added specifically, please let me know and I'll accommodate if I can.

 

All functionality of the mod is centered around the ICrashHandler interface. Said interface does have a complete JavaDoc included, so I won't go over it here, I'll just explain the most basic implementation. Included with the API is a class called BasicCrashHandler. Simply making a new instance of this class, supplying it with an ID, API key, and base package, and registering it, will give you all the basic functionality you'll need. If you'd like more, either extend this class or make a new one implementing the appropriate interface.

 

Examples:

4ZFEF.png

By simply doing as listed above, you'll receive this info each time there's a crash relating to your mod. You'll receive the full stacktrace, as well as information relevant to Minecraft (Cause of the crash, the full Mincraft crash log, and the side that crashed).

 

Download:

For modders and Players:

Mod File

For modders:

API

 

If you encounter any issues, report them to my issue tracker here

 

Feel like supporting my work?

width=110 height=23https://www.paypal.com/en_US/i/btn/x-click-but21.gif[/img]

Buy me a miscellaneous beverage of my own choosing.

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Unfortunately, your content contains terms that we do not allow. Please edit your content to remove the highlighted words below.
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Announcements



  • Recently Browsing

    • No registered users viewing this page.
  • Posts

    • They were already updated, and just to double check I even did a cleanup and fresh update from that same page. I'm quite sure drivers are not the problem here. 
    • i tried downloading the drivers but it says no AMD graphics hardware has been detected    
    • Update your AMD/ATI drivers - get the drivers from their website - do not update via system  
    • As the title says i keep on crashing on forge 1.20.1 even without any mods downloaded, i have the latest drivers (nvidia) and vanilla minecraft works perfectly fine for me logs: https://pastebin.com/5UR01yG9
    • Hello everyone, I'm making this post to seek help for my modded block, It's a special block called FrozenBlock supposed to take the place of an old block, then after a set amount of ticks, it's supposed to revert its Block State, Entity, data... to the old block like this :  The problem I have is that the system breaks when handling multi blocks (I tried some fix but none of them worked) :  The bug I have identified is that the function "setOldBlockFields" in the item's "setFrozenBlock" function gets called once for the 1st block of multiblock getting frozen (as it should), but gets called a second time BEFORE creating the first FrozenBlock with the data of the 1st block, hence giving the same data to the two FrozenBlock :   Old Block Fields set BlockState : Block{minecraft:black_bed}[facing=east,occupied=false,part=head] BlockEntity : net.minecraft.world.level.block.entity.BedBlockEntity@73681674 BlockEntityData : id:"minecraft:bed",x:3,y:-60,z:-6} Old Block Fields set BlockState : Block{minecraft:black_bed}[facing=east,occupied=false,part=foot] BlockEntity : net.minecraft.world.level.block.entity.BedBlockEntity@6d1aa3da BlockEntityData : {id:"minecraft:bed",x:2,y:-60,z:-6} Frozen Block Entity set BlockState : Block{minecraft:black_bed}[facing=east,occupied=false,part=foot] BlockPos{x=3, y=-60, z=-6} BlockEntity : net.minecraft.world.level.block.entity.BedBlockEntity@6d1aa3da BlockEntityData : {id:"minecraft:bed",x:2,y:-60,z:-6} Frozen Block Entity set BlockState : Block{minecraft:black_bed}[facing=east,occupied=false,part=foot] BlockPos{x=2, y=-60, z=-6} BlockEntity : net.minecraft.world.level.block.entity.BedBlockEntity@6d1aa3da BlockEntityData : {id:"minecraft:bed",x:2,y:-60,z:-6} here is the code inside my custom "freeze" item :    @Override     public @NotNull InteractionResult useOn(@NotNull UseOnContext pContext) {         if (!pContext.getLevel().isClientSide() && pContext.getHand() == InteractionHand.MAIN_HAND) {             BlockPos blockPos = pContext.getClickedPos();             BlockPos secondBlockPos = getMultiblockPos(blockPos, pContext.getLevel().getBlockState(blockPos));             if (secondBlockPos != null) {                 createFrozenBlock(pContext, secondBlockPos);             }             createFrozenBlock(pContext, blockPos);             return InteractionResult.SUCCESS;         }         return super.useOn(pContext);     }     public static void createFrozenBlock(UseOnContext pContext, BlockPos blockPos) {         BlockState oldState = pContext.getLevel().getBlockState(blockPos);         BlockEntity oldBlockEntity = oldState.hasBlockEntity() ? pContext.getLevel().getBlockEntity(blockPos) : null;         CompoundTag oldBlockEntityData = oldState.hasBlockEntity() ? oldBlockEntity.serializeNBT() : null;         if (oldBlockEntity != null) {             pContext.getLevel().removeBlockEntity(blockPos);         }         BlockState FrozenBlock = setFrozenBlock(oldState, oldBlockEntity, oldBlockEntityData);         pContext.getLevel().setBlockAndUpdate(blockPos, FrozenBlock);     }     public static BlockState setFrozenBlock(BlockState blockState, @Nullable BlockEntity blockEntity, @Nullable CompoundTag blockEntityData) {         BlockState FrozenBlock = BlockRegister.FROZEN_BLOCK.get().defaultBlockState();         ((FrozenBlock) FrozenBlock.getBlock()).setOldBlockFields(blockState, blockEntity, blockEntityData);         return FrozenBlock;     }  
  • Topics

×
×
  • Create New...

Important Information

By using this site, you agree to our Terms of Use.