package com.laytonsmith.abstraction.bukkit.events;
import com.laytonsmith.abstraction.MCLocation;
import com.laytonsmith.abstraction.MCPlayer;
import com.laytonsmith.abstraction.MCWorld;
import com.laytonsmith.abstraction.blocks.MCBlockState;
import com.laytonsmith.abstraction.bukkit.BukkitMCLocation;
import com.laytonsmith.abstraction.bukkit.BukkitMCWorld;
import com.laytonsmith.abstraction.bukkit.blocks.BukkitMCBlockState;
import com.laytonsmith.abstraction.bukkit.entities.BukkitMCPlayer;
import com.laytonsmith.abstraction.enums.MCTreeType;
import com.laytonsmith.abstraction.enums.bukkit.BukkitMCTreeType;
import com.laytonsmith.abstraction.events.MCStructureGrowEvent;
import com.laytonsmith.abstraction.events.MCWorldEvent;
import com.laytonsmith.abstraction.events.MCWorldLoadEvent;
import com.laytonsmith.abstraction.events.MCWorldSaveEvent;
import com.laytonsmith.abstraction.events.MCWorldUnloadEvent;
import org.bukkit.block.BlockState;
import org.bukkit.entity.Player;
import org.bukkit.event.world.StructureGrowEvent;
import org.bukkit.event.world.WorldEvent;
import org.bukkit.event.world.WorldLoadEvent;
import org.bukkit.event.world.WorldSaveEvent;
import org.bukkit.event.world.WorldUnloadEvent;
import java.util.ArrayList;
import java.util.List;
/**
*
* @author KingFisher
*/
public final class BukkitWorldEvents {
private BukkitWorldEvents() {
}
public static abstract class BukkitMCWorldEvent implements MCWorldEvent {
private final WorldEvent _event;
public BukkitMCWorldEvent(WorldEvent event) {
_event = event;
}
@Override
public Object _GetObject() {
return _event;
}
@Override
public MCWorld getWorld() {
return new BukkitMCWorld(_event.getWorld());
}
}
public static class BukkitMCStructureGrowEvent extends BukkitMCWorldEvent implements MCStructureGrowEvent {
private final StructureGrowEvent _event;
public BukkitMCStructureGrowEvent(StructureGrowEvent event) {
super(event);
_event = event;
}
@Override
public List<MCBlockState> getBlocks() {
List<BlockState> blocks = _event.getBlocks();
ArrayList<MCBlockState> r = new ArrayList<>(blocks.size());
for (BlockState block : blocks) {
r.add(new BukkitMCBlockState(block));
}
return r;
}
@Override
public MCLocation getLocation() {
return new BukkitMCLocation(_event.getLocation());
}
@Override
public MCPlayer getPlayer() {
Player player = _event.getPlayer();
return player == null ? null : new BukkitMCPlayer(_event.getPlayer());
}
@Override
public MCTreeType getSpecies() {
return BukkitMCTreeType.getConvertor().getAbstractedEnum(_event.getSpecies());
}
@Override
public boolean isFromBonemeal() {
return _event.isFromBonemeal();
}
}
public static class BukkitMCWorldSaveEvent extends BukkitMCWorldEvent implements MCWorldSaveEvent {
private final WorldSaveEvent _event;
public BukkitMCWorldSaveEvent(WorldSaveEvent event) {
super(event);
_event = event;
}
}
public static class BukkitMCWorldUnloadEvent extends BukkitMCWorldEvent implements MCWorldUnloadEvent {
private final WorldUnloadEvent _event;
public BukkitMCWorldUnloadEvent(WorldUnloadEvent event) {
super(event);
_event = event;
}
}
public static class BukkitMCWorldLoadEvent extends BukkitMCWorldEvent implements MCWorldLoadEvent {
private final WorldLoadEvent _event;
public BukkitMCWorldLoadEvent(WorldLoadEvent event) {
super(event);
_event = event;
}
}
}