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

Trying to replace vanilla items with my own


_vertig0
 Share

Recommended Posts

Right now I want to replace 2 Enchantments in Enchantments.java, VillagerEntity in EntityType.java and the Crossbow from Items.java to use my own items with custom logic, rather than the default vanilla logic. However, I can't seem to get past the public static final modifiers in said classes, even with reflection...

Registering:

// You can use EventBusSubscriber to automatically subscribe events on the contained class (this is subscribing to the MOD
    // Event bus for receiving Registry Events)
    @Mod.EventBusSubscriber(bus=Mod.EventBusSubscriber.Bus.MOD)
    public static class RegistryEvents {
        @SubscribeEvent
        public static void onBlocksRegistry(final RegistryEvent.Register<Block> blockRegistryEvent) {
            // register a new block here
            LOGGER.info("HELLO from Register Block");
            
        }
        
        @SubscribeEvent
        public static void onItemRegistry(final RegistryEvent.Register<Item> event) {
        	crossbow = new ItemForgeCrossbow((new Item.Properties()).maxStackSize(1).group(ItemGroup.COMBAT).maxDamage(326));
        	event.getRegistry().registerAll(crossbow.setRegistryName("crossbow"));
        	try {
				ForgeServerCore.usetFinalStatic(ObfuscationReflectionHelper.findField(Items.class, "field_222114_py"), crossbow);
			} catch (Exception exception) {
				// TODO Auto-generated catch block
				LOGGER.error("Error encountered while overwriting base Items.class fields");
				exception.printStackTrace();
			}
        }
        
        @SubscribeEvent
        public static void onEntityRegistry(final RegistryEvent.Register<EntityType<?>> event) {
        	EntityType<?> villager = EntityType.Builder.<EntityVillager>create(EntityVillager::new, EntityClassification.MISC).size(0.6F, 1.95F).build("villager").setRegistryName("villager");
        	event.getRegistry().registerAll(villager);
        	try {
				ForgeServerCore.usetFinalStatic(ObfuscationReflectionHelper.findField(EntityType.class, "field_200756_av"), villager);
			} catch (IllegalAccessException exception) {
				// TODO Auto-generated catch block
				exception.printStackTrace();
			}
        }
        
        @SubscribeEvent
        public static void onEnchantRegistry(final RegistryEvent.Register<Enchantment> event) {
        	quickCharge = new CustomEnchantmentQuickCharge(Enchantment.Rarity.UNCOMMON, EquipmentSlotType.MAINHAND);
        	piercing = new CustomEnchantmentPiercing(Enchantment.Rarity.COMMON, EquipmentSlotType.MAINHAND);
        	event.getRegistry().registerAll(piercing.setRegistryName("piercing"), quickCharge.setRegistryName("quick_charge"));
        	try {
    			ForgeServerCore.usetFinalStatic(ObfuscationReflectionHelper.findField(Enchantments.class, "field_222193_H"), quickCharge);
    			ForgeServerCore.usetFinalStatic(ObfuscationReflectionHelper.findField(Enchantments.class, "field_222194_I"), piercing);
    		} catch (Exception exception) {
    			// TODO Auto-generated catch block
    			LOGGER.error("Error encountered while overwriting base Enchantments.class fields");
    			exception.printStackTrace();
    		}
        }
    }

In case this is required, these are my custom classes with modified logic:

Spoiler

package mod.server.forgeservermod;

import net.minecraft.entity.EntityType;
import net.minecraft.entity.effect.LightningBoltEntity;
import net.minecraft.entity.merchant.villager.VillagerEntity;
import net.minecraft.entity.villager.IVillagerType;
import net.minecraft.world.GameRules;
import net.minecraft.world.World;

public class EntityVillager extends VillagerEntity {
	
	public EntityVillager(EntityType<? extends VillagerEntity> type, World worldIn) {
	      super(type, worldIn);
	}
	
	@Override
	public void livingTick() {
		if(this.world.getGameRules().getBoolean(GameRules.NATURAL_REGENERATION)) {
			if (this.getHealth() < this.getMaxHealth() && this.ticksExisted % 20 == 0) {
	            this.heal(2.0F);
	         }
		}
		super.livingTick();
	}
	
	public EntityVillager(EntityType<? extends VillagerEntity> type, World worldIn, IVillagerType villagerType) {
		super(type, worldIn, villagerType);
		// TODO Auto-generated constructor stub
	}
	
	@Override
	public void onStruckByLightning(LightningBoltEntity lightning) {
		this.getServer().logInfo(this.getName().getFormattedText() + ": Did you really think I was going to turn into a witch?");
		return;
	}
	
}

package mod.server.forgeservermod;

import java.util.List;
import java.util.Random;

import com.google.common.collect.Lists;

import net.minecraft.advancements.CriteriaTriggers;
import net.minecraft.client.renderer.Quaternion;
import net.minecraft.client.renderer.Vector3f;
import net.minecraft.enchantment.EnchantmentHelper;
import net.minecraft.enchantment.Enchantments;
import net.minecraft.entity.Entity;
import net.minecraft.entity.ICrossbowUser;
import net.minecraft.entity.IProjectile;
import net.minecraft.entity.LivingEntity;
import net.minecraft.entity.item.FireworkRocketEntity;
import net.minecraft.entity.player.PlayerEntity;
import net.minecraft.entity.player.ServerPlayerEntity;
import net.minecraft.entity.projectile.AbstractArrowEntity;
import net.minecraft.item.ArrowItem;
import net.minecraft.item.CrossbowItem;
import net.minecraft.item.Item;
import net.minecraft.item.ItemStack;
import net.minecraft.item.Items;
import net.minecraft.nbt.CompoundNBT;
import net.minecraft.nbt.ListNBT;
import net.minecraft.stats.Stats;
import net.minecraft.util.ActionResult;
import net.minecraft.util.Hand;
import net.minecraft.util.SoundCategory;
import net.minecraft.util.SoundEvents;
import net.minecraft.util.math.Vec3d;
import net.minecraft.world.World;

public class ItemForgeCrossbow extends CrossbowItem {
	
	public boolean isLoadingStart = false;
	public boolean isLoadingMiddle = false;
	
	public ItemForgeCrossbow(Properties properties) {
		super(properties);
		// TODO Auto-generated constructor stub
	}
	
	private static float func_220013_l(ItemStack p_220013_0_) {
	      return p_220013_0_.getItem() == Items.CROSSBOW && hasChargedProjectile(p_220013_0_, Items.FIREWORK_ROCKET) ? 1.6F : 4.27F;
	}
	
	@Override
	public ActionResult<ItemStack> onItemRightClick(World worldIn, PlayerEntity playerIn, Hand handIn) {
	      ItemStack itemstack = playerIn.getHeldItem(handIn);
	      if (isCharged(itemstack)) {
	         fireProjectiles(worldIn, playerIn, handIn, itemstack, func_220013_l(itemstack), 1.0F);
	         setCharged(itemstack, false);
	         return ActionResult.resultSuccess(itemstack);
	      } else if (!playerIn.findAmmo(itemstack).isEmpty()) {
	         if (!isCharged(itemstack)) {
	            this.isLoadingStart = false;
	            this.isLoadingMiddle = false;
	            playerIn.setActiveHand(handIn);
	         }

	         return ActionResult.resultConsume(itemstack);
	      } else {
	         return ActionResult.resultFail(itemstack);
	      }
	   }
	
	private static void fireProjectile(World worldIn, LivingEntity shooter, Hand handIn, ItemStack crossbow, ItemStack projectile, float soundPitch, boolean isCreativeMode, float velocity, float inaccuracy, float projectileAngle) {
	      if (!worldIn.isRemote) {
	         boolean flag = projectile.getItem() == Items.FIREWORK_ROCKET;
	         IProjectile iprojectile;
	         if (flag) {
	            iprojectile = new FireworkRocketEntity(worldIn, projectile, shooter.getPosX(), shooter.getPosYEye() - (double)0.15F, shooter.getPosZ(), true);
	         } else {
	            iprojectile = createArrow(worldIn, shooter, crossbow, projectile);
	            if (isCreativeMode || projectileAngle != 0.0F) {
	               ((AbstractArrowEntity)iprojectile).pickupStatus = AbstractArrowEntity.PickupStatus.CREATIVE_ONLY;
	            }
	         }

	         if (shooter instanceof ICrossbowUser) {
	            ICrossbowUser icrossbowuser = (ICrossbowUser)shooter;
	            icrossbowuser.shoot(icrossbowuser.getAttackTarget(), crossbow, iprojectile, projectileAngle);
	         } else {
	            Vec3d vec3d1 = shooter.getUpVector(1.0F);
	            Quaternion quaternion = new Quaternion(new Vector3f(vec3d1), projectileAngle, true);
	            Vec3d vec3d = shooter.getLook(1.0F);
	            Vector3f vector3f = new Vector3f(vec3d);
	            vector3f.transform(quaternion);
	            iprojectile.shoot((double)vector3f.getX(), (double)vector3f.getY(), (double)vector3f.getZ(), velocity, inaccuracy);
	         }

	         crossbow.damageItem(flag ? 3 : 1, shooter, (p_220017_1_) -> {
	            p_220017_1_.sendBreakAnimation(handIn);
	         });
	         worldIn.addEntity((Entity)iprojectile);
	         worldIn.playSound((PlayerEntity)null, shooter.getPosX(), shooter.getPosY(), shooter.getPosZ(), SoundEvents.ITEM_CROSSBOW_SHOOT, SoundCategory.PLAYERS, 1.0F, soundPitch);
	      }
	   }

	   private static AbstractArrowEntity createArrow(World worldIn, LivingEntity shooter, ItemStack crossbow, ItemStack ammo) {
	      ArrowItem arrowitem = (ArrowItem)(ammo.getItem() instanceof ArrowItem ? ammo.getItem() : Items.ARROW);
	      AbstractArrowEntity abstractarrowentity = arrowitem.createArrow(worldIn, ammo, shooter);
	      
	      abstractarrowentity.setIsCritical(true);
	      abstractarrowentity.setDamage(5.0D);

	      abstractarrowentity.setHitSound(SoundEvents.ITEM_CROSSBOW_HIT);
	      abstractarrowentity.setShotFromCrossbow(true);
	      int i = EnchantmentHelper.getEnchantmentLevel(Enchantments.PIERCING, crossbow);
	      if (i > 0) {
	    	 abstractarrowentity.setKnockbackStrength(i);
	         abstractarrowentity.setPierceLevel((byte)i);
	         abstractarrowentity.setDamage(abstractarrowentity.getDamage() + i);
	      }

	      return abstractarrowentity;
	   }
	   
	   private static List<ItemStack> getChargedProjectiles(ItemStack stack) {
		      List<ItemStack> list = Lists.newArrayList();
		      CompoundNBT compoundnbt = stack.getTag();
		      if (compoundnbt != null && compoundnbt.contains("ChargedProjectiles", 9)) {
		         ListNBT listnbt = compoundnbt.getList("ChargedProjectiles", 10);
		         if (listnbt != null) {
		            for(int i = 0; i < listnbt.size(); ++i) {
		               CompoundNBT compoundnbt1 = listnbt.getCompound(i);
		               list.add(ItemStack.read(compoundnbt1));
		            }
		         }
		      }

		      return list;
		   }
	   
	   private static boolean hasChargedProjectile(ItemStack stack, Item ammoItem) {
		      return getChargedProjectiles(stack).stream().anyMatch((p_220010_1_) -> {
		         return p_220010_1_.getItem() == ammoItem;
		      });
		   }
	   
	   private static float[] getRandomSoundPitches(Random rand) {
		      boolean flag = rand.nextBoolean();
		      return new float[]{1.0F, getRandomSoundPitch(flag), getRandomSoundPitch(!flag)};
		   }

		   private static float getRandomSoundPitch(boolean flagIn) {
		      float f = flagIn ? 0.63F : 0.43F;
		      return 1.0F / (random.nextFloat() * 0.5F + 1.8F) + f;
		   }
	   
	   public static void fireProjectiles(World worldIn, LivingEntity shooter, Hand handIn, ItemStack stack, float velocityIn, float inaccuracyIn) {
	      List<ItemStack> list = getChargedProjectiles(stack);
	      float[] afloat = getRandomSoundPitches(shooter.getRNG());

	      for(int i = 0; i < list.size(); ++i) {
	         ItemStack itemstack = list.get(i);
	         boolean flag = shooter instanceof PlayerEntity && ((PlayerEntity)shooter).abilities.isCreativeMode;
	         if (!itemstack.isEmpty()) {
	            if (i == 0) {
	               fireProjectile(worldIn, shooter, handIn, stack, itemstack, afloat[i], flag, velocityIn, 0.07F, 0.0F);
	            } else if (i == 1) {
	               fireProjectile(worldIn, shooter, handIn, stack, itemstack, afloat[i], flag, velocityIn, 0.07F, -10.0F);
	            } else if (i == 2) {
	               fireProjectile(worldIn, shooter, handIn, stack, itemstack, afloat[i], flag, velocityIn, 0.07F, 10.0F);
	            }
	         }
	      }

	      fireProjectilesAfter(worldIn, shooter, stack);
	   }
	   
	   private static void fireProjectilesAfter(World worldIn, LivingEntity shooter, ItemStack stack) {
		      if (shooter instanceof ServerPlayerEntity) {
		         ServerPlayerEntity serverplayerentity = (ServerPlayerEntity)shooter;
		         if (!worldIn.isRemote) {
		            CriteriaTriggers.SHOT_CROSSBOW.func_215111_a(serverplayerentity, stack);
		         }

		         serverplayerentity.addStat(Stats.ITEM_USED.get(stack.getItem()));
		      }

		      clearProjectiles(stack);
	   }
	   
	   private static void clearProjectiles(ItemStack stack) {
		      CompoundNBT compoundnbt = stack.getTag();
		      if (compoundnbt != null) {
		         ListNBT listnbt = compoundnbt.getList("ChargedProjectiles", 9);
		         listnbt.clear();
		         compoundnbt.put("ChargedProjectiles", listnbt);
		      }

		   }

}

package mod.server.forgeservermod;

import net.minecraft.enchantment.QuickChargeEnchantment;
import net.minecraft.inventory.EquipmentSlotType;

public class CustomEnchantmentQuickCharge extends QuickChargeEnchantment {

	public CustomEnchantmentQuickCharge(Rarity rarity, EquipmentSlotType slotType) {
		super(rarity, slotType);
		// TODO Auto-generated constructor stub
	}
	
	@Override
	public int getMaxLevel() {
		return 5;
	}
	
}
private static Unsafe unsafe;

Field field = null;
		try {
			field = Unsafe.class.getDeclaredField("theUnsafe");
		} catch (NoSuchFieldException exception) {
			// TODO Auto-generated catch block
			exception.printStackTrace();
		} catch (SecurityException exception) {
			// TODO Auto-generated catch block
			exception.printStackTrace();
		} //Internal reference
		if(field == null) {
			LOGGER.fatal("Field is null");
		}
        field.setAccessible(true);
        try {
			unsafe = (Unsafe) field.get(null);
		} catch (IllegalArgumentException exception) {
			// TODO Auto-generated catch block
			exception.printStackTrace();
		} catch (IllegalAccessException exception) {
			// TODO Auto-generated catch block
			exception.printStackTrace();
		}
        
        if(unsafe == null) {
			LOGGER.fatal("Unsafe is null");
		}

public static void usetFinalStatic(Field field, Object object) throws IllegalAccessException {
    	LOGGER.info("Original field value: " + field.get(null));
        //we need a field to update
        //this is a 'base'. Usually a Class object will be returned here.
        final Object base = unsafe.staticFieldBase(field);
        //this is an 'offset'
        final long offset = unsafe.staticFieldOffset(field);
        //actual update
        unsafe.putObject(base, offset, object);
        //ensure the value was updated
        LOGGER.info( "Updated static final value: " + field.get(null));
    }

And this is how I'm trying to modify static final fields ^

 

Why am I doing this? Because these are hardcoded variables stored in a class. Only other way is ASM

Edited by _vertig0
Link to comment
Share on other sites

You also don't need to update the Items and Blocks references, Forge already does that if you register your item using the vanilla registry name.

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.

Link to comment
Share on other sites

  • 3 months later...
On 6/10/2020 at 8:17 PM, Novârch said:

Use @ObjectHolder, it takes care of everything for you.

How @ObjectHolder can help in this situation? As far as I know @ObjectHolder just gives reference of the object after objects registration, so it cannot be used to replace vanilla objects, or am I misunderstanding something?

 

Anyway, I figured out how to do it using Java reflection, in this example I replaced wooden sword with custom item that extends SwordItem:

boolean isRegistered = false;
@SubscribeEvent
    public void onItemReg(RegistryEvent.Register<Item> event){
        System.out.println("Entering item registry event");
        if(!isRegistered){
            try{
                Field field = Items.class.getField("WOODEN_SWORD");
                field.setAccessible(true);
                Method method = Items.class.getDeclaredMethod("register", String.class, Item.class);
                method.setAccessible(true);

                Item itemToInsert = (Item)method.invoke(Items.class, "wooden_sword", custom_wooden_sword);

                System.out.println("Item to insert: " + itemToInsert.toString());
                System.out.println("Field: " + field.getName());

                Field modifiersField = Field.class.getDeclaredField("modifiers");
                modifiersField.setAccessible(true);
                modifiersField.setInt(field, field.getModifiers() & ~Modifier.FINAL);

                field.set(null, itemToInsert);
                isRegistered = true;
            }catch(Throwable e){
                System.out.println("ERROR while reflecting Items.java field: " + e);
            }
        }

ATTENTION, I do not know how dangerous this method is and how it can negatively affect the operation of the game, but thanks to it I was able to completely replace the standard sword with a custom one and the game did not crash. I think somehow this can be done using standard forge solutions, but no matter how much I searched, I did not find any specific solutions, but this does not change the feeling that if someone experienced saw my code, he would have had a heart attack... (also dont beat me for this boolean, did it on a fast hand)

Edited by byalexeykh
grammar
Link to comment
Share on other sites

3 minutes ago, diesieben07 said:

DO NOT do this.

Just register your item with the same name.

like this?

private static final DeferredRegister<Item> ITEMS = DeferredRegister.create(ForgeRegistries.ITEMS, MOD_ID);
public static final RegistryObject<Item> WOODEN_SWORD = ITEMS.register("WOODEN_SWORD", () -> custom_wooden_sword);

Most likely I'm doing something wrong, because in this case game crashes:

[19:00:27] [Render thread/ERROR] [ne.mi.fm.ja.FMLModContainer/LOADING]: Failed to load class com.byalexeykh.advancedcombatsystem.AdvancedCombatSystem
java.lang.ExceptionInInitializerError: null
	at java.lang.Class.forName0(Native Method) ~[?:1.8.0_251] {}
	at java.lang.Class.forName(Class.java:348) ~[?:1.8.0_251] {}

and

[19:00:27] [Render thread/INFO] [STDOUT/]: [net.minecraft.util.registry.Bootstrap:printToSYSOUT:110]: ---- Minecraft Crash Report ----
// Shall we play a game?

Time: 9/23/20 7:00 PM
Description: Initializing game

java.lang.RuntimeException: java.lang.reflect.InvocationTargetException
	at net.minecraftforge.fml.javafmlmod.FMLJavaModLanguageProvider$FMLModTarget.loadMod(FMLJavaModLanguageProvider.java:78) ~[forge-1.15.2-31.2.41_mapped_snapshot_20200514-1.15.1-recomp.jar:31.2] {}
	at net.minecraftforge.fml.ModLoader.buildModContainerFromTOML(ModLoader.java:251) ~[forge-1.15.2-31.2.41_mapped_snapshot_20200514-1.15.1-recomp.jar:?] {re:classloading}

at FMLJavaModLanguageProvider.java:78 I found this:

catch (NoSuchMethodException | ClassNotFoundException | InstantiationException | IllegalAccessException | InvocationTargetException e)
            {
                LOGGER.fatal(LOADING,"Unable to load FMLModContainer, wut?", e);
                throw new RuntimeException(e);
            }

 

Link to comment
Share on other sites

18 hours ago, diesieben07 said:

Just register your item with the same name.

 

17 hours ago, diesieben07 said:

"WOODEN_SWORD" is neither a valid registry name nor is it the registry name for the vanilla wooden sword.

It is a little unclear from the first time what is meant: the name of the variable in Items.class or the value of the "key" argument in the register method of the same class. Anyway if I change name to "wooden_sword" I'll just add a new item, the old one won't be replaced

image.png.3f6248e7bf7d7d4ee206da1303b5e158.png

 

17 hours ago, diesieben07 said:

Always post the full stack trace.

I read it better and, indeed, in "WOODEN_SWORD" case the crash of the game is caused by "Non [a-z0-9/._-] character in path of location"
But this does not change the fact that simply registering an item under the same name does not replace it.
mc 1.15.2
forge 31.2.41

mappings 20200514-1.15.1

Link to comment
Share on other sites

39 minutes ago, byalexeykh said:

Anyway if I change name to "wooden_sword" I'll just add a new item, the old one won't be replaced

If you do not specify the domain for the resource location (e.g. "wooden_sword" instead of "minecraft:wooden_sword") during registration then your Mod ID will be assumed. So you are actually registering a new item called "your_cool_mod:wooden_sword", which is of course completely separate from "minecraft:wooden_sword". You need to specify the resource domain if you wish to have it something other than your Mod ID.

 

40 minutes ago, byalexeykh said:

It is a little unclear from the first time what is meant: the name of the variable in Items.class or the value of the "key" argument in the register method of the same class.

The name of the field is utterly irrelevant. At runtime it won't be called WOODEN_SWORD at all.

Link to comment
Share on other sites

37 minutes ago, diesieben07 said:

If you do not specify the domain for the resource location (e.g. "wooden_sword" instead of "minecraft:wooden_sword") during registration then your Mod ID will be assumed

private static final DeferredRegister<Item> ITEMS = DeferredRegister.create(ForgeRegistries.ITEMS, "minecraft");
public static final RegistryObject<Item> wooden_sword = ITEMS.register("wooden_sword", () -> custom_wooden_sword);

Alright it worked

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

    • Yeah that's the correct Forum Experience (a lot since he join 2012) and knowledge from other threads with similar problems
    • I had tried using ContainerData before but I didn't notice addDataSlots in AbstractFurnaceMenu. After adding it to the constructor it worked. Thank you.
    • I'm assuming its in the wrong class because of this line ? Which would make it Client side ? @Mod.EventBusSubscriber(modid = MyMod.MODID, bus = Bus.MOD, value = Dist.CLIENT) Would removing this and setting up the MyMod.java like this be correct? I ask because I see other examples use the public static final RegistryObject<> in the same class that they setup the public static final DeferredRegister<>, and not for just particles. public MyMod() { // Register the setup method for modloading IEventBus bus = FMLJavaModLoadingContext.get().getModEventBus(); ParticleRegistration.PARTICLES_TYPES.register(bus); } Or do I need to make further changes to the registration then? Such as moving the registerParticleFactory() to a ClientStartup/ClientProxy ?
    • For this branch, after I wrote the latest commit, it caused the loading percent to be stuck at 0% whenever I create a new world.  This is the latest log:  [19Jan2022 19:38:32.502] [main/INFO] [cpw.mods.modlauncher.Launcher/MODLAUNCHER]: ModLauncher running: args [--gameDir, ., --launchTarget, fmluserdevclient, --fml.mcpVersion, 20210115.111550, --fml.mcVersion, 1.16.5, --fml.forgeGroup, net.minecraftforge, --fml.forgeVersion, 36.2.20, --assetIndex, 1.16, --assetsDir, C:\Users\david\.gradle\caches\forge_gradle\assets, --version, MOD_DEV, --username, Dev, --accessToken, ❄❄❄❄❄❄❄❄, --userProperties, {}] [19Jan2022 19:38:32.509] [main/INFO] [cpw.mods.modlauncher.Launcher/MODLAUNCHER]: ModLauncher 8.0.9+86+master.3cf110c starting: java version 16.0.2 by Oracle Corporation [19Jan2022 19:38:33.121] [main/INFO] [net.minecraftforge.fml.loading.FixSSL/CORE]: Added Lets Encrypt root certificates as additional trust [19Jan2022 19:38:33.248] [main/INFO] [mixin/]: SpongePowered MIXIN Subsystem Version=0.8.4 Source=file:/C:/Users/david/.gradle/caches/modules-2/files-2.1/org.spongepowered/mixin/0.8.4/4ec7d77d9ab32596ca0b78bb123956734767e3a/mixin-0.8.4.jar Service=ModLauncher Env=CLIENT [19Jan2022 19:38:38.129] [main/INFO] [cpw.mods.modlauncher.LaunchServiceHandler/MODLAUNCHER]: Launching target 'fmluserdevclient' with arguments [--version, MOD_DEV, --gameDir, ., --assetsDir, C:\Users\david\.gradle\caches\forge_gradle\assets, --assetIndex, 1.16, --username, Dev, --accessToken, ❄❄❄❄❄❄❄❄, --userProperties, {}] [19Jan2022 19:38:56.600] [Render thread/INFO] [com.mojang.authlib.yggdrasil.YggdrasilAuthenticationService/]: Environment: authHost='https://authserver.mojang.com', accountsHost='https://api.mojang.com', sessionHost='https://sessionserver.mojang.com', servicesHost='https://api.minecraftservices.com', name='PROD' [19Jan2022 19:38:57.885] [Render thread/ERROR] [net.minecraft.client.Minecraft/]: Failed to verify authentication com.mojang.authlib.exceptions.AuthenticationUnavailableException: null at com.mojang.authlib.yggdrasil.YggdrasilSocialInteractionsService.checkPrivileges(YggdrasilSocialInteractionsService.java:97) ~[authlib-2.1.28.jar:?] at com.mojang.authlib.yggdrasil.YggdrasilSocialInteractionsService.<init>(YggdrasilSocialInteractionsService.java:40) ~[authlib-2.1.28.jar:?] at com.mojang.authlib.yggdrasil.YggdrasilAuthenticationService.createSocialInteractionsService(YggdrasilAuthenticationService.java:152) ~[authlib-2.1.28.jar:?] at net.minecraft.client.Minecraft.createSocialInteractions(Minecraft.java:551) ~[forge-1.16.5-36.2.20_mapped_official_1.16.5.jar:?] at net.minecraft.client.Minecraft.<init>(Minecraft.java:383) ~[forge-1.16.5-36.2.20_mapped_official_1.16.5.jar:?] at net.minecraft.client.main.Main.main(Main.java:149) ~[forge-1.16.5-36.2.20_mapped_official_1.16.5.jar:?] at jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:?] at jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:78) ~[?:?] at jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[?:?] at java.lang.reflect.Method.invoke(Method.java:567) ~[?:?] at net.minecraftforge.userdev.FMLUserdevClientLaunchProvider.lambda$launchService$0(FMLUserdevClientLaunchProvider.java:52) ~[forge-1.16.5-36.2.20_mapped_official_1.16.5.jar:?] at cpw.mods.modlauncher.LaunchServiceHandlerDecorator.launch(LaunchServiceHandlerDecorator.java:37) [modlauncher-8.0.9.jar:?] at cpw.mods.modlauncher.LaunchServiceHandler.launch(LaunchServiceHandler.java:54) [modlauncher-8.0.9.jar:?] at cpw.mods.modlauncher.LaunchServiceHandler.launch(LaunchServiceHandler.java:72) [modlauncher-8.0.9.jar:?] at cpw.mods.modlauncher.Launcher.run(Launcher.java:82) [modlauncher-8.0.9.jar:?] at cpw.mods.modlauncher.Launcher.main(Launcher.java:66) [modlauncher-8.0.9.jar:?] at net.minecraftforge.userdev.LaunchTesting.main(LaunchTesting.java:108) [forge-1.16.5-36.2.20_mapped_official_1.16.5.jar:?] [19Jan2022 19:38:57.903] [Render thread/INFO] [net.minecraft.client.Minecraft/]: Setting user: Dev [19Jan2022 19:38:58.300] [Render thread/INFO] [net.minecraft.client.Minecraft/]: Backend library: LWJGL version 3.2.2 build 10 [19Jan2022 19:39:00.295] [modloading-worker-2/INFO] [net.minecraftforge.common.ForgeMod/FORGEMOD]: Forge mod loading, version 36.2.20, for MC 1.16.5 with MCP 20210115.111550 [19Jan2022 19:39:00.302] [modloading-worker-2/INFO] [net.minecraftforge.common.MinecraftForge/FORGE]: MinecraftForge v36.2.20 Initialized [19Jan2022 19:39:05.738] [Render thread/INFO] [com.mojang.text2speech.NarratorWindows/]: Narrator library for x64 successfully loaded [19Jan2022 19:39:05.961] [Render thread/INFO] [net.minecraft.resources.SimpleReloadableResourceManager/]: Reloading ResourceManager: Default, Mod Resources [19Jan2022 19:39:06.499] [Forge Version Check/INFO] [net.minecraftforge.fml.VersionChecker/]: [forge] Starting version check at https://files.minecraftforge.net/net/minecraftforge/forge/promotions_slim.json [19Jan2022 19:39:07.319] [Forge Version Check/INFO] [net.minecraftforge.fml.VersionChecker/]: [forge] Found status: UP_TO_DATE Current: 36.2.20 Target: null [19Jan2022 19:39:23.497] [Worker-Main-11/WARN] [net.minecraft.client.renderer.model.ModelBakery/]: Unable to load model: 'multiverse:dimension_slasher#inventory' referenced from: multiverse:dimension_slasher#inventory: java.io.FileNotFoundException: multiverse:models/item/dimension_slasher.json [19Jan2022 19:39:29.402] [Render thread/INFO] [net.minecraft.client.audio.SoundSystem/]: OpenAL initialized. [19Jan2022 19:39:29.403] [Render thread/INFO] [net.minecraft.client.audio.SoundEngine/SOUNDS]: Sound engine started [19Jan2022 19:39:30.198] [Render thread/INFO] [net.minecraft.client.renderer.texture.AtlasTexture/]: Created: 1024x512x4 minecraft:textures/atlas/blocks.png-atlas [19Jan2022 19:39:30.419] [Render thread/INFO] [net.minecraft.client.renderer.texture.AtlasTexture/]: Created: 256x128x4 minecraft:textures/atlas/signs.png-atlas [19Jan2022 19:39:30.421] [Render thread/INFO] [net.minecraft.client.renderer.texture.AtlasTexture/]: Created: 512x512x4 minecraft:textures/atlas/banner_patterns.png-atlas [19Jan2022 19:39:30.431] [Render thread/INFO] [net.minecraft.client.renderer.texture.AtlasTexture/]: Created: 512x512x4 minecraft:textures/atlas/shield_patterns.png-atlas [19Jan2022 19:39:30.443] [Render thread/INFO] [net.minecraft.client.renderer.texture.AtlasTexture/]: Created: 256x256x4 minecraft:textures/atlas/chest.png-atlas [19Jan2022 19:39:30.446] [Render thread/INFO] [net.minecraft.client.renderer.texture.AtlasTexture/]: Created: 512x256x4 minecraft:textures/atlas/beds.png-atlas [19Jan2022 19:39:30.451] [Render thread/INFO] [net.minecraft.client.renderer.texture.AtlasTexture/]: Created: 512x256x4 minecraft:textures/atlas/shulker_boxes.png-atlas [19Jan2022 19:39:32.221] [Render thread/INFO] [net.minecraft.client.renderer.texture.AtlasTexture/]: Created: 256x256x0 minecraft:textures/atlas/particles.png-atlas [19Jan2022 19:39:32.274] [Render thread/INFO] [net.minecraft.client.renderer.texture.AtlasTexture/]: Created: 256x256x0 minecraft:textures/atlas/paintings.png-atlas [19Jan2022 19:39:32.279] [Render thread/INFO] [net.minecraft.client.renderer.texture.AtlasTexture/]: Created: 128x128x0 minecraft:textures/atlas/mob_effects.png-atlas [19Jan2022 19:39:33.070] [Realms Notification Availability checker #1/INFO] [com.mojang.realmsclient.client.RealmsClient/]: Could not authorize you against Realms server: Invalid session id [19Jan2022 19:54:25.061] [Render thread/INFO] [net.minecraft.world.storage.SaveFormat/]: Attempt 1... [19Jan2022 19:54:28.360] [Render thread/WARN] [net.minecraft.command.Commands/]: Ambiguity between arguments [teleport, destination] and [teleport, targets] with inputs: [Player, 0123, @e, dd12be42-52a9-4a91-a8a1-11c01849e498] [19Jan2022 19:54:28.361] [Render thread/WARN] [net.minecraft.command.Commands/]: Ambiguity between arguments [teleport, location] and [teleport, destination] with inputs: [0.1 -0.5 .9, 0 0 0] [19Jan2022 19:54:28.362] [Render thread/WARN] [net.minecraft.command.Commands/]: Ambiguity between arguments [teleport, location] and [teleport, targets] with inputs: [0.1 -0.5 .9, 0 0 0] [19Jan2022 19:54:28.363] [Render thread/WARN] [net.minecraft.command.Commands/]: Ambiguity between arguments [teleport, targets] and [teleport, destination] with inputs: [Player, 0123, dd12be42-52a9-4a91-a8a1-11c01849e498] [19Jan2022 19:54:28.364] [Render thread/WARN] [net.minecraft.command.Commands/]: Ambiguity between arguments [teleport, targets, location] and [teleport, targets, destination] with inputs: [0.1 -0.5 .9, 0 0 0] [19Jan2022 19:54:28.370] [Render thread/INFO] [net.minecraft.resources.SimpleReloadableResourceManager/]: Reloading ResourceManager: Default, main, forge-1.16.5-36.2.20_mapped_official_1.16.5.jar [19Jan2022 19:54:29.923] [Render thread/INFO] [net.minecraft.item.crafting.RecipeManager/]: Loaded 7 recipes [19Jan2022 19:54:30.966] [Render thread/INFO] [net.minecraft.advancements.AdvancementList/]: Loaded 927 advancements [19Jan2022 19:54:31.653] [Render thread/INFO] [com.mojang.authlib.yggdrasil.YggdrasilAuthenticationService/]: Environment: authHost='https://authserver.mojang.com', accountsHost='https://api.mojang.com', sessionHost='https://sessionserver.mojang.com', servicesHost='https://api.minecraftservices.com', name='PROD' [19Jan2022 19:54:31.725] [Server thread/INFO] [net.minecraft.server.integrated.IntegratedServer/]: Starting integrated minecraft server version 1.16.5 [19Jan2022 19:54:31.726] [Server thread/INFO] [net.minecraft.server.MinecraftServer/]: Generating keypair [19Jan2022 19:54:31.809] [Server thread/WARN] [net.minecraftforge.common.ForgeConfigSpec/CORE]: Configuration file .\saves\New World\serverconfig\multiverse-server.toml is not correct. Correcting [19Jan2022 19:54:31.812] [Server thread/WARN] [net.minecraftforge.common.ForgeConfigSpec/CORE]: Incorrect key Server config for Multiverse mod was corrected from null to its default, SimpleCommentedConfig:{}. [19Jan2022 19:54:31.813] [Server thread/WARN] [net.minecraftforge.common.ForgeConfigSpec/CORE]: Incorrect key Server config for Multiverse mod.maxDimensions was corrected from null to its default, 25. [19Jan2022 19:54:31.814] [Server thread/WARN] [net.minecraftforge.common.ForgeConfigSpec/CORE]: Incorrect key Server config for Multiverse mod.biomeTypeChance was corrected from null to its default, 0.1. [19Jan2022 19:54:31.815] [Server thread/WARN] [net.minecraftforge.common.ForgeConfigSpec/CORE]: Incorrect key Server config for Multiverse mod.fixedTimeChance was corrected from null to its default, 0.25. [19Jan2022 19:54:31.816] [Server thread/WARN] [net.minecraftforge.common.ForgeConfigSpec/CORE]: Incorrect key Server config for Multiverse mod.inverse was corrected from null to its default, false. [19Jan2022 19:54:31.816] [Server thread/WARN] [net.minecraftforge.common.ForgeConfigSpec/CORE]: Incorrect key Server config for Multiverse mod.riftChance was corrected from null to its default, 20. [19Jan2022 19:54:31.822] [Server thread/WARN] [net.minecraftforge.common.ForgeConfigSpec/CORE]: Configuration file .\saves\New World\serverconfig\forge-server.toml is not correct. Correcting [19Jan2022 19:54:31.823] [Server thread/WARN] [net.minecraftforge.common.ForgeConfigSpec/CORE]: Incorrect key server was corrected from null to its default, SimpleCommentedConfig:{}. [19Jan2022 19:54:31.823] [Server thread/WARN] [net.minecraftforge.common.ForgeConfigSpec/CORE]: Incorrect key server.removeErroringEntities was corrected from null to its default, false. [19Jan2022 19:54:31.823] [Server thread/WARN] [net.minecraftforge.common.ForgeConfigSpec/CORE]: Incorrect key server.removeErroringTileEntities was corrected from null to its default, false. [19Jan2022 19:54:31.824] [Server thread/WARN] [net.minecraftforge.common.ForgeConfigSpec/CORE]: Incorrect key server.fullBoundingBoxLadders was corrected from null to its default, false. [19Jan2022 19:54:31.824] [Server thread/WARN] [net.minecraftforge.common.ForgeConfigSpec/CORE]: Incorrect key server.zombieBaseSummonChance was corrected from null to its default, 0.1. [19Jan2022 19:54:31.825] [Server thread/WARN] [net.minecraftforge.common.ForgeConfigSpec/CORE]: Incorrect key server.zombieBabyChance was corrected from null to its default, 0.05. [19Jan2022 19:54:31.825] [Server thread/WARN] [net.minecraftforge.common.ForgeConfigSpec/CORE]: Incorrect key server.logCascadingWorldGeneration was corrected from null to its default, true. [19Jan2022 19:54:31.826] [Server thread/WARN] [net.minecraftforge.common.ForgeConfigSpec/CORE]: Incorrect key server.fixVanillaCascading was corrected from null to its default, false. [19Jan2022 19:54:31.828] [Server thread/WARN] [net.minecraftforge.common.ForgeConfigSpec/CORE]: Incorrect key server.dimensionUnloadQueueDelay was corrected from null to its default, 0. [19Jan2022 19:54:31.829] [Server thread/WARN] [net.minecraftforge.common.ForgeConfigSpec/CORE]: Incorrect key server.treatEmptyTagsAsAir was corrected from null to its default, false. [19Jan2022 19:54:31.830] [Server thread/WARN] [net.minecraftforge.common.ForgeConfigSpec/CORE]: Incorrect key server.fixAdvancementLoading was corrected from null to its default, true. [19Jan2022 19:54:35.808] [Server thread/INFO] [net.minecraft.server.MinecraftServer/]: Preparing start region for dimension minecraft:overworld [19Jan2022 19:54:36.159] [Render thread/INFO] [net.minecraft.world.chunk.listener.LoggingChunkStatusListener/]: Preparing spawn area: 0% [19Jan2022 19:54:36.359] [Render thread/INFO] [net.minecraft.world.chunk.listener.LoggingChunkStatusListener/]: Preparing spawn area: 0% [19Jan2022 19:54:36.858] [Render thread/INFO] [net.minecraft.world.chunk.listener.LoggingChunkStatusListener/]: Preparing spawn area: 0% [19Jan2022 19:54:37.341] [Render thread/INFO] [net.minecraft.world.chunk.listener.LoggingChunkStatusListener/]: Preparing spawn area: 0% I'm really confused as to what I changed to cause this. The versions before did not have this issue, but it appeared after the latest commit. 
    • thank you it worked, but 2 things, tell me where i have tu pubish my posts, i publish them in modder support isnt that right?   and Diesieben how do you quickly find how to solve modding errors, i can do it but if i create my own program or something but im minecraft modding, what goes through your mind to solve those problems? for example i still cant solve my problem with drawing correctly a glowing line even if i look the minecraft classes  
  • Topics

  • Who's Online (See full list)

×
×
  • Create New...

Important Information

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