Jump to content

[1.16.5] edit Villager MerchantOffers when right clicked


Recommended Posts

Posted (edited)

I just want to change the villager MerchantOffers when rightclickt with a custom item.

So i creat this the offer will set but when i close the gui and open it again the offers will reset but why

have i to save them? or is there something wrong/is there a better way to do this?

 

	@SubscribeEvent
	public static void EntityInteractSpecific(PlayerInteractEvent.EntityInteractSpecific event) {
		
		PlayerEntity player = event.getPlayer();
		LivingEntity target = (LivingEntity) event.getTarget();
		World world = event.getWorld();
		
		if (target instanceof VillagerEntity) {
			
			VillagerEntity villager = (VillagerEntity) target;
			MerchantOffers offers = villager.getOffers();
			MerchantOffers newOffers = new MerchantOffers(offers.write());
			String uuid = villager.getUniqueID().toString().replace("-", "");
			int uniqueInteger = Integer.parseInt(uniqueHex(uuid, 2), 16) / 10;
			player.sendMessage(new StringTextComponent("uniqueInteger: " + uniqueInteger), player.getUniqueID());
			
			if (world.getDayTime() >= 3000 && world.getDayTime() <= 10000) {
				
				for (MerchantOffer merchantOffer : offers) {
					
					merchantOffer.resetUses();
					
				}
				
			}
			
			if (player.getHeldItem(event.getHand()).getItem() == CaveItems.RUBY_APPLE.get()) {
				
				if (!player.abilities.isCreativeMode) {
					
					player.getHeldItem(event.getHand()).shrink(1);
					
				}
				
				for (MerchantOffer merchantOffer : newOffers) {
					
					player.sendMessage(new StringTextComponent("getSpecialPrice: " + merchantOffer.getSpecialPrice() * (-1)), player.getUniqueID());
					
					ItemStack buyingStack = merchantOffer.getBuyingStackFirst();
					ItemStack sellingStack = merchantOffer.getSellingStack();
					
					if (buyingStack.getCount() > 1) {
						
						merchantOffer.setSpecialPrice(uniqueInteger * (-1));
						
					} else if (sellingStack.getCount() > 1) {
						
						
						
					}
					
				}
				
				villager.setOffers(newOffers);
				
			}
			
		}
	}

 

Edited by Luis_ST
Guest
This topic is now closed to further replies.

Announcements



  • Recently Browsing

    • No registered users viewing this page.
  • Posts

    • Oh I forgot to update the title. I figured out the issue and I'm rather embarrassed to say that it was a file path issue. The game already knew I was accessing the achievements so I wasn't suppose to include advancements in the file path. Minecraft file paths have always confused me a little bit... ResourceLocation advancementId = new ResourceLocation( TheDeadRise.MODID,"adventure/spawntrigger");
    • Can someone help my with this? My forge server won't open and I'm not that good with this stuff. It gave me this error message:   C:\Users\apbeu\Desktop\Forge server>java -Xmx4G -Xms1G -jar server.jar nogui 2024-12-11 18:21:01,054 main WARN Advanced terminal features are not available in this environment [18:21:01] [main/INFO] [cp.mo.mo.Launcher/MODLAUNCHER]: ModLauncher running: args [--gameDir, ., --launchTarget, fmlserver, --fml.forgeVersion, 36.2.34, --fml.mcpVersion, 20210115.111550, --fml.mcVersion, 1.16.5, --fml.forgeGroup, net.minecraftforge, nogui] [18:21:01] [main/INFO] [cp.mo.mo.Launcher/MODLAUNCHER]: ModLauncher 8.1.3+8.1.3+main-8.1.x.c94d18ec starting: java version 21.0.4 by Oracle Corporation Exception in thread "main" java.lang.IllegalAccessError: class cpw.mods.modlauncher.SecureJarHandler (in unnamed module @0x402e37bc) cannot access class sun.security.util.ManifestEntryVerifier (in module java.base) because module java.base does not export sun.security.util to unnamed module @0x402e37bc         at cpw.mods.modlauncher.SecureJarHandler.lambda$static$1(SecureJarHandler.java:45)         at cpw.mods.modlauncher.api.LamdbaExceptionUtils.uncheck(LamdbaExceptionUtils.java:95)         at cpw.mods.modlauncher.SecureJarHandler.<clinit>(SecureJarHandler.java:45)         at cpw.mods.modlauncher.Launcher.lambda$new$6(Launcher.java:55)         at java.base/java.util.concurrent.ConcurrentHashMap.computeIfAbsent(ConcurrentHashMap.java:1708)         at cpw.mods.modlauncher.api.TypesafeMap.computeIfAbsent(TypesafeMap.java:52)         at cpw.mods.modlauncher.api.TypesafeMap.computeIfAbsent(TypesafeMap.java:47)         at cpw.mods.modlauncher.Environment.computePropertyIfAbsent(Environment.java:62)         at cpw.mods.modlauncher.Launcher.<init>(Launcher.java:55)         at cpw.mods.modlauncher.Launcher.main(Launcher.java:66)         at net.minecraftforge.server.ServerMain$Runner.runLauncher(ServerMain.java:63)         at net.minecraftforge.server.ServerMain$Runner.access$100(ServerMain.java:60)         at net.minecraftforge.server.ServerMain.main(ServerMain.java:57) C:\Users\apbeu\Desktop\Forge server>pause
    • Here is the url for the crash report if anyone can help me, please. https://mclo.gs/KGn5LWy  
    • Every single time I try and open my modpack it crashes before the game fully opens and I don't know what is wrong. I open the crash logs but I don't understand what any of it means. What do I do?
    • Hey, sorry I haven't said anything in a while. I was banned on here for sending you straight up crash logs and they banned me for spam... but I learned that these forums are for forge only and I was working with neoforge... but thank you for all the help.
  • Topics

×
×
  • Create New...

Important Information

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