Jump to content
Search In
  • More options...
Find results that contain...
Find results in...

Error when compiling classes...


Davidee
 Share

Recommended Posts

In previous versions, new classes in "net.minecraft.src" would have their package stripped upon recompilation (like other minecraft classes).

 

However, in the newer version, new classes in a specific minecraft package (i.e. "net.minecraft.nbt") will keep their packages upon recompilation, possibly causing errors (especially when using these classes to access protected methods and fields).

Link to comment
Share on other sites

Typically, if you need to access package private things, you're doing it wrong.

If you absolutly MUST access package private things you should use reflection.

If you ABSOLUTLY MUST access package private things repeatidly and you think that it is something other modders would like to have access to, submit a PR to get it on the official AT list in forge, or write your own coremod.

 

But, in reality, 99% of the time when a modder thinks they need to do something stupid like that, they are wrong.

 

Explain what you are doing and someone will probably point you in the right direction.

 

 

I do Forge for free, however the servers to run it arn't free, so anything is appreciated.
Patreon: http://www.patreon.com/lexmanos
Paypal: http://paypal.me/LexManos

BitCoin: 1Q8rWvUNMM2T1ZfDaFeeYQyVXtYoeT6tTn

Link to comment
Share on other sites

Alright, so I use this functionality in a couple of mods to access protected methods -

 

NBTEdit mod - call write, load, and get the Tag map (can probably use some vanilla methods + 1 reflection call here)

Mob Spawn Controls - access the spawn list fields in order to modify vanilla spawning (only option here is reflection or AT)

 

Link to comment
Share on other sites

Mob Spawn Controls - access the spawn list fields in order to modify vanilla spawning (only option here is reflection or AT)

or, you know use the functionality fml preovides...

I do Forge for free, however the servers to run it arn't free, so anything is appreciated.
Patreon: http://www.patreon.com/lexmanos
Paypal: http://paypal.me/LexManos

BitCoin: 1Q8rWvUNMM2T1ZfDaFeeYQyVXtYoeT6tTn

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
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.

 Share



  • Recently Browsing

    No registered users viewing this page.

  • Posts

    • I think the error comes from this java class even though it dosen't show any error -  package com.mahidhoni123.forgemod.items; import net.minecraft.core.BlockSource; import net.minecraft.core.Direction; import net.minecraft.core.dispenser.DefaultDispenseItemBehavior; import net.minecraft.nbt.CompoundTag; import net.minecraft.world.entity.EntityType; import net.minecraft.world.entity.MobSpawnType; import net.minecraft.world.item.ItemStack; import net.minecraft.world.item.SpawnEggItem; import net.minecraft.world.level.block.DispenserBlock; import net.minecraftforge.common.util.Lazy; import net.minecraftforge.fml.util.ObfuscationReflectionHelper; import net.minecraftforge.fmllegacy.RegistryObject; import java.util.ArrayList; import java.util.List; import java.util.Map; public class ModSpawnEggItem extends SpawnEggItem { protected static final List<ModSpawnEggItem> UNADDED_EGGS = new ArrayList<>(); private final Lazy<? extends EntityType<?>> entityTypeSupplier; public ModSpawnEggItem(final RegistryObject<? extends EntityType<?>> entityTypeSupplier, int p_43208_, int p_43209_, Properties p_43210_) { super(null, p_43208_, p_43209_, p_43210_); this.entityTypeSupplier = Lazy.of(entityTypeSupplier::get); UNADDED_EGGS.add(this); } public static void initSpawnEggs(){ final Map<EntityType<?>, SpawnEggItem> EGGS = ObfuscationReflectionHelper.getPrivateValue(SpawnEggItem.class, null, "field_195987_b"); DefaultDispenseItemBehavior dispenseBehavior = new DefaultDispenseItemBehavior() { @Override protected ItemStack execute(BlockSource p_123385_, ItemStack p_123386_) { Direction direction = p_123385_ .getBlockState().getValue(DispenserBlock.FACING); EntityType<?> type = ((SpawnEggItem) p_123386_.getItem()).getType(p_123386_.getTag()); type.spawn(p_123385_.getLevel(), p_123386_, null, p_123385_.getPos(), MobSpawnType.DISPENSER, direction != Direction.UP, false); p_123386_.shrink(1); return p_123386_; } }; for (final SpawnEggItem spawnEgg : UNADDED_EGGS) { EGGS.put(spawnEgg.getType(null ), spawnEgg); DispenserBlock.registerBehavior(spawnEgg, dispenseBehavior); } UNADDED_EGGS.clear(); } @Override public EntityType<?> getType(CompoundTag nbt) { return this.entityTypeSupplier.get(); } }  
    • First off, what's the error? Second, can you show your ModSpawnEggItem class?  And third, is that class really needed? Forge provides a spawn egg class, you don't need a custom one unless you want additional behavior.
    • I tried this code but I got an error while making custom spawn egg for a skeleton(this skeleton is a vanilla minecraft entity) I think I know why this error is coming, but I don't know how to solve it, can you please help, I am sharing the code -  package com.anirudh.forgemod.init; import com.anirudh.forgemod.ForgeMod; import com.anirudh.forgemod.items.ItemBase; import com.anirudh.forgemod.items.ModSpawnEggItem; import com.anirudh.forgemod.items.StrongestApple; import com.anirudh.forgemod.util.enums.ModArmorMaterial; import net.minecraft.world.entity.EntityType; import net.minecraft.world.entity.EquipmentSlot; import net.minecraft.world.item.ArmorItem; import net.minecraft.world.item.CreativeModeTab; import net.minecraft.world.item.Item; import net.minecraftforge.fmllegacy.RegistryObject; import net.minecraftforge.registries.DeferredRegister; import net.minecraftforge.registries.ForgeRegistries; public class ModItems { public static DeferredRegister<Item> ITEMS = DeferredRegister.create(ForgeRegistries.ITEMS, ForgeMod.MOD_ID); //Items public static final RegistryObject<Item> RUBY = ITEMS.register("ruby", ItemBase::new); public static final RegistryObject<StrongestApple> POISON_APPLE = ITEMS.register("strongest_apple", StrongestApple::new); public static final RegistryObject<ModSpawnEggItem> SKELETON_SPAWN_EGG = ITEMS.register("skeleton_spawn_egg", () -> new ModSpawnEggItem(EntityType.SKELETON, 0x00FFA8, 0x326D59, new Item.Properties().tab(CreativeModeTab.TAB_MATERIALS))); //Armor public static final RegistryObject<ArmorItem> RUBY_HELMET = ITEMS.register("ruby_helmet", () -> new ArmorItem(ModArmorMaterial.RUBY, EquipmentSlot.HEAD, new Item.Properties().tab(CreativeModeTab.TAB_COMBAT))); public static final RegistryObject<ArmorItem> RUBY_CHESTPLATE = ITEMS.register("ruby_chestplate", () -> new ArmorItem(ModArmorMaterial.RUBY, EquipmentSlot.CHEST, new Item.Properties().tab(CreativeModeTab.TAB_COMBAT))); public static final RegistryObject<ArmorItem> RUBY_LEGGINGS = ITEMS.register("ruby_leggings", () -> new ArmorItem(ModArmorMaterial.RUBY, EquipmentSlot.LEGS, new Item.Properties().tab(CreativeModeTab.TAB_COMBAT))); public static final RegistryObject<ArmorItem> RUBY_BOOTS = ITEMS.register("ruby_boots", () -> new ArmorItem(ModArmorMaterial.RUBY, EquipmentSlot.FEET, new Item.Properties().tab(CreativeModeTab.TAB_COMBAT))); }  
    • Depends entirely on the context. As it stands those are two words that you can look up in a dictionary.
  • Topics

  • Who's Online (See full list)

×
×
  • Create New...

Important Information

By using this site, you agree to our Privacy Policy.