Port forge and finally fix build scripts
This commit is contained in:
@@ -1,22 +1,10 @@
|
||||
buildscript {
|
||||
repositories {
|
||||
maven { url = 'https://mcentral.firstdark.dev/releases' }
|
||||
mavenCentral()
|
||||
}
|
||||
dependencies {
|
||||
classpath group: 'net.minecraftforge.gradle', name: 'ForgeGradle', version: '5.1.+', changing: true
|
||||
classpath 'org.spongepowered:mixingradle:0.7-SNAPSHOT'
|
||||
}
|
||||
}
|
||||
plugins {
|
||||
id 'com.github.johnrengelman.shadow' version '7.0.0'
|
||||
id "me.hypherionmc.modutils.modpublisher" version "1.0.+"
|
||||
}
|
||||
apply plugin: 'java'
|
||||
apply plugin: 'net.minecraftforge.gradle'
|
||||
apply plugin: 'eclipse'
|
||||
apply plugin: 'org.spongepowered.mixin'
|
||||
apply plugin: 'maven-publish'
|
||||
apply plugin: 'me.hypherionmc.modutils.modpublisher'
|
||||
apply plugin: 'com.github.johnrengelman.shadow'
|
||||
|
||||
archivesBaseName = "${mod_name}-forge-${minecraft_version}"
|
||||
|
||||
@@ -31,8 +19,6 @@ minecraft {
|
||||
mappings channel: 'official', version: minecraft_version
|
||||
|
||||
if (project.hasProperty('forge_ats_enabled') && project.findProperty('forge_ats_enabled').toBoolean()) {
|
||||
// This location is hardcoded in Forge and can not be changed.
|
||||
// https://github.com/MinecraftForge/MinecraftForge/blob/be1698bb1554f9c8fa2f58e32b9ab70bc4385e60/fmlloader/src/main/java/net/minecraftforge/fml/loading/moddiscovery/ModFile.java#L123
|
||||
accessTransformer = file('src/main/resources/META-INF/accesstransformer.cfg')
|
||||
project.logger.debug('Forge Access Transformers are enabled for this project.')
|
||||
}
|
||||
@@ -109,23 +95,28 @@ processResources {
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Shadowjar Config
|
||||
*/
|
||||
shadowJar {
|
||||
configurations = [project.configurations.shade]
|
||||
dependencies {
|
||||
relocate 'me.hypherionmc.moonconfig', 'shadow.hypherionmc.moonconfig'
|
||||
}
|
||||
|
||||
classifier = ''
|
||||
setArchiveClassifier('')
|
||||
}
|
||||
|
||||
assemble.dependsOn(shadowJar)
|
||||
|
||||
reobf {
|
||||
shadowJar {}
|
||||
}
|
||||
|
||||
build.dependsOn reobfShadowJar
|
||||
reg.configureJarTask(shadowJar)
|
||||
jar.finalizedBy('reobfJar')
|
||||
//reg.configureJarTask(shadowJar)
|
||||
|
||||
/**
|
||||
* Publishing Config
|
||||
*/
|
||||
publishing {
|
||||
publications {
|
||||
mavenJava(MavenPublication) {
|
||||
@@ -156,14 +147,6 @@ publishing {
|
||||
}
|
||||
}
|
||||
|
||||
task copyAllArtifacts(type: Copy) {
|
||||
from "$buildDir/libs"
|
||||
into "$rootDir/artifacts"
|
||||
include("*.jar")
|
||||
}
|
||||
|
||||
build.finalizedBy(copyAllArtifacts)
|
||||
|
||||
publisher {
|
||||
apiKeys {
|
||||
modrinth = System.getenv("MODRINTH_TOKEN")
|
||||
@@ -181,4 +164,5 @@ publisher {
|
||||
artifact = jar
|
||||
}
|
||||
|
||||
publishMod.dependsOn(build)
|
||||
publishMod.dependsOn(build)
|
||||
jar.finalizedBy('reobfJar')
|
@@ -1,12 +1,9 @@
|
||||
package com.hypherionmc.craterlib.client;
|
||||
|
||||
import com.hypherionmc.craterlib.api.rendering.CustomRenderType;
|
||||
import com.hypherionmc.craterlib.common.item.BlockItemDyable;
|
||||
import com.hypherionmc.craterlib.core.platform.ClientPlatform;
|
||||
import com.hypherionmc.craterlib.core.systems.reg.RegistryObject;
|
||||
import com.hypherionmc.craterlib.util.ColorPropertyFunction;
|
||||
import net.minecraft.client.Minecraft;
|
||||
import net.minecraft.client.renderer.ItemBlockRenderTypes;
|
||||
import net.minecraft.client.renderer.blockentity.BlockEntityRendererProvider;
|
||||
import net.minecraft.client.renderer.blockentity.BlockEntityRenderers;
|
||||
import net.minecraft.client.renderer.item.ItemProperties;
|
||||
@@ -14,12 +11,10 @@ import net.minecraft.network.Connection;
|
||||
import net.minecraft.resources.ResourceLocation;
|
||||
import net.minecraft.world.entity.player.Player;
|
||||
import net.minecraft.world.level.Level;
|
||||
import net.minecraft.world.level.block.Block;
|
||||
import net.minecraft.world.level.block.entity.BlockEntity;
|
||||
import net.minecraft.world.level.block.entity.BlockEntityType;
|
||||
import net.minecraftforge.fml.loading.FMLEnvironment;
|
||||
|
||||
import java.util.Collection;
|
||||
import java.util.Objects;
|
||||
|
||||
/**
|
||||
@@ -37,14 +32,14 @@ public class ForgeClientHelper implements ClientPlatform {
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
/*@Override
|
||||
public void registerCustomRenderTypes(Collection<RegistryObject<Block>> blocks) {
|
||||
blocks.forEach(blk -> {
|
||||
if (blk.get() instanceof CustomRenderType type) {
|
||||
ItemBlockRenderTypes.setRenderLayer(blk.get(), type.getCustomRenderType());
|
||||
}
|
||||
});
|
||||
}
|
||||
}*/
|
||||
|
||||
@Override
|
||||
public Minecraft getClientInstance() {
|
||||
|
@@ -21,7 +21,6 @@ import net.minecraft.world.item.CreativeModeTab;
|
||||
import net.minecraft.world.level.block.entity.BlockEntity;
|
||||
import net.minecraftforge.common.capabilities.ForgeCapabilities;
|
||||
import net.minecraftforge.common.extensions.IForgeMenuType;
|
||||
import net.minecraftforge.network.NetworkHooks;
|
||||
import net.minecraftforge.server.ServerLifecycleHooks;
|
||||
import org.apache.commons.lang3.function.TriFunction;
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
@@ -54,9 +53,9 @@ public class ForgeCommonHelper implements CommonPlatform {
|
||||
@Override
|
||||
public void openMenu(ServerPlayer player, MenuProvider menu, @Nullable Consumer<FriendlyByteBuf> initialData) {
|
||||
if (initialData != null) {
|
||||
NetworkHooks.openScreen(player, menu, initialData);
|
||||
player.openMenu(menu, initialData);
|
||||
} else {
|
||||
NetworkHooks.openScreen(player, menu, player.getOnPos());
|
||||
player.openMenu(menu, player.getOnPos());
|
||||
}
|
||||
}
|
||||
|
||||
|
@@ -5,17 +5,21 @@ import com.hypherionmc.craterlib.core.network.CraterNetworkHandler;
|
||||
import com.hypherionmc.craterlib.core.network.CraterPacket;
|
||||
import com.hypherionmc.craterlib.core.network.PacketDirection;
|
||||
import com.hypherionmc.craterlib.core.platform.ClientPlatform;
|
||||
import io.netty.buffer.Unpooled;
|
||||
import net.minecraft.network.FriendlyByteBuf;
|
||||
import net.minecraft.network.protocol.Packet;
|
||||
import net.minecraft.resources.ResourceLocation;
|
||||
import net.minecraft.world.entity.player.Player;
|
||||
import net.minecraftforge.common.util.LogicalSidedProvider;
|
||||
import net.minecraftforge.event.network.CustomPayloadEvent;
|
||||
import net.minecraftforge.fml.LogicalSide;
|
||||
import net.minecraftforge.network.Channel;
|
||||
import net.minecraftforge.network.ChannelBuilder;
|
||||
import net.minecraftforge.network.NetworkDirection;
|
||||
import net.minecraftforge.network.NetworkEvent;
|
||||
import net.minecraftforge.network.NetworkRegistry;
|
||||
import net.minecraftforge.network.simple.SimpleChannel;
|
||||
import net.minecraftforge.network.SimpleChannel;
|
||||
|
||||
import java.util.HashMap;
|
||||
import java.util.LinkedHashMap;
|
||||
import java.util.Map;
|
||||
import java.util.concurrent.atomic.AtomicInteger;
|
||||
import java.util.function.BiConsumer;
|
||||
@@ -29,7 +33,6 @@ import java.util.function.Supplier;
|
||||
public class ForgeNetworkHandler implements CraterNetworkHandler {
|
||||
|
||||
private static final Map<String, ForgeNetworkHandler> NETWORK_HANDLERS = Maps.newConcurrentMap();
|
||||
private static final String PROTOCOL = Integer.toString(1);
|
||||
|
||||
private final SimpleChannel channel;
|
||||
|
||||
@@ -39,6 +42,8 @@ public class ForgeNetworkHandler implements CraterNetworkHandler {
|
||||
|
||||
private final AtomicInteger packetID = new AtomicInteger();
|
||||
|
||||
private HashMap<Class<?>, Integer> packetMap = new LinkedHashMap<>();
|
||||
|
||||
private ForgeNetworkHandler(SimpleChannel channel, boolean clientRequired, boolean serverRequired) {
|
||||
this.channel = channel;
|
||||
this.clientRequired = clientRequired;
|
||||
@@ -54,37 +59,47 @@ public class ForgeNetworkHandler implements CraterNetworkHandler {
|
||||
return packet;
|
||||
};
|
||||
|
||||
BiConsumer<T, Supplier<NetworkEvent.Context>> handler = (packet, sup) -> {
|
||||
NetworkEvent.Context context = sup.get();
|
||||
BiConsumer<T, CustomPayloadEvent.Context> handler = (packet, sup) -> {
|
||||
LogicalSide expectedSide = getSideFromDirection(packetDirection);
|
||||
LogicalSide currentSide = context.getDirection().getReceptionSide();
|
||||
LogicalSide currentSide = sup.getDirection().getReceptionSide();
|
||||
|
||||
if (expectedSide != currentSide) {
|
||||
throw new IllegalStateException(String.format("Received message on wrong side, expected %s, was %s", expectedSide, currentSide));
|
||||
}
|
||||
|
||||
context.enqueueWork(() -> {
|
||||
sup.enqueueWork(() -> {
|
||||
Player player;
|
||||
if (packetDirection == PacketDirection.TO_CLIENT) {
|
||||
player = ClientPlatform.INSTANCE.getClientPlayer();
|
||||
} else {
|
||||
player = context.getSender();
|
||||
player = sup.getSender();
|
||||
}
|
||||
packet.handle(player, LogicalSidedProvider.WORKQUEUE.get(expectedSide));
|
||||
});
|
||||
context.setPacketHandled(true);
|
||||
sup.setPacketHandled(true);
|
||||
};
|
||||
this.channel.registerMessage(this.packetID.getAndIncrement(), (Class<T>) clazz, encoder, decoder, handler);
|
||||
|
||||
int id = packetID.getAndIncrement();
|
||||
packetMap.put(clazz, id);
|
||||
|
||||
this.channel
|
||||
.messageBuilder((Class<T>) clazz, id)
|
||||
.encoder(encoder)
|
||||
.decoder(decoder)
|
||||
.consumerNetworkThread(handler)
|
||||
.add();
|
||||
}
|
||||
|
||||
@Override
|
||||
public Packet<?> toServerBound(CraterPacket<?> packet) {
|
||||
return this.channel.toVanillaPacket(packet, NetworkDirection.PLAY_TO_SERVER);
|
||||
return NetworkDirection.PLAY_TO_SERVER.buildPacket(toBuffer(packet), channel.getName()).getThis();
|
||||
//return this.channel.toVanillaPacket(packet, NetworkDirection.PLAY_TO_SERVER);
|
||||
}
|
||||
|
||||
@Override
|
||||
public Packet<?> toClientBound(CraterPacket<?> packet) {
|
||||
return this.channel.toVanillaPacket(packet, NetworkDirection.PLAY_TO_CLIENT);
|
||||
return NetworkDirection.PLAY_TO_CLIENT.buildPacket(toBuffer(packet), channel.getName()).getThis();
|
||||
//return this.channel.toVanillaPacket(packet, NetworkDirection.PLAY_TO_CLIENT);
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -100,15 +115,24 @@ public class ForgeNetworkHandler implements CraterNetworkHandler {
|
||||
}
|
||||
|
||||
private static SimpleChannel buildSimpleChannel(String modId, boolean clientAcceptsVanillaOrMissing, boolean serverAcceptsVanillaOrMissing) {
|
||||
return NetworkRegistry.ChannelBuilder
|
||||
return ChannelBuilder
|
||||
.named(new ResourceLocation(modId, "crater_network"))
|
||||
.networkProtocolVersion(() -> PROTOCOL)
|
||||
.clientAcceptedVersions(clientAcceptsVanillaOrMissing ? NetworkRegistry.acceptMissingOr(PROTOCOL) : PROTOCOL::equals)
|
||||
.serverAcceptedVersions(serverAcceptsVanillaOrMissing ? NetworkRegistry.acceptMissingOr(PROTOCOL) : PROTOCOL::equals)
|
||||
.networkProtocolVersion(1)
|
||||
.clientAcceptedVersions(clientAcceptsVanillaOrMissing ? Channel.VersionTest.ACCEPT_MISSING : Channel.VersionTest.exact(1))
|
||||
.serverAcceptedVersions(serverAcceptsVanillaOrMissing ? Channel.VersionTest.ACCEPT_MISSING : Channel.VersionTest.exact(1))
|
||||
.simpleChannel();
|
||||
}
|
||||
|
||||
private LogicalSide getSideFromDirection(PacketDirection direction) {
|
||||
return direction == PacketDirection.TO_CLIENT ? LogicalSide.CLIENT : LogicalSide.SERVER;
|
||||
}
|
||||
|
||||
protected FriendlyByteBuf toBuffer(CraterPacket<?> message) {
|
||||
var msg = packetMap.get(message.getClass());
|
||||
|
||||
var ret = new FriendlyByteBuf(Unpooled.buffer());
|
||||
ret.writeVarInt(msg);
|
||||
message.write(ret);
|
||||
return ret;
|
||||
}
|
||||
}
|
||||
|
Reference in New Issue
Block a user