Eigene Villager-Trades erstellen

Hier könnt ihr anderen Leuten helfen, indem ihr Anleitungen oder praktische Codesegmente zur Verfügung stellt.

Re: Eigene Villager-Trades erstellen

Beitragvon Summerfeeling » Mo 7. Jul 2014, 22:30

Jofkos hat geschrieben:
Summerfeeling hat geschrieben: WorldServer world = ((CraftWorld) Bukkit.getPlayer("world")).getHandle();
Du meinst wohl getWorld!? also
Code: Alles auswählen
  1. WorldServer world = ((CraftWorld) Bukkit.getWorld("world")).getHandle();


Ohh! Ja mein ich. Danke für den Hinweis, wird sofort geändert. :?
Grüße
Summerfeeling | Timo
Benutzeravatar
Summerfeeling
 
Beiträge: 1300
Registriert: Sa 15. Jun 2013, 18:43
Wohnort: Viersen

Re: Eigene Villager-Trades erstellen

Beitragvon Summerfeeling » Mo 7. Jul 2014, 22:34

TheBuffXY99 hat geschrieben:Bei mir gibt es dann diese Fehlermeldung:

Code: Alles auswählen
  1. [19:43:19 WARN]: Can't keep up! Did the system time change, or is the server ove
  2. rloaded? Running 3531ms behind, skipping 70 tick(s)
  3. [19:43:26 ERROR]: Could not pass event InventoryClickEvent to Rush v1.0
  4. org.bukkit.event.EventException
  5.         at org.bukkit.plugin.java.JavaPluginLoader$1.execute(JavaPluginLoader.ja
  6. va:294) ~[craftbukkit.jar:git-Bukkit-1.7.9-R0.1-10-g8688bd4-b3092jnks]
  7.         at org.bukkit.plugin.RegisteredListener.callEvent(RegisteredListener.jav
  8. a:62) ~[craftbukkit.jar:git-Bukkit-1.7.9-R0.1-10-g8688bd4-b3092jnks]
  9.         at org.bukkit.plugin.SimplePluginManager.fireEvent(SimplePluginManager.j
  10. ava:501) [craftbukkit.jar:git-Bukkit-1.7.9-R0.1-10-g8688bd4-b3092jnks]
  11.         at org.bukkit.plugin.SimplePluginManager.callEvent(SimplePluginManager.j
  12. ava:486) [craftbukkit.jar:git-Bukkit-1.7.9-R0.1-10-g8688bd4-b3092jnks]
  13.         at net.minecraft.server.v1_7_R3.PlayerConnection.a(PlayerConnection.java
  14. :1364) [craftbukkit.jar:git-Bukkit-1.7.9-R0.1-10-g8688bd4-b3092jnks]
  15.         at net.minecraft.server.v1_7_R3.PacketPlayInWindowClick.a(SourceFile:32)
  16. [craftbukkit.jar:git-Bukkit-1.7.9-R0.1-10-g8688bd4-b3092jnks]
  17.         at net.minecraft.server.v1_7_R3.PacketPlayInWindowClick.handle(SourceFil
  18. e:10) [craftbukkit.jar:git-Bukkit-1.7.9-R0.1-10-g8688bd4-b3092jnks]
  19.         at net.minecraft.server.v1_7_R3.NetworkManager.a(NetworkManager.java:157
  20. ) [craftbukkit.jar:git-Bukkit-1.7.9-R0.1-10-g8688bd4-b3092jnks]
  21.         at net.minecraft.server.v1_7_R3.ServerConnection.c(SourceFile:134) [craf
  22. tbukkit.jar:git-Bukkit-1.7.9-R0.1-10-g8688bd4-b3092jnks]
  23.         at net.minecraft.server.v1_7_R3.MinecraftServer.v(MinecraftServer.java:6
  24. 67) [craftbukkit.jar:git-Bukkit-1.7.9-R0.1-10-g8688bd4-b3092jnks]
  25.         at net.minecraft.server.v1_7_R3.DedicatedServer.v(DedicatedServer.java:2
  26. 60) [craftbukkit.jar:git-Bukkit-1.7.9-R0.1-10-g8688bd4-b3092jnks]
  27.         at net.minecraft.server.v1_7_R3.MinecraftServer.u(MinecraftServer.java:5
  28. 58) [craftbukkit.jar:git-Bukkit-1.7.9-R0.1-10-g8688bd4-b3092jnks]
  29.         at net.minecraft.server.v1_7_R3.MinecraftServer.run(MinecraftServer.java
  30. :469) [craftbukkit.jar:git-Bukkit-1.7.9-R0.1-10-g8688bd4-b3092jnks]
  31.         at net.minecraft.server.v1_7_R3.ThreadServerApplication.run(SourceFile:6
  32. 28) [craftbukkit.jar:git-Bukkit-1.7.9-R0.1-10-g8688bd4-b3092jnks]
  33. Caused by: java.lang.NullPointerException
  34.         at Game.VillagerTrades.VillagerTrades(VillagerTrades.java:27) ~[?:?]
  35.         at Listener.ShopBuy.on(ShopBuy.java:23) ~[?:?]
  36.         at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:1.7.0
  37. _51]
  38.         at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) ~[?:1.7.0
  39. _51]
  40.         at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) ~[?:1
  41. .7.0_51]
  42.         at java.lang.reflect.Method.invoke(Unknown Source) ~[?:1.7.0_51]
  43.         at org.bukkit.plugin.java.JavaPluginLoader$1.execute(JavaPluginLoader.ja
  44. va:292) ~[craftbukkit.jar:git-Bukkit-1.7.9-R0.1-10-g8688bd4-b3092jnks]
  45.         ... 13 more
  46. >

at Game.VillagerTrades.VillagerTrades(VillagerTrades.java:27) ~[?:?]
at Listener.ShopBuy.on(ShopBuy.java:23) ~[?:?]

Zeile 27 deiner VillagerTrades-Class und Zeile 23 deiner ShopBuy-Class bitte.
Grüße
Summerfeeling | Timo
Benutzeravatar
Summerfeeling
 
Beiträge: 1300
Registriert: Sa 15. Jun 2013, 18:43
Wohnort: Viersen

Re: Eigene Villager-Trades erstellen

Beitragvon Sep2703 » Mo 14. Jul 2014, 08:22

Hey,

Ich habe das Ganze nur geringfügig von der Anleitung abgeändert, allerdings sollten die Veränderungen irrelevant sein.
InGame funktioniert auch alles soweit.
Nur kommt eine Fehlermeldung in der Konsole:
Code: Alles auswählen
  1. [09:24:51] [Server thread/ERROR]: "Silently" catching entity tracking error.
  2. net.minecraft.server.v1_7_R4.ReportedException: Adding entity to track
  3.    at net.minecraft.server.v1_7_R4.EntityTracker.addEntity(EntityTracker.java:120) [craftbukkit.jar:git-Bukkit-1.7.9-R0.2-15-g66c314d-b3104jnks]
  4.    at net.minecraft.server.v1_7_R4.EntityTracker.track(EntityTracker.java:73) [craftbukkit.jar:git-Bukkit-1.7.9-R0.2-15-g66c314d-b3104jnks]
  5.    at net.minecraft.server.v1_7_R4.WorldManager.a(WorldManager.java:18) [craftbukkit.jar:git-Bukkit-1.7.9-R0.2-15-g66c314d-b3104jnks]
  6.    at net.minecraft.server.v1_7_R4.World.a(World.java:1010) [craftbukkit.jar:git-Bukkit-1.7.9-R0.2-15-g66c314d-b3104jnks]
  7.    at net.minecraft.server.v1_7_R4.WorldServer.a(WorldServer.java:800) [craftbukkit.jar:git-Bukkit-1.7.9-R0.2-15-g66c314d-b3104jnks]
  8.    at net.minecraft.server.v1_7_R4.World.addEntity(World.java:1003) [craftbukkit.jar:git-Bukkit-1.7.9-R0.2-15-g66c314d-b3104jnks]
  9.    at net.minecraft.server.v1_7_R4.World.addEntity(World.java:947) [craftbukkit.jar:git-Bukkit-1.7.9-R0.2-15-g66c314d-b3104jnks]
  10.    at net.minecraft.server.v1_7_R4.PlayerList.repositionEntity(PlayerList.java:780) [craftbukkit.jar:git-Bukkit-1.7.9-R0.2-15-g66c314d-b3104jnks]
  11.    at net.minecraft.server.v1_7_R4.Entity.teleportTo(Entity.java:1819) [craftbukkit.jar:git-Bukkit-1.7.9-R0.2-15-g66c314d-b3104jnks]
  12.    at de.janhektor.test.VillagerTrades.<init>(VillagerTrades.java:47) [Test.jar:?]
  13.    at de.janhektor.test.TestPlugin.onCommand(TestPlugin.java:32) [Test.jar:?]
  14.    at org.bukkit.command.PluginCommand.execute(PluginCommand.java:44) [craftbukkit.jar:git-Bukkit-1.7.9-R0.2-15-g66c314d-b3104jnks]
  15.    at org.bukkit.command.SimpleCommandMap.dispatch(SimpleCommandMap.java:180) [craftbukkit.jar:git-Bukkit-1.7.9-R0.2-15-g66c314d-b3104jnks]
  16.    at org.bukkit.craftbukkit.v1_7_R4.CraftServer.dispatchCommand(CraftServer.java:740) [craftbukkit.jar:git-Bukkit-1.7.9-R0.2-15-g66c314d-b3104jnks]
  17.    at net.minecraft.server.v1_7_R4.PlayerConnection.handleCommand(PlayerConnection.java:957) [craftbukkit.jar:git-Bukkit-1.7.9-R0.2-15-g66c314d-b3104jnks]
  18.    at net.minecraft.server.v1_7_R4.PlayerConnection.a(PlayerConnection.java:818) [craftbukkit.jar:git-Bukkit-1.7.9-R0.2-15-g66c314d-b3104jnks]
  19.    at net.minecraft.server.v1_7_R4.PacketPlayInChat.a(PacketPlayInChat.java:28) [craftbukkit.jar:git-Bukkit-1.7.9-R0.2-15-g66c314d-b3104jnks]
  20.    at net.minecraft.server.v1_7_R4.PacketPlayInChat.handle(PacketPlayInChat.java:47) [craftbukkit.jar:git-Bukkit-1.7.9-R0.2-15-g66c314d-b3104jnks]
  21.    at net.minecraft.server.v1_7_R4.NetworkManager.a(NetworkManager.java:157) [craftbukkit.jar:git-Bukkit-1.7.9-R0.2-15-g66c314d-b3104jnks]
  22.    at net.minecraft.server.v1_7_R4.ServerConnection.c(SourceFile:134) [craftbukkit.jar:git-Bukkit-1.7.9-R0.2-15-g66c314d-b3104jnks]
  23.    at net.minecraft.server.v1_7_R4.MinecraftServer.v(MinecraftServer.java:667) [craftbukkit.jar:git-Bukkit-1.7.9-R0.2-15-g66c314d-b3104jnks]
  24.    at net.minecraft.server.v1_7_R4.DedicatedServer.v(DedicatedServer.java:258) [craftbukkit.jar:git-Bukkit-1.7.9-R0.2-15-g66c314d-b3104jnks]
  25.    at net.minecraft.server.v1_7_R4.MinecraftServer.u(MinecraftServer.java:558) [craftbukkit.jar:git-Bukkit-1.7.9-R0.2-15-g66c314d-b3104jnks]
  26.    at net.minecraft.server.v1_7_R4.MinecraftServer.run(MinecraftServer.java:469) [craftbukkit.jar:git-Bukkit-1.7.9-R0.2-15-g66c314d-b3104jnks]
  27.    at net.minecraft.server.v1_7_R4.ThreadServerApplication.run(SourceFile:628) [craftbukkit.jar:git-Bukkit-1.7.9-R0.2-15-g66c314d-b3104jnks]
  28. Caused by: java.lang.IllegalStateException: Entity is already tracked!
  29.    at net.minecraft.server.v1_7_R4.EntityTracker.addEntity(EntityTracker.java:100) ~[craftbukkit.jar:git-Bukkit-1.7.9-R0.2-15-g66c314d-b3104jnks]
  30.    ... 24 more


Irgendein Problem scheint wohl der "EntityTracker" zu machen.

Mein Code:
Code: Alles auswählen
  1. public class VillagerTrades {
  2.    private static String PATH;
  3.    private static String VERSION;
  4.    
  5.    public VillagerTrades(List<ItemStack[]> recipes) {
  6.       
  7.       VillagerTrades.PATH = Bukkit.getServer().getClass().getPackage().getName();
  8.       VillagerTrades.VERSION = PATH.substring(PATH.lastIndexOf(".")+1, PATH.length());
  9.       
  10.       WorldServer world = ((CraftWorld) Bukkit.getWorld("world")).getHandle();
  11.       EntityVillager villager = new EntityVillager(world);
  12.       
  13.       MerchantRecipeList list = new MerchantRecipeList();
  14.       for (int i = 0; i < recipes.size(); i++) {
  15.          ItemStack is1 = recipes.get(i)[0];
  16.          ItemStack is2 = recipes.get(i)[1];
  17.          MerchantRecipe recipe1 = new MerchantRecipe(CraftItemStack.asNMSCopy(is1), CraftItemStack.asNMSCopy(is2));
  18.          recipe1.a(9999999);
  19.          list.a(recipe1);
  20.       }
  21.       
  22.       try {
  23.          Field field = Class.forName("net.minecraft.server." + VERSION + ".EntityVillager").getDeclaredField("bu");
  24.          field.setAccessible(true);
  25.          field.set(villager, list);
  26.       } catch (Exception e) {}
  27.       
  28.       world.addEntity(villager, SpawnReason.CUSTOM);
  29.       villager.teleportTo(new Location(world.getWorld(), 0, 80, 0), true);
  30.    }
  31. }


Und in der Hauptklasse wird der Konstruktor so aufgerufen:
Code: Alles auswählen
  1.          List<ItemStack[]> rezepte = new ArrayList<ItemStack[]>();
  2.          rezepte.add(new ItemStack[] { new ItemStack(Material.IRON_INGOT, 4), new ItemStack(Material.GOLD_INGOT) });
  3.          rezepte.add(new ItemStack[] { new ItemStack(Material.GOLD_INGOT), new ItemStack(Material.IRON_INGOT, 4) });
  4.          rezepte.add(new ItemStack[] { new ItemStack(Material.DIAMOND), new ItemStack(Material.GOLD_INGOT, 4) });
  5.          rezepte.add(new ItemStack[] { new ItemStack(Material.GOLD_INGOT, 4), new ItemStack(Material.DIAMOND) });
  6.          
  7.          new VillagerTrades(rezepte);



Das ganze ist nur ein Test-Plugin, man hätte das ganze sicherlich schöner lösen können. Aber mir geht es um den Fehler, der kommt, wenn ein Villager gespawnt wird.

Würde mich freuen, wenn jemand eine Ahnung hat :)

Sep2703
Du möchtest programmieren lernen oder dein Bukkit-/Spigot-Wissen erweitern?
Hier habe ich für dich kostenlose Tutorials: https://youtube.com/janhektor
Benutzeravatar
Sep2703
 
Beiträge: 677
Registriert: Mi 8. Jan 2014, 15:13
Wohnort: 127.0.0.1

Re: Eigene Villager-Trades erstellen

Beitragvon IK_Raptor » Mo 14. Jul 2014, 09:23

Zeile 47 in VillagerTrades?
Benutzeravatar
IK_Raptor
 
Beiträge: 609
Registriert: Mo 12. Aug 2013, 15:37

Re: Eigene Villager-Trades erstellen

Beitragvon Sep2703 » Mo 14. Jul 2014, 09:27

Moment mal.
Hier noch einmal die ganze Klasse mit vollständigen Imports:
Code: Alles auswählen
  1. package de.janhektor.test;
  2. import java.lang.reflect.Field;
  3. import java.util.List;
  4. import net.minecraft.server.v1_7_R4.EntityVillager;
  5. import net.minecraft.server.v1_7_R4.MerchantRecipe;
  6. import net.minecraft.server.v1_7_R4.MerchantRecipeList;
  7. import net.minecraft.server.v1_7_R4.WorldServer;
  8. import org.bukkit.Bukkit;
  9. import org.bukkit.Location;
  10. import org.bukkit.craftbukkit.v1_7_R4.CraftWorld;
  11. import org.bukkit.craftbukkit.v1_7_R4.inventory.CraftItemStack;
  12. import org.bukkit.event.entity.CreatureSpawnEvent.SpawnReason;
  13. import org.bukkit.inventory.ItemStack;
  14. public class VillagerTrades {
  15.    private static String PATH;
  16.    private static String VERSION;
  17.    
  18.    public VillagerTrades(List<ItemStack[]> recipes) {
  19.       
  20.       VillagerTrades.PATH = Bukkit.getServer().getClass().getPackage().getName();
  21.       VillagerTrades.VERSION = PATH.substring(PATH.lastIndexOf(".")+1, PATH.length());
  22.       
  23.       WorldServer world = ((CraftWorld) Bukkit.getWorld("world")).getHandle();
  24.       EntityVillager villager = new EntityVillager(world);
  25.       
  26.       MerchantRecipeList list = new MerchantRecipeList();
  27.       for (int i = 0; i < recipes.size(); i++) {
  28.          ItemStack is1 = recipes.get(i)[0];
  29.          ItemStack is2 = recipes.get(i)[1];
  30.          MerchantRecipe recipe1 = new MerchantRecipe(CraftItemStack.asNMSCopy(is1), CraftItemStack.asNMSCopy(is2));
  31.          recipe1.a(9999999);
  32.          list.a(recipe1);
  33.       }
  34.       
  35.       try {
  36.          Field field = Class.forName("net.minecraft.server." + VERSION + ".EntityVillager").getDeclaredField("bu");
  37.          field.setAccessible(true);
  38.          field.set(villager, list);
  39.       } catch (Exception e) {}
  40.       
  41.       world.addEntity(villager, SpawnReason.CUSTOM);
  42.       villager.teleportTo(new Location(world.getWorld(), 0, 80, 0), true);
  43.    }
  44. }
Du möchtest programmieren lernen oder dein Bukkit-/Spigot-Wissen erweitern?
Hier habe ich für dich kostenlose Tutorials: https://youtube.com/janhektor
Benutzeravatar
Sep2703
 
Beiträge: 677
Registriert: Mi 8. Jan 2014, 15:13
Wohnort: 127.0.0.1

Re: Eigene Villager-Trades erstellen

Beitragvon IK_Raptor » Mo 14. Jul 2014, 17:50

Ich glaub es gibt eine Methode für EntityVillager namens setLocation. Entfern mal das villager.teleportTo und füge ein villager.setLocation vor dem world.addEntiy ein.
Benutzeravatar
IK_Raptor
 
Beiträge: 609
Registriert: Mo 12. Aug 2013, 15:37

Re: Eigene Villager-Trades erstellen

Beitragvon Sep2703 » Mo 14. Jul 2014, 19:22

Cool, Danke!

Ich habe nun zwei Möglichkeiten ausgetestet:
1. Die Methode "setLocation()" nutzen
2. Die Methode "teleportTo()" nutzen, aber bevor ich der Welt den Villager hinzufügen
Das ist der entschiedene Punkt. Ich muss erst Teleportieren/Location setzen und darf dann erst den Villager der World hinzufügen.

Danke nochmal für deine Hilfe.
Du möchtest programmieren lernen oder dein Bukkit-/Spigot-Wissen erweitern?
Hier habe ich für dich kostenlose Tutorials: https://youtube.com/janhektor
Benutzeravatar
Sep2703
 
Beiträge: 677
Registriert: Mi 8. Jan 2014, 15:13
Wohnort: 127.0.0.1

Re: Eigene Villager-Trades erstellen

Beitragvon Howaner » Fr 18. Jul 2014, 16:43

Ich hab dafür eine richtige API geschrieben.
https://github.com/Howaner/FakeMobs/tre ... s/merchant
Benutzeravatar
Howaner
 
Beiträge: 34
Registriert: Di 18. Mär 2014, 14:01

Re: Eigene Villager-Trades erstellen

Beitragvon b4cteria » So 20. Jul 2014, 08:26

Hier ein Video zu dem Thema. Darin wird gezeigt wie die in der Beschreibung verlinkte API zu benutzen ist.:
https://m.youtube.com/watch?v=xNAu6jAk2J0
Benutzeravatar
b4cteria
 
Beiträge: 207
Registriert: Mo 21. Apr 2014, 15:46

Re: Eigene Villager-Trades erstellen

Beitragvon laklaklak » Fr 25. Jul 2014, 09:33

Wirklich schönes tutorial!
habe nur ein problem: mein Villager zeigt nicht alle trades an. Ich code gerade ein Rush Plugin und der Rüstungs Villager geht nur bis zum level 1 kettenharnisch (die lederrüstung sehe ich auch). Habe schon geguckt ob ein villager vieleicht "max trades" hat, aber kein erfolg. auch habe ich den villager mal zu einen Blacksmith (villager.setProfession(3)) gemacht, was mir auch nichts bringt. Ich bitte um hilfe!

Hier einmal alle wichtiegen klassen:
Trade.java
Code: Alles auswählen
  1. package net.freack100.rush.villager;
  2. import net.minecraft.server.v1_7_R1.MerchantRecipe;
  3. import org.bukkit.craftbukkit.v1_7_R1.inventory.CraftItemStack;
  4. import org.bukkit.inventory.ItemStack;
  5. public class Trade {
  6.    private ItemStack item1;
  7.    private ItemStack item2;
  8.    
  9.    private MerchantRecipe recipe;
  10.    
  11.    public Trade(ItemStack item1, ItemStack item2, int usage){
  12.       this.item1 = item1;
  13.       this.item2 = item2;
  14.       this.recipe = new MerchantRecipe(CraftItemStack.asNMSCopy(this.item1),CraftItemStack.asNMSCopy(this.item2));
  15.       this.recipe.a(usage);
  16.    }
  17.    
  18.    public MerchantRecipe getRecipe(){
  19.       return this.recipe;
  20.    }
  21.    
  22.    public ItemStack getFirst(){
  23.       return this.item1;
  24.    }
  25.    
  26.    public ItemStack getSecond(){
  27.       return this.item2;
  28.    }
  29.    
  30. }


TradeList.java
Code: Alles auswählen
  1. package net.freack100.rush.villager;
  2. import net.minecraft.server.v1_7_R1.MerchantRecipeList;
  3. public class TradeList {
  4.    MerchantRecipeList recipeList;
  5.    
  6.    public TradeList(){
  7.       this.recipeList = new MerchantRecipeList();
  8.    }
  9.    
  10.    public void addRecipe(Trade trade){
  11.       this.recipeList.a(trade.getRecipe());
  12.    }
  13.    
  14.    public MerchantRecipeList getRecipeList(){
  15.       return this.recipeList;
  16.    }
  17.    
  18. }


TradeVillager.java
Code: Alles auswählen
  1. package net.freack100.rush.villager;
  2. import java.lang.reflect.Field;
  3. import net.minecraft.server.v1_7_R1.EntityVillager;
  4. import net.minecraft.server.v1_7_R1.MerchantRecipeList;
  5. import net.minecraft.server.v1_7_R1.WorldServer;
  6. import org.bukkit.Bukkit;
  7. import org.bukkit.Location;
  8. import org.bukkit.craftbukkit.v1_7_R1.CraftWorld;
  9. import org.bukkit.entity.Villager;
  10. import org.bukkit.entity.Villager.Profession;
  11. import org.bukkit.event.entity.CreatureSpawnEvent.SpawnReason;
  12. import org.bukkit.potion.PotionEffect;
  13. import org.bukkit.potion.PotionEffectType;
  14. public class TradeVillager {
  15.    private MerchantRecipeList tradeList;
  16.    
  17.    private static String PATH;
  18.    private static String VERSION;
  19.    
  20.    public TradeVillager(TradeList blueArmour) {
  21.       TradeVillager.PATH = Bukkit.getServer().getClass().getPackage().getName();
  22.       TradeVillager.VERSION = PATH.substring(PATH.lastIndexOf(".")+1, PATH.length());
  23.       this.tradeList = blueArmour.getRecipeList();
  24.    }
  25.    
  26.    public TradeVillager(MerchantRecipeList blueArmour)
  27.    {
  28.       TradeVillager.PATH = Bukkit.getServer().getClass().getPackage().getName();
  29.       TradeVillager.VERSION = PATH.substring(PATH.lastIndexOf(".")+1, PATH.length());
  30.       this.tradeList = blueArmour;
  31.    }
  32.    public void spawnVillager(Location loc){
  33.       WorldServer mcworld = ((CraftWorld) loc.getWorld()).getHandle();
  34.       EntityVillager villager = new EntityVillager(mcworld);
  35.       villager.setProfession(3);
  36.       try {
  37.             Field field = Class.forName("net.minecraft.server." + VERSION + ".EntityVillager").getDeclaredField("bu");
  38.             field.setAccessible(true);
  39.             field.set(villager, tradeList);
  40.          } catch (NoSuchFieldException e) {
  41.             e.printStackTrace();
  42.          } catch (SecurityException e) {
  43.             e.printStackTrace();
  44.          } catch (ClassNotFoundException e) {
  45.             e.printStackTrace();
  46.          } catch (IllegalArgumentException e) {
  47.             e.printStackTrace();
  48.          } catch (IllegalAccessException e) {
  49.             e.printStackTrace();
  50.          }
  51.       
  52.       villager.setLocation(loc.getX(),loc.getY(),loc.getZ(),loc.getYaw(),loc.getPitch());
  53.       mcworld.addEntity(villager, SpawnReason.CUSTOM);
  54.       
  55.       Villager v = (Villager) villager.getBukkitEntity();
  56.       v.addPotionEffect(new PotionEffect(PotionEffectType.SLOW, 10000000, 100));
  57.    }
  58.    
  59. }


die methode wo ich die ItemStack adde:
Code: Alles auswählen
  1.    private void setupTrades(){
  2.       
  3.       //Rüstung | Items | Alle
  4.       ItemStack oneChest = new ItemStack(Material.CHAINMAIL_CHESTPLATE,1);
  5.       oneChest.addUnsafeEnchantment(Enchantment.PROTECTION_ENVIRONMENTAL, 1);
  6.       ItemStack twoChest = new ItemStack(Material.CHAINMAIL_CHESTPLATE,1);
  7.       twoChest.addUnsafeEnchantment(Enchantment.PROTECTION_ENVIRONMENTAL, 2);
  8.       ItemStack threeChest = new ItemStack(Material.CHAINMAIL_CHESTPLATE,1);
  9.       threeChest.addUnsafeEnchantment(Enchantment.PROTECTION_ENVIRONMENTAL, 3);
  10.       
  11.       //Rüstung | Items | Blau
  12.       ItemStack blueHelmet = setColor(new ItemStack(Material.LEATHER_HELMET,1), Color.fromRGB(0, 170, 170));
  13.       ItemStack blueChest = setColor(new ItemStack(Material.LEATHER_CHESTPLATE,1), Color.fromRGB(0, 170,170));
  14.       ItemStack bluePants = setColor(new ItemStack(Material.LEATHER_LEGGINGS,1), Color.fromRGB(0,170,170));
  15.       ItemStack blueShoes = setColor(new ItemStack(Material.LEATHER_BOOTS,1), Color.fromRGB(0, 170, 170));
  16.       
  17.       //Rüstung | Items | Rot
  18.       ItemStack redHelmet = setColor(new ItemStack(Material.LEATHER_HELMET,1), Color.fromRGB(255, 85, 85));
  19.       ItemStack redChest = setColor(new ItemStack(Material.LEATHER_CHESTPLATE,1), Color.fromRGB(255, 85, 85));
  20.       ItemStack redPants = setColor(new ItemStack(Material.LEATHER_LEGGINGS,1), Color.fromRGB(255, 85, 85));
  21.       ItemStack redShoes = setColor(new ItemStack(Material.LEATHER_BOOTS,1), Color.fromRGB(255, 85, 85));
  22.       
  23.       //Rüstung | Trades | Blau
  24.       MerchantRecipeList blueArmour = new MerchantRecipeList();
  25.       blueArmour.a(new Trade(setAmount(Bronze,1),blueHelmet,999999999).getRecipe());
  26.       blueArmour.a(new Trade(setAmount(Bronze,1),blueChest,999999999).getRecipe());
  27.       blueArmour.a(new Trade(setAmount(Bronze,1),bluePants,999999999).getRecipe());
  28.       blueArmour.a(new Trade(setAmount(Bronze,1),blueShoes,999999999).getRecipe());
  29.       blueArmour.a(new Trade(setAmount(Silber,1),oneChest,999999999).getRecipe());
  30.       blueArmour.a(new Trade(setAmount(Silber,3),twoChest,999999999).getRecipe());
  31.       blueArmour.a(new Trade(setAmount(Silber,7),threeChest,999999999).getRecipe());
  32.       
  33.       //Rüstung | Trades | Rot
  34.       TradeList redArmour = new TradeList();
  35.       redArmour.addRecipe(new Trade(setAmount(Bronze,1),redHelmet,999999999));
  36.       redArmour.addRecipe(new Trade(setAmount(Bronze,1),redChest,999999999));
  37.       redArmour.addRecipe(new Trade(setAmount(Bronze,1),redPants,999999999));
  38.       redArmour.addRecipe(new Trade(setAmount(Bronze,1),redShoes,999999999));
  39.       //redArmour.addRecipe(new Trade(setAmount(Silber,1),oneChest,999999999));
  40.       redArmour.addRecipe(new Trade(setAmount(Silber,3),twoChest,999999999));
  41.       redArmour.addRecipe(new Trade(setAmount(Silber,7),threeChest,999999999));
  42.       
  43.       //Villager | Erstellen
  44.       blueArmourVillager = new TradeVillager(blueArmour);
  45.       redArmourVillager = new TradeVillager(redArmour);
  46.    }
Benutzeravatar
laklaklak
 
Beiträge: 68
Registriert: So 24. Nov 2013, 16:32

VorherigeNächste

Zurück zu Anleitungen

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 3 Gäste