ShopCommands.java 1.7 KB

123456789101112131415161718192021222324252627282930313233343536
  1. package me.km.snuviscript.commands;
  2. import me.hammerle.snuviscript.code.ScriptManager;
  3. import me.km.snuviscript.FakeMerchant;
  4. import net.minecraft.entity.player.ServerPlayerEntity;
  5. import net.minecraft.item.ItemStack;
  6. import net.minecraft.item.MerchantOffer;
  7. import net.minecraft.util.text.StringTextComponent;
  8. public class ShopCommands {
  9. public static void registerFunctions(ScriptManager sm) {
  10. sm.registerFunction("shop.new", (sc, in) -> new FakeMerchant());
  11. sm.registerConsumer("shop.addoffer", (sc, in) -> {
  12. FakeMerchant npc = (FakeMerchant) in[0].get(sc);
  13. ItemStack buy = (ItemStack) in[1].get(sc);
  14. ItemStack sell = (ItemStack) in[2].get(sc);
  15. int maxUses = (in.length >= 4) ? in[3].getInt(sc) : Integer.MAX_VALUE;
  16. npc.getOffers().add(new MerchantOffer(buy, sell, maxUses, 0, 1.0f));
  17. });
  18. sm.registerConsumer("shop.adddoubleoffer", (sc, in) -> {
  19. FakeMerchant npc = (FakeMerchant) in[0].get(sc);
  20. ItemStack buyA = (ItemStack) in[1].get(sc);
  21. ItemStack buyB = (ItemStack) in[2].get(sc);
  22. ItemStack sell = (ItemStack) in[3].get(sc);
  23. int maxUses = (in.length >= 5) ? in[4].getInt(sc) : Integer.MAX_VALUE;
  24. npc.getOffers().add(new MerchantOffer(buyA, buyB, sell, maxUses, 0, 1.0f));
  25. });
  26. sm.registerConsumer("shop.open", (sc, in) -> {
  27. FakeMerchant npc = (FakeMerchant) in[0].get(sc);
  28. ServerPlayerEntity p = (ServerPlayerEntity) in[1].get(sc);
  29. String name = in[2].getString(sc);
  30. npc.setCustomer(p);
  31. npc.openMerchantContainer(p, new StringTextComponent(name), 1);
  32. });
  33. }
  34. }