mirror of
https://github.com/architectury/architectury-api.git
synced 2026-04-02 05:27:42 -05:00
Update to NeoForge 20.2.77-beta, Forge 49.0.14 and Fabric Loader & API 0.15.3 & 0.92.0 (#468)
This commit is contained in:
@@ -0,0 +1,38 @@
|
||||
/*
|
||||
* This file is part of architectury.
|
||||
* Copyright (C) 2020, 2021, 2022 architectury
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU Lesser General Public
|
||||
* License as published by the Free Software Foundation; either
|
||||
* version 3 of the License, or (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
* Lesser General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Lesser General Public License
|
||||
* along with this program; if not, write to the Free Software Foundation,
|
||||
* Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
||||
*/
|
||||
|
||||
package dev.architectury.mixin.forge.minecraftforge;
|
||||
|
||||
import dev.architectury.extensions.network.EntitySpawnExtension;
|
||||
import net.minecraft.network.FriendlyByteBuf;
|
||||
import net.minecraftforge.entity.IEntityAdditionalSpawnData;
|
||||
import org.spongepowered.asm.mixin.Mixin;
|
||||
|
||||
@Mixin(EntitySpawnExtension.class)
|
||||
public interface MixinEntitySpawnExtension extends IEntityAdditionalSpawnData {
|
||||
@Override
|
||||
default void writeSpawnData(FriendlyByteBuf buf) {
|
||||
((EntitySpawnExtension) this).saveAdditionalSpawnData(buf);
|
||||
}
|
||||
|
||||
@Override
|
||||
default void readSpawnData(FriendlyByteBuf buf) {
|
||||
((EntitySpawnExtension) this).loadAdditionalSpawnData(buf);
|
||||
}
|
||||
}
|
||||
@@ -37,17 +37,18 @@ import net.minecraft.world.entity.Entity;
|
||||
import net.minecraft.world.entity.player.Player;
|
||||
import net.minecraftforge.api.distmarker.Dist;
|
||||
import net.minecraftforge.api.distmarker.OnlyIn;
|
||||
import net.minecraftforge.common.ForgeHooks;
|
||||
import net.minecraftforge.event.entity.player.PlayerEvent;
|
||||
import net.minecraftforge.event.network.CustomPayloadEvent;
|
||||
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.network.*;
|
||||
import net.minecraftforge.network.ChannelBuilder;
|
||||
import net.minecraftforge.network.EventNetworkChannel;
|
||||
import net.minecraftforge.network.NetworkDirection;
|
||||
import org.slf4j.Logger;
|
||||
|
||||
import java.lang.reflect.Constructor;
|
||||
import java.lang.reflect.InvocationTargetException;
|
||||
import java.util.*;
|
||||
import java.util.function.Consumer;
|
||||
|
||||
@@ -179,19 +180,7 @@ public class NetworkManagerImpl {
|
||||
}
|
||||
|
||||
public static Packet<ClientGamePacketListener> createAddEntityPacket(Entity entity) {
|
||||
try {
|
||||
// I love forge
|
||||
Constructor<?> constructor = Class.forName("net.minecraftforge.network.packets.SpawnEntity").getDeclaredConstructor(Entity.class);
|
||||
constructor.setAccessible(true);
|
||||
Object message = constructor.newInstance(entity);
|
||||
Packet<ClientGamePacketListener>[] packet = new Packet[1];
|
||||
NetworkInitialization.PLAY.send(message, new PacketDistributor.PacketTarget(p -> {
|
||||
packet[0] = (Packet<ClientGamePacketListener>) p;
|
||||
}, NetworkDirection.PLAY_TO_CLIENT));
|
||||
return Objects.requireNonNull(packet[0], "Expected packet to be sent!");
|
||||
} catch (InstantiationException | ClassNotFoundException | NoSuchMethodException | InvocationTargetException | IllegalAccessException e) {
|
||||
throw new RuntimeException(e);
|
||||
}
|
||||
return ForgeHooks.getEntitySpawnPacket(entity);
|
||||
}
|
||||
|
||||
static FriendlyByteBuf sendSyncPacket(Map<ResourceLocation, NetworkReceiver> map) {
|
||||
|
||||
@@ -6,7 +6,8 @@
|
||||
"client": [
|
||||
],
|
||||
"mixins": [
|
||||
"minecraftforge.MixinChunkSerializer"
|
||||
"minecraftforge.MixinChunkSerializer",
|
||||
"minecraftforge.MixinEntitySpawnExtension"
|
||||
],
|
||||
"injectors": {
|
||||
"defaultRequire": 1
|
||||
|
||||
Reference in New Issue
Block a user