|
@@ -12,7 +12,6 @@ import me.km.entities.EntityHuman;
|
|
|
import me.km.entities.EntityItemProjectile;
|
|
|
import me.km.events.CommandEvent;
|
|
|
import me.km.inventory.ModInventory;
|
|
|
-import me.km.permissions.Permissions;
|
|
|
import me.km.utils.ExplosionUtils;
|
|
|
import me.km.utils.Location;
|
|
|
import net.minecraft.command.ICommandSource;
|
|
@@ -24,30 +23,20 @@ import net.minecraft.inventory.container.ClickType;
|
|
|
import net.minecraft.item.ItemStack;
|
|
|
import net.minecraft.server.MinecraftServer;
|
|
|
import net.minecraft.server.management.PlayerList;
|
|
|
-import net.minecraft.util.math.BlockPos;
|
|
|
-import net.minecraft.util.math.BlockRayTraceResult;
|
|
|
-import net.minecraft.util.math.EntityRayTraceResult;
|
|
|
-import net.minecraft.util.math.RayTraceResult;
|
|
|
+import net.minecraft.util.math.*;
|
|
|
import net.minecraft.util.text.ITextComponent;
|
|
|
import net.minecraft.util.text.StringTextComponent;
|
|
|
import net.minecraft.world.GameRules;
|
|
|
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.ProjectileImpactEvent;
|
|
|
+import net.minecraftforge.event.TickEvent;
|
|
|
+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.EntityItemPickupEvent;
|
|
|
-import net.minecraftforge.event.entity.player.FillBucketEvent;
|
|
|
-import net.minecraftforge.event.entity.player.ItemFishedEvent;
|
|
|
-import net.minecraftforge.event.entity.player.PlayerInteractEvent;
|
|
|
+import net.minecraftforge.event.entity.player.*;
|
|
|
import net.minecraftforge.event.world.BlockEvent;
|
|
|
import net.minecraftforge.event.world.ExplosionEvent;
|
|
|
-import net.minecraftforge.eventbus.api.Event;
|
|
|
-import net.minecraftforge.eventbus.api.EventPriority;
|
|
|
-import net.minecraftforge.eventbus.api.SubscribeEvent;
|
|
|
+import net.minecraftforge.eventbus.api.*;
|
|
|
import net.minecraftforge.event.entity.player.PlayerEvent;
|
|
|
import net.minecraftforge.eventbus.api.Event.Result;
|
|
|
|
|
@@ -62,12 +51,10 @@ public class ScriptEvents {
|
|
|
|
|
|
private final Scripts scripts;
|
|
|
private final MinecraftServer server;
|
|
|
- private final Permissions perms;
|
|
|
|
|
|
- public ScriptEvents(Scripts scripts, MinecraftServer server, Permissions perms) {
|
|
|
+ public ScriptEvents(Scripts scripts, MinecraftServer server) {
|
|
|
this.scripts = scripts;
|
|
|
this.server = server;
|
|
|
- this.perms = perms;
|
|
|
}
|
|
|
|
|
|
private void handleEvent(Event e, String event, Consumer<Script> before, Consumer<Script> after) {
|
|
@@ -610,7 +597,7 @@ public class ScriptEvents {
|
|
|
sc.setVar("location", new Location(e.getWorld(), e.getExplosion().getPosition()));
|
|
|
}, null);
|
|
|
}
|
|
|
-
|
|
|
+
|
|
|
@SubscribeEvent
|
|
|
public void onExplosion(ExplosionEvent.Detonate e) {
|
|
|
ExplosionUtils.explosion(e.getExplosion(), e.getWorld());
|
|
@@ -657,11 +644,23 @@ public class ScriptEvents {
|
|
|
|
|
|
@SubscribeEvent(receiveCanceled = true)
|
|
|
public void onEntityJoinWorld(EntityJoinWorldEvent e) {
|
|
|
+ Entity ent = e.getEntity();
|
|
|
+ if(!scripts.getEntityLimits().isAllowedToSpawn(ent.getType())) {
|
|
|
+ e.setCanceled(true);
|
|
|
+ return;
|
|
|
+ }
|
|
|
handleEvent(e, "entity_join", (sc) -> {
|
|
|
- ScriptVars.setEntityVars(sc, e.getEntity());
|
|
|
+ ScriptVars.setEntityVars(sc, ent);
|
|
|
}, null);
|
|
|
}
|
|
|
|
|
|
+ @SubscribeEvent
|
|
|
+ public void onServerTick(TickEvent.ServerTickEvent e) {
|
|
|
+ if(e.phase == TickEvent.Phase.END) {
|
|
|
+ scripts.getEntityLimits().tick(server.getWorlds());
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
@SubscribeEvent(receiveCanceled = true)
|
|
|
public void onAnimalTame(AnimalTameEvent e) {
|
|
|
handleEvent(e, "animal_tame", (sc) -> {
|