ReadCommands.java 2.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253
  1. package me.km.snuviscript.commands;
  2. import me.hammerle.snuviscript.code.ScriptManager;
  3. import me.hammerle.snuviscript.code.SnuviUtils;
  4. import me.km.utils.ItemStackUtils;
  5. import me.km.utils.Location;
  6. import me.km.utils.Mapper;
  7. import me.km.utils.Utils;
  8. import net.minecraft.entity.Entity;
  9. import net.minecraft.entity.EntityType;
  10. import net.minecraft.item.Item;
  11. import net.minecraft.item.ItemStack;
  12. import net.minecraft.nbt.CompoundNBT;
  13. import net.minecraft.nbt.JsonToNBT;
  14. import net.minecraft.server.MinecraftServer;
  15. import net.minecraft.util.text.StringTextComponent;
  16. import net.minecraft.world.server.ServerWorld;
  17. public class ReadCommands {
  18. public static void registerFunctions(ScriptManager sm, MinecraftServer server) {
  19. sm.registerFunction("read.player", (sc, in) -> Utils.getPlayerByName(server, in[0].getString(sc)));
  20. sm.registerFunction("read.location", (sc, in) -> new Location(server, in[0].getString(sc)));
  21. sm.registerFunction("read.item", (sc, in) -> {
  22. String s = in[0].getString(sc);
  23. if(s.startsWith("{")) {
  24. String left = SnuviUtils.connect(sc, in, 1);
  25. return ItemStackUtils.getStackFromNbtString(s + left);
  26. }
  27. Item item = Mapper.getItem(s);
  28. int amount = in.length >= 2 ? in[1].getInt(sc) : 1;
  29. ItemStack stack = new ItemStack(item, amount);
  30. if(in.length >= 3) {
  31. stack.setDisplayName(new StringTextComponent(in[2].getString(sc)));
  32. }
  33. if(in.length >= 4) {
  34. for(int i = 3; i < in.length; i++) {
  35. ItemStackUtils.addLore(stack, in[i].getString(sc));
  36. }
  37. }
  38. return stack;
  39. });
  40. sm.registerFunction("read.spawnmob", (sc, in) -> {
  41. Location l = (Location) in[0].get(sc);
  42. ServerWorld sw = (ServerWorld) l.getWorld();
  43. CompoundNBT compoundnbt = JsonToNBT.getTagFromJson(SnuviUtils.connect(sc, in, 1));
  44. Entity entity = EntityType.func_220335_a(compoundnbt, sw, (ent) -> {
  45. ent.setLocationAndAngles(l.getX(), l.getY(), l.getZ(), ent.rotationYaw, ent.rotationPitch);
  46. return sw.summonEntity(ent) ? ent : null;
  47. });
  48. return entity;
  49. });
  50. }
  51. }