Register for your free account! | Forgot your password?

Go Back   elitepvpers > Other Online Games > Minecraft
You last visited: Today at 11:36

  • Please register to post and access all features, it's quick, easy and FREE!

Advertisement



Minecraft Villager

Discussion on Minecraft Villager within the Minecraft forum part of the Other Online Games category.

Reply
 
Old   #1
 
elite*gold: 0
Join Date: Feb 2014
Posts: 48
Received Thanks: 0
Question Minecraft Villager

Hey Leute,

Ich bin dabei ein Rush zu programmieren, und scheitere nun ein weiters mal an den Villagern. Ich habe es nun zwar geschaft die zu tauschenden Items zu editieren, aber jedes item nur ein mal. Sprich: Ich habe einen Bogen lvl1, einen lvl2 und einen lvl3. Die sollen alle von einem Villager getauscht werden.

Ohne diese mehrmals gleichen Items mache ich es bis jetzt so:

Code:
MerchantRecipe bow = new MerchantRecipe(CraftItemStack.asNMSCopy(new ItemStack(Material.CLAY_BRICK, 1)), CraftItemStack.asNMSCopy(MeinBogen));

bow.a(999999999);

recipes.a(bow);

EntityVillager villager = ((CraftVillager) vlg).getHandle();
		
		try
		{
	         Field field = Class.forName("net.minecraft.server.R1.7_R3.EntityVillager").getDeclaredField("bu");
	         field.setAccessible(true);
	         field.set(villager, recipes);
	    }
		catch(Exception e)
		{
			e.printStackTrace();
		}
MeinBogen ist dabei der Bogen mit enchantments und name, vlg ein EntityVillager aus dem EntityInteract Event.

Mache ich jetzt aber eben zwei bögen mit verschiedenen Namen und Enchantments, handelt der Villager hinterher nur den ersten.

Ich freue mich über eure Hilfe
MFG LuisKillergurke
LuisKillergurke is offline  
Old 07/19/2014, 19:04   #2


 
False's Avatar
 
elite*gold: 0
The Black Market: 243/0/0
Join Date: Apr 2011
Posts: 11,118
Received Thanks: 2,435
Code:
Entity e = Bukkit.getServer().getWorld("world").spawnEntity(p.getLocation(), EntityType.VILLAGER);
			          EntityVillager villager = ((CraftVillager) e).getHandle();
			          try {
			                Field recipes = villager.getClass().getDeclaredField("bu");
			                recipes.setAccessible(true);
			                MerchantRecipeList list = new MerchantRecipeList();
			               
			                MerchantRecipe recipe1;
			                MerchantRecipe recipe2;
			                MerchantRecipe recipe3;
			              
			 
			                recipe1 = new MerchantRecipe(CraftItemStack.asNMSCopy(new ItemStack(Material.BONE,1)), CraftItemStack.asNMSCopy(new ItemStack(Material.STICK,1)));
			                recipe2 = new MerchantRecipe(CraftItemStack.asNMSCopy(new ItemStack(Material.DIAMOND,1)), CraftItemStack.asNMSCopy(new ItemStack(Material.STONE,1)));
			                recipe3 = new MerchantRecipe(CraftItemStack.asNMSCopy(new ItemStack(Material.APPLE,1)), CraftItemStack.asNMSCopy(new ItemStack(Material.DIRT,1)));
			                
			               
			                recipe1.a(2048);
			                recipe2.a(2048);
			                recipe3.a(2048);
			              
			               
			                list.a(recipe1);
			                list.a(recipe2);
			                list.a(recipe3);
			              
			               
			                recipes.set(villager, list);
							} catch (Exception exception) {
			                exception.printStackTrace();
			          }
So könnte es z.b aussehen...
False is offline  
Old 07/19/2014, 20:36   #3
 
elite*gold: 0
Join Date: Feb 2014
Posts: 48
Received Thanks: 0
Ja, das hab ich auch schon...

Ich meine das so:

Ich habe 3 Bögen also 3 mal das gleiche Item, nur verzaubert, und möchte diese alle mit einem Villager verkaufen. Das geht so aber leider nicht, da er, wenn ich da einfach die 3 Bögen hintereinander hinschreibe, nur einer wirklich gehandelt wird...
LuisKillergurke is offline  
Old 07/19/2014, 20:51   #4


 
False's Avatar
 
elite*gold: 0
The Black Market: 243/0/0
Join Date: Apr 2011
Posts: 11,118
Received Thanks: 2,435
Quote:
Originally Posted by LuisKillergurke View Post
Ja, das hab ich auch schon...

Ich meine das so:

Ich habe 3 Bögen also 3 mal das gleiche Item, nur verzaubert, und möchte diese alle mit einem Villager verkaufen. Das geht so aber leider nicht, da er, wenn ich da einfach die 3 Bögen hintereinander hinschreibe, nur einer wirklich gehandelt wird...
Deklarier die Bögen einfach vorher, ca so :
Code:
ItemStack bow1 = new ItemStack(Material.BOW);
bow1.addEnchantment(Enchantment.ARROW_DAMAGE, 1);

ItemStack bow2 = new ItemStack(Material.BOW);
bow2.addEnchantment(Enchantment.ARROW_DAMAGE, 3);

ItemStack bow3 = new ItemStack(Material.BOW);
bow3.addEnchantment(Enchantment.ARROW_DAMAGE, 5);
und ersetz
Code:
CraftItemStack.asNMSCopy(new ItemStack(Material.STICK,1)))
durch
Code:
CraftItemStack.asNMSCopy(bow1))
usw..
Also das es ca so ist :
False is offline  
Old 07/19/2014, 21:41   #5
 
elite*gold: 0
Join Date: Feb 2014
Posts: 48
Received Thanks: 0
Das habe ich schon probiert... Es passiert trotzdem nichts anderes. Es wird nur Bogen 1 angezeigt...
LuisKillergurke is offline  
Old 07/19/2014, 21:54   #6


 
False's Avatar
 
elite*gold: 0
The Black Market: 243/0/0
Join Date: Apr 2011
Posts: 11,118
Received Thanks: 2,435
Quote:
Originally Posted by LuisKillergurke View Post
Das habe ich schon probiert... Es passiert trotzdem nichts anderes. Es wird nur Bogen 1 angezeigt...
Bei mir geht es ohne probleme

False is offline  
Thanks
1 User
Old 07/19/2014, 22:08   #7
 
elite*gold: 0
Join Date: Feb 2014
Posts: 48
Received Thanks: 0
Ok, dann hab ich wohl nen fehler oder bin zu unfähig ^^ ich schaue nochmal, was ich falsch habe.
Vielen Dank das du dir die Mühe gemacht hast mir das alles zu erklären

MFG LuisKillergurke
LuisKillergurke is offline  
Old 07/19/2014, 22:50   #8


 
False's Avatar
 
elite*gold: 0
The Black Market: 243/0/0
Join Date: Apr 2011
Posts: 11,118
Received Thanks: 2,435
Quote:
Originally Posted by LuisKillergurke View Post
Ok, dann hab ich wohl nen fehler oder bin zu unfähig ^^ ich schaue nochmal, was ich falsch habe.
Vielen Dank das du dir die Mühe gemacht hast mir das alles zu erklären

MFG LuisKillergurke
Kein Problem, wenn du weiterhin Probleme hast poste mal dein Komplette Klasse(Bitte auf Pastebin)
False is offline  
Old 07/20/2014, 12:56   #9
 
elite*gold: 0
Join Date: Feb 2014
Posts: 48
Received Thanks: 0
Ich habe immernoch ein Problem aber ich weis jetzt wo es liegt, nur nicht wie ich es behebe...
Ich glaube der Code hilft da auch nicht weiter, denn wenn ich es so mache wie du geht es.

Aber:
Ich möchte z.B. Bogen lvl.1 für 1 Gold verkaufen, bogen lvl.2 für 2, bogen3 für 3... Sprich immer genau der gleiche Tausch nur mit verschiedenen Verzauberungen und Namen.
LuisKillergurke is offline  
Old 07/20/2014, 13:11   #10
 
milsowa's Avatar
 
elite*gold: 10
Join Date: Mar 2010
Posts: 908
Received Thanks: 118
Quote:
Originally Posted by LuisKillergurke View Post
Ich habe immernoch ein Problem aber ich weis jetzt wo es liegt, nur nicht wie ich es behebe...
Ich glaube der Code hilft da auch nicht weiter, denn wenn ich es so mache wie du geht es.

Aber:
Ich möchte z.B. Bogen lvl.1 für 1 Gold verkaufen, bogen lvl.2 für 2, bogen3 für 3... Sprich immer genau der gleiche Tausch nur mit verschiedenen Verzauberungen und Namen.
.ƒaℓsє. hat es dir doch wunderschön gezeigt wie es geht.
Code:
ItemStack bow1 = new ItemStack(Material.BOW); //Bogen wird zu bow1
bow1.addEnchantment(Enchantment.ARROW_DAMAGE, 1);// bow 1 wird entchantment hinzugefügt

ItemStack bow2 = new ItemStack(Material.BOW); //Bogen wird auch zu bow2
bow2.addEnchantment(Enchantment.ARROW_DAMAGE, 3); // bow 2 wird entchantment hinzugefügt

ItemStack bow3 = new ItemStack(Material.BOW); //Bogen wird auch zu bow3
bow3.addEnchantment(Enchantment.ARROW_DAMAGE, 5); // bow 3 wird entchantment hinzugefügt

recipe1 = new MerchantRecipe(CraftItemStack.asNMSCopy(new ItemStack(Material.GOLD_INGOT,1)), CraftItemStack.asNMSCopy(bow1)); // bow1 soll 1Gold Kosten und wird als recipe1 abgekürtz
recipe2 = new MerchantRecipe(CraftItemStack.asNMSCopy(new ItemStack(Material.GOLD_INGOT,2)), CraftItemStack.asNMSCopy(bow2)); // bow2 soll 2Gold Kosten und wird als recipe2 abgekürtz
recipe3 = new MerchantRecipe(CraftItemStack.asNMSCopy(new ItemStack(Material.GOLD_INGOT,3)), CraftItemStack.asNMSCopy(bow3)); // bow3 soll 3Gold Kosten und wird als recipe3 abgekürtz
Oder wie meinst du das?
milsowa is offline  
Old 07/20/2014, 13:25   #11
 
elite*gold: 0
Join Date: Feb 2014
Posts: 48
Received Thanks: 0
Ja so meine ich das, aber wenn ich das mit dem Code mache, dann funktioniert es nicht. Nur ein Bogen wird wieder angezeigt die anderen nicht, aus irgendeinem Grund...
LuisKillergurke is offline  
Old 07/20/2014, 14:34   #12


 
False's Avatar
 
elite*gold: 0
The Black Market: 243/0/0
Join Date: Apr 2011
Posts: 11,118
Received Thanks: 2,435
Quote:
Originally Posted by LuisKillergurke View Post
Ja so meine ich das, aber wenn ich das mit dem Code mache, dann funktioniert es nicht. Nur ein Bogen wird wieder angezeigt die anderen nicht, aus irgendeinem Grund...
Wie du im Video siehst funktioniert mein Code, lad mal deine komplette Klasse auf Pastebin hoch dann schau ich mir das an.
False is offline  
Thanks
1 User
Old 07/20/2014, 15:28   #13
 
elite*gold: 0
Join Date: Feb 2014
Posts: 48
Received Thanks: 0
Ok, ist auf Pastebin ^^



Danke nochmal für eure Hilfe
LuisKillergurke is offline  
Old 07/20/2014, 20:55   #14


 
False's Avatar
 
elite*gold: 0
The Black Market: 243/0/0
Join Date: Apr 2011
Posts: 11,118
Received Thanks: 2,435
Quote:
Originally Posted by LuisKillergurke View Post
Ok, ist auf Pastebin ^^



Danke nochmal für eure Hilfe
Kein Problem, du bedankst dich ja wenigstens
Also es liegt dran das alle 3 mit gold gehandelt werden, sobald du die änderst werden auch alle Bögen angezeigt.
Wie du es dennoch hinbekommst das alle mit gold handelbar sind kann ich dir auf die schneller grade nicht sagen(grad keine zeit zu schauen^^).
False is offline  
Thanks
1 User
Old 07/21/2014, 15:01   #15
 
elite*gold: 0
Join Date: Feb 2014
Posts: 48
Received Thanks: 0
Ok, danke Trotzdem ^^

Ich habe auch schon viel im Internet gesucht, aber nichts passendes gefunden...
Aber vlt. find ich ja noch was oder komme zufällig drauf ^^

Vielen Dank für die Hilfe
MFG LuisKillergurke
LuisKillergurke is offline  

Powered by vBulletin®
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
SEO by vBSEO ©2011, Crawlability, Inc.
This site is protected by reCAPTCHA and the Google Privacy Policy and Terms of Service apply.

Support | Contact Us | FAQ | Advertising | Privacy Policy | Terms of Service | Abuse
Copyright ©2024 elitepvpers All Rights Reserved.