Jump to content

Recommended Posts

Posted

Hi all

 

I've been trying to find a way to get this information in a readable format for a while now, most searches (both here and via Google) usually lead to someone trying to add a drop to an existing mob.

 

What I'm trying to do is find out the possible drops from an entity standing on/near my tile entity. As in, if it were a skeleton, it would be an array containing arrows, bones and broken bows etc.

 

Is this at all possible or would I need to hard code these lists? I'd like to avoid that as obviously that means that it wouldn't work for custom mobs or mobs with edited drop tables.

 

Thanks in advance for any help.

Posted

If EntityLiving#getLootTable returns a non-null value, you can use LootTableManager#getLootTableFromLocation to get the LootTable from that ResourceLocation. You can then go through the table's pools and entries to build the list.

 

If the entity doesn't use a loot table (e.g. EntityWither), you'll need to hardcode its drop list.

 

Look at JustEnoughResources for an example of how to work with loot tables. 

Please don't PM me to ask for help. Asking your question in a public thread preserves it for people who are having the same problem in the future.

Posted
56 minutes ago, Leviathan143 said:

There's one important thing Choonster forgot.  EntityLiving#getLootTable is protected, so you'll need to use Java Reflection or Forge Access Transformers to call it.

Correction:

You will need to use Reflection.

 

Access Transformers are coremodding and coremodding is not sanctioned here.

Apparently I'm a complete and utter jerk and come to this forum just like to make fun of people, be confrontational, and make your personal life miserable.  If you think this is the case, JUST REPORT ME.  Otherwise you're just going to get reported when you reply to my posts and point it out, because odds are, I was trying to be nice.

 

Exception: If you do not understand Java, I WILL NOT HELP YOU and your thread will get locked.

 

DO NOT PM ME WITH PROBLEMS. No help will be given.

Posted (edited)
1 hour ago, Draco18s said:

Correction:

You will need to use Reflection.

 

Access Transformers are coremodding and coremodding is not sanctioned here.

Access Transformers don't require a coremod. You create a text file in a certain place, define the access transformations you want to make in it, add some lines to your build.gradle and run gradle setupDecompWorkspace. As far as I am aware access transformers are part  of ForgeGradle, there is no coremod involved.

Edited by Leviathan143
Posted

You still shouldn't be using them.  Reflection can do the same thing.

Apparently I'm a complete and utter jerk and come to this forum just like to make fun of people, be confrontational, and make your personal life miserable.  If you think this is the case, JUST REPORT ME.  Otherwise you're just going to get reported when you reply to my posts and point it out, because odds are, I was trying to be nice.

 

Exception: If you do not understand Java, I WILL NOT HELP YOU and your thread will get locked.

 

DO NOT PM ME WITH PROBLEMS. No help will be given.

Posted

I've been fiddling about with ReflectionHelper and getting some results. Just as a quick question, am I on the right track here:

 

//..
if (ent instanceof EntityLiving)
{
	try
	{
		ResourceLocation loc = (ResourceLocation) ReflectionHelper.getPrivateValue(ent.getClass(), ent, new String[]{"getLootTable"});
		if (loc != null)
		{
			//..
		}
	}
	catch (Exception e)
	{
	//..
	}
}

 

Or am I way off and need to rethink this.

 

Again, thanks in advance.

Posted

ReflectionHelper.getPrivateValue gets the value of a field, EntityLiving#getLootTable is a method.

 

Looking up a field/method via reflection is expensive, so you should use ReflectionHelper.findField/findMethod and store the Field/Method object in a static final field and use that to access/modify the field's value or call the method.

 

You're only passing the MCP name of the method to ReflectionHelper, so it won't work outside of the development environment. You need to pass the SRG name as well as the MCP name. You can find the SRG name of a field/method using MCPBot.

Please don't PM me to ask for help. Asking your question in a public thread preserves it for people who are having the same problem in the future.

Posted

Thanks for all your help on this, I've managed to get my tile entity println'ing minecraft:entities/<entity>, which means I'm getting the right ResourceLocation. Unfortunately I need sleep to function tomorrow so I'll have to pick up on this tomorrow.

 

Thanks again everyone.

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

    • i dont have any crash reports i only have the latest log https://mclo.gs/DONwR2g
    • Maybe it is an issue with one of the Create addons Create_The_Kitchen_Must_Grow is the last mentioned mod
    • I cannot find any information on why this is specifically happening in any of the logs and i'm getting annoyed. it manifests primarily as lag when breaking and placing blocks, or picking up items. Items will be picked up than disappear, only to appear in my inventory many seconds later, blocks will not place for over 30 seconds at a time. observable shows 100459 μs/t on minecraft:player spark profile doesnt seem to show anything strange as far as i can tell though except for that about 20% of the usage is something called crusty_chunks and another 20% is distant horizons, even when i have distant rendering disabled. I've attached the latest.log, spark profile and observable exports.
    • [16:07:39] [main/INFO]:Mixins added to allowed list: [main.ClientPacketListenerMixin] [16:07:39] [main/INFO]:Class dev.uncandango.alltheleaks.leaks.client.mods.ae2wtlib.UntrackedIssue002 will NOT be loaded as mod ae2wtlib is not present [16:07:39] [main/INFO]:Class dev.uncandango.alltheleaks.leaks.client.mods.ae2wtlib.UntrackedIssue001 will NOT be loaded as mod ae2wtlib is not present [16:07:39] [main/INFO]:Class dev.uncandango.alltheleaks.fix.common.mods.modernfix.CancelRLMixin will be loaded as it matches versions: 5.20.2+mc1.20.1 in [5.0.0,) [16:07:39] [main/INFO]:Mixins added to cancel list: [org.embeddedt.modernfix.common.mixin.perf.deduplicate_location.MixinResourceLocation] [16:07:39] [main/INFO]:Skipping feature ResourceLocation Deduplication from mod minecraft as it's feature flag is not activated! [16:07:39] [main/INFO]:Skipping feature Ingredient Deduplication from mod minecraft as it's feature flag is not activated! [16:07:39] [main/INFO]:Skipping feature Prevent Search Ignored Items from mod jei as it's feature flag is not activated! [16:07:39] [main/WARN]:Error loading class: com/jozufozu/flywheel/util/WorldAttached (java.lang.ClassNotFoundException: com.jozufozu.flywheel.util.WorldAttached) [16:07:39] [main/WARN]:@Mixin target com.jozufozu.flywheel.util.WorldAttached was not found alltheleaks.mixins.json:main.WorldAttachedMixin from mod alltheleaks [16:07:39] [main/INFO]:Loaded config for: betterfpsdist.json [16:07:39] [main/INFO]:Loaded config for: structureessentials.json [16:07:39] [main/WARN]:Error loading class: dev/tr7zw/skinlayers/render/CustomizableModelPart (java.lang.ClassNotFoundException: dev.tr7zw.skinlayers.render.CustomizableModelPart) [16:07:39] [main/INFO]:Loading mixin: de.johni0702.minecraft.bobby.mixin.BackgroundRendererMixin [16:07:39] [main/INFO]:Loading mixin: de.johni0702.minecraft.bobby.mixin.BiomeAccessAccessor [16:07:39] [main/INFO]:Loading mixin: de.johni0702.minecraft.bobby.mixin.ChunkLightProviderMixin [16:07:39] [main/INFO]:Loading mixin: de.johni0702.minecraft.bobby.mixin.ChunkLightProviderMixin [16:07:39] [main/INFO]:Loading mixin: de.johni0702.minecraft.bobby.mixin.ChunkLightProviderMixin [16:07:39] [main/INFO]:Loading mixin: de.johni0702.minecraft.bobby.mixin.ClientChunkManagerMixin [16:07:39] [main/INFO]:Loading mixin: de.johni0702.minecraft.bobby.mixin.ClientSettingsC2SPacketMixin [16:07:39] [main/INFO]:Loading mixin: de.johni0702.minecraft.bobby.mixin.ClientWorldAccessor [16:07:39] [main/INFO]:Loading mixin: de.johni0702.minecraft.bobby.mixin.GameOptionsMixin [16:07:39] [main/INFO]:Loading mixin: de.johni0702.minecraft.bobby.mixin.GameRendererMixin [16:07:39] [main/INFO]:Loading mixin: de.johni0702.minecraft.bobby.mixin.IntegratedServerMixin [16:07:39] [main/INFO]:Loading mixin: de.johni0702.minecraft.bobby.mixin.LightingProviderMixin [16:07:39] [main/INFO]:Loading mixin: de.johni0702.minecraft.bobby.mixin.MinecraftClientMixin [16:07:39] [main/INFO]:Loading mixin: de.johni0702.minecraft.bobby.mixin.SimpleOptionAccessor [16:07:39] [main/INFO]:Loading mixin: de.johni0702.minecraft.bobby.mixin.ValidatingIntSliderCallbacksAccessor [16:07:39] [main/INFO]:Loading mixin: de.johni0702.minecraft.bobby.mixin.sodium.SodiumChunkManagerMixin [16:07:39] [main/INFO]:Loading mixin: de.johni0702.minecraft.bobby.mixin.sodium.SodiumClientPlayNetworkHandlerMixin [16:07:39] [main/INFO]:Loading mixin: de.johni0702.minecraft.bobby.mixin.sodium.SodiumGameOptionPagesMixin [16:07:40] [main/INFO]:Replaced 1 calls to Enchantment#getMaxLevel() in net/minecraft/world/entity/npc/VillagerTrades$EnchantBookForEmeralds [16:07:40] [main/INFO]:Replaced 1 calls to Enchantment#isTreasureOnly() in net/minecraft/world/entity/npc/VillagerTrades$EnchantBookForEmeralds [16:07:40] [main/INFO]:Replaced 1 calls to Enchantment#isTradeable() in net/minecraft/world/entity/npc/VillagerTrades$EnchantBookForEmeralds [16:07:40] [main/INFO]:Loaded config for: recipeessentials.json [16:07:40] [main/INFO]:Patching FishingHook#catchingFish
  • Topics

×
×
  • Create New...

Important Information

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