More annotation event migration

This commit is contained in:
Max
2021-03-18 15:49:03 +01:00
parent c8dd9061db
commit e1cff1567b
3 changed files with 44 additions and 25 deletions

View File

@@ -27,6 +27,7 @@ import net.minecraftforge.api.distmarker.Dist;
import net.minecraftforge.api.distmarker.OnlyIn;
import net.minecraftforge.client.event.ClientPlayerNetworkEvent;
import net.minecraftforge.common.MinecraftForge;
import net.minecraftforge.eventbus.api.SubscribeEvent;
import net.minecraftforge.fml.network.NetworkEvent;
import java.util.Set;
@@ -38,7 +39,7 @@ import static me.shedaniel.architectury.networking.forge.NetworkManagerImpl.SYNC
public class ClientNetworkingManager {
public static void initClient() {
NetworkManagerImpl.CHANNEL.addListener(NetworkManagerImpl.createPacketHandler(NetworkEvent.ServerCustomPayloadEvent.class, NetworkManagerImpl.S2C));
MinecraftForge.EVENT_BUS.<ClientPlayerNetworkEvent.LoggedOutEvent>addListener(event -> NetworkManagerImpl.serverReceivables.clear());
MinecraftForge.EVENT_BUS.register(ClientNetworkingManager.class);
NetworkManagerImpl.registerS2CReceiver(SYNC_IDS, (buffer, context) -> {
Set<ResourceLocation> receivables = NetworkManagerImpl.serverReceivables;
@@ -54,4 +55,9 @@ public class ClientNetworkingManager {
public static Player getClientPlayer() {
return Minecraft.getInstance().player;
}
}
@SubscribeEvent
public static void loggedOut(ClientPlayerNetworkEvent.LoggedOutEvent event) {
NetworkManagerImpl.serverReceivables.clear();
}
}

View File

@@ -22,6 +22,7 @@ package me.shedaniel.architectury.networking.forge;
import com.google.common.collect.*;
import io.netty.buffer.Unpooled;
import me.shedaniel.architectury.forge.ArchitecturyForge;
import me.shedaniel.architectury.networking.NetworkManager;
import me.shedaniel.architectury.networking.NetworkManager.NetworkReceiver;
import me.shedaniel.architectury.utils.Env;
@@ -34,8 +35,10 @@ import net.minecraftforge.api.distmarker.Dist;
import net.minecraftforge.api.distmarker.OnlyIn;
import net.minecraftforge.common.MinecraftForge;
import net.minecraftforge.event.entity.player.PlayerEvent;
import net.minecraftforge.eventbus.api.SubscribeEvent;
import net.minecraftforge.fml.DistExecutor;
import net.minecraftforge.fml.LogicalSide;
import net.minecraftforge.fml.common.Mod;
import net.minecraftforge.fml.network.NetworkDirection;
import net.minecraftforge.fml.network.NetworkEvent;
import net.minecraftforge.fml.network.NetworkRegistry;
@@ -49,6 +52,7 @@ import java.util.Map;
import java.util.Set;
import java.util.function.Consumer;
@Mod.EventBusSubscriber(modid = ArchitecturyForge.MOD_ID)
public class NetworkManagerImpl {
public static void registerReceiver(NetworkManager.Side side, ResourceLocation id, NetworkReceiver receiver) {
if (side == NetworkManager.Side.C2S) {
@@ -79,9 +83,6 @@ public class NetworkManagerImpl {
DistExecutor.unsafeRunWhenOn(Dist.CLIENT, () -> ClientNetworkingManager::initClient);
MinecraftForge.EVENT_BUS.<PlayerEvent.PlayerLoggedInEvent>addListener(event -> NetworkManager.sendToPlayer((ServerPlayer) event.getPlayer(), SYNC_IDS, sendSyncPacket(C2S)));
MinecraftForge.EVENT_BUS.<PlayerEvent.PlayerLoggedOutEvent>addListener(event -> clientReceivables.removeAll(event.getPlayer()));
registerC2SReceiver(SYNC_IDS, (buffer, context) -> {
Set<ResourceLocation> receivables = (Set<ResourceLocation>) clientReceivables.get(context.getPlayer());
int size = buffer.readInt();
@@ -157,4 +158,14 @@ public class NetworkManagerImpl {
}
return packetBuffer;
}
@SubscribeEvent
public static void loggedIn(PlayerEvent.PlayerLoggedInEvent event) {
NetworkManager.sendToPlayer((ServerPlayer) event.getPlayer(), SYNC_IDS, sendSyncPacket(C2S));
}
@SubscribeEvent
public static void loggedOut(PlayerEvent.PlayerLoggedOutEvent event) {
clientReceivables.removeAll(event.getPlayer());
}
}

View File

@@ -20,6 +20,7 @@
package me.shedaniel.architectury.registry.forge;
import com.google.common.collect.Lists;
import me.shedaniel.architectury.forge.ArchitecturyForge;
import me.shedaniel.architectury.hooks.biome.*;
import me.shedaniel.architectury.mixin.forge.BiomeGenerationSettingsBuilderAccessor;
import me.shedaniel.architectury.mixin.forge.MobSpawnSettingsBuilderAccessor;
@@ -34,10 +35,11 @@ import net.minecraft.world.level.levelgen.carver.ConfiguredWorldCarver;
import net.minecraft.world.level.levelgen.feature.ConfiguredFeature;
import net.minecraft.world.level.levelgen.feature.ConfiguredStructureFeature;
import net.minecraft.world.level.levelgen.surfacebuilders.ConfiguredSurfaceBuilder;
import net.minecraftforge.common.MinecraftForge;
import net.minecraftforge.common.world.BiomeGenerationSettingsBuilder;
import net.minecraftforge.common.world.MobSpawnInfoBuilder;
import net.minecraftforge.event.world.BiomeLoadingEvent;
import net.minecraftforge.eventbus.api.SubscribeEvent;
import net.minecraftforge.fml.common.Mod;
import org.apache.commons.lang3.tuple.Pair;
import org.jetbrains.annotations.NotNull;
@@ -49,6 +51,7 @@ import java.util.function.BiPredicate;
import java.util.function.Predicate;
import java.util.function.Supplier;
@Mod.EventBusSubscriber(modid = ArchitecturyForge.MOD_ID)
public class BiomeModificationsImpl {
private static final List<Pair<Predicate<BiomeContext>, BiConsumer<BiomeContext, BiomeProperties.Mutable>>> MODIFICATIONS = Lists.newArrayList();
@@ -68,25 +71,6 @@ public class BiomeModificationsImpl {
MODIFICATIONS.add(Pair.of(predicate, modifier));
}
static {
MinecraftForge.EVENT_BUS.<BiomeLoadingEvent>addListener(event -> {
BiomeContext biomeContext = wrapSelectionContext(event);
BiomeProperties.Mutable mutableBiome = new MutableBiomeWrapped(event);
for (Pair<Predicate<BiomeContext>, BiConsumer<BiomeContext, BiomeProperties.Mutable>> pair : MODIFICATIONS) {
if (pair.getLeft().test(biomeContext)) {
pair.getRight().accept(biomeContext, mutableBiome);
}
}
MutableClimatePropertiesWrapped climateProperties = (MutableClimatePropertiesWrapped) mutableBiome.getClimateProperties();
if (climateProperties.dirty) {
event.setClimate(new Biome.ClimateSettings(climateProperties.precipitation,
climateProperties.temperature,
climateProperties.temperatureModifier,
climateProperties.downfall));
}
});
}
private static BiomeContext wrapSelectionContext(BiomeLoadingEvent event) {
return new BiomeContext() {
BiomeProperties properties = new BiomeWrapped(event);
@@ -446,4 +430,22 @@ public class BiomeModificationsImpl {
return this;
}
}
@SubscribeEvent
public static void onBiomeLoading(BiomeLoadingEvent event) {
BiomeContext biomeContext = wrapSelectionContext(event);
BiomeProperties.Mutable mutableBiome = new MutableBiomeWrapped(event);
for (Pair<Predicate<BiomeContext>, BiConsumer<BiomeContext, BiomeProperties.Mutable>> pair : MODIFICATIONS) {
if (pair.getLeft().test(biomeContext)) {
pair.getRight().accept(biomeContext, mutableBiome);
}
}
MutableClimatePropertiesWrapped climateProperties = (MutableClimatePropertiesWrapped) mutableBiome.getClimateProperties();
if (climateProperties.dirty) {
event.setClimate(new Biome.ClimateSettings(climateProperties.precipitation,
climateProperties.temperature,
climateProperties.temperatureModifier,
climateProperties.downfall));
}
}
}