NaturesAura/src/main/java/de/ellpeck/naturesaura/events/CommonEvents.java

80 lines
3.3 KiB
Java
Raw Normal View History

package de.ellpeck.naturesaura.events;
import de.ellpeck.naturesaura.Helper;
import de.ellpeck.naturesaura.NaturesAura;
2018-11-12 22:04:40 +01:00
import de.ellpeck.naturesaura.api.NaturesAuraAPI;
import de.ellpeck.naturesaura.api.aura.chunk.IAuraChunk;
import de.ellpeck.naturesaura.chunk.AuraChunk;
import de.ellpeck.naturesaura.chunk.AuraChunkProvider;
2019-02-17 22:51:05 +01:00
import de.ellpeck.naturesaura.misc.WorldData;
import net.minecraft.util.ResourceLocation;
2019-02-17 22:51:05 +01:00
import net.minecraft.world.World;
import net.minecraft.world.chunk.Chunk;
import net.minecraftforge.event.AttachCapabilitiesEvent;
2020-01-21 21:04:44 +01:00
import net.minecraftforge.event.TickEvent;
import net.minecraftforge.event.world.ChunkWatchEvent;
2019-10-20 22:30:49 +02:00
import net.minecraftforge.eventbus.api.SubscribeEvent;
public class CommonEvents {
@SubscribeEvent
public void onChunkCapsAttach(AttachCapabilitiesEvent<Chunk> event) {
Chunk chunk = event.getObject();
event.addCapability(new ResourceLocation(NaturesAura.MOD_ID, "aura"), new AuraChunkProvider(chunk));
}
2019-02-17 22:51:05 +01:00
@SubscribeEvent
public void onWorldCapsAttach(AttachCapabilitiesEvent<World> event) {
event.addCapability(new ResourceLocation(NaturesAura.MOD_ID, "data"), new WorldData());
2019-02-17 22:51:05 +01:00
}
@SubscribeEvent
public void onWorldTick(TickEvent.WorldTickEvent event) {
if (!event.world.isRemote && event.phase == TickEvent.Phase.END) {
2020-01-21 21:04:44 +01:00
if (event.world.getGameTime() % 20 == 0) {
// TODO update loaded aura chunks
/*Iterator<Chunk> chunks = event.world.getPersistentChunkIterable(((ServerWorld) event.world).getPlayerChunkMap().getChunkIterator());
while (chunks.hasNext()) {
Chunk chunk = chunks.next();
2020-01-21 21:04:44 +01:00
AuraChunk auraChunk = (AuraChunk) chunk.getCapability(NaturesAuraAPI.capAuraChunk, null).orElse(null);
auraChunk.update();
}*/
}
}
}
@SubscribeEvent
public void onPlayerTick(TickEvent.PlayerTickEvent event) {
if (!event.player.world.isRemote && event.phase == TickEvent.Phase.END) {
2020-01-21 21:04:44 +01:00
if (event.player.world.getGameTime() % 200 != 0)
return;
int aura = IAuraChunk.triangulateAuraInArea(event.player.world, event.player.getPosition(), 25);
if (aura <= 0)
Helper.addAdvancement(event.player, new ResourceLocation(NaturesAura.MOD_ID, "negative_imbalance"), "triggered_in_code");
else if (aura >= 1500000)
Helper.addAdvancement(event.player, new ResourceLocation(NaturesAura.MOD_ID, "positive_imbalance"), "triggered_in_code");
}
}
@SubscribeEvent
public void onChunkWatch(ChunkWatchEvent.Watch event) {
2020-01-21 21:04:44 +01:00
Chunk chunk = event.getWorld().getChunk(event.getPos().x, event.getPos().z);
if (!chunk.getWorld().isRemote) {
AuraChunk auraChunk = (AuraChunk) chunk.getCapability(NaturesAuraAPI.capAuraChunk, null).orElse(null);
// TODO packets
/*if (auraChunk != null)
PacketHandler.sendTo(event.getPlayer(), auraChunk.makePacket());*/
}
}
2018-10-22 20:18:54 +02:00
2020-01-21 21:04:44 +01:00
// TODO config
/* @SubscribeEvent
2018-10-22 20:18:54 +02:00
public void onConfigChanged(OnConfigChangedEvent event) {
if (NaturesAura.MOD_ID.equals(event.getModID())) {
ConfigManager.sync(NaturesAura.MOD_ID, Config.Type.INSTANCE);
2018-11-20 19:59:18 +01:00
ModConfig.initOrReload(true);
2018-10-22 20:18:54 +02:00
}
2020-01-21 21:04:44 +01:00
}*/
}