Skip to content

Commit a1f40c6

Browse files
committed
hephaestus packet debug
1 parent 8a0abe7 commit a1f40c6

File tree

6 files changed

+123
-5
lines changed

6 files changed

+123
-5
lines changed

build.gradle.kts

+24-3
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,10 @@ repositories {
1919
maven("https://maven.tterrag.com/") // Flywheel
2020
maven("https://api.modrinth.com/maven")
2121
maven("https://maven.ithundxr.dev/releases")
22+
maven("https://maven.shedaniel.me/") // Mantle deps
23+
exclusiveMaven("https://maven.ladysnake.org/releases", "dev.onyxstudios.cardinal-components-api") // Cardinal Components
24+
exclusiveMaven("https://maven.wispforest.io", "me.alphamode")
25+
exclusiveMaven("https://maven.terraformersmc.com/releases/", "com.terraformersmc")
2226
}
2327

2428
dependencies {
@@ -34,13 +38,19 @@ dependencies {
3438
modImplementation("net.fabricmc:fabric-loader:${"fabric_loader_version"()}")
3539
modImplementation("net.fabricmc.fabric-api:fabric-api:${"fabric_api_version"()}")
3640

41+
modImplementation("maven.modrinth:hephaestus:${"minecraft_version"()}-${"hephaestus_version"()}")
42+
modImplementation("slimeknights.mantle:Mantle:${"minecraft_version"()}-${"mantle_version"()}")
43+
for (pl_module in "accessors,attributes,base,brewing,client_events,core,common,config,data,entity,extensions,items,models,model_loader,networking,tags,tool_actions,transfer,fluids,lazy_registration,loot,utility".split(",")) {
44+
modRuntimeOnly("io.github.fabricators_of_create.Porting-Lib:${pl_module}:2.3.4+1.20.1")
45+
}
46+
3747
modImplementation("com.simibubi.create:create-fabric-${"minecraft_version"()}:${"create_version"()}")
38-
48+
3949
modImplementation("com.railwayteam.railways:Steam_Rails-fabric-1.20.1:1.6.4+fabric-mc1.20.1")
4050
modImplementation("dev.ithundxr.createnumismatics:CreateNumismatics-fabric-1.20.1:1.0.6+fabric-mc1.20.1")
41-
51+
4252
modCompileOnly("maven.modrinth:copycats:fabric.1.20.1-1.3.2")
43-
53+
4454
modCompileOnly("maven.modrinth:appleskin:2.5.1+mc1.20")
4555
}
4656

@@ -86,3 +96,14 @@ operator fun String.invoke(): String {
8696
return rootProject.ext[this] as? String
8797
?: throw IllegalStateException("Property $this is not defined")
8898
}
99+
100+
fun RepositoryHandler.exclusiveMaven(url: String, vararg groups: String) {
101+
exclusiveContent {
102+
forRepository { maven(url) }
103+
filter {
104+
groups.forEach {
105+
includeGroup(it)
106+
}
107+
}
108+
}
109+
}

gradle.properties

+9-1
Original file line numberDiff line numberDiff line change
@@ -21,4 +21,12 @@ fabric_api_version=0.92.0+1.20.1
2121

2222
# Create
2323
# https://modrinth.com/mod/create-fabric/versions
24-
create_version = 0.5.1-f-build.1335+mc1.20.1
24+
create_version = 0.5.1-f-build.1417+mc1.20.1
25+
26+
# Hephaestus (Fabric Tinker's Construct)
27+
# https://modrinth.com/mod/hephaestus/versions
28+
hephaestus_version = 3.6.4.279
29+
30+
# Mantle
31+
# https://github.com/Alpha-s-Stuff/TinkersConstruct/blob/1.20.1/gradle.properties
32+
mantle_version = 1.9.269

src/main/java/dev/ithundxr/railwaystweaks/RailwaysTweaks.java

+3
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55
import org.slf4j.Logger;
66
import org.slf4j.LoggerFactory;
77
import org.spongepowered.asm.mixin.MixinEnvironment;
8+
import dev.ithundxr.railwaystweaks.commands.RailwaysTweaksCommands;
89

910
public class RailwaysTweaks implements ModInitializer {
1011
public static final String MODID = "railwaystweaks";
@@ -14,6 +15,8 @@ public class RailwaysTweaks implements ModInitializer {
1415
public void onInitialize() {
1516
LOGGER.info("Railways Tweaks is loading...");
1617

18+
RailwaysTweaksCommands.init();
19+
1720
if (FabricLoader.getInstance().isDevelopmentEnvironment())
1821
MixinEnvironment.getCurrentEnvironment().audit();
1922
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,67 @@
1+
package dev.ithundxr.railwaystweaks.commands;
2+
3+
import com.mojang.brigadier.builder.ArgumentBuilder;
4+
import dev.ithundxr.railwaystweaks.mixin.compat.tconstruct.SimpleChannelAccessor;
5+
import me.pepperbell.simplenetworking.C2SPacket;
6+
import me.pepperbell.simplenetworking.S2CPacket;
7+
import net.fabricmc.fabric.api.command.v2.CommandRegistrationCallback;
8+
import net.minecraft.commands.CommandSourceStack;
9+
import net.minecraft.network.chat.Component;
10+
import slimeknights.tconstruct.common.network.TinkerNetwork;
11+
12+
import java.util.ArrayList;
13+
import java.util.HashMap;
14+
import java.util.List;
15+
import java.util.Map;
16+
17+
import static net.minecraft.commands.Commands.literal;
18+
19+
public class RailwaysTweaksCommands {
20+
public static void init() {
21+
CommandRegistrationCallback.EVENT.register((dispatcher, registryAccess, environment) -> {
22+
dispatcher.register(literal("railwaystweaks")
23+
.then($dump_hephaestus_packets()));
24+
});
25+
}
26+
27+
private static ArgumentBuilder<CommandSourceStack, ?> $dump_hephaestus_packets() {
28+
return literal("dump_hephaestus_packets")
29+
.requires(cs -> cs.hasPermission(2))
30+
.executes(ctx -> dumpHephaestusPackets(ctx.getSource()));
31+
}
32+
33+
private static int dumpHephaestusPackets(CommandSourceStack source) {
34+
TinkerNetwork tinkerNetwork = TinkerNetwork.getInstance();
35+
36+
Map<Integer, Class<? extends S2CPacket>> idToS2C = new HashMap<>();
37+
Map<Integer, Class<? extends C2SPacket>> idToC2S = new HashMap<>();
38+
((SimpleChannelAccessor) tinkerNetwork.network).getS2cIdMap().forEach((packet, id) -> {
39+
idToS2C.put(id, packet);
40+
});
41+
((SimpleChannelAccessor) tinkerNetwork.network).getC2sIdMap().forEach((packet, id) -> {
42+
idToC2S.put(id, packet);
43+
});
44+
List<Integer> sortedS2CIds = new ArrayList<>(idToS2C.keySet());
45+
List<Integer> sortedC2SIds = new ArrayList<>(idToC2S.keySet());
46+
sortedS2CIds.sort(Integer::compareTo);
47+
sortedC2SIds.sort(Integer::compareTo);
48+
49+
StringBuilder sb = new StringBuilder();
50+
sb.append("Hephaestus S2C packets:\n");
51+
sortedS2CIds.forEach(id -> {
52+
var packet = idToS2C.get(id);
53+
sb.append(id).append(" -> ").append(packet.getName()).append("\n");
54+
});
55+
56+
sb.append("\n");
57+
sb.append("Hephaestus C2S packets:\n");
58+
sortedC2SIds.forEach(id -> {
59+
var packet = idToC2S.get(id);
60+
sb.append(id).append(" -> ").append(packet.getName()).append("\n");
61+
});
62+
63+
source.sendSuccess(() -> Component.literal(sb.toString()), true);
64+
65+
return 0;
66+
}
67+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
package dev.ithundxr.railwaystweaks.mixin.compat.tconstruct;
2+
3+
import me.pepperbell.simplenetworking.C2SPacket;
4+
import me.pepperbell.simplenetworking.S2CPacket;
5+
import me.pepperbell.simplenetworking.SimpleChannel;
6+
import org.spongepowered.asm.mixin.Mixin;
7+
import org.spongepowered.asm.mixin.gen.Accessor;
8+
9+
import java.util.Map;
10+
11+
@Mixin(SimpleChannel.class)
12+
public interface SimpleChannelAccessor {
13+
@Accessor
14+
Map<Class<? extends S2CPacket>, Integer> getS2cIdMap();
15+
16+
@Accessor
17+
Map<Class<? extends C2SPacket>, Integer> getC2sIdMap();
18+
}

src/main/resources/railwaystweaks.mixins.json

+2-1
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,8 @@
88
"LivingEntityMixin",
99
"ServerPlayerMixin",
1010
"ServerStatusPacketListenerImplMixin",
11-
"compat.appleskin.SyncHandlerMixin"
11+
"compat.appleskin.SyncHandlerMixin",
12+
"compat.tconstruct.SimpleChannelAccessor"
1213
],
1314
"client": [
1415
"client.HttpTextureMixin",

0 commit comments

Comments
 (0)