package dev.hytalemodding.events; import com.hypixel.hytale.component.Archetype; import com.hypixel.hytale.component.ArchetypeChunk; import com.hypixel.hytale.component.CommandBuffer; import com.hypixel.hytale.component.Store; import com.hypixel.hytale.component.query.Query; import com.hypixel.hytale.component.system.EntityEventSystem; import com.hypixel.hytale.server.core.event.events.ecs.BreakBlockEvent; import com.hypixel.hytale.server.core.inventory.ItemStack; import com.hypixel.hytale.server.core.universe.world.World; import com.hypixel.hytale.server.core.universe.world.storage.EntityStore; import dev.hytalemodding.RitualSpawner; import org.checkerframework.checker.nullness.compatqual.NonNullDecl; import org.checkerframework.checker.nullness.compatqual.NullableDecl; import org.joml.Vector3i; public class RitualBreakBlockEvent extends EntityEventSystem { private final RitualSpawner ritualSpawner; public RitualBreakBlockEvent(RitualSpawner ritualSpawner) { super(BreakBlockEvent.class); this.ritualSpawner = ritualSpawner; } @Override public void handle(int index, @NonNullDecl ArchetypeChunk archetypeChunk, @NonNullDecl Store store, @NonNullDecl CommandBuffer commandBuffer, @NonNullDecl BreakBlockEvent breakBlockEvent) { ItemStack itemHolding = breakBlockEvent.getItemInHand(); String itemId = "Empty"; if(itemHolding != null) { itemId = itemHolding.getItemId(); } Vector3i blockPosition = breakBlockEvent.getTargetBlock(); World world = store.getExternalData().getWorld(); ritualSpawner.blockChangeEvent(itemId, blockPosition, world); } @NullableDecl @Override public Query getQuery() { return Archetype.empty(); } }