mirror of
https://github.com/architectury/architectury-api.git
synced 2026-03-28 03:56:59 -05:00
@@ -128,7 +128,7 @@ unifiedPublishing {
|
||||
curseforge {
|
||||
token = CURSE_API_KEY
|
||||
id = rootProject.curseforge_id
|
||||
gameVersions.addAll "Java 17", "1.20.2-Snapshot"
|
||||
gameVersions.addAll "Java 17", "1.20.2-Snapshot", project.minecraft_version
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -123,10 +123,10 @@ publishing {
|
||||
|
||||
unifiedPublishing {
|
||||
project {
|
||||
displayName = "[Forge $rootProject.supported_version] v$project.version"
|
||||
displayName = "[MinecraftForge $rootProject.supported_version] v$project.version"
|
||||
releaseType = "$rootProject.artifact_type"
|
||||
changelog = releaseChangelog()
|
||||
gameVersions = ["1.20", "1.20.1"]
|
||||
gameVersions = ["1.20.2"]
|
||||
gameLoaders = ["forge"]
|
||||
mainPublication renameJarForPublication
|
||||
|
||||
|
||||
@@ -91,7 +91,7 @@ public class EventHandlerImplClient {
|
||||
|
||||
@SubscribeEvent(priority = EventPriority.HIGH)
|
||||
public static void eventRenderGameOverlayEvent(CustomizeGuiOverlayEvent.DebugText event) {
|
||||
if (Minecraft.getInstance().options.renderDebug) {
|
||||
if (Minecraft.getInstance().gui.getDebugOverlay().showDebugScreen()) {
|
||||
ClientGuiEvent.DEBUG_TEXT_LEFT.invoker().gatherText(event.getLeft());
|
||||
ClientGuiEvent.DEBUG_TEXT_RIGHT.invoker().gatherText(event.getRight());
|
||||
}
|
||||
@@ -217,14 +217,14 @@ public class EventHandlerImplClient {
|
||||
|
||||
@SubscribeEvent(priority = EventPriority.HIGH)
|
||||
public static void eventMouseScrollEvent(ScreenEvent.MouseScrolled.Pre event) {
|
||||
if (ClientScreenInputEvent.MOUSE_SCROLLED_PRE.invoker().mouseScrolled(Minecraft.getInstance(), event.getScreen(), event.getMouseX(), event.getMouseY(), event.getScrollDelta()).isFalse()) {
|
||||
if (ClientScreenInputEvent.MOUSE_SCROLLED_PRE.invoker().mouseScrolled(Minecraft.getInstance(), event.getScreen(), event.getMouseX(), event.getMouseY(), event.getDeltaX(), event.getDeltaY()).isFalse()) {
|
||||
event.setCanceled(true);
|
||||
}
|
||||
}
|
||||
|
||||
@SubscribeEvent(priority = EventPriority.HIGH)
|
||||
public static void eventMouseScrollEvent(ScreenEvent.MouseScrolled.Post event) {
|
||||
ClientScreenInputEvent.MOUSE_SCROLLED_POST.invoker().mouseScrolled(Minecraft.getInstance(), event.getScreen(), event.getMouseX(), event.getMouseY(), event.getScrollDelta());
|
||||
ClientScreenInputEvent.MOUSE_SCROLLED_POST.invoker().mouseScrolled(Minecraft.getInstance(), event.getScreen(), event.getMouseX(), event.getMouseY(), event.getDeltaX(), event.getDeltaY());
|
||||
}
|
||||
|
||||
@SubscribeEvent(priority = EventPriority.HIGH)
|
||||
@@ -301,7 +301,7 @@ public class EventHandlerImplClient {
|
||||
|
||||
@SubscribeEvent(priority = EventPriority.HIGH)
|
||||
public static void eventInputEvent(InputEvent.MouseScrollingEvent event) {
|
||||
if (ClientRawInputEvent.MOUSE_SCROLLED.invoker().mouseScrolled(Minecraft.getInstance(), event.getScrollDelta()).isFalse()) {
|
||||
if (ClientRawInputEvent.MOUSE_SCROLLED.invoker().mouseScrolled(Minecraft.getInstance(), event.getDeltaX(), event.getDeltaY()).isFalse()) {
|
||||
event.setCanceled(true);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -28,7 +28,7 @@ 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.network.NetworkEvent;
|
||||
import net.minecraftforge.network.NetworkDirection;
|
||||
|
||||
import java.util.Collections;
|
||||
import java.util.Set;
|
||||
@@ -36,7 +36,7 @@ import java.util.Set;
|
||||
@OnlyIn(Dist.CLIENT)
|
||||
public class ClientNetworkingManager {
|
||||
public static void initClient() {
|
||||
NetworkManagerImpl.CHANNEL.addListener(NetworkManagerImpl.createPacketHandler(NetworkEvent.ServerCustomPayloadEvent.class, NetworkManagerImpl.S2C_TRANSFORMERS));
|
||||
NetworkManagerImpl.CHANNEL.addListener(NetworkManagerImpl.createPacketHandler(NetworkDirection.PLAY_TO_CLIENT, NetworkManagerImpl.S2C_TRANSFORMERS));
|
||||
MinecraftForge.EVENT_BUS.register(ClientNetworkingManager.class);
|
||||
|
||||
NetworkManagerImpl.registerS2CReceiver(NetworkManagerImpl.SYNC_IDS, Collections.emptyList(), (buffer, context) -> {
|
||||
|
||||
@@ -39,18 +39,16 @@ import net.minecraft.world.entity.player.Player;
|
||||
import net.minecraftforge.api.distmarker.Dist;
|
||||
import net.minecraftforge.api.distmarker.OnlyIn;
|
||||
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.NetworkDirection;
|
||||
import net.minecraftforge.network.NetworkEvent;
|
||||
import net.minecraftforge.network.NetworkHooks;
|
||||
import net.minecraftforge.network.NetworkRegistry;
|
||||
import net.minecraftforge.network.event.EventNetworkChannel;
|
||||
import org.apache.commons.lang3.tuple.Pair;
|
||||
import net.minecraftforge.network.*;
|
||||
import org.slf4j.Logger;
|
||||
|
||||
import java.lang.reflect.Constructor;
|
||||
import java.lang.reflect.InvocationTargetException;
|
||||
import java.util.*;
|
||||
import java.util.function.Consumer;
|
||||
|
||||
@@ -71,7 +69,7 @@ public class NetworkManagerImpl {
|
||||
FriendlyByteBuf packetBuffer = new FriendlyByteBuf(Unpooled.buffer());
|
||||
packetBuffer.writeResourceLocation(id);
|
||||
packetBuffer.writeBytes(buffer);
|
||||
return (side == NetworkManager.Side.C2S ? NetworkDirection.PLAY_TO_SERVER : NetworkDirection.PLAY_TO_CLIENT).buildPacket(Pair.of(packetBuffer, 0), CHANNEL_ID).getThis();
|
||||
return (side == NetworkManager.Side.C2S ? NetworkDirection.PLAY_TO_SERVER : NetworkDirection.PLAY_TO_CLIENT).buildPacket(packetBuffer, CHANNEL_ID).getThis();
|
||||
}
|
||||
|
||||
public static void collectPackets(PacketSink sink, NetworkManager.Side side, ResourceLocation id, FriendlyByteBuf buf) {
|
||||
@@ -88,7 +86,7 @@ public class NetworkManagerImpl {
|
||||
private static final Logger LOGGER = LogUtils.getLogger();
|
||||
private static final ResourceLocation CHANNEL_ID = new ResourceLocation("architectury:network");
|
||||
static final ResourceLocation SYNC_IDS = new ResourceLocation("architectury:sync_ids");
|
||||
static final EventNetworkChannel CHANNEL = NetworkRegistry.newEventChannel(CHANNEL_ID, () -> "1", version -> true, version -> true);
|
||||
static final EventNetworkChannel CHANNEL = ChannelBuilder.named(CHANNEL_ID).acceptedVersions((status, version) -> true).optional().eventNetworkChannel();
|
||||
static final Map<ResourceLocation, NetworkReceiver> S2C = Maps.newHashMap();
|
||||
static final Map<ResourceLocation, NetworkReceiver> C2S = Maps.newHashMap();
|
||||
static final Map<ResourceLocation, PacketTransformer> S2C_TRANSFORMERS = Maps.newHashMap();
|
||||
@@ -97,7 +95,7 @@ public class NetworkManagerImpl {
|
||||
private static final Multimap<Player, ResourceLocation> clientReceivables = Multimaps.newMultimap(Maps.newHashMap(), Sets::newHashSet);
|
||||
|
||||
static {
|
||||
CHANNEL.addListener(createPacketHandler(NetworkEvent.ClientCustomPayloadEvent.class, C2S_TRANSFORMERS));
|
||||
CHANNEL.addListener(createPacketHandler(NetworkDirection.PLAY_TO_SERVER, C2S_TRANSFORMERS));
|
||||
|
||||
DistExecutor.unsafeRunWhenOn(Dist.CLIENT, () -> ClientNetworkingManager::initClient);
|
||||
|
||||
@@ -111,10 +109,10 @@ public class NetworkManagerImpl {
|
||||
});
|
||||
}
|
||||
|
||||
static <T extends NetworkEvent> Consumer<T> createPacketHandler(Class<T> clazz, Map<ResourceLocation, PacketTransformer> map) {
|
||||
static <T extends CustomPayloadEvent> Consumer<T> createPacketHandler(NetworkDirection direction, Map<ResourceLocation, PacketTransformer> map) {
|
||||
return event -> {
|
||||
if (event.getClass() != clazz) return;
|
||||
NetworkEvent.Context context = event.getSource().get();
|
||||
CustomPayloadEvent.Context context = event.getSource();
|
||||
if (context.getDirection() != direction) return;
|
||||
if (context.getPacketHandled()) return;
|
||||
FriendlyByteBuf buffer = event.getPayload();
|
||||
if (buffer == null) return;
|
||||
@@ -182,7 +180,19 @@ public class NetworkManagerImpl {
|
||||
}
|
||||
|
||||
public static Packet<ClientGamePacketListener> createAddEntityPacket(Entity entity) {
|
||||
return (Packet<ClientGamePacketListener>) NetworkHooks.getEntitySpawningPacket(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);
|
||||
}
|
||||
}
|
||||
|
||||
static FriendlyByteBuf sendSyncPacket(Map<ResourceLocation, NetworkReceiver> map) {
|
||||
|
||||
@@ -33,11 +33,10 @@ import net.minecraft.world.inventory.MenuType;
|
||||
import net.minecraftforge.api.distmarker.Dist;
|
||||
import net.minecraftforge.api.distmarker.OnlyIn;
|
||||
import net.minecraftforge.common.extensions.IForgeMenuType;
|
||||
import net.minecraftforge.network.NetworkHooks;
|
||||
|
||||
public class MenuRegistryImpl {
|
||||
public static void openExtendedMenu(ServerPlayer player, ExtendedMenuProvider provider) {
|
||||
NetworkHooks.openScreen(player, provider, provider::saveExtraData);
|
||||
player.openMenu(provider, provider::saveExtraData);
|
||||
}
|
||||
|
||||
public static <T extends AbstractContainerMenu> MenuType<T> of(SimpleMenuTypeFactory<T> factory) {
|
||||
|
||||
@@ -271,7 +271,6 @@ public class RegistrarManagerImpl {
|
||||
private final RegistryProviderImpl provider;
|
||||
private final net.minecraftforge.registries.RegistryBuilder<?> builder;
|
||||
private final ResourceLocation registryId;
|
||||
private boolean saveToDisk = false;
|
||||
private boolean syncToClients = false;
|
||||
|
||||
public RegistryBuilderWrapper(RegistryProviderImpl provider, RegistryBuilder<?> builder, ResourceLocation registryId) {
|
||||
@@ -283,7 +282,7 @@ public class RegistrarManagerImpl {
|
||||
@Override
|
||||
public Registrar<T> build() {
|
||||
if (!syncToClients) builder.disableSync();
|
||||
if (!saveToDisk) builder.disableSaving();
|
||||
builder.disableSaving();
|
||||
if (provider.builders == null) {
|
||||
throw new IllegalStateException("Cannot create registries when registries are already aggregated!");
|
||||
}
|
||||
@@ -301,9 +300,7 @@ public class RegistrarManagerImpl {
|
||||
|
||||
@Override
|
||||
public RegistrarBuilder<T> option(RegistrarOption option) {
|
||||
if (option == StandardRegistrarOption.SAVE_TO_DISC) {
|
||||
this.saveToDisk = true;
|
||||
} else if (option == StandardRegistrarOption.SYNC_TO_CLIENTS) {
|
||||
if (option == StandardRegistrarOption.SYNC_TO_CLIENTS) {
|
||||
this.syncToClients = true;
|
||||
}
|
||||
return this;
|
||||
|
||||
@@ -24,6 +24,6 @@ side = "BOTH"
|
||||
[[dependencies.architectury]]
|
||||
modId = "forge"
|
||||
mandatory = true
|
||||
versionRange = "[46,)"
|
||||
versionRange = "[48,)"
|
||||
ordering = "NONE"
|
||||
side = "BOTH"
|
||||
|
||||
@@ -1,12 +1,12 @@
|
||||
org.gradle.jvmargs=-Xmx6G
|
||||
org.gradle.daemon=false
|
||||
|
||||
platforms=fabric
|
||||
platforms=fabric,forge
|
||||
|
||||
minecraft_version=1.20.2-pre4
|
||||
supported_version=1.20.2-pre4
|
||||
minecraft_version=1.20.2
|
||||
supported_version=1.20.2
|
||||
|
||||
artifact_type=beta
|
||||
artifact_type=release
|
||||
|
||||
archives_base_name=architectury
|
||||
archives_base_name_snapshot=architectury-snapshot
|
||||
@@ -14,10 +14,10 @@ base_version=10.0
|
||||
maven_group=dev.architectury
|
||||
|
||||
fabric_loader_version=0.14.22
|
||||
fabric_api_version=0.88.4+1.20.2
|
||||
fabric_api_version=0.89.1+1.20.2
|
||||
mod_menu_version=7.0.0
|
||||
|
||||
forge_version=46.0.1
|
||||
forge_version=48.0.1
|
||||
|
||||
curseforge_id=419699
|
||||
modrinth_id=lhGA9TYQ
|
||||
|
||||
@@ -13,9 +13,9 @@ if (JavaVersion.current().ordinal() + 1 < 17) {
|
||||
|
||||
include("common")
|
||||
include("fabric")
|
||||
//include("forge")
|
||||
include("forge")
|
||||
include("testmod-common")
|
||||
include("testmod-fabric")
|
||||
//include("testmod-forge")
|
||||
include("testmod-forge")
|
||||
|
||||
rootProject.name = "architectury"
|
||||
|
||||
@@ -41,7 +41,6 @@ public class TestEntity extends Cow {
|
||||
@Override
|
||||
public Packet<ClientGamePacketListener> getAddEntityPacket() {
|
||||
// Custom packets broken in BundlePacket
|
||||
// return NetworkManager.createAddEntityPacket(this);
|
||||
return super.getAddEntityPacket();
|
||||
return NetworkManager.createAddEntityPacket(this);
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user