Browse Source

removed player scripts

Kajetan Johannes Hammerle 3 years ago
parent
commit
efbc532540

+ 0 - 2
src/main/java/me/km/Server.java

@@ -21,7 +21,6 @@ import net.minecraft.server.dedicated.DedicatedServer;
 import net.minecraftforge.api.distmarker.Dist;
 import net.minecraftforge.api.distmarker.OnlyIn;
 import net.minecraftforge.common.MinecraftForge;
-import me.km.snuviscript.CommandGiveUp;
 import me.km.snuviscript.CommandScript;
 import me.km.snuviscript.DummyScriptBank;
 import me.km.snuviscript.IScriptBank;
@@ -80,7 +79,6 @@ public class Server {
         // command manager
         commands = new ModCommandManager(true, perms, scriptEvents, scripts, scheduler);
         ReflectionUtils.setCommandManager(server, commands);
-        commands.registerCommand(new CommandGiveUp(scripts));
         commands.registerCommand(new CommandScript(scripts, server));
 
         // data base connection

+ 0 - 46
src/main/java/me/km/snuviscript/CommandGiveUp.java

@@ -1,46 +0,0 @@
-package me.km.snuviscript;
-
-import java.util.ArrayList;
-import me.hammerle.snuviscript.code.Script;
-import me.km.permissions.Command;
-import net.minecraft.command.ICommandSource;
-import net.minecraft.entity.player.ServerPlayerEntity;
-
-public class CommandGiveUp extends Command {
-    private final Scripts scripts;
-
-    public CommandGiveUp(Scripts scripts) {
-        this.scripts = scripts;
-    }
-
-    @Override
-    public String getName() {
-        return "giveup";
-    }
-
-    @Override
-    public Iterable<String> getAliases() {
-        ArrayList<String> list = new ArrayList<>();
-        list.add("fuckit");
-        list.add("fuckitigiveup");
-        list.add("ineedhelp");
-        list.add("leave");
-        list.add("l");
-        return list;
-    }
-
-    @Override
-    public void execute(ICommandSource cs, String[] arg) {
-        if(!(cs instanceof ServerPlayerEntity)) {
-            sendMessage(cs, "This command is only for players.");
-            return;
-        }
-        ServerPlayerEntity p = (ServerPlayerEntity) cs;
-        Script script = scripts.getScript(p);
-        if(script == null) {
-            scripts.getScriptManager().callEvent("player_no_script", (sc) -> ScriptVars.setPlayerVars(sc, p), null);
-            return;
-        }
-        scripts.getScriptManager().callEvent("player_giveup", script, (sc) -> ScriptVars.setPlayerVars(sc, p), null);
-    }
-}

+ 2 - 49
src/main/java/me/km/snuviscript/CommandScript.java

@@ -4,12 +4,8 @@ import java.util.ArrayList;
 import java.util.Arrays;
 import java.util.Collection;
 import me.hammerle.snuviscript.code.Script;
-import me.hammerle.snuviscript.inputprovider.Variable;
 import me.km.permissions.Command;
-import me.km.utils.Utils;
 import net.minecraft.command.ICommandSource;
-import net.minecraft.entity.player.PlayerEntity;
-import net.minecraft.entity.player.ServerPlayerEntity;
 import net.minecraft.server.MinecraftServer;
 
 public class CommandScript extends Command {
@@ -47,40 +43,6 @@ public class CommandScript extends Command {
                     }
                     break;
                 }
-                case "startp": {
-                    if(arg.length >= 3) {
-                        PlayerEntity p = Utils.getPlayerByName(server, arg[1]);
-                        if(p == null) {
-                            sendMessage(cs, String.format("Cannot find player '%s'.", arg[1]));
-                            return;
-                        }
-                        String[] pars = Arrays.copyOfRange(arg, 2, arg.length);
-                        scripts.startPlayerScript(p, pars);
-                        return;
-                    }
-                    break;
-                }
-                case "v":
-                case "variable": {
-                    if(arg.length >= 3) {
-                        try {
-                            Script sc = scripts.getScriptManager().getScript(Integer.parseInt(arg[1]));
-                            if(sc == null) {
-                                throw new NumberFormatException();
-                            }
-                            Variable var = sc.getVar(arg[2]);
-                            if(var != null) {
-                                sendMessage(cs, String.format("%s = %s", arg[2], var.get(sc)));
-                            } else {
-                                sendMessage(cs, String.format("%s = null", arg[2]));
-                            }
-                        } catch(NumberFormatException ex) {
-                            sendMessage(cs, String.format("'%s' is not a valid id.", arg[1]));
-                        }
-                        return;
-                    }
-                    break;
-                }
                 case "see": {
                     Collection<Script> scs = scripts.getScriptManager().getScripts();
                     if(scs.isEmpty()) {
@@ -88,21 +50,14 @@ public class CommandScript extends Command {
                         return;
                     }
                     sendMessage(cs, "Active scripts:");
-                    scs.forEach(sc -> {
-                        String id = String.valueOf(sc.getId());
-                        sendListMessage(cs, id, sc.getName());
-                        scripts.getPlayerList(sc.getId()).forEach(uuid -> {
-                            ServerPlayerEntity p = server.getPlayerList().getPlayerByUUID(uuid);
-                            sendListMessage(cs, id, p == null ? "null" : p.getName().getFormattedText());
-                        });
-                    });
+                    scs.forEach(sc -> sendListMessage(cs, String.valueOf(sc.getId()), sc.getName()));
                     return;
                 }
+                case "t":
                 case "term": {
                     if(arg.length >= 2) {
                         try {
                             if(arg[1].equals("all")) {
-                                scripts.clearPlayerRegistry();
                                 scripts.getScriptManager().removeScripts();
                                 sendMessage(cs, "All active scripts were terminated.");
                                 return;
@@ -130,8 +85,6 @@ public class CommandScript extends Command {
 
         sendMessage(cs, "/script ...");
         sendListMessage(cs, "start <scripts...>", "starts a script");
-        sendListMessage(cs, "startp <player> <scripts...>", "starts a player script");
-        sendListMessage(cs, "variable <id> <name>", "shows the value of a variable");
         sendListMessage(cs, "see", "shows active scripts");
         sendListMessage(cs, "term <id/all>", "terminates a script");
     }

+ 143 - 242
src/main/java/me/km/snuviscript/ScriptEvents.java

@@ -1,32 +1,22 @@
 package me.km.snuviscript;
 
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.List;
-import java.util.Optional;
+import java.util.*;
 import java.util.function.Consumer;
 import java.util.stream.Collectors;
-import me.hammerle.snuviscript.code.Script;
-import me.hammerle.snuviscript.code.SnuviUtils;
+import me.hammerle.snuviscript.code.*;
 import me.hammerle.snuviscript.inputprovider.Variable;
 import me.kcm.BlockHarvest;
 import me.kcm.Craft;
 import me.km.utils.Utils;
-import me.km.entities.EntityHuman;
-import me.km.entities.EntityItemProjectile;
+import me.km.entities.*;
 import me.km.events.CommandEvent;
 import me.km.inventory.ModInventory;
-import me.km.utils.ExplosionUtils;
-import me.km.utils.Location;
-import net.minecraft.block.Block;
-import net.minecraft.block.BlockState;
+import me.km.utils.*;
+import net.minecraft.block.*;
 import net.minecraft.command.ICommandSource;
-import net.minecraft.entity.Entity;
-import net.minecraft.entity.LivingEntity;
-import net.minecraft.entity.player.PlayerEntity;
-import net.minecraft.entity.player.ServerPlayerEntity;
-import net.minecraft.inventory.CraftResultInventory;
-import net.minecraft.inventory.CraftingInventory;
+import net.minecraft.entity.*;
+import net.minecraft.entity.player.*;
+import net.minecraft.inventory.*;
 import net.minecraft.inventory.container.ClickType;
 import net.minecraft.item.ItemStack;
 import net.minecraft.item.crafting.ICraftingRecipe;
@@ -36,28 +26,23 @@ import net.minecraft.server.MinecraftServer;
 import net.minecraft.server.management.PlayerList;
 import net.minecraft.tileentity.TileEntity;
 import net.minecraft.util.math.*;
-import net.minecraft.util.text.ITextComponent;
-import net.minecraft.util.text.StringTextComponent;
-import net.minecraft.world.GameRules;
-import net.minecraft.world.World;
+import net.minecraft.util.text.*;
+import net.minecraft.world.*;
 import net.minecraft.world.server.ServerWorld;
-import net.minecraft.world.storage.loot.LootContext;
-import net.minecraft.world.storage.loot.LootParameters;
-import net.minecraftforge.event.ServerChatEvent;
-import net.minecraftforge.event.TickEvent;
+import net.minecraft.world.storage.loot.*;
+import net.minecraftforge.event.*;
 import net.minecraftforge.event.entity.*;
 import net.minecraftforge.event.entity.item.ItemTossEvent;
 import net.minecraftforge.event.entity.living.*;
 import net.minecraftforge.event.entity.living.LivingEvent.LivingJumpEvent;
 import net.minecraftforge.event.entity.player.*;
-import net.minecraftforge.event.world.BlockEvent;
-import net.minecraftforge.event.world.ExplosionEvent;
+import net.minecraftforge.event.world.*;
 import net.minecraftforge.eventbus.api.*;
 import net.minecraftforge.event.entity.player.PlayerEvent;
 import net.minecraftforge.eventbus.api.Event.Result;
 
 public class ScriptEvents implements BlockHarvest, Craft {
-    private static void setLivingEntity(Script sc, LivingEntity ent) {
+    private static void setLiving(Script sc, LivingEntity ent) {
         sc.setVar("living_entity", ent);
     }
 
@@ -67,6 +52,28 @@ public class ScriptEvents implements BlockHarvest, Craft {
 
     private static void setPlayer(Script sc, PlayerEntity p) {
         sc.setVar("player", p);
+
+        // deprecated
+        sc.setVar("player_name", p == null ? null : p.getName().getFormattedText());
+    }
+
+    @SuppressWarnings("")
+    private static void setBlock(Script sc, IWorld w, BlockPos pos, BlockState state) {
+        sc.setVar("block_loc", new Location(w, pos));
+        sc.setVar("block_type", state.getBlock().getRegistryName().toString());
+        sc.setVar("block", state.getBlock());
+    }
+
+    @SuppressWarnings("")
+    private static void setBlock(Script sc, IWorld w, BlockPos pos) {
+        BlockState state = w.getBlockState(pos);
+        sc.setVar("block_loc", new Location(w, pos));
+        sc.setVar("block_type", state.getBlock().getRegistryName().toString());
+        sc.setVar("block", state.getBlock());
+    }
+
+    private static void setEntity(Script sc, Entity ent) {
+        sc.setVar("entity", ent);
     }
 
     private final Scripts scripts;
@@ -77,17 +84,16 @@ public class ScriptEvents implements BlockHarvest, Craft {
         this.server = server;
     }
 
+    private static void nothing(Script sc) {
+    }
+
     private void handleEvent(Event e, String event, Consumer<Script> before, Consumer<Script> after) {
         if(e.isCancelable()) {
             scripts.getScriptManager().callEvent(event, sc -> {
-                if(before != null) {
-                    before.accept(sc);
-                }
+                before.accept(sc);
                 sc.setVar("cancel", e.isCanceled());
             }, sc -> {
-                if(after != null) {
-                    after.accept(sc);
-                }
+                after.accept(sc);
                 handleVar(sc, event, "cancel", v -> e.setCanceled(v.getBoolean(sc)));
             });
         } else {
@@ -95,38 +101,16 @@ public class ScriptEvents implements BlockHarvest, Craft {
         }
     }
 
-    private void handleEvent(PlayerEntity p, String event, Consumer<Script> before, Consumer<Script> after) {
-        scripts.getScriptManager().callEvent(event, (sc) -> {
-            ScriptVars.setPlayerVars(sc, p);
-            before.accept(sc);
-        }, after);
-
-        if(p != null) {
-            Script data = scripts.getScript(p);
-            if(data != null) {
-                scripts.getScriptManager().callEvent(event, data, (sc) -> {
-                    ScriptVars.setPlayerVars(sc, p);
-                    before.accept(sc);
-                }, after);
-            }
-        }
+    private void handleEvent(Event e, String event, Consumer<Script> before) {
+        handleEvent(e, event, before, ScriptEvents::nothing);
     }
 
-    @Deprecated
-    private void handlePlayerEvent(PlayerEntity p, String event, Consumer<Script> before, Consumer<Script> after) {
-        if(p != null) {
-            Script data = scripts.getScript(p);
-            if(data != null) {
-                scripts.getScriptManager().callEvent(event, data, (sc) -> {
-                    ScriptVars.setPlayerVars(sc, p);
-                    before.accept(sc);
-                }, after);
-            }
-        }
+    private void handleEvent(String event, Consumer<Script> before, Consumer<Script> after) {
+        scripts.getScriptManager().callEvent(event, before, after);
     }
 
-    private void handleEvent(PlayerEntity p, String event, Consumer<Script> before) {
-        handleEvent(p, event, before, null);
+    private void handleEvent(String event, Consumer<Script> before) {
+        handleEvent(event, before, ScriptEvents::nothing);
     }
 
     private void handleVar(Script sc, String event, String name, Consumer<Variable> c) {
@@ -153,90 +137,62 @@ public class ScriptEvents implements BlockHarvest, Craft {
     }
 
     public void onPlayerDataTick(PlayerEntity p, String var) {
-        handleEvent(p, "player_data_tick", sc -> {
+        handleEvent("player_data_tick", sc -> {
+            setPlayer(sc, p);
             sc.setVar("var", var);
         });
     }
 
     public void onPlayerMove(PlayerEntity p, int id) {
-        handleEvent(p, "player_move", sc -> {
+        handleEvent("player_move", sc -> {
+            setPlayer(sc, p);
             sc.setVar("id", (double) id);
         });
     }
 
     public boolean onInventoryClick(Script script, ITextComponent text, ModInventory inv, int slot, ClickType click, PlayerEntity p) {
         scripts.getScriptManager().callEvent("inv_click", script, sc -> {
-            ScriptVars.setPlayerVars(sc, p);
+            setPlayer(sc, p);
             sc.setVar("inv", inv);
             sc.setVar("inv_id", (double) inv.getModId());
             sc.setVar("inv_name", text.getFormattedText());
             sc.setVar("inv_slot", (double) slot);
             setItem(sc, inv.getStackInSlot(slot));
             sc.setVar("cancel", false);
-        }, null);
+        }, ScriptEvents::nothing);
         Variable v = script.getVar("cancel");
         return v != null && v.getBoolean(script);
     }
 
     public void onInventoryClose(Script script, ITextComponent text, ModInventory inv, PlayerEntity p) {
         scripts.getScriptManager().callEvent("inv_close", script, sc -> {
-            ScriptVars.setPlayerVars(sc, p);
+            setPlayer(sc, p);
             sc.setVar("inv", inv);
             sc.setVar("inv_id", (double) inv.getModId());
             sc.setVar("inv_name", text.getFormattedText());
-        }, null);
+        }, ScriptEvents::nothing);
     }
 
     public void onHumanHurt(Entity attacker, EntityHuman h) {
-        handleEvent(null, "human_hurt", sc -> {
-            ScriptVars.setEntityVars(sc, attacker);
+        handleEvent("human_hurt", sc -> {
+            setEntity(sc, attacker);
             sc.setVar("human", h);
         });
     }
 
     @SubscribeEvent(receiveCanceled = true)
     public void onPlayerPostRespawn(PlayerEvent.PlayerRespawnEvent e) {
-        handleEvent(e.getPlayer(), "player_post_respawn", sc -> {
-        });
+        handleEvent("player_post_respawn", sc -> setPlayer(sc, e.getPlayer()));
     }
 
     public void onPlayerPreRespawn(PlayerEntity p) {
-        handleEvent(p, "player_pre_respawn", sc -> {
-        });
-    }
-
-    @SubscribeEvent(receiveCanceled = true)
-    public void onOldPlayerDamage(LivingHurtEvent e) {
-        if(!(e.getEntityLiving() instanceof ServerPlayerEntity)) {
-            return;
-        }
-        PlayerEntity p = (PlayerEntity) e.getEntityLiving();
-        handleEvent(p, "player_hurt", (sc) -> {
-            sc.setVar("player_killed", p.getHealth() <= e.getAmount());
-            sc.setVar("player_damage", (double) e.getAmount());
-            sc.setVar("player_damage_cause", e.getSource());
-            PlayerEntity ent = Utils.getDamager(e.getSource());
-            if(ent != null) {
-                sc.setVar("player_involved", true);
-                ScriptVars.setSecPlayer(sc, ent);
-            } else {
-                sc.setVar("player_involved", false);
-            }
-            sc.setVar("cancel", e.isCanceled());
-        }, (sc) -> {
-            try {
-                ifVarNotNull(sc, "player_damage", v -> e.setAmount(v.getFloat(sc)));
-                ifVarNotNull(sc, "cancel", v -> e.setCanceled(v.getBoolean(sc)));
-            } catch(Exception ex) {
-                scripts.getLogger().print("invalid var in 'player_hurt' event", ex, null, sc.getName(), sc, sc.getStackTrace());
-            }
-        });
+        handleEvent("player_pre_respawn", sc -> setPlayer(sc, p));
     }
 
     @SubscribeEvent(receiveCanceled = true)
     public void onLivingHurt(LivingHurtEvent e) {
         handleEvent(e, "living_hurt", (sc) -> {
-            setLivingEntity(sc, e.getEntityLiving());
+            setLiving(sc, e.getEntityLiving());
             sc.setVar("damage_source", e.getSource());
             sc.setVar("damage_amount", (double) e.getAmount());
         }, (sc) -> {
@@ -246,36 +202,17 @@ public class ScriptEvents implements BlockHarvest, Craft {
 
     @SubscribeEvent(receiveCanceled = true)
     public void onLivingAttacked(LivingAttackEvent e) {
-        LivingEntity liv = e.getEntityLiving();
-        if(liv instanceof PlayerEntity) {
-            PlayerEntity p = (PlayerEntity) liv;
-            // deprecated
-            handleEvent(p, "player_is_attacked", (sc) -> {
-                sc.setVar("player_killed", p.getHealth() <= e.getAmount());
-                sc.setVar("player_damage_cause", e.getSource());
-                PlayerEntity ent = Utils.getDamager(e.getSource());
-                if(ent != null) {
-                    sc.setVar("player_involved", true);
-                    ScriptVars.setSecPlayer(sc, ent);
-                } else {
-                    sc.setVar("player_involved", false);
-                }
-                sc.setVar("cancel", e.isCanceled());
-            }, (sc) -> {
-                simpleCancel(sc, e, "player_is_attacked");
-            });
-        }
-        handleEvent(e, "living_is_attacked", (sc) -> {
-            setLivingEntity(sc, e.getEntityLiving());
+        handleEvent(e, "living_pre_hurt", (sc) -> {
+            setLiving(sc, e.getEntityLiving());
             sc.setVar("damage_source", e.getSource());
             sc.setVar("damage_amount", (double) e.getAmount());
-        }, null);
+        });
     }
 
     @SubscribeEvent(receiveCanceled = true)
     public void onLivingHeal(LivingHealEvent e) {
         handleEvent(e, "living_heal", (sc) -> {
-            setLivingEntity(sc, e.getEntityLiving());
+            setLiving(sc, e.getEntityLiving());
             sc.setVar("heal_amount", (double) e.getAmount());
         }, (sc) -> {
             handleVar(sc, "living_heal", "heal_amount", v -> e.setAmount(v.getFloat(sc)));
@@ -285,49 +222,25 @@ public class ScriptEvents implements BlockHarvest, Craft {
     @SubscribeEvent(receiveCanceled = true)
     public void onLivingDeath(LivingDeathEvent e) {
         handleEvent(e, "living_death", (sc) -> {
-            setLivingEntity(sc, e.getEntityLiving());
+            setLiving(sc, e.getEntityLiving());
             sc.setVar("damage_source", e.getSource());
-        }, null);
-        if(!(e.getEntityLiving() instanceof PlayerEntity)) {
-            return;
-        }
-        // deprecated
-        PlayerEntity p = (PlayerEntity) e.getEntity();
-        handleEvent(p, "player_death", (sc) -> {
-            sc.setVar("clear", false);
-            sc.setVar("player_damage_cause", e.getSource());
-            PlayerEntity ent = Utils.getDamager(e.getSource());
-            if(ent != null) {
-                ScriptVars.setSecPlayer(sc, ent);
-            }
-            sc.setVar("cancel", e.isCanceled());
-        }, (sc) -> {
-            try {
-                Variable clear = sc.getVar("clear");
-                if(clear != null && clear.getBoolean(sc)) {
-                    p.inventory.clear();
-                }
-                ifVarNotNull(sc, "cancel", v -> e.setCanceled(v.getBoolean(sc)));
-            } catch(Exception ex) {
-                scripts.getLogger().print("invalid var in 'player_death' event", ex, null, sc.getName(), sc, sc.getStackTrace());
-            }
         });
     }
 
     @SubscribeEvent(receiveCanceled = true)
     public void onLivingDrop(LivingDropsEvent e) {
         handleEvent(e, "living_drop", (sc) -> {
-            setLivingEntity(sc, e.getEntityLiving());
+            setLiving(sc, e.getEntityLiving());
             sc.setVar("drops", e.getDrops());
             sc.setVar("damage_source", e.getSource());
             sc.setVar("looting", (double) e.getLootingLevel());
-        }, null);
+        });
     }
 
     @SubscribeEvent(receiveCanceled = true)
     public void onLivingExperienceDrop(LivingExperienceDropEvent e) {
         handleEvent(e, "living_experience_drop", (sc) -> {
-            setLivingEntity(sc, e.getEntityLiving());
+            setLiving(sc, e.getEntityLiving());
             sc.setVar("experience", (double) e.getDroppedExperience());
         }, (sc) -> {
             handleVar(sc, "living_experience_drop", "experience", v -> e.setDroppedExperience(v.getInt(sc)));
@@ -358,28 +271,18 @@ public class ScriptEvents implements BlockHarvest, Craft {
             sc.setVar("entity_hit", hitEntity);
             sc.setVar("loc_hit", loc);
             sc.setVar("shooter", Utils.getEntityFromProjectile(e.getEntity()));
-        }, null);
+        });
     }
 
     public void onEntityItemProjectileHit(EntityItemProjectile ent, LivingEntity liv, ItemStack stack, Entity hitEntity, BlockPos pos) {
         Location loc = (pos == null) ? null : new Location(ent.world, pos);
-        handleEvent(null, "item_hit", (sc) -> {
+        handleEvent("item_hit", (sc) -> {
             sc.setVar("projectile", ent);
             setItem(sc, stack);
             sc.setVar("entity_hit", hitEntity);
             sc.setVar("loc_hit", loc);
             sc.setVar("shooter", liv);
         });
-        // deprecated
-        if(liv instanceof PlayerEntity) {
-            handlePlayerEvent((PlayerEntity) liv, "item_hit", (sc) -> {
-                sc.setVar("projectile", ent);
-                setItem(sc, stack);
-                sc.setVar("entity_hit", hitEntity);
-                sc.setVar("loc_hit", loc);
-                sc.setVar("shooter", liv);
-            }, null);
-        }
     }
 
     @Override
@@ -399,34 +302,20 @@ public class ScriptEvents implements BlockHarvest, Craft {
                 sc.setVar("block_type", name);
                 sc.setVar("block", b);
                 sc.setVar("location", new Location(w, pos));
-                ScriptVars.setEntityVars(sc, ent);
+                setEntity(sc, ent);
                 setItem(sc, stack);
-            }, sc -> {
-            });
+            }, ScriptEvents::nothing);
         } catch(Exception ex) {
             ex.printStackTrace();
         }
         return list;
     }
 
-    @SubscribeEvent(receiveCanceled = true)
-    public void onBlockHarvest(BlockEvent.HarvestDropsEvent e) {
-        handleEvent(e, "block_harvest", (sc) -> {
-            setPlayer(sc, e.getHarvester());
-            sc.setVar("location", new Location(e.getWorld(), e.getPos()));
-            sc.setVar("drop_chance", (double) e.getDropChance());
-            sc.setVar("drops", e.getDrops());
-            sc.setVar("fortune", (double) e.getFortuneLevel());
-            sc.setVar("silktouch", e.isSilkTouching());
-        }, (sc) -> {
-            handleVar(sc, "block_harvest", "drop_chance", v -> e.setDropChance(v.getFloat(sc)));
-        });
-    }
-
     @SubscribeEvent(receiveCanceled = true)
     public void onBlockBreak(BlockEvent.BreakEvent e) {
-        handleEvent(e.getPlayer(), "block_break", (sc) -> {
-            ScriptVars.setBlockVars(sc, e.getWorld(), e.getPos(), e.getState());
+        handleEvent("block_break", (sc) -> {
+            setPlayer(sc, e.getPlayer());
+            setBlock(sc, e.getWorld(), e.getPos(), e.getState());
             sc.setVar("cancel", e.isCanceled());
         }, (sc) -> {
             simpleCancel(sc, e, "block_break");
@@ -438,9 +327,11 @@ public class ScriptEvents implements BlockHarvest, Craft {
         if(!(e.getEntity() instanceof PlayerEntity)) {
             return;
         }
-        handleEvent((PlayerEntity) e.getEntity(), "block_place", (sc) -> {
+        PlayerEntity p = (PlayerEntity) e.getEntity();
+        handleEvent("block_place", (sc) -> {
+            setPlayer(sc, p);
             sc.setVar("block_type_after", e.getPlacedBlock().getBlock().getRegistryName());
-            ScriptVars.setBlockVars(sc, e.getWorld(), e.getPos(), e.getState());
+            setBlock(sc, e.getWorld(), e.getPos(), e.getState());
             sc.setVar("cancel", e.isCanceled());
         }, (sc) -> {
             simpleCancel(sc, e, "block_place");
@@ -453,10 +344,13 @@ public class ScriptEvents implements BlockHarvest, Craft {
         if(p == null) {
             return;
         }
-        handleEvent(p, "player_login", (sc) -> {
-            PlayerList list = server.getPlayerList();
-            sc.setVar("is_banned", list.getBannedPlayers().isBanned(p.getGameProfile()));
-            sc.setVar("is_whitelisted", list.getWhitelistedPlayers().isWhitelisted(p.getGameProfile()));
+        PlayerList list = server.getPlayerList();
+        boolean banned = list.getBannedPlayers().isBanned(p.getGameProfile());
+        boolean whitelisted = list.getWhitelistedPlayers().isWhitelisted(p.getGameProfile());
+        handleEvent("player_login", (sc) -> {
+            setPlayer(sc, p);
+            sc.setVar("is_banned", banned);
+            sc.setVar("is_whitelisted", whitelisted);
         });
     }
 
@@ -466,18 +360,18 @@ public class ScriptEvents implements BlockHarvest, Craft {
         if(p == null || e.getPlayer().ticksExisted < 20) {
             return;
         }
-        handleEvent(p, "player_logout", sc -> {
-        });
+        handleEvent("player_logout", sc -> setPlayer(sc, p));
     }
 
     @SubscribeEvent(receiveCanceled = true)
     public void onBucketFill(FillBucketEvent e) {
-        handleEvent(e.getPlayer(), "bucket_use", (sc) -> {
+        handleEvent("bucket_use", (sc) -> {
+            setPlayer(sc, e.getPlayer());
             RayTraceResult ray = e.getTarget();
             if(ray != null && ray.hitInfo != null && ray.hitInfo instanceof BlockPos) {
                 BlockPos pos = (BlockPos) ray.hitInfo;
                 sc.setVar("has_block", true);
-                ScriptVars.setBlockVars(sc, e.getWorld(), pos);
+                ScriptEvents.setBlock(sc, e.getWorld(), pos);
             } else {
                 sc.setVar("has_block", false);
             }
@@ -489,10 +383,11 @@ public class ScriptEvents implements BlockHarvest, Craft {
 
     @SubscribeEvent(receiveCanceled = true)
     public void onRightClickBlock(PlayerInteractEvent.RightClickBlock e) {
-        handleEvent(e.getPlayer(), "block_click", (sc) -> {
+        handleEvent("block_click", (sc) -> {
+            setPlayer(sc, e.getPlayer());
             sc.setVar("action", "right");
             sc.setVar("hand", e.getHand().name());
-            ScriptVars.setBlockVars(sc, e.getWorld(), e.getPos());
+            ScriptEvents.setBlock(sc, e.getWorld(), e.getPos());
             sc.setVar("cancel", e.isCanceled());
         }, (sc) -> {
             simpleCancel(sc, e, "block_click");
@@ -501,10 +396,11 @@ public class ScriptEvents implements BlockHarvest, Craft {
 
     @SubscribeEvent(receiveCanceled = true)
     public void onLeftClickBlock(PlayerInteractEvent.LeftClickBlock e) {
-        handleEvent(e.getPlayer(), "block_click", (sc) -> {
+        handleEvent("block_click", (sc) -> {
+            setPlayer(sc, e.getPlayer());
             sc.setVar("action", "left");
             sc.setVar("hand", e.getHand().name());
-            ScriptVars.setBlockVars(sc, e.getWorld(), e.getPos());
+            ScriptEvents.setBlock(sc, e.getWorld(), e.getPos());
             sc.setVar("cancel", e.isCanceled());
         }, (sc) -> {
             simpleCancel(sc, e, "block_click");
@@ -513,9 +409,10 @@ public class ScriptEvents implements BlockHarvest, Craft {
 
     @SubscribeEvent(receiveCanceled = true)
     public void onEntityClick(PlayerInteractEvent.EntityInteract e) {
-        handleEvent(e.getPlayer(), "entity_click", (sc) -> {
+        handleEvent("entity_click", (sc) -> {
+            setPlayer(sc, e.getPlayer());
             sc.setVar("hand", e.getHand().name());
-            ScriptVars.setEntityVars(sc, e.getTarget());
+            setEntity(sc, e.getTarget());
             sc.setVar("cancel", e.isCanceled());
         }, (sc) -> {
             simpleCancel(sc, e, "entity_click");
@@ -523,13 +420,13 @@ public class ScriptEvents implements BlockHarvest, Craft {
     }
 
     public void onEmptyLeftClick(PlayerEntity p) {
-        handleEvent(p, "left_click_air", (sc) -> {
-        });
+        handleEvent("left_click_air", sc -> setPlayer(sc, p));
     }
 
     @SubscribeEvent(receiveCanceled = true)
     public void onItemClick(PlayerInteractEvent.RightClickItem e) {
-        handleEvent(e.getPlayer(), "item_air_click", (sc) -> {
+        handleEvent("item_air_click", (sc) -> {
+            setPlayer(sc, e.getPlayer());
             setItem(sc, e.getItemStack());
             sc.setVar("hand", e.getHand().toString());
             sc.setVar("cancel", e.isCanceled());
@@ -541,7 +438,7 @@ public class ScriptEvents implements BlockHarvest, Craft {
     @SubscribeEvent(receiveCanceled = true)
     public void onItemUseStart(LivingEntityUseItemEvent.Start e) {
         handleEvent(e, "item_use_start", (sc) -> {
-            setLivingEntity(sc, e.getEntityLiving());
+            setLiving(sc, e.getEntityLiving());
             sc.setVar("duration", (double) e.getDuration());
             setItem(sc, e.getItem());
         }, (sc) -> {
@@ -552,7 +449,7 @@ public class ScriptEvents implements BlockHarvest, Craft {
     @SubscribeEvent(receiveCanceled = true)
     public void onConsuming(LivingEntityUseItemEvent.Finish e) {
         handleEvent(e, "item_use_finish", (sc) -> {
-            setLivingEntity(sc, e.getEntityLiving());
+            setLiving(sc, e.getEntityLiving());
             setItem(sc, e.getItem());
             sc.setVar("result", e.getResultStack());
         }, (sc) -> {
@@ -569,7 +466,8 @@ public class ScriptEvents implements BlockHarvest, Craft {
 
     @SubscribeEvent(receiveCanceled = true)
     public void onFishing(ItemFishedEvent e) {
-        handleEvent(e.getPlayer(), "fishing", (sc) -> {
+        handleEvent("fishing", (sc) -> {
+            setPlayer(sc, e.getPlayer());
             sc.setVar("drops", e.getDrops());
             sc.setVar("hook", e.getHookEntity());
             sc.setVar("rod_damage", (double) e.getRodDamage());
@@ -582,14 +480,16 @@ public class ScriptEvents implements BlockHarvest, Craft {
 
     @SubscribeEvent(receiveCanceled = true)
     public void onCrafting(PlayerEvent.ItemCraftedEvent e) {
-        handleEvent(e.getPlayer(), "craft", (sc) -> {
+        handleEvent("craft", (sc) -> {
+            setPlayer(sc, e.getPlayer());
             setItem(sc, e.getCrafting());
         });
     }
 
     @SubscribeEvent(receiveCanceled = true)
     public void onItemDrop(ItemTossEvent e) {
-        handleEvent(e.getPlayer(), "player_toss", (sc) -> {
+        handleEvent("player_toss", (sc) -> {
+            setPlayer(sc, e.getPlayer());
             setItem(sc, e.getEntityItem().getItem());
             sc.setVar("cancel", e.isCanceled());
         }, (sc) -> {
@@ -599,8 +499,9 @@ public class ScriptEvents implements BlockHarvest, Craft {
 
     @SubscribeEvent(receiveCanceled = true)
     public void onItemPickup(EntityItemPickupEvent e) {
-        handleEvent(e.getPlayer(), "player_pickup", (sc) -> {
-            ScriptVars.setEntityVars(sc, e.getItem());
+        handleEvent("player_pickup", (sc) -> {
+            setPlayer(sc, e.getPlayer());
+            setEntity(sc, e.getItem());
             setItem(sc, e.getItem().getItem());
             sc.setVar("cancel", e.isCanceled());
         }, (sc) -> {
@@ -612,21 +513,23 @@ public class ScriptEvents implements BlockHarvest, Craft {
     public void onEntityMount(EntityMountEvent e) {
         handleEvent(e, "entity_mount", (sc) -> {
             sc.setVar("mounting", e.isMounting());
-            ScriptVars.setEntityVars(sc, e.getEntityBeingMounted());
+            setEntity(sc, e.getEntityBeingMounted());
             sc.setVar("rider", e.getEntityMounting());
-        }, null);
+        });
     }
 
     @SubscribeEvent(receiveCanceled = true)
     public void onPlayerUsePortal(PlayerEvent.PlayerChangedDimensionEvent e) {
-        handleEvent(e.getPlayer(), "portal", (sc) -> {
+        handleEvent("portal", (sc) -> {
+            setPlayer(sc, e.getPlayer());
             sc.setVar("from", e.getFrom().getRegistryName().getPath());
             sc.setVar("to", e.getTo().getRegistryName().getPath());
         });
     }
 
     public void onCommand(CommandEvent e) {
-        handleEvent(e.getPlayer(), "command", (sc) -> {
+        handleEvent("command", (sc) -> {
+            setPlayer(sc, e.getPlayer());
             sc.setVar("command", e.getName());
             sc.setVar("cancel", e.isCanceled());
         }, (sc) -> {
@@ -635,7 +538,8 @@ public class ScriptEvents implements BlockHarvest, Craft {
     }
 
     public void onCustomCommand(PlayerEntity p, String command, String[] args) {
-        handleEvent(p, "custom_command", (sc) -> {
+        handleEvent("custom_command", (sc) -> {
+            setPlayer(sc, p);
             sc.setVar("command", command);
             if(args.length == 0) {
                 sc.setVar("args", new ArrayList<>());
@@ -646,14 +550,16 @@ public class ScriptEvents implements BlockHarvest, Craft {
     }
 
     public void onFunctionKey(ServerPlayerEntity p, int key) {
-        handleEvent(p, "function_key", (sc) -> {
+        handleEvent("function_key", (sc) -> {
+            setPlayer(sc, p);
             sc.setVar("key", (double) key);
         });
     }
 
     @SubscribeEvent(receiveCanceled = true)
     public void onChatEvent(ServerChatEvent e) {
-        handleEvent(e.getPlayer(), "chat", (sc) -> {
+        handleEvent("chat", (sc) -> {
+            setPlayer(sc, e.getPlayer());
             sc.setVar("message", e.getMessage());
             sc.setVar("cancel", e.isCanceled());
         }, (sc) -> {
@@ -668,7 +574,7 @@ public class ScriptEvents implements BlockHarvest, Craft {
         handleEvent(e, "pre_explosion", sc -> {
             sc.setVar("damage_source", e.getExplosion().getDamageSource());
             sc.setVar("location", new Location(e.getWorld(), e.getExplosion().getPosition()));
-        }, null);
+        });
     }
 
     @SubscribeEvent
@@ -679,7 +585,7 @@ public class ScriptEvents implements BlockHarvest, Craft {
             sc.setVar("affected_entities", e.getAffectedEntities());
             sc.setVar("damage_source", e.getExplosion().getDamageSource());
             sc.setVar("location", new Location(e.getWorld(), e.getExplosion().getPosition()));
-        }, null);
+        });
     }
 
     private static String getName(ICommandSource cs) {
@@ -692,24 +598,18 @@ public class ScriptEvents implements BlockHarvest, Craft {
     }
 
     public void onMissingCommand(ICommandSource cs, String command) {
-        PlayerEntity p = null;
-        if(cs instanceof PlayerEntity) {
-            p = (PlayerEntity) cs;
-        }
-
-        handleEvent(p, "missing_command", (sc) -> {
+        PlayerEntity p = (cs instanceof PlayerEntity) ? (PlayerEntity) cs : null;
+        handleEvent("missing_command", (sc) -> {
+            setPlayer(sc, p);
             sc.setVar("command_name", command);
             sc.setVar("sender_name", getName(cs));
         });
     }
 
     public void onMissingPermission(ICommandSource cs, String command) {
-        PlayerEntity p = null;
-        if(cs instanceof PlayerEntity) {
-            p = (PlayerEntity) cs;
-        }
-
-        handleEvent(p, "missing_perm", (sc) -> {
+        PlayerEntity p = (cs instanceof PlayerEntity) ? (PlayerEntity) cs : null;
+        handleEvent("missing_perm", (sc) -> {
+            setPlayer(sc, p);
             sc.setVar("command_name", command);
             sc.setVar("sender_name", getName(cs));
         });
@@ -730,8 +630,8 @@ public class ScriptEvents implements BlockHarvest, Craft {
             return;
         }
         handleEvent(e, "entity_join", (sc) -> {
-            ScriptVars.setEntityVars(sc, ent);
-        }, null);
+            setEntity(sc, ent);
+        });
     }
 
     @SubscribeEvent
@@ -746,26 +646,27 @@ public class ScriptEvents implements BlockHarvest, Craft {
         handleEvent(e, "animal_tame", (sc) -> {
             sc.setVar("animal", e.getAnimal());
             sc.setVar("tamer", e.getTamer());
-        }, null);
+        });
     }
 
     @SubscribeEvent(receiveCanceled = true)
     public void onJump(LivingJumpEvent e) {
         handleEvent(e, "living_jump", (sc) -> {
-            setLivingEntity(sc, e.getEntityLiving());
-        }, null);
+            setLiving(sc, e.getEntityLiving());
+        });
     }
 
     public void onSneak(PlayerEntity p, boolean sneak) {
-        handleEvent(p, "player_sneak", (sc) -> {
+        handleEvent("player_sneak", (sc) -> {
+            setPlayer(sc, p);
             sc.setVar("sneak", sneak);
-        }, null);
+        });
     }
 
     @SubscribeEvent(receiveCanceled = true)
     public void onSneak(EntityMobGriefingEvent e) {
         handleEvent(e, "mob_griefing", (sc) -> {
-            ScriptVars.setEntityVars(sc, e.getEntity());
+            setEntity(sc, e.getEntity());
             sc.setVar("cancel", !e.getEntity().world.getGameRules().getBoolean(GameRules.MOB_GRIEFING));
         }, (sc) -> {
             handleVar(sc, "mob_griefing", "cancel", (v) -> {
@@ -787,7 +688,7 @@ public class ScriptEvents implements BlockHarvest, Craft {
             if(result.canUseRecipe(w, serverplayerentity, icraftingrecipe)) {
                 wrapper.set(icraftingrecipe.getCraftingResult(inv));
                 scripts.getScriptManager().callEvent("craft", (sc) -> {
-                    ScriptVars.setPlayerVars(sc, p);
+                    setPlayer(sc, p);
                     sc.setVar("result", wrapper.get());
                 }, (sc) -> {
                     handleVar(sc, "craft", "result", (v) -> {

+ 0 - 42
src/main/java/me/km/snuviscript/ScriptVars.java

@@ -1,42 +0,0 @@
-package me.km.snuviscript;
-
-import me.hammerle.snuviscript.code.Script;
-import me.km.utils.Location;
-import net.minecraft.block.BlockState;
-import net.minecraft.entity.Entity;
-import net.minecraft.entity.player.PlayerEntity;
-import net.minecraft.util.math.BlockPos;
-import net.minecraft.world.IWorld;
-
-public class ScriptVars {
-    @SuppressWarnings("")
-    public static void setBlockVars(Script sc, IWorld w, BlockPos pos, BlockState state) {
-        sc.setVar("block_loc", new Location(w, pos));
-        sc.setVar("block_type", state.getBlock().getRegistryName().toString());
-        sc.setVar("block", state.getBlock());
-    }
-    
-    @SuppressWarnings("")
-    public static void setBlockVars(Script sc, IWorld w, BlockPos pos) {
-        BlockState state = w.getBlockState(pos);
-        sc.setVar("block_loc", new Location(w, pos));
-        sc.setVar("block_type", state.getBlock().getRegistryName().toString());
-        sc.setVar("block", state.getBlock());
-    }
-
-    public static void setPlayerVars(Script sc, PlayerEntity p) {
-        sc.setVar("player", p);
-        sc.setVar("player_name", p == null ? null : p.getName().getFormattedText());
-    }
-
-    public static void setSecPlayer(Script sc, PlayerEntity p) {
-        if(p != null) {
-            sc.setVar("sec_player", p);
-            sc.setVar("sec_player_name", p.getName().getFormattedText());
-        }
-    }
-
-    public static void setEntityVars(Script sc, Entity ent) {
-        sc.setVar("entity", ent);
-    }
-}

+ 1 - 107
src/main/java/me/km/snuviscript/Scripts.java

@@ -1,26 +1,18 @@
 package me.km.snuviscript;
 
-import java.util.ArrayList;
 import java.util.Arrays;
-import java.util.Collections;
-import java.util.HashMap;
 import java.util.HashSet;
-import java.util.List;
-import java.util.UUID;
 import me.hammerle.snuviscript.code.ISnuviLogger;
 import me.hammerle.snuviscript.code.ISnuviScheduler;
 import me.hammerle.snuviscript.code.Script;
 import me.hammerle.snuviscript.code.ScriptManager;
 import me.km.events.CustomEventCaller;
-import net.minecraft.entity.player.PlayerEntity;
 
 public class Scripts {
     private final ScriptManager manager;
     private final ISnuviLogger logger;
     private CustomEventCaller cec = null;
 
-    private final HashMap<UUID, Integer> playerScript = new HashMap<>();
-    private final HashMap<Integer, List<UUID>> registeredPlayers = new HashMap<>();
     private final HashSet<String> scriptCommands = new HashSet<>();
 
     private final Limits entityLimits = new Limits();
@@ -46,9 +38,6 @@ public class Scripts {
         return entityLimits;
     }
 
-    // -------------------------------------------------------------------------
-    // custom commands
-    // -------------------------------------------------------------------------
     public boolean isRegisteredScriptCommand(String s) {
         return scriptCommands.contains(s);
     }
@@ -68,103 +57,8 @@ public class Scripts {
         scriptCommands.clear();
     }
 
-    // -------------------------------------------------------------------------
-    // player script
-    // -------------------------------------------------------------------------
-    public List<UUID> getPlayerList(int id) {
-        return registeredPlayers.getOrDefault(id, Collections.EMPTY_LIST);
-    }
-
-    private List<UUID> getOrCreatePlayerList(int id) {
-        List<UUID> list = registeredPlayers.get(id);
-        if(list == null) {
-            list = new ArrayList<>();
-            registeredPlayers.put(id, list);
-        }
-        return list;
-    }
-
-    public boolean registerPlayer(Script sc, PlayerEntity p) {
-        if(playerScript.putIfAbsent(p.getUniqueID(), sc.getId()) != null) {
-            return false;
-        }
-        getOrCreatePlayerList(sc.getId()).add(p.getUniqueID());
-        ScriptVars.setPlayerVars(sc, p);
-        manager.callEvent("player_join", sc, null, null);
-        return true;
-    }
-
-    public boolean isRegistered(PlayerEntity p) {
-        return playerScript.containsKey(p.getUniqueID());
-    }
-
-    public Script getScript(PlayerEntity p) {
-        // check if the player is mapped to a script
-        Integer id = playerScript.get(p.getUniqueID());
-        if(id == null) {
-            return null;
-        }
-        // player mapping does not necessary mean the script is valid
-        Script sc = manager.getScript(id);
-        if(sc == null) {
-            playerScript.remove(p.getUniqueID());
-            logger.print(String.format("invalid script of '%s' was removed. (1)", p.getName()));
-            return null;
-        }
-        return sc;
-    }
-
-    public boolean unregisterPlayer(Script callingScript, PlayerEntity p) {
-        Integer id = playerScript.remove(p.getUniqueID());
-        if(id == null) {
-            return false;
-        }
-        List<UUID> list = registeredPlayers.get(id);
-        if(list == null) {
-            return false;
-        }
-        boolean b = list.remove(p.getUniqueID());
-        if(list.isEmpty()) {
-            Script sc = manager.getScript(id);
-            if(sc == null) {
-                logger.print(String.format("invalid script of '%s' was removed. (2)", p.getName()));
-                return true;
-            }
-            if(sc != callingScript) {
-                manager.callEvent("player_kicked", sc, (innerSc) -> ScriptVars.setPlayerVars(innerSc, p), null);
-            }
-            manager.removeScript(sc);
-        }
-        return b;
-    }
-
-    public void clearPlayerRegistry() {
-        playerScript.clear();
-        registeredPlayers.clear();
-    }
-
-    // -------------------------------------------------------------------------
-    // script starting
-    // -------------------------------------------------------------------------
-    public Script startPlayerScript(PlayerEntity p, String... names) {
-        if(isRegistered(p)) {
-            return null;
-        }
-        Arrays.setAll(names, i -> "scripts/" + names[i] + ".txt");
-        return manager.startScript(false, sc -> {
-            int id = sc.getId();
-            playerScript.put(p.getUniqueID(), id);
-            getOrCreatePlayerList(id).add(p.getUniqueID());
-        }, sc -> {
-            getPlayerList(sc.getId()).forEach(uuid -> playerScript.remove(uuid));
-            registeredPlayers.remove(sc.getId());
-            cec.removeScriptData(sc);
-        }, names[0], names);
-    }
-
     public Script startScript(String name, String... names) {
         Arrays.setAll(names, i -> "scripts/" + names[i] + ".txt");
-        return manager.startScript(true, sc -> {
-        }, sc -> cec.removeScriptData(sc), name == null ? names[0] : name, names);
+        return manager.startScript(sc -> cec.removeScriptData(sc), name == null ? names[0] : name, names);
     }
 }

+ 4 - 25
src/main/java/me/km/snuviscript/commands/CommandUtils.java

@@ -54,41 +54,20 @@ public class CommandUtils {
     public static void doForGroup(MinecraftServer server, Scripts scripts, Permissions perms, Object group, Script sc, Consumer<ICommandSource> c) {
         if(group instanceof String) {
             switch(group.toString().toLowerCase()) {
-                case "all":
-                    PlayerList list = server.getPlayerList();
-                    if(list != null) {
-                        scripts.getPlayerList(sc.getId()).forEach(uuid -> {
-                            ServerPlayerEntity p = list.getPlayerByUUID(uuid);
-                            if(p != null) {
-                                c.accept(p);
-                            }
-                        });
-                    }
-                    break;
                 case "online":
                     if(server.getPlayerList() != null) {
                         server.getPlayerList().getPlayers().forEach(p -> c.accept(p));
                     }
-                    break;
+                    return;
                 case "dev":
                     if(server.getPlayerList() != null) {
-                        server.getPlayerList().getPlayers().forEach(p -> {
-                            if(perms.has(p, "script.error")) {
-                                c.accept(p);
-                            }
-                        });
+                        server.getPlayerList().getPlayers().stream().filter(p -> perms.has(p, "script.error")).forEach(c);
                     }
-                    break;
+                    return;
                 case "server":
                     c.accept(server);
-                    break;
-                default:
-                    if(server.getPlayerList() != null) {
-                        c.accept(Utils.getPlayerByName(server, group.toString()));
-                    }
-                    break;
+                    return;
             }
-            return;
         }
         c.accept((PlayerEntity) group);
     }

+ 3 - 3
src/main/java/me/km/snuviscript/commands/PlayerCommands.java

@@ -196,8 +196,9 @@ public class PlayerCommands {
             return new Location(p.world, end);
         });
 
-        sm.registerFunction("player.gettargetentity", (sc, in) -> Utils.getTargetedEntity((PlayerEntity) in[0].get(sc), in[1].getDouble(sc), getNamedClass(in[2].getString(sc))));
-        sm.registerFunction("player.hasscript", (sc, in) -> scripts.isRegistered((PlayerEntity) in[0].get(sc)));
+        sm.registerFunction("player.gettargetentity", (sc, in) -> {
+            return Utils.getTargetedEntity((PlayerEntity) in[0].get(sc), in[1].getDouble(sc), getNamedClass(in[2].getString(sc)));
+        });
         sm.registerAlias("player.hasscript", "player.hasquest");
         sm.registerConsumer("player.action", (sc, in) -> {
             StringTextComponent text = new StringTextComponent(SnuviUtils.connect(sc, in, 1));
@@ -206,7 +207,6 @@ public class PlayerCommands {
         sm.registerConsumer("player.disconnect", (sc, in) -> {
             ((ServerPlayerEntity) in[0].get(sc)).connection.disconnect(new StringTextComponent(in[1].getString(sc)));
         });
-        sm.registerFunction("player.kick", (sc, in) -> scripts.unregisterPlayer(sc, (PlayerEntity) in[0].get(sc)));
         sm.registerFunction("player.getspawn", (sc, in) -> {
             ServerWorld ws = (ServerWorld) in[1].get(sc);
             return new Location(ws, ((PlayerEntity) in[0].get(sc)).getBedLocation(ws.getDimension().getType()));

+ 2 - 26
src/main/java/me/km/snuviscript/commands/ScriptCommands.java

@@ -1,12 +1,8 @@
 package me.km.snuviscript.commands;
 
-import java.util.ArrayList;
-import java.util.List;
-import java.util.UUID;
 import me.hammerle.snuviscript.code.Script;
 import me.hammerle.snuviscript.code.ScriptManager;
 import me.km.snuviscript.Scripts;
-import net.minecraft.entity.player.PlayerEntity;
 import net.minecraft.server.MinecraftServer;
 
 public class ScriptCommands {
@@ -22,39 +18,19 @@ public class ScriptCommands {
                 sm.callEvent(name, ScriptCommands::nothing, ScriptCommands::nothing);
             }
         });
-        sm.registerFunction("script.playerstolist", (sc, in) -> new ArrayList<>(scripts.getPlayerList(sc.getId())));
-        sm.registerFunction("script.getplayeramount", (sc, in) -> (double) scripts.getPlayerList(sc.getId()).size());
         sm.registerFunction("script.start", (sc, in) -> {
-            Object o = in[0].get(sc);
-            if(o instanceof PlayerEntity) {
-                String[] names = new String[in.length - 1];
-                for(int i = 1; i < in.length; i++) {
-                    names[i - 1] = in[i].getString(sc);
-                }
-                return scripts.startPlayerScript((PlayerEntity) in[0].get(sc), names);
-            }
             String[] names = new String[in.length];
-            names[0] = o.toString();
-            for(int i = 1; i < in.length; i++) {
+            for(int i = 0; i < in.length; i++) {
                 names[i] = in[i].getString(sc);
             }
             return scripts.startScript(null, names);
         });
         sm.registerFunction("script.startnamed", (sc, in) -> {
-            String[] names = new String[in.length -1];
+            String[] names = new String[in.length - 1];
             for(int i = 0; i < names.length; i++) {
                 names[i] = in[i + 1].getString(sc);
             }
             return scripts.startScript(in[0].getString(sc), names);
         });
-        sm.registerFunction("script.join", (sc, in) -> scripts.registerPlayer((Script) in[0].get(sc), (PlayerEntity) in[1].get(sc)));
-        sm.registerFunction("script.kick", (sc, in) -> scripts.unregisterPlayer(sc, (PlayerEntity) in[0].get(sc)));
-        sm.registerFunction("script.getleader", (sc, in) -> {
-            List<UUID> players = scripts.getPlayerList(sc.getId());
-            if(players.isEmpty()) {
-                return null;
-            }
-            return server.getPlayerList().getPlayerByUUID(players.get(0));
-        });
     }
 }