123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200 |
- package me.hammerle.mp.snuviscript.commands;
- import org.bukkit.Location;
- import org.bukkit.block.BlockFace;
- import org.bukkit.entity.Arrow;
- import org.bukkit.entity.Creeper;
- import org.bukkit.entity.Entity;
- import org.bukkit.entity.EntityType;
- import org.bukkit.entity.Ageable;
- import org.bukkit.entity.ThrownPotion;
- import org.bukkit.entity.ItemFrame;
- import org.bukkit.entity.Player;
- import org.bukkit.entity.Sheep;
- import org.bukkit.entity.Slime;
- import org.bukkit.entity.Tameable;
- import org.bukkit.entity.AbstractArrow.PickupStatus;
- import org.bukkit.inventory.ItemStack;
- import org.bukkit.util.Vector;
- import me.hammerle.mp.MundusPlugin;
- import net.kyori.adventure.text.Component;
- public class EntityCommands {
- @SuppressWarnings("unchecked")
- private static Class<? extends Entity> getEntityClass(String name) throws Exception {
- return (Class<? extends Entity>) Class.forName(name);
- }
- public static void registerFunctions() {
- MundusPlugin.scriptManager.registerConsumer("entity.setnopickup", (sc, in) -> {
- ((Arrow) in[0].get(sc)).setPickupStatus(PickupStatus.DISALLOWED);
- });
- MundusPlugin.scriptManager.registerConsumer("entity.setburning",
- (sc, in) -> ((Entity) in[0].get(sc)).setFireTicks(in[1].getInt(sc)));
- MundusPlugin.scriptManager.registerFunction("entity.isburning",
- (sc, in) -> ((Entity) in[0].get(sc)).getFireTicks() > 0);
- MundusPlugin.scriptManager.registerFunction("entity.getlook", (sc, in) -> {
- Object[] o = new Object[3];
- Vector v = ((Entity) in[0].get(sc)).getLocation().getDirection();
- o[0] = v.getX();
- o[1] = v.getY();
- o[2] = v.getZ();
- return o;
- });
- MundusPlugin.scriptManager.registerConsumer("entity.setlook", (sc, in) -> {
- Entity e = (Entity) in[0].get(sc);
- Location l = e.getLocation();
- l.setDirection(
- new Vector(in[1].getDouble(sc), in[2].getDouble(sc), in[3].getDouble(sc)));
- e.teleport(l);
- });
- MundusPlugin.scriptManager.registerFunction("entity.getmotion", (sc, in) -> {
- Object[] o = new Object[3];
- Vector v = ((Entity) in[0].get(sc)).getVelocity();
- o[0] = v.getX();
- o[1] = v.getY();
- o[2] = v.getZ();
- return o;
- });
- MundusPlugin.scriptManager.registerFunction("entity.getlocation",
- (sc, in) -> ((Entity) in[0].get(sc)).getLocation());
- MundusPlugin.scriptManager.registerConsumer("entity.setname", (sc, in) -> {
- Entity ent = (Entity) in[0].get(sc);
- ent.customName((Component) in[1].get(sc));
- if(in.length >= 3) {
- ent.setCustomNameVisible(in[2].getBoolean(sc));
- return;
- }
- ent.setCustomNameVisible(false);
- });
- MundusPlugin.scriptManager.registerFunction("entity.getname",
- (sc, in) -> ((Entity) in[0].get(sc)).customName());
- MundusPlugin.scriptManager.registerConsumer("entity.setmotion", (sc, in) -> {
- Entity ent = (Entity) in[0].get(sc);
- ent.setVelocity(
- new Vector(in[1].getDouble(sc), in[2].getDouble(sc), in[3].getDouble(sc)));
- });
- MundusPlugin.scriptManager.registerConsumer("entity.teleport", (sc, in) -> {
- Entity ent = (Entity) in[0].get(sc);
- Location l = (Location) in[1].get(sc);
- ent.teleport(l);
- });
- MundusPlugin.scriptManager.registerConsumer("entity.removeall", (sc, in) -> {
- Location l = (Location) in[1].get(sc);
- for(Entity ent : l.getWorld().getNearbyEntitiesByType(
- getEntityClass(in[0].getString(sc)), l, in[2].getDouble(sc))) {
- ent.remove();
- }
- });
- MundusPlugin.scriptManager.registerConsumer("entity.remove",
- (sc, in) -> ((Entity) in[0].get(sc)).remove());
- MundusPlugin.scriptManager.registerConsumer("entity.setinvulnerable", (sc, in) -> {
- ((Entity) in[0].get(sc)).setInvulnerable(in[1].getBoolean(sc));
- });
- MundusPlugin.scriptManager.registerConsumer("entity.setsilent", (sc, in) -> {
- ((Entity) in[0].get(sc)).setSilent(in[1].getBoolean(sc));
- });
- MundusPlugin.scriptManager.registerFunction("entity.getmount",
- (sc, in) -> ((Entity) in[0].get(sc)).getVehicle());
- MundusPlugin.scriptManager.registerFunction("entity.getpassengers",
- (sc, in) -> ((Entity) in[0].get(sc)).getPassengers());
- MundusPlugin.scriptManager.registerConsumer("entity.mount", (sc, in) -> {
- ((Entity) in[1].get(sc)).addPassenger(((Entity) in[0].get(sc)));
- });
- MundusPlugin.scriptManager.registerConsumer("entity.unmount", (sc, in) -> {
- ((Entity) in[0].get(sc)).leaveVehicle();
- });
- MundusPlugin.scriptManager.registerFunction("entity.get", (sc, in) -> {
- Location l = (Location) in[0].get(sc);
- double min = Double.MAX_VALUE;
- Entity minE = null;
- for(Entity e : l.getWorld().getNearbyEntitiesByType(getEntityClass(in[2].getString(sc)),
- l, in[1].getDouble(sc))) {
- double distance = e.getLocation().distanceSquared(l);
- if(distance < min) {
- min = distance;
- minE = e;
- }
- }
- return minE;
- });
- MundusPlugin.scriptManager.registerFunction("entity.getpotiontype",
- (sc, in) -> ((ThrownPotion) in[0].get(sc)).getItem());
- MundusPlugin.scriptManager.registerConsumer("entity.setgravity", (sc, in) -> {
- ((Entity) in[0].get(sc)).setGravity(in[1].getBoolean(sc));
- });
- MundusPlugin.scriptManager.registerFunction("entity.iswet",
- (sc, in) -> ((Entity) in[0].get(sc)).isInWater());
- MundusPlugin.scriptManager.registerFunction("entity.spawn", (sc, in) -> {
- Location l = ((Location) in[0].get(sc));
- return l.getWorld().spawnEntity(l, EntityType.valueOf(in[1].getString(sc)));
- });
- MundusPlugin.scriptManager.registerFunction("entity.near", (sc, in) -> {
- Object o = in[0].get(sc);
- if(o instanceof Location) {
- Location l = (Location) o;
- return l.getWorld().getNearbyEntitiesByType(Entity.class, l, in[1].getDouble(sc));
- }
- Entity ent = (Entity) o;
- double radius = in[1].getDouble(sc);
- return ent.getNearbyEntities(radius, radius, radius);
- });
- MundusPlugin.scriptManager.registerFunction("entity.getuuid", (sc, in) -> {
- Entity ent = (Entity) in[0].get(sc);
- return ent.getUniqueId();
- });
- MundusPlugin.scriptManager.registerConsumer("entity.setgrowingage", (sc, in) -> {
- ((Ageable) in[0].get(sc)).setAge(in[1].getInt(sc));
- });
- MundusPlugin.scriptManager.registerFunction("entity.gettype",
- (sc, in) -> ((Entity) in[0].get(sc)).getType().toString().toLowerCase());
- MundusPlugin.scriptManager.registerFunction("sheep.issheared",
- (sc, in) -> ((Sheep) in[0].get(sc)).isSheared());
- MundusPlugin.scriptManager.registerFunction("sheep.getcolor",
- (sc, in) -> ((Sheep) in[0].get(sc)).getColor().toString());
- MundusPlugin.scriptManager.registerConsumer("creeper.explode",
- (sc, in) -> ((Creeper) in[0].get(sc)).ignite());
- MundusPlugin.scriptManager.registerFunction("pet.istamed", (sc, in) -> {
- return ((Tameable) in[0].get(sc)).isTamed();
- });
- MundusPlugin.scriptManager.registerConsumer("pet.settamed", (sc, in) -> {
- Tameable t = (Tameable) in[0].get(sc);
- t.setTamed(in[1].getBoolean(sc));
- if(in.length >= 3) {
- t.setOwner((Player) in[2].get(sc));
- }
- });
- MundusPlugin.scriptManager.registerFunction("pet.getowner", (sc, in) -> {
- Tameable t = (Tameable) in[0].get(sc);
- return t.getOwner();
- });
- MundusPlugin.scriptManager.registerConsumer("entity.frame.hide", (sc, in) -> {
- ItemFrame frame = (ItemFrame) in[0].get(sc);
- frame.setVisible(false);
- });
- MundusPlugin.scriptManager.registerConsumer("entity.frame.show", (sc, in) -> {
- ItemFrame frame = (ItemFrame) in[0].get(sc);
- frame.setVisible(true);
- });
- MundusPlugin.scriptManager.registerConsumer("entity.frame.setfixed", (sc, in) -> {
- ItemFrame frame = (ItemFrame) in[0].get(sc);
- frame.setFixed(in[1].getBoolean(sc));
- });
- MundusPlugin.scriptManager.registerConsumer("entity.frame.spawn", (sc, in) -> {
- Location l = ((Location) in[0].get(sc));
- ItemFrame frame = l.getWorld().spawn(l, ItemFrame.class);
- frame.setFacingDirection(BlockFace.valueOf(in[1].getString(sc)));
- frame.setItem((ItemStack) in[2].get(sc));
- });
- MundusPlugin.scriptManager.registerFunction("entity.frame.getitem",
- (sc, in) -> ((ItemFrame) in[0].get(sc)).getItem());
- MundusPlugin.scriptManager.registerFunction("slime.getsize", (sc, in) -> {
- Slime s = (Slime) in[0].get(sc);
- return (double) s.getSize();
- });
- MundusPlugin.scriptManager.registerConsumer("slime.setsize", (sc, in) -> {
- Slime s = (Slime) in[0].get(sc);
- s.setSize(in[1].getInt(sc));
- });
- }
- }
|