|
@@ -17,27 +17,27 @@ import me.km.utils.Location;
|
|
import net.minecraft.command.ICommandSource;
|
|
import net.minecraft.command.ICommandSource;
|
|
import net.minecraft.entity.Entity;
|
|
import net.minecraft.entity.Entity;
|
|
import net.minecraft.entity.LivingEntity;
|
|
import net.minecraft.entity.LivingEntity;
|
|
-import net.minecraft.entity.passive.SheepEntity;
|
|
|
|
import net.minecraft.entity.player.PlayerEntity;
|
|
import net.minecraft.entity.player.PlayerEntity;
|
|
import net.minecraft.entity.player.ServerPlayerEntity;
|
|
import net.minecraft.entity.player.ServerPlayerEntity;
|
|
import net.minecraft.inventory.container.ClickType;
|
|
import net.minecraft.inventory.container.ClickType;
|
|
import net.minecraft.item.ItemStack;
|
|
import net.minecraft.item.ItemStack;
|
|
-import net.minecraft.item.Items;
|
|
|
|
import net.minecraft.server.MinecraftServer;
|
|
import net.minecraft.server.MinecraftServer;
|
|
import net.minecraft.server.management.PlayerList;
|
|
import net.minecraft.server.management.PlayerList;
|
|
-import net.minecraft.util.Hand;
|
|
|
|
import net.minecraft.util.math.BlockPos;
|
|
import net.minecraft.util.math.BlockPos;
|
|
import net.minecraft.util.math.BlockRayTraceResult;
|
|
import net.minecraft.util.math.BlockRayTraceResult;
|
|
import net.minecraft.util.math.EntityRayTraceResult;
|
|
import net.minecraft.util.math.EntityRayTraceResult;
|
|
import net.minecraft.util.math.RayTraceResult;
|
|
import net.minecraft.util.math.RayTraceResult;
|
|
import net.minecraft.util.text.ITextComponent;
|
|
import net.minecraft.util.text.ITextComponent;
|
|
import net.minecraft.util.text.StringTextComponent;
|
|
import net.minecraft.util.text.StringTextComponent;
|
|
|
|
+import net.minecraft.world.GameRules;
|
|
import net.minecraftforge.event.ServerChatEvent;
|
|
import net.minecraftforge.event.ServerChatEvent;
|
|
|
|
+import net.minecraftforge.event.entity.EntityJoinWorldEvent;
|
|
|
|
+import net.minecraftforge.event.entity.EntityMobGriefingEvent;
|
|
import net.minecraftforge.event.entity.EntityMountEvent;
|
|
import net.minecraftforge.event.entity.EntityMountEvent;
|
|
import net.minecraftforge.event.entity.ProjectileImpactEvent;
|
|
import net.minecraftforge.event.entity.ProjectileImpactEvent;
|
|
import net.minecraftforge.event.entity.item.ItemTossEvent;
|
|
import net.minecraftforge.event.entity.item.ItemTossEvent;
|
|
import net.minecraftforge.event.entity.living.*;
|
|
import net.minecraftforge.event.entity.living.*;
|
|
-import net.minecraftforge.event.entity.player.AttackEntityEvent;
|
|
|
|
|
|
+import net.minecraftforge.event.entity.living.LivingEvent.LivingJumpEvent;
|
|
import net.minecraftforge.event.entity.player.EntityItemPickupEvent;
|
|
import net.minecraftforge.event.entity.player.EntityItemPickupEvent;
|
|
import net.minecraftforge.event.entity.player.FillBucketEvent;
|
|
import net.minecraftforge.event.entity.player.FillBucketEvent;
|
|
import net.minecraftforge.event.entity.player.ItemFishedEvent;
|
|
import net.minecraftforge.event.entity.player.ItemFishedEvent;
|
|
@@ -48,12 +48,17 @@ import net.minecraftforge.eventbus.api.Event;
|
|
import net.minecraftforge.eventbus.api.EventPriority;
|
|
import net.minecraftforge.eventbus.api.EventPriority;
|
|
import net.minecraftforge.eventbus.api.SubscribeEvent;
|
|
import net.minecraftforge.eventbus.api.SubscribeEvent;
|
|
import net.minecraftforge.event.entity.player.PlayerEvent;
|
|
import net.minecraftforge.event.entity.player.PlayerEvent;
|
|
|
|
+import net.minecraftforge.eventbus.api.Event.Result;
|
|
|
|
|
|
public class ScriptEvents {
|
|
public class ScriptEvents {
|
|
private static void setLivingEntity(Script sc, LivingEntity ent) {
|
|
private static void setLivingEntity(Script sc, LivingEntity ent) {
|
|
sc.setVar("living_entity", ent);
|
|
sc.setVar("living_entity", ent);
|
|
}
|
|
}
|
|
|
|
|
|
|
|
+ private static void setItem(Script sc, ItemStack stack) {
|
|
|
|
+ sc.setVar("item_stack", stack);
|
|
|
|
+ }
|
|
|
|
+
|
|
private final Scripts scripts;
|
|
private final Scripts scripts;
|
|
private final MinecraftServer server;
|
|
private final MinecraftServer server;
|
|
private final PermissionManager perms;
|
|
private final PermissionManager perms;
|
|
@@ -64,9 +69,6 @@ public class ScriptEvents {
|
|
this.perms = perms;
|
|
this.perms = perms;
|
|
}
|
|
}
|
|
|
|
|
|
- // -------------------------------------------------------------------------
|
|
|
|
- // basics
|
|
|
|
- // -------------------------------------------------------------------------
|
|
|
|
private void handleEvent(Event e, String event, Consumer<Script> before, Consumer<Script> after) {
|
|
private void handleEvent(Event e, String event, Consumer<Script> before, Consumer<Script> after) {
|
|
if(e.isCancelable()) {
|
|
if(e.isCancelable()) {
|
|
scripts.getScriptManager().callEvent(event, sc -> {
|
|
scripts.getScriptManager().callEvent(event, sc -> {
|
|
@@ -102,6 +104,19 @@ public class ScriptEvents {
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
|
|
+ @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(PlayerEntity p, String event, Consumer<Script> before) {
|
|
private void handleEvent(PlayerEntity p, String event, Consumer<Script> before) {
|
|
handleEvent(p, event, before, null);
|
|
handleEvent(p, event, before, null);
|
|
}
|
|
}
|
|
@@ -129,9 +144,6 @@ public class ScriptEvents {
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
- // -------------------------------------------------------------------------
|
|
|
|
- // events
|
|
|
|
- // -------------------------------------------------------------------------
|
|
|
|
public void onPlayerDataTick(PlayerEntity p, String var) {
|
|
public void onPlayerDataTick(PlayerEntity p, String var) {
|
|
handleEvent(p, "player_data_tick", sc -> {
|
|
handleEvent(p, "player_data_tick", sc -> {
|
|
sc.setVar("var", var);
|
|
sc.setVar("var", var);
|
|
@@ -151,7 +163,7 @@ public class ScriptEvents {
|
|
sc.setVar("inv_id", (double) inv.getModId());
|
|
sc.setVar("inv_id", (double) inv.getModId());
|
|
sc.setVar("inv_name", text.getFormattedText());
|
|
sc.setVar("inv_name", text.getFormattedText());
|
|
sc.setVar("inv_slot", (double) slot);
|
|
sc.setVar("inv_slot", (double) slot);
|
|
- ScriptVars.setItemVars(sc, inv.getStackInSlot(slot));
|
|
|
|
|
|
+ setItem(sc, inv.getStackInSlot(slot));
|
|
sc.setVar("cancel", false);
|
|
sc.setVar("cancel", false);
|
|
}, null);
|
|
}, null);
|
|
Variable v = script.getVar("cancel");
|
|
Variable v = script.getVar("cancel");
|
|
@@ -167,11 +179,14 @@ public class ScriptEvents {
|
|
}, null);
|
|
}, null);
|
|
}
|
|
}
|
|
|
|
|
|
- public void onHumanHurt(PlayerEntity p, EntityHuman h) {
|
|
|
|
- handleEvent(p, "human_hurt", sc -> ScriptVars.setEntityVars(sc, h));
|
|
|
|
|
|
+ public void onHumanHurt(Entity attacker, EntityHuman h) {
|
|
|
|
+ handleEvent(null, "human_hurt", sc -> {
|
|
|
|
+ ScriptVars.setEntityVars(sc, attacker);
|
|
|
|
+ sc.setVar("human", h);
|
|
|
|
+ });
|
|
}
|
|
}
|
|
|
|
|
|
- @SubscribeEvent
|
|
|
|
|
|
+ @SubscribeEvent(receiveCanceled = true)
|
|
public void onPlayerPostRespawn(PlayerEvent.PlayerRespawnEvent e) {
|
|
public void onPlayerPostRespawn(PlayerEvent.PlayerRespawnEvent e) {
|
|
handleEvent(e.getPlayer(), "player_post_respawn", sc -> {
|
|
handleEvent(e.getPlayer(), "player_post_respawn", sc -> {
|
|
});
|
|
});
|
|
@@ -182,7 +197,7 @@ public class ScriptEvents {
|
|
});
|
|
});
|
|
}
|
|
}
|
|
|
|
|
|
- @SubscribeEvent
|
|
|
|
|
|
+ @SubscribeEvent(receiveCanceled = true)
|
|
public void onOldPlayerDamage(LivingHurtEvent e) {
|
|
public void onOldPlayerDamage(LivingHurtEvent e) {
|
|
if(!(e.getEntityLiving() instanceof ServerPlayerEntity)) {
|
|
if(!(e.getEntityLiving() instanceof ServerPlayerEntity)) {
|
|
return;
|
|
return;
|
|
@@ -210,30 +225,8 @@ public class ScriptEvents {
|
|
});
|
|
});
|
|
}
|
|
}
|
|
|
|
|
|
- @SubscribeEvent
|
|
|
|
- public void onOldEntityDamage(LivingHurtEvent e) {
|
|
|
|
- PlayerEntity p = Utils.getDamager(e.getSource());
|
|
|
|
- if(p == null) {
|
|
|
|
- return;
|
|
|
|
- }
|
|
|
|
- handleEvent(p, "entity_hurt", (sc) -> {
|
|
|
|
- sc.setVar("entity_killed", e.getEntityLiving().getHealth() <= e.getAmount());
|
|
|
|
- ScriptVars.setEntityVars(sc, e.getEntity());
|
|
|
|
- sc.setVar("entity_damage", (double) e.getAmount());
|
|
|
|
- sc.setVar("entity_damage_cause", e.getSource());
|
|
|
|
- sc.setVar("cancel", e.isCanceled());
|
|
|
|
- }, (sc) -> {
|
|
|
|
- try {
|
|
|
|
- ifVarNotNull(sc, "entity_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 'entity_hurt' event", ex, null, sc.getName(), sc, sc.getActiveSourceLine());
|
|
|
|
- }
|
|
|
|
- });
|
|
|
|
- }
|
|
|
|
-
|
|
|
|
- @SubscribeEvent
|
|
|
|
- public void onEntityDamage(LivingHurtEvent e) {
|
|
|
|
|
|
+ @SubscribeEvent(receiveCanceled = true)
|
|
|
|
+ public void onLivingHurt(LivingHurtEvent e) {
|
|
handleEvent(e, "living_hurt", (sc) -> {
|
|
handleEvent(e, "living_hurt", (sc) -> {
|
|
setLivingEntity(sc, e.getEntityLiving());
|
|
setLivingEntity(sc, e.getEntityLiving());
|
|
sc.setVar("damage_source", e.getSource());
|
|
sc.setVar("damage_source", e.getSource());
|
|
@@ -243,11 +236,12 @@ public class ScriptEvents {
|
|
});
|
|
});
|
|
}
|
|
}
|
|
|
|
|
|
- @SubscribeEvent
|
|
|
|
- public void onPlayerAttack(LivingAttackEvent e) {
|
|
|
|
|
|
+ @SubscribeEvent(receiveCanceled = true)
|
|
|
|
+ public void onLivingAttacked(LivingAttackEvent e) {
|
|
LivingEntity liv = e.getEntityLiving();
|
|
LivingEntity liv = e.getEntityLiving();
|
|
if(liv instanceof PlayerEntity) {
|
|
if(liv instanceof PlayerEntity) {
|
|
PlayerEntity p = (PlayerEntity) liv;
|
|
PlayerEntity p = (PlayerEntity) liv;
|
|
|
|
+ // deprecated
|
|
handleEvent(p, "player_is_attacked", (sc) -> {
|
|
handleEvent(p, "player_is_attacked", (sc) -> {
|
|
sc.setVar("player_killed", p.getHealth() <= e.getAmount());
|
|
sc.setVar("player_killed", p.getHealth() <= e.getAmount());
|
|
sc.setVar("player_damage_cause", e.getSource());
|
|
sc.setVar("player_damage_cause", e.getSource());
|
|
@@ -262,37 +256,15 @@ public class ScriptEvents {
|
|
}, (sc) -> {
|
|
}, (sc) -> {
|
|
simpleCancel(sc, e, "player_is_attacked");
|
|
simpleCancel(sc, e, "player_is_attacked");
|
|
});
|
|
});
|
|
- } else {
|
|
|
|
- PlayerEntity p = Utils.getDamager(e.getSource());
|
|
|
|
- if(p != null) {
|
|
|
|
- handleEvent(p, "player_attacks", (sc) -> {
|
|
|
|
- ScriptVars.setEntityVars(sc, liv);
|
|
|
|
- sc.setVar("cancel", e.isCanceled());
|
|
|
|
- }, (sc) -> {
|
|
|
|
- simpleCancel(sc, e, "player_attacks");
|
|
|
|
- });
|
|
|
|
- }
|
|
|
|
- }
|
|
|
|
- }
|
|
|
|
-
|
|
|
|
- @SubscribeEvent
|
|
|
|
- public void onOldPlayerHeal(LivingHealEvent e) {
|
|
|
|
- if(e.getEntityLiving() instanceof PlayerEntity) {
|
|
|
|
- handleEvent((PlayerEntity) e.getEntityLiving(), "player_heal", (sc) -> {
|
|
|
|
- sc.setVar("heal", (double) e.getAmount());
|
|
|
|
- sc.setVar("cancel", e.isCanceled());
|
|
|
|
- }, (sc) -> {
|
|
|
|
- try {
|
|
|
|
- ifVarNotNull(sc, "heal", 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_heal' event", ex, null, sc.getName(), sc, sc.getActiveSourceLine());
|
|
|
|
- }
|
|
|
|
- });
|
|
|
|
}
|
|
}
|
|
|
|
+ handleEvent(e, "living_is_attacked", (sc) -> {
|
|
|
|
+ setLivingEntity(sc, e.getEntityLiving());
|
|
|
|
+ sc.setVar("damage_source", e.getSource());
|
|
|
|
+ sc.setVar("damage_amount", (double) e.getAmount());
|
|
|
|
+ }, null);
|
|
}
|
|
}
|
|
|
|
|
|
- @SubscribeEvent
|
|
|
|
|
|
+ @SubscribeEvent(receiveCanceled = true)
|
|
public void onLivingHeal(LivingHealEvent e) {
|
|
public void onLivingHeal(LivingHealEvent e) {
|
|
handleEvent(e, "living_heal", (sc) -> {
|
|
handleEvent(e, "living_heal", (sc) -> {
|
|
setLivingEntity(sc, e.getEntityLiving());
|
|
setLivingEntity(sc, e.getEntityLiving());
|
|
@@ -302,38 +274,16 @@ public class ScriptEvents {
|
|
});
|
|
});
|
|
}
|
|
}
|
|
|
|
|
|
- @SubscribeEvent
|
|
|
|
- public void onEntityDamage(LivingHealEvent e) {
|
|
|
|
- if(e.getEntityLiving() instanceof PlayerEntity) {
|
|
|
|
- handleEvent((PlayerEntity) e.getEntityLiving(), "player_heal", (sc) -> {
|
|
|
|
- sc.setVar("heal", (double) e.getAmount());
|
|
|
|
- sc.setVar("cancel", e.isCanceled());
|
|
|
|
- }, (sc) -> {
|
|
|
|
- try {
|
|
|
|
- ifVarNotNull(sc, "heal", 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_heal' event", ex, null, sc.getName(), sc, sc.getActiveSourceLine());
|
|
|
|
- }
|
|
|
|
- });
|
|
|
|
- }
|
|
|
|
- }
|
|
|
|
-
|
|
|
|
- @SubscribeEvent
|
|
|
|
|
|
+ @SubscribeEvent(receiveCanceled = true)
|
|
public void onLivingDeath(LivingDeathEvent e) {
|
|
public void onLivingDeath(LivingDeathEvent e) {
|
|
|
|
+ handleEvent(e, "living_death", (sc) -> {
|
|
|
|
+ setLivingEntity(sc, e.getEntityLiving());
|
|
|
|
+ sc.setVar("damage_source", e.getSource());
|
|
|
|
+ }, null);
|
|
if(!(e.getEntityLiving() instanceof PlayerEntity)) {
|
|
if(!(e.getEntityLiving() instanceof PlayerEntity)) {
|
|
- PlayerEntity p = Utils.getDamager(e.getSource());
|
|
|
|
- handleEvent(p, "entity_death", (sc) -> {
|
|
|
|
- sc.setVar("entity_damage_cause", e.getSource());
|
|
|
|
- LivingEntity ent = e.getEntityLiving();
|
|
|
|
- ScriptVars.setEntityVars(sc, ent);
|
|
|
|
- sc.setVar("player_involved", p != null);
|
|
|
|
- sc.setVar("cancel", e.isCanceled());
|
|
|
|
- }, (sc) -> {
|
|
|
|
- simpleCancel(sc, e, "entity_death");
|
|
|
|
- });
|
|
|
|
return;
|
|
return;
|
|
}
|
|
}
|
|
|
|
+ // deprecated
|
|
PlayerEntity p = (PlayerEntity) e.getEntity();
|
|
PlayerEntity p = (PlayerEntity) e.getEntity();
|
|
handleEvent(p, "player_death", (sc) -> {
|
|
handleEvent(p, "player_death", (sc) -> {
|
|
sc.setVar("clear", false);
|
|
sc.setVar("clear", false);
|
|
@@ -356,36 +306,17 @@ public class ScriptEvents {
|
|
});
|
|
});
|
|
}
|
|
}
|
|
|
|
|
|
- @SubscribeEvent
|
|
|
|
- public void onEntityDrop(LivingDropsEvent e) {
|
|
|
|
- try {
|
|
|
|
- PlayerEntity p = Utils.getDamager(e.getSource());
|
|
|
|
- handleEvent(p, "entity_drop", (sc) -> {
|
|
|
|
- sc.setVar("drops", e.getDrops());
|
|
|
|
- ScriptVars.setEntityVars(sc, e.getEntityLiving());
|
|
|
|
- sc.setVar("player_involved", p != null);
|
|
|
|
- sc.setVar("cancel", e.isCanceled());
|
|
|
|
- }, (sc) -> {
|
|
|
|
- simpleCancel(sc, e, "entity_drop");
|
|
|
|
- });
|
|
|
|
- } catch(NullPointerException ex) {
|
|
|
|
- scripts.getLogger().print(ex);
|
|
|
|
- }
|
|
|
|
- }
|
|
|
|
-
|
|
|
|
- @SubscribeEvent
|
|
|
|
- public void onPlayerDrop(LivingDropsEvent e) {
|
|
|
|
- if(!(e.getEntityLiving() instanceof PlayerEntity)) {
|
|
|
|
- return;
|
|
|
|
- }
|
|
|
|
- handleEvent((PlayerEntity) e.getEntityLiving(), "player_drop", (sc) -> {
|
|
|
|
- sc.setVar("cancel", e.isCanceled());
|
|
|
|
- }, (sc) -> {
|
|
|
|
- simpleCancel(sc, e, "player_drop");
|
|
|
|
- });
|
|
|
|
|
|
+ @SubscribeEvent(receiveCanceled = true)
|
|
|
|
+ public void onLivingDrop(LivingDropsEvent e) {
|
|
|
|
+ handleEvent(e, "living_drop", (sc) -> {
|
|
|
|
+ setLivingEntity(sc, e.getEntityLiving());
|
|
|
|
+ sc.setVar("drops", e.getDrops());
|
|
|
|
+ sc.setVar("damage_source", e.getSource());
|
|
|
|
+ sc.setVar("looting_level", (double) e.getLootingLevel());
|
|
|
|
+ }, null);
|
|
}
|
|
}
|
|
|
|
|
|
- @SubscribeEvent
|
|
|
|
|
|
+ @SubscribeEvent(receiveCanceled = true)
|
|
public void onProjectileHit(ProjectileImpactEvent e) {
|
|
public void onProjectileHit(ProjectileImpactEvent e) {
|
|
final Entity hitEntity;
|
|
final Entity hitEntity;
|
|
final Location loc;
|
|
final Location loc;
|
|
@@ -404,59 +335,60 @@ public class ScriptEvents {
|
|
return;
|
|
return;
|
|
}
|
|
}
|
|
|
|
|
|
- handleEvent(Utils.getPlayerFromProjectile(e.getEntity()), "throw_hit", (sc) -> {
|
|
|
|
|
|
+ handleEvent(e, "projectile_hit", (sc) -> {
|
|
|
|
+ sc.setVar("projectile", e.getEntity());
|
|
sc.setVar("entity_hit", hitEntity);
|
|
sc.setVar("entity_hit", hitEntity);
|
|
sc.setVar("loc_hit", loc);
|
|
sc.setVar("loc_hit", loc);
|
|
- ScriptVars.setEntityVars(sc, e.getEntity());
|
|
|
|
- });
|
|
|
|
|
|
+ sc.setVar("shooter", Utils.getEntityFromProjectile(e.getEntity()));
|
|
|
|
+ }, null);
|
|
}
|
|
}
|
|
|
|
|
|
- public void onEntityItemProjectileHit(EntityItemProjectile ent, PlayerEntity p, ItemStack stack, Entity hitEntity, BlockPos pos) {
|
|
|
|
- Location loc;
|
|
|
|
- if(pos == null) {
|
|
|
|
- loc = null;
|
|
|
|
- } else {
|
|
|
|
- loc = new Location(ent.world, pos);
|
|
|
|
- }
|
|
|
|
- handleEvent(p, "item_hit", (sc) -> {
|
|
|
|
- ScriptVars.setEntityVars(sc, ent);
|
|
|
|
- ScriptVars.setItemVars(sc, stack);
|
|
|
|
|
|
+ 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) -> {
|
|
|
|
+ sc.setVar("projectile", ent);
|
|
|
|
+ setItem(sc, stack);
|
|
sc.setVar("entity_hit", hitEntity);
|
|
sc.setVar("entity_hit", hitEntity);
|
|
sc.setVar("loc_hit", loc);
|
|
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);
|
|
|
|
+ }
|
|
}
|
|
}
|
|
|
|
|
|
- @SubscribeEvent
|
|
|
|
- public void onEntityShear(PlayerInteractEvent.EntityInteract e) {
|
|
|
|
- if(e.getHand() == Hand.OFF_HAND || !(e.getTarget() instanceof SheepEntity)) {
|
|
|
|
- return;
|
|
|
|
- }
|
|
|
|
- PlayerEntity p = e.getPlayer();
|
|
|
|
- if(p.getHeldItemMainhand().getItem() != Items.SHEARS) {
|
|
|
|
- return;
|
|
|
|
- }
|
|
|
|
- SheepEntity sheep = (SheepEntity) e.getTarget();
|
|
|
|
- handleEvent(p, "entity_shear", (sc) -> {
|
|
|
|
- ScriptVars.setEntityVars(sc, sheep);
|
|
|
|
- sc.setVar("entity_sheared", sheep.getSheared());
|
|
|
|
- sc.setVar("entity_color", sheep.getFleeceColor().toString());
|
|
|
|
|
|
+ @SubscribeEvent(receiveCanceled = true)
|
|
|
|
+ public void onBlockBreak(BlockEvent.BreakEvent e) {
|
|
|
|
+ handleEvent(e.getPlayer(), "block_break", (sc) -> {
|
|
|
|
+ ScriptVars.setBlockVars(sc, e.getWorld(), e.getPos());
|
|
sc.setVar("cancel", e.isCanceled());
|
|
sc.setVar("cancel", e.isCanceled());
|
|
}, (sc) -> {
|
|
}, (sc) -> {
|
|
- simpleCancel(sc, e, "entity_shear");
|
|
|
|
|
|
+ simpleCancel(sc, e, "block_break");
|
|
});
|
|
});
|
|
}
|
|
}
|
|
|
|
|
|
- @SubscribeEvent
|
|
|
|
- public void onBlockBreak(BlockEvent.BreakEvent e) {
|
|
|
|
- handleEvent(e.getPlayer(), "block_break", (sc) -> {
|
|
|
|
|
|
+ @SubscribeEvent(receiveCanceled = true)
|
|
|
|
+ public void onBlockPlace(BlockEvent.EntityPlaceEvent e) {
|
|
|
|
+ if(!(e.getEntity() instanceof PlayerEntity)) {
|
|
|
|
+ return;
|
|
|
|
+ }
|
|
|
|
+ handleEvent((PlayerEntity) e.getEntity(), "block_place", (sc) -> {
|
|
|
|
+ sc.setVar("block_type_after", e.getPlacedBlock().getBlock().getRegistryName());
|
|
ScriptVars.setBlockVars(sc, e.getWorld(), e.getPos());
|
|
ScriptVars.setBlockVars(sc, e.getWorld(), e.getPos());
|
|
sc.setVar("cancel", e.isCanceled());
|
|
sc.setVar("cancel", e.isCanceled());
|
|
}, (sc) -> {
|
|
}, (sc) -> {
|
|
- simpleCancel(sc, e, "block_break");
|
|
|
|
|
|
+ simpleCancel(sc, e, "block_place");
|
|
});
|
|
});
|
|
}
|
|
}
|
|
|
|
|
|
- @SubscribeEvent
|
|
|
|
|
|
+ @SubscribeEvent(receiveCanceled = true)
|
|
public void onPlayerLogin(PlayerEvent.PlayerLoggedInEvent e) {
|
|
public void onPlayerLogin(PlayerEvent.PlayerLoggedInEvent e) {
|
|
PlayerEntity p = e.getPlayer();
|
|
PlayerEntity p = e.getPlayer();
|
|
if(p == null) {
|
|
if(p == null) {
|
|
@@ -469,7 +401,7 @@ public class ScriptEvents {
|
|
});
|
|
});
|
|
}
|
|
}
|
|
|
|
|
|
- @SubscribeEvent
|
|
|
|
|
|
+ @SubscribeEvent(receiveCanceled = true)
|
|
public void onPlayerLogout(PlayerEvent.PlayerLoggedOutEvent e) {
|
|
public void onPlayerLogout(PlayerEvent.PlayerLoggedOutEvent e) {
|
|
PlayerEntity p = e.getPlayer();
|
|
PlayerEntity p = e.getPlayer();
|
|
if(p == null || e.getPlayer().ticksExisted < 20) {
|
|
if(p == null || e.getPlayer().ticksExisted < 20) {
|
|
@@ -479,7 +411,7 @@ public class ScriptEvents {
|
|
});
|
|
});
|
|
}
|
|
}
|
|
|
|
|
|
- @SubscribeEvent
|
|
|
|
|
|
+ @SubscribeEvent(receiveCanceled = true)
|
|
public void onBucketFill(FillBucketEvent e) {
|
|
public void onBucketFill(FillBucketEvent e) {
|
|
handleEvent(e.getPlayer(), "bucket_use", (sc) -> {
|
|
handleEvent(e.getPlayer(), "bucket_use", (sc) -> {
|
|
RayTraceResult ray = e.getTarget();
|
|
RayTraceResult ray = e.getTarget();
|
|
@@ -496,27 +428,11 @@ public class ScriptEvents {
|
|
});
|
|
});
|
|
}
|
|
}
|
|
|
|
|
|
- @SubscribeEvent
|
|
|
|
- public void onBlockPlace(BlockEvent.EntityPlaceEvent e) {
|
|
|
|
- if(!(e.getEntity() instanceof PlayerEntity)) {
|
|
|
|
- return;
|
|
|
|
- }
|
|
|
|
- handleEvent((PlayerEntity) e.getEntity(), "block_place", (sc) -> {
|
|
|
|
- sc.setVar("block_type_after", e.getPlacedBlock().getBlock().getRegistryName());
|
|
|
|
- ScriptVars.setBlockVars(sc, e.getWorld(), e.getPos());
|
|
|
|
- sc.setVar("cancel", e.isCanceled());
|
|
|
|
- }, (sc) -> {
|
|
|
|
- simpleCancel(sc, e, "block_place");
|
|
|
|
- });
|
|
|
|
- }
|
|
|
|
-
|
|
|
|
- @SubscribeEvent
|
|
|
|
|
|
+ @SubscribeEvent(receiveCanceled = true)
|
|
public void onRightClickBlock(PlayerInteractEvent.RightClickBlock e) {
|
|
public void onRightClickBlock(PlayerInteractEvent.RightClickBlock e) {
|
|
- if(e.getHand() == Hand.OFF_HAND) {
|
|
|
|
- return;
|
|
|
|
- }
|
|
|
|
handleEvent(e.getPlayer(), "block_click", (sc) -> {
|
|
handleEvent(e.getPlayer(), "block_click", (sc) -> {
|
|
sc.setVar("action", "right");
|
|
sc.setVar("action", "right");
|
|
|
|
+ sc.setVar("hand", e.getHand().name());
|
|
ScriptVars.setBlockVars(sc, e.getWorld(), e.getPos());
|
|
ScriptVars.setBlockVars(sc, e.getWorld(), e.getPos());
|
|
sc.setVar("cancel", e.isCanceled());
|
|
sc.setVar("cancel", e.isCanceled());
|
|
}, (sc) -> {
|
|
}, (sc) -> {
|
|
@@ -524,13 +440,11 @@ public class ScriptEvents {
|
|
});
|
|
});
|
|
}
|
|
}
|
|
|
|
|
|
- @SubscribeEvent
|
|
|
|
|
|
+ @SubscribeEvent(receiveCanceled = true)
|
|
public void onLeftClickBlock(PlayerInteractEvent.LeftClickBlock e) {
|
|
public void onLeftClickBlock(PlayerInteractEvent.LeftClickBlock e) {
|
|
- if(e.getHand() == Hand.OFF_HAND) {
|
|
|
|
- return;
|
|
|
|
- }
|
|
|
|
handleEvent(e.getPlayer(), "block_click", (sc) -> {
|
|
handleEvent(e.getPlayer(), "block_click", (sc) -> {
|
|
sc.setVar("action", "left");
|
|
sc.setVar("action", "left");
|
|
|
|
+ sc.setVar("hand", e.getHand().name());
|
|
ScriptVars.setBlockVars(sc, e.getWorld(), e.getPos());
|
|
ScriptVars.setBlockVars(sc, e.getWorld(), e.getPos());
|
|
sc.setVar("cancel", e.isCanceled());
|
|
sc.setVar("cancel", e.isCanceled());
|
|
}, (sc) -> {
|
|
}, (sc) -> {
|
|
@@ -540,14 +454,13 @@ public class ScriptEvents {
|
|
|
|
|
|
@SubscribeEvent(receiveCanceled = true)
|
|
@SubscribeEvent(receiveCanceled = true)
|
|
public void onEntityClick(PlayerInteractEvent.EntityInteract e) {
|
|
public void onEntityClick(PlayerInteractEvent.EntityInteract e) {
|
|
- if(e.getHand() != Hand.OFF_HAND) {
|
|
|
|
- handleEvent(e.getPlayer(), "entity_click", (sc) -> {
|
|
|
|
- ScriptVars.setEntityVars(sc, e.getTarget());
|
|
|
|
- sc.setVar("cancel", e.isCanceled());
|
|
|
|
- }, (sc) -> {
|
|
|
|
- simpleCancel(sc, e, "entity_click");
|
|
|
|
- });
|
|
|
|
- }
|
|
|
|
|
|
+ handleEvent(e.getPlayer(), "entity_click", (sc) -> {
|
|
|
|
+ sc.setVar("hand", e.getHand().name());
|
|
|
|
+ ScriptVars.setEntityVars(sc, e.getTarget());
|
|
|
|
+ sc.setVar("cancel", e.isCanceled());
|
|
|
|
+ }, (sc) -> {
|
|
|
|
+ simpleCancel(sc, e, "entity_click");
|
|
|
|
+ });
|
|
}
|
|
}
|
|
|
|
|
|
public void onEmptyLeftClick(PlayerEntity p) {
|
|
public void onEmptyLeftClick(PlayerEntity p) {
|
|
@@ -555,10 +468,10 @@ public class ScriptEvents {
|
|
});
|
|
});
|
|
}
|
|
}
|
|
|
|
|
|
- @SubscribeEvent
|
|
|
|
|
|
+ @SubscribeEvent(receiveCanceled = true)
|
|
public void onItemClick(PlayerInteractEvent.RightClickItem e) {
|
|
public void onItemClick(PlayerInteractEvent.RightClickItem e) {
|
|
handleEvent(e.getPlayer(), "item_air_click", (sc) -> {
|
|
handleEvent(e.getPlayer(), "item_air_click", (sc) -> {
|
|
- ScriptVars.setItemVars(sc, e.getItemStack());
|
|
|
|
|
|
+ setItem(sc, e.getItemStack());
|
|
sc.setVar("hand", e.getHand().toString());
|
|
sc.setVar("hand", e.getHand().toString());
|
|
sc.setVar("cancel", e.isCanceled());
|
|
sc.setVar("cancel", e.isCanceled());
|
|
}, (sc) -> {
|
|
}, (sc) -> {
|
|
@@ -566,88 +479,78 @@ public class ScriptEvents {
|
|
});
|
|
});
|
|
}
|
|
}
|
|
|
|
|
|
- @SubscribeEvent
|
|
|
|
|
|
+ @SubscribeEvent(receiveCanceled = true)
|
|
public void onItemUseStart(LivingEntityUseItemEvent.Start e) {
|
|
public void onItemUseStart(LivingEntityUseItemEvent.Start e) {
|
|
- if(!(e.getEntityLiving() instanceof PlayerEntity)) {
|
|
|
|
- return;
|
|
|
|
- }
|
|
|
|
- handleEvent((PlayerEntity) e.getEntityLiving(), "item_use_start", (sc) -> {
|
|
|
|
|
|
+ handleEvent(e, "item_use_start", (sc) -> {
|
|
|
|
+ setLivingEntity(sc, e.getEntityLiving());
|
|
sc.setVar("duration", (double) e.getDuration());
|
|
sc.setVar("duration", (double) e.getDuration());
|
|
- sc.setVar("cancel", e.isCanceled());
|
|
|
|
|
|
+ setItem(sc, e.getItem());
|
|
}, (sc) -> {
|
|
}, (sc) -> {
|
|
- try {
|
|
|
|
- ifVarNotNull(sc, "duration", v -> e.setDuration(v.getInt(sc)));
|
|
|
|
- ifVarNotNull(sc, "cancel", v -> e.setCanceled(v.getBoolean(sc)));
|
|
|
|
- } catch(Exception ex) {
|
|
|
|
- scripts.getLogger().print("invalid var in 'item_use_start' event", ex, null, sc.getName(), sc, sc.getActiveSourceLine());
|
|
|
|
- }
|
|
|
|
|
|
+ handleVar(sc, "item_use_start", "duration", v -> e.setDuration(v.getInt(sc)));
|
|
});
|
|
});
|
|
}
|
|
}
|
|
|
|
|
|
- @SubscribeEvent
|
|
|
|
|
|
+ @SubscribeEvent(receiveCanceled = true)
|
|
public void onConsuming(LivingEntityUseItemEvent.Finish e) {
|
|
public void onConsuming(LivingEntityUseItemEvent.Finish e) {
|
|
- if(!(e.getEntityLiving() instanceof PlayerEntity)) {
|
|
|
|
- return;
|
|
|
|
- }
|
|
|
|
- handleEvent((PlayerEntity) e.getEntityLiving(), "item_use_finish", (sc) -> {
|
|
|
|
- sc.setVar("result_stack", e.getResultStack());
|
|
|
|
|
|
+ handleEvent(e, "item_use_finish", (sc) -> {
|
|
|
|
+ setLivingEntity(sc, e.getEntityLiving());
|
|
|
|
+ setItem(sc, e.getItem());
|
|
|
|
+ }, (sc) -> {
|
|
|
|
+ handleVar(sc, "item_use_finish", "item", v -> e.setResultStack((ItemStack) v.get(sc)));
|
|
});
|
|
});
|
|
}
|
|
}
|
|
|
|
|
|
- @SubscribeEvent
|
|
|
|
|
|
+ @SubscribeEvent(receiveCanceled = true)
|
|
public void onFishing(ItemFishedEvent e) {
|
|
public void onFishing(ItemFishedEvent e) {
|
|
handleEvent(e.getPlayer(), "fishing", (sc) -> {
|
|
handleEvent(e.getPlayer(), "fishing", (sc) -> {
|
|
sc.setVar("drops", e.getDrops());
|
|
sc.setVar("drops", e.getDrops());
|
|
|
|
+ sc.setVar("hook", e.getHookEntity());
|
|
|
|
+ sc.setVar("rod_damage", (double) e.getRodDamage());
|
|
sc.setVar("cancel", e.isCanceled());
|
|
sc.setVar("cancel", e.isCanceled());
|
|
}, (sc) -> {
|
|
}, (sc) -> {
|
|
simpleCancel(sc, e, "fishing");
|
|
simpleCancel(sc, e, "fishing");
|
|
|
|
+ handleVar(sc, "fishing", "rod_damage", v -> e.damageRodBy(v.getInt(sc)));
|
|
});
|
|
});
|
|
}
|
|
}
|
|
|
|
|
|
- @SubscribeEvent
|
|
|
|
|
|
+ @SubscribeEvent(receiveCanceled = true)
|
|
public void onCrafting(PlayerEvent.ItemCraftedEvent e) {
|
|
public void onCrafting(PlayerEvent.ItemCraftedEvent e) {
|
|
handleEvent(e.getPlayer(), "craft", (sc) -> {
|
|
handleEvent(e.getPlayer(), "craft", (sc) -> {
|
|
- ScriptVars.setItemVars(sc, e.getCrafting());
|
|
|
|
|
|
+ setItem(sc, e.getCrafting());
|
|
});
|
|
});
|
|
}
|
|
}
|
|
|
|
|
|
- @SubscribeEvent
|
|
|
|
|
|
+ @SubscribeEvent(receiveCanceled = true)
|
|
public void onItemDrop(ItemTossEvent e) {
|
|
public void onItemDrop(ItemTossEvent e) {
|
|
handleEvent(e.getPlayer(), "player_toss", (sc) -> {
|
|
handleEvent(e.getPlayer(), "player_toss", (sc) -> {
|
|
- ScriptVars.setItemVars(sc, e.getEntityItem().getItem());
|
|
|
|
|
|
+ setItem(sc, e.getEntityItem().getItem());
|
|
sc.setVar("cancel", e.isCanceled());
|
|
sc.setVar("cancel", e.isCanceled());
|
|
}, (sc) -> {
|
|
}, (sc) -> {
|
|
simpleCancel(sc, e, "player_toss");
|
|
simpleCancel(sc, e, "player_toss");
|
|
});
|
|
});
|
|
}
|
|
}
|
|
|
|
|
|
- @SubscribeEvent
|
|
|
|
|
|
+ @SubscribeEvent(receiveCanceled = true)
|
|
public void onItemPickup(EntityItemPickupEvent e) {
|
|
public void onItemPickup(EntityItemPickupEvent e) {
|
|
handleEvent(e.getPlayer(), "player_pickup", (sc) -> {
|
|
handleEvent(e.getPlayer(), "player_pickup", (sc) -> {
|
|
ScriptVars.setEntityVars(sc, e.getItem());
|
|
ScriptVars.setEntityVars(sc, e.getItem());
|
|
- ScriptVars.setItemVars(sc, e.getItem().getItem());
|
|
|
|
|
|
+ setItem(sc, e.getItem().getItem());
|
|
sc.setVar("cancel", e.isCanceled());
|
|
sc.setVar("cancel", e.isCanceled());
|
|
}, (sc) -> {
|
|
}, (sc) -> {
|
|
simpleCancel(sc, e, "player_pickup");
|
|
simpleCancel(sc, e, "player_pickup");
|
|
});
|
|
});
|
|
}
|
|
}
|
|
|
|
|
|
- @SubscribeEvent
|
|
|
|
- public void onVehicleEnter(EntityMountEvent e) {
|
|
|
|
- if(!(e.getEntityMounting() instanceof PlayerEntity)) {
|
|
|
|
- return;
|
|
|
|
- }
|
|
|
|
- PlayerEntity p = (PlayerEntity) e.getEntityMounting();
|
|
|
|
- handleEvent(p, "entity_mount", (sc) -> {
|
|
|
|
|
|
+ @SubscribeEvent(receiveCanceled = true)
|
|
|
|
+ public void onEntityMount(EntityMountEvent e) {
|
|
|
|
+ handleEvent(e, "entity_mount", (sc) -> {
|
|
sc.setVar("mounting", e.isMounting());
|
|
sc.setVar("mounting", e.isMounting());
|
|
ScriptVars.setEntityVars(sc, e.getEntityBeingMounted());
|
|
ScriptVars.setEntityVars(sc, e.getEntityBeingMounted());
|
|
- sc.setVar("cancel", e.isCanceled());
|
|
|
|
- }, (sc) -> {
|
|
|
|
- simpleCancel(sc, e, "entity_mount");
|
|
|
|
- });
|
|
|
|
|
|
+ sc.setVar("rider", e.getEntityMounting());
|
|
|
|
+ }, null);
|
|
}
|
|
}
|
|
|
|
|
|
- @SubscribeEvent
|
|
|
|
|
|
+ @SubscribeEvent(receiveCanceled = true)
|
|
public void onPlayerUsePortal(PlayerEvent.PlayerChangedDimensionEvent e) {
|
|
public void onPlayerUsePortal(PlayerEvent.PlayerChangedDimensionEvent e) {
|
|
handleEvent(e.getPlayer(), "portal", (sc) -> {
|
|
handleEvent(e.getPlayer(), "portal", (sc) -> {
|
|
sc.setVar("from", e.getFrom().getRegistryName().getPath());
|
|
sc.setVar("from", e.getFrom().getRegistryName().getPath());
|
|
@@ -660,11 +563,7 @@ public class ScriptEvents {
|
|
sc.setVar("command", e.getName());
|
|
sc.setVar("command", e.getName());
|
|
sc.setVar("cancel", e.isCanceled());
|
|
sc.setVar("cancel", e.isCanceled());
|
|
}, (sc) -> {
|
|
}, (sc) -> {
|
|
- try {
|
|
|
|
- ifVarNotNull(sc, "cancel", v -> e.setCanceled(v.getBoolean(sc)));
|
|
|
|
- } catch(Exception ex) {
|
|
|
|
- scripts.getLogger().print("invalid var in 'command' event", ex, null, sc.getName(), sc, sc.getActiveSourceLine());
|
|
|
|
- }
|
|
|
|
|
|
+ handleVar(sc, "command", "cancel", v -> e.setCanceled(v.getBoolean(sc)));
|
|
});
|
|
});
|
|
}
|
|
}
|
|
|
|
|
|
@@ -685,28 +584,18 @@ public class ScriptEvents {
|
|
});
|
|
});
|
|
}
|
|
}
|
|
|
|
|
|
- @SubscribeEvent
|
|
|
|
|
|
+ @SubscribeEvent(receiveCanceled = true)
|
|
public void onChatEvent(ServerChatEvent e) {
|
|
public void onChatEvent(ServerChatEvent e) {
|
|
handleEvent(e.getPlayer(), "chat", (sc) -> {
|
|
handleEvent(e.getPlayer(), "chat", (sc) -> {
|
|
- String text = e.getMessage();
|
|
|
|
- if(perms.hasPermission(e.getPlayer(), "color")) {
|
|
|
|
- text = text.replace('&', '§');
|
|
|
|
- } else {
|
|
|
|
- text = text.replaceAll("&.", "");
|
|
|
|
- }
|
|
|
|
- sc.setVar("message", text);
|
|
|
|
|
|
+ sc.setVar("message", e.getMessage());
|
|
sc.setVar("cancel", e.isCanceled());
|
|
sc.setVar("cancel", e.isCanceled());
|
|
}, (sc) -> {
|
|
}, (sc) -> {
|
|
- try {
|
|
|
|
- ifVarNotNull(sc, "message", v -> e.setComponent(new StringTextComponent(v.getString(sc))));
|
|
|
|
- ifVarNotNull(sc, "cancel", v -> e.setCanceled(v.getBoolean(sc)));
|
|
|
|
- } catch(Exception ex) {
|
|
|
|
- scripts.getLogger().print("invalid var in 'chat' event", ex, null, sc.getName(), sc, sc.getActiveSourceLine());
|
|
|
|
- }
|
|
|
|
|
|
+ handleVar(sc, "chat", "message", v -> e.setComponent(new StringTextComponent(v.getString(sc))));
|
|
|
|
+ handleVar(sc, "chat", "cancel", v -> e.setCanceled(v.getBoolean(sc)));
|
|
});
|
|
});
|
|
}
|
|
}
|
|
|
|
|
|
- @SubscribeEvent(priority = EventPriority.HIGHEST)
|
|
|
|
|
|
+ @SubscribeEvent(receiveCanceled = true, priority = EventPriority.HIGHEST)
|
|
public void onExplosion(ExplosionEvent.Start e) {
|
|
public void onExplosion(ExplosionEvent.Start e) {
|
|
e.setCanceled(true);
|
|
e.setCanceled(true);
|
|
handleEvent(e, "explosion", sc -> {
|
|
handleEvent(e, "explosion", sc -> {
|
|
@@ -747,13 +636,43 @@ public class ScriptEvents {
|
|
});
|
|
});
|
|
}
|
|
}
|
|
|
|
|
|
- @SubscribeEvent(priority = EventPriority.HIGHEST)
|
|
|
|
- public void onEntityHit(AttackEntityEvent e) {
|
|
|
|
- handleEvent(e.getPlayer(), "player_attack_entity", (sc) -> {
|
|
|
|
- ScriptVars.setEntityVars(sc, e.getTarget());
|
|
|
|
- sc.setVar("cancel", e.isCanceled());
|
|
|
|
|
|
+ @SubscribeEvent(receiveCanceled = true)
|
|
|
|
+ public void onEntityJoinWorld(EntityJoinWorldEvent e) {
|
|
|
|
+ handleEvent(e, "entity_join", (sc) -> {
|
|
|
|
+ ScriptVars.setEntityVars(sc, e.getEntity());
|
|
|
|
+ }, null);
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ @SubscribeEvent(receiveCanceled = true)
|
|
|
|
+ public void onAnimalTame(AnimalTameEvent e) {
|
|
|
|
+ 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);
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ public void onSneak(PlayerEntity p, boolean sneak) {
|
|
|
|
+ handleEvent(p, "player_sneak", (sc) -> {
|
|
|
|
+ sc.setVar("sneak", sneak);
|
|
|
|
+ }, null);
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ @SubscribeEvent(receiveCanceled = true)
|
|
|
|
+ public void onSneak(EntityMobGriefingEvent e) {
|
|
|
|
+ handleEvent(e, "mob_griefing", (sc) -> {
|
|
|
|
+ ScriptVars.setEntityVars(sc, e.getEntity());
|
|
|
|
+ sc.setVar("cancel", !e.getEntity().world.getGameRules().getBoolean(GameRules.MOB_GRIEFING));
|
|
}, (sc) -> {
|
|
}, (sc) -> {
|
|
- simpleCancel(sc, e, "player_attack_entity");
|
|
|
|
|
|
+ handleVar(sc, "mob_griefing", "cancel", (v) -> {
|
|
|
|
+ e.setResult(v.getBoolean(sc) ? Result.DENY : Result.ALLOW);
|
|
|
|
+ });
|
|
});
|
|
});
|
|
}
|
|
}
|
|
}
|
|
}
|