Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Dev #43

Merged
merged 12 commits into from
Mar 21, 2024
5 changes: 4 additions & 1 deletion .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -22,4 +22,7 @@ logs
eclipse
run
.vscode
**/extra-mods-*/
**/extra-mods-*/

.DS_Store
.architectury-transformer
5 changes: 5 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,11 @@ All notable changes to this project will be documented in this file.
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).

[2004.2.0]

### Changed
* Ported to MC 1.20.4: Forge, NeoForge and Fabric all supported

[1902.1.16]

### Fixed
Expand Down
4 changes: 2 additions & 2 deletions build.gradle
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
plugins {
id "architectury-plugin" version "3.4-SNAPSHOT"
id "dev.architectury.loom" version "1.2-SNAPSHOT" apply false
id "dev.architectury.loom" version "1.5-SNAPSHOT" apply false
}

architectury {
Expand Down Expand Up @@ -74,4 +74,4 @@ allprojects {
}
}

task curseforgePublish
task curseforgePublish
2 changes: 1 addition & 1 deletion common/build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@ dependencies {
def ENV = System.getenv()

architectury {
common("forge", "fabric")
common("forge", "fabric", "neoforge")
}

publishing {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -116,7 +116,7 @@ private MutableComponent parse() {
System.arraycopy(c, i + 1, rrggbb, 1, 6);

i += 6;
style = style.withColor(TextColor.parseColor(new String(rrggbb)));
style = style.withColor(TextColor.parseColor(new String(rrggbb)).result().orElse(TextColor.fromRgb(0xFFFFFF)));
} else {
ChatFormatting formatting = CODE_TO_FORMATTING.get(c[i]);

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,8 +8,6 @@
import net.fabricmc.fabric.api.message.v1.ServerMessageDecoratorEvent;
import net.minecraft.network.chat.MutableComponent;

import java.util.concurrent.CompletableFuture;

public class FTBRanksFabric implements ModInitializer {
@Override
public void onInitialize() {
Expand All @@ -19,10 +17,10 @@ public void onInitialize() {
if (sender != null) {
MutableComponent mutableComponent = message.copy();
if (MessageDecorator.decorateMessage(sender, mutableComponent)) {
return CompletableFuture.completedFuture(mutableComponent);
return mutableComponent;
}
}
return CompletableFuture.completedFuture(message);
return message;
});

PlayerDisplayNameCallback.EVENT.register(PlayerNameFormatting::formatPlayerName);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,6 @@
import net.minecraftforge.fml.ModLoadingContext;
import net.minecraftforge.fml.common.Mod;
import net.minecraftforge.fml.javafmlmod.FMLJavaModLoadingContext;
import net.minecraftforge.network.NetworkConstants;

@Mod(FTBRanks.MOD_ID)
public class FTBRanksForge {
Expand All @@ -28,7 +27,7 @@ public FTBRanksForge() {
// Nope.
// PermissionAPI.setPermissionHandler(new PermissionAPIWrapper(PermissionAPI.getPermissionHandler()));

ModLoadingContext.get().registerExtensionPoint(DisplayTest.class, () -> new DisplayTest(() -> NetworkConstants.IGNORESERVERONLY, (a, b) -> true));
ModLoadingContext.get().registerExtensionPoint(DisplayTest.class, () -> new DisplayTest(() -> DisplayTest.IGNORESERVERONLY, (a, b) -> true));
}

private void playerNameFormatting(PlayerEvent.NameFormat event) {
Expand Down
19 changes: 12 additions & 7 deletions gradle.properties
Original file line number Diff line number Diff line change
Expand Up @@ -3,15 +3,20 @@ org.gradle.daemon=false
mod_id=ftbranks
archives_base_name=ftb-ranks
maven_group=dev.ftb.mods
mod_version=2001.1.3
mod_version=2004.2.0
mod_author=FTB Team

minecraft_version=1.20.1
architectury_version=9.0.8
fabric_loader_version=0.14.21
fabric_api_version=0.83.1+1.20.1
ftb_library_version=2001.1.2
forge_version=47.0.1
minecraft_version=1.20.4

# Deps
forge_version=49.0.31
neoforge_version=20.4.196
neoforge_loader_version=1
fabric_loader_version=0.15.7
fabric_api_version=0.96.4+1.20.4
architectury_version=11.1.17

ftb_library_version=2004.2.0

curseforge_id_forge=314905
curseforge_id_fabric=472659
Expand Down
2 changes: 1 addition & 1 deletion gradle/wrapper/gradle-wrapper.properties
Original file line number Diff line number Diff line change
Expand Up @@ -3,4 +3,4 @@ distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists
distributionUrl=https\://services.gradle.org/distributions/gradle-8.1.1-bin.zip
distributionUrl=https\://services.gradle.org/distributions/gradle-8.4-bin.zip
147 changes: 147 additions & 0 deletions neoforge/build.gradle
Original file line number Diff line number Diff line change
@@ -0,0 +1,147 @@
plugins {
id "com.github.johnrengelman.shadow" version "7.1.0"
id "com.matthewprenger.cursegradle" version "1.4.0"
}

def ENV = System.getenv()

architectury {
platformSetupLoomIde()
neoForge()
}

configurations {
common
shadowCommon // Don't use shadow from the shadow plugin because we don't want IDEA to index this.
compileClasspath.extendsFrom common
runtimeClasspath.extendsFrom common
developmentNeoForge.extendsFrom common
}

//loom {
// forge {
// mixinConfigs = ["ftbranks-common.mixins.json"]
// }
//}

repositories {
maven {
url "https://maven.neoforged.net/releases/"
}
}

dependencies {
neoForge "net.neoforged:neoforge:${rootProject.neoforge_version}"

modApi "dev.architectury:architectury-neoforge:${rootProject.architectury_version}"
modApi("dev.ftb.mods:ftb-library-neoforge:${rootProject.ftb_library_version}") { transitive false }

common(project(path: ":common", configuration: "namedElements")) { transitive false }
shadowCommon(project(path: ":common", configuration: "transformProductionForge")) { transitive false }
}

apply from: "https://raw.githubusercontent.com/FTBTeam/mods-meta/main/gradle/extra-local-mods.gradle"

processResources {
exclude '.cache'

inputs.property "version", project.version

filesMatching("META-INF/mods.toml") {
expand "version": project.version,
"archversion": project.architectury_version,
"neoforgeversion": project.neoforge_version,
"neoforgeloaderversion": project.neoforge_loader_version,
"mcversion": project.minecraft_version,
"ftblibraryversion": project.ftb_library_version
}
}

shadowJar {
exclude "fabric.mod.json"

configurations = [project.configurations.shadowCommon]
setArchiveClassifier("dev-shadow")
}

remapJar {
input.set shadowJar.archiveFile
dependsOn shadowJar
archiveBaseName.set "${rootProject.archives_base_name}-${project.name}"
archiveClassifier.set null
}

jar {
manifest {
attributes([
"Specification-Title" : project.mod_id,
"Specification-Vendor" : project.mod_author,
"Specification-Version" : "1",
"Implementation-Title" : project.name,
"Implementation-Version" : version,
"Implementation-Vendor" : project.mod_author,
"Implementation-Timestamp": new Date().format("yyyy-MM-dd'T'HH:mm:ssZ")
])
}

setArchiveClassifier("dev")
}

components.java {
withVariantsFromConfiguration(project.configurations.shadowRuntimeElements) {
skip()
}
}

if (ENV.CURSEFORGE_KEY) {
curseforge {
apiKey = ENV.CURSEFORGE_KEY
project {
id = project.curseforge_id_forge
releaseType = ftbPublishing.relType
addGameVersion "Forge"
addGameVersion project.minecraft_version
mainArtifact(remapJar.archiveFile)
relations {
requiredDependency 'architectury-api'
requiredDependency 'ftb-library-forge'
}
changelog = ENV.CHANGELOG // expected to exist if ENV.CURSEFORGE does
changelogType = 'markdown'
}
}
}

publishing {
publications {
mavenForge(MavenPublication) {
artifactId = "${rootProject.archives_base_name}-${project.name}"
version ftbPublishing.mavenVersion
from components.java
}
}

repositories {
if (ftbPublishing.ftbToken) {
maven {
url ftbPublishing.ftbURL
credentials {
username = ftbPublishing.ftbUser
password = ftbPublishing.ftbToken
}
}
}

if (ftbPublishing.sapsToken) {
maven {
url ftbPublishing.sapsURL
credentials {
username = ftbPublishing.sapsUser
password = ftbPublishing.sapsToken
}
}
}
}
}

rootProject.tasks.getByName("curseforgePublish").dependsOn tasks.getByName("curseforge")
1 change: 1 addition & 0 deletions neoforge/gradle.properties
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
loom.platform=neoforge
Original file line number Diff line number Diff line change
@@ -0,0 +1,41 @@
package dev.ftb.mods.ftbranks.neoforge;

import dev.ftb.mods.ftbranks.FTBRanks;
import dev.ftb.mods.ftbranks.PlayerNameFormatting;
import dev.ftb.mods.ftbranks.impl.decorate.MessageDecorator;
import net.minecraft.network.chat.MutableComponent;
import net.minecraft.server.level.ServerPlayer;
import net.neoforged.fml.IExtensionPoint.DisplayTest;
import net.neoforged.fml.ModLoadingContext;
import net.neoforged.fml.common.Mod;
import net.neoforged.neoforge.common.NeoForge;
import net.neoforged.neoforge.event.ServerChatEvent;
import net.neoforged.neoforge.event.entity.player.PlayerEvent;

@Mod(FTBRanks.MOD_ID)
public class FTBRanksNeoForge {
public FTBRanksNeoForge() {
NeoForge.EVENT_BUS.addListener(this::playerNameFormatting);
NeoForge.EVENT_BUS.addListener(this::serverChat);

FTBRanks.init();

// Nope.
// PermissionAPI.setPermissionHandler(new PermissionAPIWrapper(PermissionAPI.getPermissionHandler()));

ModLoadingContext.get().registerExtensionPoint(DisplayTest.class, () -> new DisplayTest(() -> DisplayTest.IGNORESERVERONLY, (a, b) -> true));
}

private void playerNameFormatting(PlayerEvent.NameFormat event) {
if (event.getEntity() instanceof ServerPlayer player) {
event.setDisplayname(PlayerNameFormatting.formatPlayerName(player, event.getDisplayname()));
}
}

private void serverChat(ServerChatEvent event) {
MutableComponent text = event.getMessage().copy();
if (MessageDecorator.decorateMessage(event.getPlayer(), text)) {
event.setMessage(text);
}
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,44 @@
package dev.ftb.mods.ftbranks.neoforge;

/**
* @author LatvianModder
*/
public class PermissionAPIWrapper /* implements IPermissionHandler */ {
/* Nah, im not doing this lol
private final IPermissionHandler original;

public PermissionAPIWrapper(IPermissionHandler h) {
original = h;
}

@Override
public void registerNode(String node, DefaultPermissionLevel level, String desc) {
original.registerNode(node, level, desc);
}

@Override
public Collection<String> getRegisteredNodes() {
return original.getRegisteredNodes();
}

@Override
public boolean hasPermission(GameProfile profile, String node, @Nullable IContext context) {
if (context != null && context.getPlayer() instanceof ServerPlayer) {
return FTBRanksAPI.getPermissionValue((ServerPlayer) context.getPlayer(), node).asBoolean().orElseGet(() -> original.hasPermission(profile, node, context));
} else if (context != null && context.getWorld() != null && !context.getWorld().isClientSide()) {
ServerPlayer player = context.getWorld().getServer().getPlayerList().getPlayer(profile.getId());

if (player != null) {
return FTBRanksAPI.getPermissionValue(player, node).asBoolean().orElseGet(() -> original.hasPermission(profile, node, context));
}
}

return original.hasPermission(profile, node, context);
}

@Override
public String getNodeDescription(String node) {
return original.getNodeDescription(node);
}
*/
}
Loading
Loading