1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071 |
- package me.km.snuviscript.commands;
- import java.util.UUID;
- import me.hammerle.snuviscript.code.ScriptManager;
- import me.hammerle.snuviscript.code.SnuviUtils;
- import me.km.utils.ItemStackUtils;
- import me.km.utils.Location;
- import me.km.utils.Mapper;
- import me.km.utils.Utils;
- import net.minecraft.entity.Entity;
- import net.minecraft.entity.EntityType;
- import net.minecraft.inventory.EquipmentSlotType;
- import net.minecraft.item.Item;
- import net.minecraft.item.ItemStack;
- import net.minecraft.nbt.CompoundNBT;
- import net.minecraft.nbt.JsonToNBT;
- import net.minecraft.server.MinecraftServer;
- import net.minecraft.util.text.StringTextComponent;
- import net.minecraft.world.server.ServerWorld;
- public class ReadCommands {
- public static void registerFunctions(ScriptManager sm, MinecraftServer server) {
- sm.registerFunction("read.player", (sc, in) -> Utils.getPlayerByName(server, in[0].getString(sc)));
- sm.registerFunction("read.location", (sc, in) -> new Location(server, in[0].getString(sc)));
- sm.registerFunction("read.item", (sc, in) -> {
- try {
- String s = in[0].getString(sc);
- if(s.startsWith("{")) {
- String left = SnuviUtils.connect(sc, in, 1);
- CompoundNBT c = JsonToNBT.getTagFromJson(s + left);
- return ItemStack.read(c);
- }
- Item item = Mapper.getItem(s);
- int amount = in.length >= 2 ? in[1].getInt(sc) : 1;
- ItemStack stack = new ItemStack(item, amount);
- if(in.length >= 3) {
- stack.setDisplayName(new StringTextComponent(in[2].getString(sc)));
- }
- if(in.length >= 4) {
- for(int i = 3; i < in.length; i++) {
- ItemStackUtils.addLore(stack, in[i].getString(sc));
- }
- }
- return stack;
- } catch(Exception ex) {
- return null;
- }
- });
- sm.registerFunction("read.spawnmob", (sc, in) -> {
- Location l = (Location) in[0].get(sc);
- ServerWorld sw = (ServerWorld) l.getWorld();
- CompoundNBT compoundnbt = JsonToNBT.getTagFromJson(SnuviUtils.connect(sc, in, 1));
- Entity entity = EntityType.loadEntityAndExecute(compoundnbt, sw, (ent) -> {
- ent.setLocationAndAngles(l.getX(), l.getY(), l.getZ(), ent.rotationYaw, ent.rotationPitch);
- return sw.summonEntity(ent) ? ent : null;
- });
- return entity;
- });
- sm.registerFunction("read.uuid", (sc, in) -> UUID.fromString(in[0].getString(sc)));
- sm.registerFunction("read.slot", (sc, in) -> {
- String name = in[0].getString(sc);
- for(EquipmentSlotType slot : EquipmentSlotType.values()) {
- if(slot.getName().equals(name)) {
- return slot;
- }
- }
- return null;
- });
- }
- }
|