package me.km.snuviscript; import java.util.ArrayList; import java.util.Arrays; import java.util.List; import java.util.Optional; 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.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.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 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.inventory.container.ClickType; import net.minecraft.item.ItemStack; import net.minecraft.item.crafting.ICraftingRecipe; import net.minecraft.item.crafting.IRecipeType; import net.minecraft.network.play.server.SSetSlotPacket; 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.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.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.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) { sc.setVar("living_entity", ent); } private static void setItem(Script sc, ItemStack stack) { sc.setVar("item", stack); } private static void setPlayer(Script sc, PlayerEntity p) { sc.setVar("player", p); } private final Scripts scripts; private final MinecraftServer server; public ScriptEvents(Scripts scripts, MinecraftServer server) { this.scripts = scripts; this.server = server; } private void handleEvent(Event e, String event, Consumer