package io.github.aquerr.eaglefactions.listeners;

import io.github.aquerr.eaglefactions.logic.FactionLogic;
import org.spongepowered.api.block.BlockTypes;
import org.spongepowered.api.event.Listener;
import org.spongepowered.api.event.block.ChangeBlockEvent;

public class FireBlockPlaceListener
{
//    @Listener
//    public void onIgnition(ChangeBlockEvent.Pre event)
//    {
//        //TODO: Check if this will work for fire from lightning strike.
//
//        if (event.getCause().containsNamed(NamedCause.IGNITER))
//        {
//            event.getLocations().forEach(x ->
//            {
//                if (FactionLogic.getFactionNameByChunk(event.getTargetWorld().getUniqueId(), x.getChunkPosition()).equals("SafeZone") ||
//                        FactionLogic.getFactionNameByChunk(event.getTargetWorld().getUniqueId(), x.getChunkPosition()).equals("WarZone"))
//                {
//                    event.setCancelled(true);
//                    return;
//                }
//            });
//        }
//
//        if (event.getCause().containsNamed(NamedCause.FIRE_SPREAD))
//        {
//            event.getLocations().forEach(x ->
//            {
//                if (FactionLogic.getFactionNameByChunk(event.getTargetWorld().getUniqueId(), x.getChunkPosition()).equals("SafeZone") ||
//                        FactionLogic.getFactionNameByChunk(event.getTargetWorld().getUniqueId(), x.getChunkPosition()).equals("WarZone"))
//                {
//                    event.setCancelled(true);
//                    return;
//                }
//            });
//        }
//    }

    @Listener
    public void onIgnite(ChangeBlockEvent.Place event)
    {
        event.getTransactions().forEach(x->
        {
            if (x.getFinal().getState().getType() == BlockTypes.FIRE
                    && (FactionLogic.getFactionNameByChunk(x.getFinal().getWorldUniqueId(), x.getFinal().getLocation().get().getChunkPosition()).equals("SafeZone"))
                    || FactionLogic.getFactionNameByChunk(x.getFinal().getWorldUniqueId(), x.getFinal().getLocation().get().getChunkPosition()).equals("WarZone"))
            {
                event.setCancelled(true);
            }
        });
    }
}
@@ -44,16 +44,69 @@
 eners;%0A%0A
+import io.github.aquerr.eaglefactions.EagleFactions;%0A
 import i
@@ -202,16 +202,74 @@
 kTypes;%0A
+import org.spongepowered.api.entity.living.player.Player;%0A
 import o
@@ -1786,24 +1786,257 @@
 vent)%0A    %7B%0A
+        if (event.getCause().root() instanceof Player)%0A        %7B%0A            Player player = (Player)event.getCause().root();%0A%0A            if (!EagleFactions.AdminList.contains(player.getUniqueId().toString()))%0A            %7B%0A        
         even
@@ -2067,34 +2067,50 @@
 ach(x-%3E%0A        
-%7B%0A
+        %7B%0A        
             if (
@@ -2162,16 +2162,24 @@
 es.FIRE%0A
+        
         
@@ -2355,16 +2355,24 @@
         
+   
+     
 %7C%7C Facti
@@ -2510,34 +2510,50 @@
 %22))%0A            
-%7B%0A
+        %7B%0A        
                 
@@ -2578,16 +2578,24 @@
 (true);%0A
+        
         
@@ -2608,19 +2608,653 @@
         
-%7D);
+        %7D);%0A            %7D%0A        %7D%0A        else%0A        %7B%0A            event.getTransactions().forEach(x-%3E%0A            %7B%0A                if (x.getFinal().getState().getType() == BlockTypes.FIRE%0A                        && (FactionLogic.getFactionNameByChunk(x.getFinal().getWorldUniqueId(), x.getFinal().getLocation().get().getChunkPosition()).equals(%22SafeZone%22))%0A                        %7C%7C FactionLogic.getFactionNameByChunk(x.getFinal().getWorldUniqueId(), x.getFinal().getLocation().get().getChunkPosition()).equals(%22WarZone%22))%0A                %7B%0A                    event.setCancelled(true);%0A                %7D%0A            %7D);%0A        %7D
 %0A    %7D%0A%7D

Allow fire placing if player has toggled admin mode