Skip to content

Commit 83fea0f

Browse files
committed
restore fabric 1.21.1 and 1.21.4 project
1 parent fb124fc commit 83fea0f

35 files changed

+2257
-1
lines changed

build.gradle.kts

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -99,6 +99,28 @@ project(":folia") {
9999
}
100100
}
101101

102+
val fabric1211Project = project(":fabric-1.21.1")
103+
fabric1211Project.configure<JavaPluginExtension> {
104+
sourceSets {
105+
getByName("main") {
106+
java {
107+
srcDir("src/main/kotlin")
108+
}
109+
}
110+
}
111+
}
112+
113+
val fabric1214Project = project(":fabric-1.21.4")
114+
fabric1214Project.configure<JavaPluginExtension> {
115+
sourceSets {
116+
getByName("main") {
117+
java {
118+
srcDir("src/main/kotlin")
119+
}
120+
}
121+
}
122+
}
123+
102124
val fabric1215Project = project(":fabric-1.21.5")
103125
fabric1215Project.configure<JavaPluginExtension> {
104126
sourceSets {

build.sh

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,8 @@ rm -f build/libs/*
99
# Move all successful builds to build output folder
1010
mv bukkit/build/libs/tebex*.jar build/libs/
1111
mv bungeecord/build/libs/tebex*.jar build/libs/
12+
mv fabric-1.21.1/build/libs/tebex*.jar build/libs/
13+
mv fabric-1.21.4/build/libs/tebex*.jar build/libs/
1214
mv fabric-1.21.5/build/libs/tebex*.jar build/libs/
1315
mv fabric-1.21.6/build/libs/tebex*.jar build/libs/
1416
mv fabric-1.21.7/build/libs/tebex*.jar build/libs/

fabric-1.21.1/.gitignore

Lines changed: 42 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,42 @@
1+
.gradle
2+
build/
3+
!gradle/wrapper/gradle-wrapper.jar
4+
!**/src/main/**/build/
5+
!**/src/test/**/build/
6+
7+
### IntelliJ IDEA ###
8+
.idea/modules.xml
9+
.idea/jarRepositories.xml
10+
.idea/compiler.xml
11+
.idea/libraries/
12+
*.iws
13+
*.iml
14+
*.ipr
15+
out/
16+
!**/src/main/**/out/
17+
!**/src/test/**/out/
18+
19+
### Eclipse ###
20+
.apt_generated
21+
.classpath
22+
.factorypath
23+
.project
24+
.settings
25+
.springBeans
26+
.sts4-cache
27+
bin/
28+
!**/src/main/**/bin/
29+
!**/src/test/**/bin/
30+
31+
### NetBeans ###
32+
/nbproject/private/
33+
/nbbuild/
34+
/dist/
35+
/nbdist/
36+
/.nb-gradle/
37+
38+
### VS Code ###
39+
.vscode/
40+
41+
### Mac OS ###
42+
.DS_Store

fabric-1.21.1/build.gradle.kts

Lines changed: 80 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,80 @@
1+
import com.github.jengelman.gradle.plugins.shadow.tasks.ShadowJar
2+
3+
group = rootProject.group
4+
version = rootProject.version
5+
6+
fun gitCommitHash(): String {
7+
return try {
8+
val process = ProcessBuilder("git", "rev-parse", "--short", "HEAD")
9+
.redirectErrorStream(true)
10+
.start()
11+
val result = process.inputStream.bufferedReader().readText().trim()
12+
process.waitFor()
13+
if (process.exitValue() == 0) result else "unknown"
14+
} catch (e: Exception) {
15+
"unknown"
16+
}
17+
}
18+
19+
plugins {
20+
java
21+
id("com.gradleup.shadow")
22+
id("fabric-loom") version "1.11-SNAPSHOT" apply(true)
23+
}
24+
25+
var minecraftVersion = properties["minecraft_version"] as String
26+
var yarnMappings = properties["yarn_mappings"] as String
27+
var loaderVersion = properties["loader_version"] as String
28+
var fabricVersion = properties["fabric_version"] as String
29+
30+
java {
31+
toolchain.languageVersion.set(JavaLanguageVersion.of(21))
32+
sourceCompatibility = JavaVersion.VERSION_21
33+
targetCompatibility = JavaVersion.VERSION_21
34+
}
35+
36+
dependencies {
37+
shadow(project(":sdk"))
38+
39+
shadow("com.github.cryptomorin:XSeries:9.3.1") {
40+
isTransitive = false
41+
}
42+
43+
minecraft("com.mojang:minecraft:${minecraftVersion}")
44+
mappings("net.fabricmc:yarn:${yarnMappings}:v2")
45+
46+
modImplementation("net.fabricmc:fabric-loader:${loaderVersion}")
47+
modImplementation("net.fabricmc.fabric-api:fabric-api:${fabricVersion}")
48+
49+
compileOnly("dev.dejvokep:boosted-yaml:1.3")
50+
51+
modImplementation("me.lucko:fabric-permissions-api:0.3.3")
52+
include("me.lucko:fabric-permissions-api:0.3.3")
53+
}
54+
55+
56+
tasks.named("shadowJar", ShadowJar::class.java) {
57+
configurations = listOf(project.configurations.shadow.get())
58+
59+
relocate("okhttp3", "io.tebex.plugin.libs.okhttp3")
60+
relocate("okio", "io.tebex.plugin.libs.okio")
61+
relocate("dev.dejvokep.boostedyaml", "io.tebex.plugin.libs.boostedyaml")
62+
relocate("org.jetbrains.annotations", "io.tebex.plugin.libs.jetbrains")
63+
relocate("kotlin", "io.tebex.plugin.libs.kotlin")
64+
relocate("com.google.gson", "io.tebex.plugin.libs.gson")
65+
minimize()
66+
67+
archiveFileName.set("${project.name}-${project.version}-shadow.jar")
68+
69+
finalizedBy("remapJar")
70+
}
71+
72+
tasks.remapJar {
73+
dependsOn("shadowJar")
74+
val shadowJar = tasks.shadowJar.get()
75+
76+
inputFile.set(shadowJar.archiveFile)
77+
archiveFileName.set("tebex-${project.name}-${rootProject.version}-${gitCommitHash()}.jar")
78+
archiveClassifier.set(shadowJar.archiveClassifier)
79+
delete(shadowJar.archiveFile)
80+
}

fabric-1.21.1/gradle.properties

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
# Fabric Properties
2+
# check these on https://fabricmc.net/develop
3+
minecraft_version=1.21.1
4+
yarn_mappings=1.21.1+build.3
5+
loader_version=0.16.14
6+
loom_version=1.11-SNAPSHOT
7+
8+
# Fabric API
9+
fabric_version=0.116.4+1.21.1
10+
11+
# Mod Properties
12+
mod_version=@VERSION@
13+
maven_group=io.tebex.plugin
14+
archives_base_name=tebexplugin
15+
Lines changed: 145 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,145 @@
1+
package io.tebex.plugin;
2+
3+
import io.tebex.plugin.gui.BuyGUI;
4+
import io.tebex.sdk.platform.BasePluginPlatform;
5+
import io.tebex.sdk.platform.PlatformTelemetry;
6+
import io.tebex.sdk.platform.PlatformType;
7+
import io.tebex.sdk.platform.config.ServerPlatformConfig;
8+
import io.tebex.sdk.util.CommandResult;
9+
import me.lucko.fabric.api.permissions.v0.Permissions;
10+
import net.minecraft.item.ItemStack;
11+
import net.minecraft.server.MinecraftServer;
12+
import net.minecraft.server.network.ServerPlayerEntity;
13+
import net.minecraft.text.Text;
14+
import net.minecraft.util.collection.DefaultedList;
15+
import org.apache.logging.log4j.LogManager;
16+
import org.apache.logging.log4j.Logger;
17+
18+
import java.io.File;
19+
import java.util.UUID;
20+
import java.util.logging.Level;
21+
import java.util.regex.Matcher;
22+
import java.util.regex.Pattern;
23+
24+
public class FabricPluginPlatform extends BasePluginPlatform {
25+
private BuyGUI buyGUI;
26+
private final TebexFabricPlugin plugin;
27+
28+
private static final String MOD_ID = "tebex";
29+
public static final Logger LOGGER = LogManager.getLogger(MOD_ID);
30+
private final File MOD_PATH = new File("./mods/" + MOD_ID);
31+
32+
private MinecraftServer server;
33+
34+
public FabricPluginPlatform(TebexFabricPlugin plugin) {
35+
this.plugin = plugin;
36+
}
37+
38+
public void initBuyGui() {
39+
buyGUI = new BuyGUI(this);
40+
}
41+
42+
public MinecraftServer getServer() {
43+
return server;
44+
}
45+
46+
public void setMinecraftServer(MinecraftServer server) {
47+
this.server = server;
48+
}
49+
50+
@Override
51+
public PlatformType getType() {
52+
return PlatformType.FABRIC;
53+
}
54+
55+
@Override
56+
public File getRunningDirectory() {
57+
return MOD_PATH;
58+
}
59+
60+
@Override
61+
public boolean isOnlineMode() {
62+
ServerPlatformConfig serverConfig = (ServerPlatformConfig) getPlatformConfig();
63+
return serverConfig.isProxyMode() || server.isOnlineMode();
64+
}
65+
66+
@Override
67+
public CommandResult dispatchCommand(String command) {
68+
server.getCommandManager().execute(server.getCommandSource().getDispatcher().parse(command, server.getCommandSource()), command);
69+
return CommandResult.from(true); // we assume success because the command manager does not report any result
70+
}
71+
72+
@Override
73+
public <T> T getPlayer(Object uuidOrUsername) {
74+
if(uuidOrUsername == null) return null;
75+
76+
if (isOnlineMode() && !isGeyser() && uuidOrUsername instanceof UUID) {
77+
return (T)server.getPlayerManager().getPlayer((UUID) uuidOrUsername);
78+
}
79+
80+
return (T)(server.getPlayerManager().getPlayer((String) uuidOrUsername));
81+
}
82+
83+
@Override
84+
public int getFreeSlots(Object playerId) {
85+
ServerPlayerEntity player = getPlayer(playerId);
86+
if (player == null) return -1;
87+
88+
DefaultedList<ItemStack> inv = player.getInventory().main;
89+
return (int) inv.stream()
90+
.filter(obj -> obj == null || obj.isEmpty())
91+
.count();
92+
}
93+
94+
@Override
95+
public String getPluginVersion() {
96+
return "@VERSION@";
97+
}
98+
99+
@Override
100+
public void log(Level level, String message) {
101+
if(level == Level.INFO) {
102+
LOGGER.info(message);
103+
} else if(level == Level.WARNING) {
104+
LOGGER.warn(message);
105+
} else if(level == Level.SEVERE) {
106+
LOGGER.error(message);
107+
} else {
108+
LOGGER.info(message);
109+
}
110+
}
111+
112+
@Override
113+
public PlatformTelemetry getTelemetry() {
114+
String serverVersion = server.getVersion();
115+
116+
Pattern pattern = Pattern.compile("MC: (\\d+\\.\\d+\\.\\d+)");
117+
Matcher matcher = pattern.matcher(serverVersion);
118+
if (matcher.find()) {
119+
serverVersion = matcher.group(1);
120+
}
121+
122+
return new PlatformTelemetry(
123+
getPluginVersion(),
124+
server.getName(),
125+
serverVersion,
126+
System.getProperty("java.version"),
127+
System.getProperty("os.arch"),
128+
server.isOnlineMode()
129+
);
130+
}
131+
132+
@Override
133+
public void sendPlayerMessage(String playerName, String message) {
134+
ServerPlayerEntity player = getPlayer(playerName);
135+
if (player != null){
136+
player.sendMessage(Text.of(message));
137+
}
138+
}
139+
140+
@Override
141+
public boolean hasPermission(String username, String permission) {
142+
ServerPlayerEntity player = getPlayer(username); //ops override permissions in case no manager is used
143+
return player != null && (Permissions.check(player, permission, false) || player.hasPermissionLevel(4));
144+
}
145+
}
Lines changed: 41 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,41 @@
1+
package io.tebex.plugin;
2+
3+
import net.minecraft.block.Block;
4+
import net.minecraft.item.Item;
5+
import net.minecraft.registry.Registries;
6+
import net.minecraft.util.Identifier;
7+
8+
import java.util.HashMap;
9+
import java.util.Map;
10+
import java.util.Optional;
11+
12+
public class ItemUtil {
13+
private static final Map<String, Item> ITEM_CACHE = new HashMap<>();
14+
15+
public static Optional<Item> fromString(String material) {
16+
if (ITEM_CACHE.containsKey(material)) {
17+
return Optional.of(ITEM_CACHE.get(material));
18+
}
19+
20+
if (material.contains(":")) {
21+
String namespace = material.split(":")[0];
22+
String itemName = material.split(":")[1];
23+
Identifier id = Identifier.of(namespace, itemName);
24+
25+
Optional<Item> item = Registries.ITEM.getOrEmpty(id);
26+
item.ifPresent(value -> ITEM_CACHE.put(material, value));
27+
28+
if (item.isEmpty()) { // attempt block item lookup
29+
Optional<Block> blockItem = Registries.BLOCK.getOrEmpty(id);
30+
if (blockItem.isPresent()) {
31+
item = Optional.of(blockItem.get().asItem());
32+
ITEM_CACHE.put(material, item.get());
33+
}
34+
}
35+
return item;
36+
}
37+
38+
// no namespace in material identifier
39+
return Optional.empty();
40+
}
41+
}
Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
package io.tebex.plugin;
2+
3+
import io.tebex.sdk.obj.QueuedPlayer;
4+
import io.tebex.sdk.obj.ServerEvent;
5+
import io.tebex.sdk.obj.EnumServerEventType;
6+
import net.fabricmc.fabric.api.networking.v1.ServerPlayConnectionEvents;
7+
import net.minecraft.server.network.ServerPlayerEntity;
8+
9+
public class JoinListener {
10+
private final TebexFabricPlugin plugin;
11+
12+
public JoinListener(TebexFabricPlugin plugin) {
13+
this.plugin = plugin;
14+
ServerPlayConnectionEvents.JOIN.register((handler, sender, server) -> onPlayerJoin(handler.player));
15+
}
16+
17+
private void onPlayerJoin(ServerPlayerEntity player) {
18+
Object playerId = plugin.getPlatform().getPlayerId(player.getName().getString(), player.getUuid());
19+
plugin.getPlatform().getJoinEvents().add(new ServerEvent(player.getUuid().toString(), player.getName().getString(), player.getIp(), EnumServerEventType.JOIN));
20+
21+
if(! plugin.getPlatform().getQueuedPlayers().containsKey(playerId)) {
22+
return;
23+
}
24+
25+
plugin.getPlatform().handleOnlineCommands(new QueuedPlayer(plugin.getPlatform().getQueuedPlayers().get(playerId), player.getName().getString(), player.getUuid().toString()));
26+
}
27+
}
28+

0 commit comments

Comments
 (0)