Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package ru.dpohvar.groovy.metaclasses
- import me.dpohvar.varscript.se.SEProgram;
- import me.dpohvar.varscript.se.trigger.SERunnable;
- import org.bukkit.inventory.InventoryHolder;
- import org.bukkit.inventory.Inventory;
- import org.bukkit.inventory.ItemStack;
- import org.bukkit.event.Event;
- import org.bukkit.event.EventPriority;
- import org.bukkit.entity.Player;
- import org.bukkit.entity.Entity;
- import org.bukkit.entity.HumanEntity;
- import org.bukkit.entity.LivingEntity;
- import org.bukkit.entity.Item;
- import org.bukkit.entity.Player;
- import org.bukkit.entity.Damageable;
- import org.bukkit.block.Block;
- import org.bukkit.util.Vector;
- import org.bukkit.Location;
- import org.bukkit.World;
- import org.bukkit.GameMode;
- import org.bukkit.ChatColor;
- import org.bukkit.Bukkit;
- /**
- * metaclasses v1.0.0
- * module for VarScript (Bukkit plugin)
- * Author: DPOH-VAR ([email protected])
- * (c) 2013
- */
- Script.metaClass.vector = { double x,double y,double z ->
- return new Vector(x,y,z)
- }
- Script.metaClass.up = Script.metaClass.vector ={ double y ->
- new Vector(0,y,0)
- }
- Script.metaClass.down = { double y ->
- new Vector(0,-y,0)
- }
- Script.metaClass.player = { String name ->
- Bukkit.getPlayer(name)
- }
- Script.metaClass.loc = { double x,double y,double z,String world ->
- return new Location(Bukkit.getWorld(world),x,y,z)
- }
- Script.metaClass.print = { def some ->
- delegate.program.caller.send(some);
- }
- Script.metaClass.getPlayers = { ->
- return Bukkit.getOnlinePlayers() as List;
- }
- Script.metaClass.getWorlds = { ->
- return Server.worlds as List
- }
- Script.metaClass.getEntities = { ->
- List result = new ArrayList()
- for (w in Server.worlds) result += w.entities;
- return result;
- }
- Script.metaClass.getLiving = { ->
- List result = new ArrayList()
- for (w in Server.worlds)
- for (e in w.entities)
- if (e instanceof LivingEntity)
- result << e
- return result;
- }
- Script.metaClass.getMobs = { ->
- List result = new ArrayList()
- for (w in Server.worlds)
- for (e in w.entities)
- if (e instanceof LivingEntity)
- if (!(e instanceof Player))
- result << e
- return result;
- }
- Script.metaClass.getItems = { ->
- List result = new ArrayList()
- for (w in Server.worlds)
- for (e in w.entities)
- if (e instanceof Item)
- result << e
- return result;
- }
- /**
- * Register events easier!
- **/
- Script.metaClass.onTicks = { long time, Closure closure ->
- return delegate.program.onTicks(closure,time);
- }
- Script.metaClass.everyTicks = { long time, Closure closure ->
- return delegate.program.everyTicks(closure,time);
- }
- Script.metaClass.onTimeout = { long time, Closure closure ->
- return delegate.program.onTimeout(closure,time);
- }
- Script.metaClass.everyTimeout = { long time, Closure closure ->
- return delegate.program.onTimeout(closure,time);
- }
- /**
- * trigger = register { Event event -> ... }
- * trigger = register (priority) { Event event -> ... }
- * trigger = register (String eventType) { ... }
- * trigger = register (String eventType,priority) { ... }
- * trigger = listen { Event event -> ... }
- * trigger = listen (priority) { Event event -> ... }
- * trigger = listen (String eventType) { ... }
- * trigger = listen (String eventType,priority) { ... }
- *
- **/
- Script.metaClass.register = { final Closure closure ->
- Class[] classes = closure.getParameterTypes();
- assert classes.length == 1
- Class clazz = classes[0]
- assert org.bukkit.event.Event.isAssignableFrom(clazz);
- SERunnable runnable = new SERunnable(){
- public void run(Object event){
- closure(event);
- }
- }
- return delegate.program.onEvent(runnable,clazz,EventPriority.NORMAL,false);
- }
- Script.metaClass.register = { Object priority, final Closure closure ->
- Class[] classes = closure.getParameterTypes();
- assert classes.length == 1
- Class clazz = classes[0]
- assert org.bukkit.event.Event.isAssignableFrom(clazz);
- SERunnable runnable = new SERunnable(){
- public void run(Object event){
- closure(event);
- }
- }
- return delegate.program.onEvent(runnable,clazz,priority,false);
- }
- Script.metaClass.listen = { final Closure closure ->
- Class[] classes = closure.getParameterTypes();
- assert classes.length == 1
- Class clazz = classes[0]
- assert org.bukkit.event.Event.isAssignableFrom(clazz);
- SERunnable runnable = new SERunnable(){
- public void run(Object event){
- closure(event);
- }
- }
- return delegate.program.onEvent(runnable,clazz,EventPriority.NORMAL,true);
- }
- Script.metaClass.listen = { Object priority, final Closure closure ->
- Class[] classes = closure.getParameterTypes();
- assert classes.length == 1
- Class clazz = classes[0]
- assert org.bukkit.event.Event.isAssignableFrom(clazz);
- SERunnable runnable = new SERunnable(){
- public void run(Object event){
- closure(event);
- }
- }
- return delegate.program.onEvent(runnable,clazz,priority,true);
- }
- Script.metaClass.register = { String type, final Closure closure ->
- SERunnable runnable = new SERunnable(){
- public void run(Object event){
- closure(event);
- }
- }
- return delegate.program.onEvent(runnable,type,EventPriority.NORMAL,false);
- }
- Script.metaClass.listen = { String type, final Closure closure ->
- SERunnable runnable = new SERunnable(){
- public void run(Object event){
- closure(event);
- }
- }
- return delegate.program.onEvent(runnable,type,EventPriority.NORMAL,true);
- }
- Script.metaClass.register = { String type, Object priority, final Closure closure ->
- SERunnable runnable = new SERunnable(){
- public void run(Object event){
- closure(event);
- }
- }
- return delegate.program.onEvent(runnable,type,priority,false);
- }
- Script.metaClass.listen = { String type, Object priority, final Closure closure ->
- SERunnable runnable = new SERunnable(){
- public void run(Object event){
- closure(event);
- }
- }
- return delegate.program.onEvent(runnable,type,priority,true);
- }
- /**
- * -"playerName"
- * +"formattedString"
- * "world".w
- */
- String.metaClass.getP = String.metaClass.negative = { ->
- return Bukkit.getPlayer(delegate);
- }
- String.metaClass.getW = String.metaClass.bitwiseNegate = { ->
- return Bukkit.getWorld(delegate);
- }
- String.metaClass.getF = String.metaClass.positive = { ->
- ChatColor.translateAlternateColorCodes('&' as char,delegate)
- }
- /**
- * vector + vector
- * vector - vector
- * vector / double
- **/
- Vector.metaClass.plus = { Vector v ->
- return delegate.clone().add(v);
- }
- Vector.metaClass.minus = { Vector v ->
- return delegate.clone().subtract(v);
- }
- Vector.metaClass.div = { double d ->
- return delegate.clone().multiply(1/d);
- }
- java.lang.reflect.Method vectorMulI = Vector.getMethod("multiply",int);
- java.lang.reflect.Method vectorMulF = Vector.getMethod("multiply",float);
- java.lang.reflect.Method vectorMulD = Vector.getMethod("multiply",double);
- Vector.metaClass.multiply = { int d ->
- return vectorMulI.invoke(delegate.clone(),d as int);
- }
- Vector.metaClass.multiply = { float d ->
- return vectorMulF.invoke(delegate.clone(),d as float);
- }
- Vector.metaClass.multiply = { double d ->
- return vectorMulD.invoke(delegate.clone(),d as double);
- }
- Vector.metaClass.negative = { ->
- return delegate.clone().multiply(-1);
- }
- Vector.metaClass.bitwiseNegate = { ->
- return delegate.clone().normalize();
- }
- Vector.metaClass.mod = { double d ->
- return delegate.clone().normalize().multiply(d);
- }
- Vector.metaClass.asType = { Class clazz ->
- if (clazz == byte) return delegate.length();
- if (clazz == short) return delegate.length();
- if (clazz == int) return delegate.length();
- if (clazz == long) return delegate.length();
- if (clazz == float) return delegate.length();
- if (clazz == double) return delegate.length();
- if (Number.isAssignableFrom(clazz)) return delegate.length();
- }
- /**
- * location + vector = location;
- * location - vector = location;
- * location - location = vector;
- **/
- Location.metaClass.plus = { Vector v ->
- return delegate.clone().add(v);
- }
- Location.metaClass.minus = { Vector v ->
- return delegate.clone().subtract(v);
- }
- Location.metaClass.minus = { Location v ->
- if(delegate.world != v.world) return null;
- double x = delegate.x - v.x;
- double y = delegate.y - v.y;
- double z = delegate.z - v.z;
- return new Vector(x,y,z);
- }
- Location.metaClass.multiply = { int t ->
- assert false, "can't multiply location";
- }
- Location.metaClass.multiply = { float t ->
- assert false, "can't multiply location";
- }
- Location.metaClass.multiply = { double t ->
- assert false, "can't multiply location";
- }
- /**
- * location.thpere(entity)
- **/
- Location.metaClass.tphere = Location.metaClass.leftShift = { Entity e ->
- e.tp(delegate);
- return delegate;
- }
- Location.metaClass.getLoc = { ->
- return delegate
- }
- Location.metaClass.asType = { Class clazz ->
- if (Number.isAssignableFrom(clazz)) return delegate.block.typeId;
- if (Block.isAssignableFrom(clazz)) return delegate.block;
- if (World.isAssignableFrom(clazz)) return delegate.world;
- }
- /**
- * Location.bolt()
- * create lightning strike at entity
- **/
- Location.metaClass.bolt = { ->
- World world = delegate.getWorld();
- world.strikeLightning(delegate);
- return delegate;
- }
- /**
- * Location.bolt(boolean damage)
- * create lightning strike at entity
- **/
- Location.metaClass.bolt = { boolean damage ->
- World world = delegate.getWorld();
- if(damage) world.strikeLightning(delegate);
- else world.strikeLightningEffect(delegate);
- return delegate;
- }
- /**
- * block + vector
- * block - vector
- **/
- Block.metaClass.plus = { Vector v ->
- return delegate.location.add(v).block;
- }
- Block.metaClass.minus = { Vector v ->
- return delegate.location.subtract(v).block;
- }
- /**
- * block.thpere(entity)
- **/
- Block.metaClass.tphere = Block.metaClass.leftShift = { Entity e ->
- e.tp(delegate.location);
- return delegate;
- }
- Block.metaClass.getLoc = { ->
- return delegate.location
- }
- Block.metaClass.getBlock = { ->
- return delegate
- }
- /**
- * Block.bolt()
- * create lightning strike at block
- **/
- Block.metaClass.bolt = { ->
- World world = delegate.getWorld();
- world.strikeLightning(delegate.getLocation());
- return delegate;
- }
- /**
- * Block.bolt(boolean damage)
- * create lightning strike at block
- **/
- Block.metaClass.bolt = { boolean damage ->
- World world = delegate.getWorld();
- if(damage) world.strikeLightning(delegate.getLocation());
- else world.strikeLightningEffect(delegate.getLocation());
- return delegate;
- }
- Block.metaClass.asType = { Class clazz ->
- if (Number.isAssignableFrom(clazz)) return delegate.typeId;
- if (Location.isAssignableFrom(clazz)) return delegate.location;
- if (World.isAssignableFrom(clazz)) return delegate.world;
- }
- /**
- * Entity.throw(double x,double y,double z)
- * add velocity to entity
- **/
- Entity.metaClass.throw = Entity.metaClass.th = {double x,double y,double z ->
- Vector v = delegate.velocity
- v.x += x
- v.y += y
- v.z += z
- delegate.velocity = v
- return delegate
- }
- /**
- * Entity.throw(double y)
- * add velocity to entity by Y axis
- **/
- Entity.metaClass.throw = Entity.metaClass.th = {double y ->
- Vector v = delegate.velocity
- v.y += y
- delegate.velocity = v
- return delegate
- }
- /**
- * Entity.throw(Vector v)
- * add velocity to entity
- **/
- Entity.metaClass.throw = Entity.metaClass.th = {Vector v ->
- delegate.velocity = delegate.velocity.add(v)
- return delegate
- }
- /**
- * Entity.bolt()
- * create lightning strike at entity
- **/
- Entity.metaClass.bolt = { ->
- World world = delegate.getWorld();
- world.strikeLightning(delegate.getLocation());
- return delegate;
- }
- /**
- * Entity.bolt(boolean damage)
- * create lightning strike at entity
- **/
- Entity.metaClass.bolt = { boolean damage ->
- World world = delegate.getWorld();
- if(damage) world.strikeLightning(delegate.getLocation());
- else world.strikeLightningEffect(delegate.getLocation());
- return delegate;
- }
- /**
- * Entity.tp(Location dst)
- * teleport entity to location
- **/
- Entity.metaClass.tp = Entity.metaClass.rightShift = { Location dst ->
- Location loc = delegate.getLocation();
- loc.x = dst.x
- loc.y = dst.y
- loc.z = dst.z
- loc.world = dst.world
- delegate.teleport(loc)
- return delegate;
- }
- /**
- * Entity.tp(Entity e)
- * teleport entity to entity
- **/
- Entity.metaClass.tp = Entity.metaClass.rightShift = { Entity e ->
- Location loc = delegate.getLocation();
- Location dst = e.getLocation();
- loc.x = dst.x
- loc.y = dst.y
- loc.z = dst.z
- loc.world = dst.world
- delegate.teleport(loc)
- return delegate;
- }
- /**
- * Entity.tp(Block e)
- * teleport entity to entity
- **/
- Entity.metaClass.tp = Entity.metaClass.rightShift = { Block e ->
- Location loc = delegate.getLocation();
- Location dst = e.getLocation();
- loc.x = dst.x
- loc.y = dst.y
- loc.z = dst.z
- loc.world = dst.world
- delegate.teleport(loc)
- return delegate;
- }
- /**
- * Entity.tpto(Location dst)
- * teleport entity to location
- **/
- Entity.metaClass.tpto = { Location dst ->
- delegate.teleport(dst)
- return delegate;
- }
- /**
- * Entity.tpto(Entity e)
- * teleport entity to entity
- **/
- Entity.metaClass.tpto = { Entity e ->
- delegate.teleport(e)
- return delegate;
- }
- /**
- * Entity.tpto(Block b)
- * teleport entity to entity
- **/
- Entity.metaClass.tpto = { Block b ->
- delegate.teleport(b.location)
- return delegate;
- }
- /**
- * Entity.thpere(entity)
- **/
- Entity.metaClass.tphere = Entity.metaClass.leftShift = { Entity e ->
- e.tp(delegate.location);
- return delegate;
- }
- /**
- * Entity.shift(double x,double y,double z)
- * shift entity to x,y,z
- **/
- Entity.metaClass.shift = { double x,double y,double z ->
- Location l = delegate.getLocation();
- l.x += x;
- l.y += y;
- l.z += z;
- delegate.teleport(l);
- return delegate;
- }
- /**
- * Entity.shift(Vector v)
- * shift entity to vector
- **/
- Entity.metaClass.shift = { Vector v ->
- delegate.teleport(delegate.location.add(v));
- return delegate;
- }
- /**
- * Entity.shift(double y)
- * shift entity up
- **/
- Entity.metaClass.shift = { double y ->
- Location l = delegate.getLocation();
- l.y += y;
- delegate.teleport(l);
- return delegate;
- }
- Entity.metaClass.getLoc = { ->
- return delegate.location
- }
- Entity.metaClass.setLoc = { Location l ->
- delegate.teleport(l);
- return delegate;
- }
- Entity.metaClass.getBlock = { ->
- return delegate.location.block
- }
- /**
- * Damageable.kill()
- **/
- Damageable.metaClass.kill = { ->
- delegate.damage(delegate.getMaxHealth());
- }
- /**
- * Damageable.dmg(double damage)
- **/
- Damageable.metaClass.dmg = { double damage ->
- delegate.damage(damage);
- }
- /**
- * Damageable.hp
- **/
- Damageable.metaClass.getHp = { ->
- delegate.getHealth();
- }
- Damageable.metaClass.setHp = { double health ->
- def max = delegate.getMaxHealth();
- if (max < health) health = max;
- delegate.setHealth(health);
- }
- /**
- * Damageable.maxhp
- **/
- Damageable.metaClass.getMaxhp = { ->
- delegate.getMaxHealth();
- }
- Damageable.metaClass.setMaxhp = { double health ->
- delegate.setMaxHealth(health);
- }
- /**
- * HumanEntity.gm
- **/
- HumanEntity.metaClass.getGm = { ->
- delegate.gameMode
- }
- HumanEntity.metaClass.setGm = { GameMode gm ->
- print("x");
- delegate.gameMode = gm;
- }
- /**
- * InventoryHolder.give(int id[, int type[, int amount]])
- * InventoryHolder.give(ItemStack item)
- * give item to holder
- **/
- InventoryHolder.metaClass.give = { int id ->
- delegate.getInventory().addItem(new ItemStack(id))
- return delegate;
- }
- InventoryHolder.metaClass.give = { int id,int type ->
- delegate.getInventory().addItem(new ItemStack(id,1,type as byte))
- return delegate;
- }
- InventoryHolder.metaClass.give = { int id,int type, int amount ->
- delegate.getInventory().addItem(new ItemStack(id,amount,type as byte))
- return delegate;
- }
- InventoryHolder.metaClass.give = { ItemStack item ->
- delegate.getInventory().addItem(item)
- return delegate;
- }
- /**
- * Inventory.give(int id[, int type[, int amount]])
- * Inventory.give(ItemStack item)
- * give item to holder
- **/
- Inventory.metaClass.give = { int id ->
- delegate.addItem(new ItemStack(id))
- return delegate;
- }
- Inventory.metaClass.give = { int id,int type ->
- delegate.addItem(new ItemStack(id,0,type as byte))
- return delegate;
- }
- Inventory.metaClass.give = { int id,int type, int amount ->
- delegate.addItem(new ItemStack(id,amount,type as byte))
- return delegate;
- }
- Inventory.metaClass.give = { ItemStack item ->
- delegate.addItem(item)
- return delegate;
- }
- Bukkit.broadcastMessage("metaclasses loaded");
- return [name:"metaclasses",version:[1,0,0]]
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement