Skip to content

Commit

Permalink
Add Jade compatibility (#188)
Browse files Browse the repository at this point in the history
  • Loading branch information
Edivad99 committed Mar 13, 2024
1 parent d51fba7 commit 87e71c5
Show file tree
Hide file tree
Showing 34 changed files with 543 additions and 73 deletions.
8 changes: 8 additions & 0 deletions build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -121,6 +121,10 @@ repositories {
name 'JEI/Patchouli'
url 'https://maven.blamejared.com/'
}
maven {
name 'curseforge'
url 'https://www.cursemaven.com'
}
}

dependencies {
Expand All @@ -137,6 +141,10 @@ dependencies {

compileOnly fg.deobf("vazkii.patchouli:Patchouli:$patchouli_version:api")
runtimeOnly fg.deobf("vazkii.patchouli:Patchouli:$patchouli_version")

compileOnly fg.deobf("curse.maven:jade-api-324717:$jade_id_api")
runtimeOnly fg.deobf("curse.maven:jade-324717:$jade_id")

}

test {
Expand Down
2 changes: 2 additions & 0 deletions gradle.properties
Original file line number Diff line number Diff line change
Expand Up @@ -24,3 +24,5 @@ mixin_version=0.8.5
jupiter_version=5.10.1
jei_version=15.2.0.27
patchouli_version=1.20.1-84-FORGE
jade_id_api=5073670
jade_id=5072729
15 changes: 13 additions & 2 deletions src/api/java/mods/railcraft/api/signal/SignalAspect.java
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,9 @@ This work (the API) is licensed under the "MIT" License,
import org.jetbrains.annotations.Nullable;
import mods.railcraft.api.core.RailcraftConstants;
import mods.railcraft.api.util.EnumUtil;
import net.minecraft.ChatFormatting;
import net.minecraft.network.chat.Component;
import net.minecraft.network.chat.MutableComponent;
import net.minecraft.util.StringRepresentable;
import net.minecraft.world.item.DyeColor;

Expand Down Expand Up @@ -50,7 +52,7 @@ public enum SignalAspect implements StringRepresentable {

private final String name;
private final int blockLight;
private final Component displayName;
private final MutableComponent displayName;

private static final int LAMP_LIGHT = 12;
private static final int BLINK_DELAY_TICKS = 16;
Expand All @@ -72,10 +74,19 @@ public int getBlockLight() {
return this.blockLight;
}

public Component getDisplayName() {
public MutableComponent getDisplayName() {
return this.displayName;
}

public MutableComponent getDisplayNameWithColor() {
var color = switch (this) {
case GREEN -> ChatFormatting.GREEN;
case YELLOW, BLINK_YELLOW -> ChatFormatting.YELLOW;
case BLINK_RED, RED, OFF -> ChatFormatting.RED;
};
return this.getDisplayName().copy().withStyle(color);
}

@Override
public String getSerializedName() {
return this.name;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
// 1.20.1 2024-02-23T16:56:41.871174276 Languages: en_us
e539a84f64868a5c36f85e849eae8433b1241776 assets/railcraft/lang/en_us.json
// 1.20.1 2024-03-13T13:11:54.703285 Languages: en_us
05e8a7cd6ca20cd8f6103a563640bbf6779668a8 assets/railcraft/lang/en_us.json
13 changes: 13 additions & 0 deletions src/generated/resources/assets/railcraft/lang/en_us.json
Original file line number Diff line number Diff line change
Expand Up @@ -411,6 +411,10 @@
"charge_meter.railcraft.node": "Node -> Draw: %s FE/t | Loss: %s FE/t",
"charge_meter.railcraft.producer": "Supply -> Charge: %s FE | Production: %s FE/t | MaxDraw: %s FE/t | Loss: %s FE/t | Eff: %s%%",
"charge_meter.railcraft.start": "Recording data over %s seconds...",
"config.jade.plugin_railcraft.locomotive": "Locomotive",
"config.jade.plugin_railcraft.signals": "Signals",
"config.jade.plugin_railcraft.switch_track": "Switch Track",
"config.jade.plugin_railcraft.track_component": "Track Component",
"container.railcraft.blast_furnace": "Blast Furnace",
"container.railcraft.coke_oven": "Coke Oven",
"container.railcraft.crusher": "Crusher",
Expand Down Expand Up @@ -686,6 +690,15 @@
"jei.railcraft.tips.crusher": "(%s%% chance)",
"key.railcraft.category": "Railcraft Reborn",
"key.railcraft.change_aura": "Change Aura",
"looking_at.railcraft.aspect_received": "Aspect received: ",
"looking_at.railcraft.aspect_relayed": "Aspect relayed: ",
"looking_at.railcraft.aspect_sent": "Aspect sent: ",
"looking_at.railcraft.mode": "Mode: ",
"looking_at.railcraft.no": "No",
"looking_at.railcraft.reverse": "Reverse: ",
"looking_at.railcraft.speed": "Speed: %sx",
"looking_at.railcraft.switched": "Switched: ",
"looking_at.railcraft.yes": "Yes",
"manual.railcraft.routing_table.page.1": "The Routing Table when placed in a Routing Detector or Switch will define a set of rules that are used to match against any passing Locomotive. These rules are define using a simple logic syntax that allows you to create rules as simple or complex as you like. The syntax is a Prefix Notation script, the Operators are followed by the Operands. Only one keyword is allowed per line. If no Operator is specified, OR is assumed. Routing Tables can be copied by placing two or more in a crafting grid.",
"manual.railcraft.routing_table.page.10": "Result:\n The script on the previous page will\n match a Locomotive with a destination\n of \"TheFarLands/Milliways\",\n or that is painted black and red,\n or that has a destination of\n \"SecretHideout/OceanEntrance\",\n but only if its not owned by Steve.\n",
"manual.railcraft.routing_table.page.11": "Regular Expressions:\n Some Conditions support\n Regular Expressions.\n To use a regex, add a '?' before the '='.\n Rules are standard Java Patterns.\nSupporting Conditions:\n Dest, Name\nExample:\n Dest?=.*Hill\n",
Expand Down
20 changes: 20 additions & 0 deletions src/main/java/mods/railcraft/Translations.java
Original file line number Diff line number Diff line change
Expand Up @@ -395,6 +395,22 @@ public static class Jei {
public static final String SPLIT = makeKey("jei.gui", "split");
}

public static class LookingAt {
public static final String SIGNALS = makeJadeKey("signals");
public static final String SWITCH_TRACK = makeJadeKey("switch_track");
public static final String LOCOMOTIVE = makeJadeKey("locomotive");
public static final String TRACK_COMPONENT = makeJadeKey("track_component");
public static final String ASPECT_SENT = makeKey("looking_at", "aspect_sent");
public static final String ASPECT_RECEIVED = makeKey("looking_at", "aspect_received");
public static final String ASPECT_RELAYED = makeKey("looking_at", "aspect_relayed");
public static final String SWITCHED = makeKey("looking_at", "switched");
public static final String YES = makeKey("looking_at", "yes");
public static final String NO = makeKey("looking_at", "no");
public static final String MODE = makeKey("looking_at", "mode");
public static final String SPEED = makeKey("looking_at", "speed");
public static final String REVERSE = makeKey("looking_at", "reverse");
}

public static class Signal {

public static final String SIGNAL_SURVEYOR_INVALID_TRACK =
Expand Down Expand Up @@ -587,4 +603,8 @@ public static class EnchantmentDescriptions {
public static String makeKey(String type, String name) {
return RailcraftConstants.makeTranslationKey(type, name);
}

private static String makeJadeKey(String name) {
return String.format("config.jade.plugin_%s.%s", RailcraftConstants.ID, name);
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -66,15 +66,10 @@ public void init() {

// Mode buttons
for (var mode : this.locomotive.getSupportedModes()) {
var translationKey = switch (mode) {
case IDLE -> Translations.Screen.LOCOMOTIVE_MODE_IDLE;
case SHUTDOWN -> Translations.Screen.LOCOMOTIVE_MODE_SHUTDOWN;
case RUNNING -> Translations.Screen.LOCOMOTIVE_MODE_RUNNING;
};
var tooltip = Component.translatable(Translations.makeKey("screen",
String.format("locomotive.%s.mode.description.%s", type, mode.getSerializedName())));
var button = this.addRenderableWidget(RailcraftButton
.builder(translationKey, __ -> this.setMode(mode), ButtonTexture.SMALL_BUTTON)
.builder(mode.getDisplayName(), __ -> this.setMode(mode), ButtonTexture.SMALL_BUTTON)
.size(54, 16)
.tooltip(Tooltip.create(tooltip))
.build());
Expand Down
17 changes: 17 additions & 0 deletions src/main/java/mods/railcraft/data/RailcraftLanguageProvider.java
Original file line number Diff line number Diff line change
Expand Up @@ -45,6 +45,7 @@ protected void addTranslations() {
this.tipsTranslations();
this.screenTranslations();
this.jeiTranslations();
this.lookingAtTranslations();
this.signalTranslations();
this.enchantmentTranslations();
this.advancementTranslations();
Expand Down Expand Up @@ -930,6 +931,22 @@ private void jeiTranslations() {
this.add(Translations.Jei.SPLIT, "Split");
}

private void lookingAtTranslations() {
this.add(Translations.LookingAt.SIGNALS, "Signals");
this.add(Translations.LookingAt.SWITCH_TRACK, "Switch Track");
this.add(Translations.LookingAt.LOCOMOTIVE, "Locomotive");
this.add(Translations.LookingAt.TRACK_COMPONENT, "Track Component");
this.add(Translations.LookingAt.ASPECT_SENT, "Aspect sent: ");
this.add(Translations.LookingAt.ASPECT_RECEIVED, "Aspect received: ");
this.add(Translations.LookingAt.ASPECT_RELAYED, "Aspect relayed: ");
this.add(Translations.LookingAt.SWITCHED, "Switched: ");
this.add(Translations.LookingAt.YES, "Yes");
this.add(Translations.LookingAt.NO, "No");
this.add(Translations.LookingAt.MODE, "Mode: ");
this.add(Translations.LookingAt.SPEED, "Speed: %sx");
this.add(Translations.LookingAt.REVERSE, "Reverse: ");
}

private void signalTranslations() {
this.add(Translations.Signal.SIGNAL_SURVEYOR_INVALID_TRACK, "Track not found");
this.add(Translations.Signal.SIGNAL_SURVEYOR_BEGIN, "Beginning signal survey");
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
package mods.railcraft.integrations.jade;

import mods.railcraft.Translations;
import mods.railcraft.api.core.RailcraftConstants;
import mods.railcraft.world.level.block.track.outfitted.CouplerTrackBlock;
import net.minecraft.ChatFormatting;
import net.minecraft.network.chat.Component;
import net.minecraft.resources.ResourceLocation;
import snownee.jade.api.BlockAccessor;
import snownee.jade.api.IBlockComponentProvider;
import snownee.jade.api.ITooltip;
import snownee.jade.api.config.IPluginConfig;

class CouplerTrackComponent implements IBlockComponentProvider {

@Override
public void appendTooltip(ITooltip tooltip, BlockAccessor accessor, IPluginConfig config) {
if (accessor.getBlock() instanceof CouplerTrackBlock) {
var mode = CouplerTrackBlock.getMode(accessor.getBlockState()).getDisplayName();
tooltip.add(Component.translatable(Translations.Tips.CURRENT_MODE)
.append(" ").append(mode.copy().withStyle(ChatFormatting.DARK_PURPLE)));
}
}

@Override
public ResourceLocation getUid() {
return RailcraftConstants.rl("track_component");
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
package mods.railcraft.integrations.jade;

import mods.railcraft.Translations;
import mods.railcraft.api.core.RailcraftConstants;
import mods.railcraft.world.level.block.track.outfitted.EmbarkingTrackBlock;
import net.minecraft.network.chat.Component;
import net.minecraft.resources.ResourceLocation;
import snownee.jade.api.BlockAccessor;
import snownee.jade.api.IBlockComponentProvider;
import snownee.jade.api.ITooltip;
import snownee.jade.api.config.IPluginConfig;

class EmbarkingTrackComponent implements IBlockComponentProvider {

@Override
public void appendTooltip(ITooltip tooltip, BlockAccessor accessor, IPluginConfig config) {
if (accessor.getBlock() instanceof EmbarkingTrackBlock) {
var radius = EmbarkingTrackBlock.getRadius(accessor.getBlockState());
tooltip.add(Component.translatable(Translations.Screen.EMBARKING_TRACK_RADIUS, radius));
}
}

@Override
public ResourceLocation getUid() {
return RailcraftConstants.rl("track_component");
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
package mods.railcraft.integrations.jade;

import mods.railcraft.Translations;
import mods.railcraft.api.core.RailcraftConstants;
import mods.railcraft.world.level.block.entity.track.LauncherTrackBlockEntity;
import net.minecraft.network.chat.Component;
import net.minecraft.resources.ResourceLocation;
import snownee.jade.api.BlockAccessor;
import snownee.jade.api.IBlockComponentProvider;
import snownee.jade.api.ITooltip;
import snownee.jade.api.config.IPluginConfig;

class LauncherTrackComponent implements IBlockComponentProvider {

@Override
public void appendTooltip(ITooltip tooltip, BlockAccessor accessor, IPluginConfig config) {
if (accessor.getBlockEntity() instanceof LauncherTrackBlockEntity launcherTrack) {
var force = launcherTrack.getLaunchForce();
tooltip.add(Component.translatable(Translations.Screen.LAUNCHER_TRACK_LAUNCH_FORCE, force));
}
}

@Override
public ResourceLocation getUid() {
return RailcraftConstants.rl("track_component");
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
package mods.railcraft.integrations.jade;

import mods.railcraft.Translations;
import mods.railcraft.api.core.RailcraftConstants;
import mods.railcraft.world.level.block.track.outfitted.LockingTrackBlock;
import net.minecraft.ChatFormatting;
import net.minecraft.network.chat.Component;
import net.minecraft.resources.ResourceLocation;
import snownee.jade.api.BlockAccessor;
import snownee.jade.api.IBlockComponentProvider;
import snownee.jade.api.ITooltip;
import snownee.jade.api.config.IPluginConfig;

class LockingTrackComponent implements IBlockComponentProvider {

@Override
public void appendTooltip(ITooltip tooltip, BlockAccessor accessor, IPluginConfig config) {
if (accessor.getBlock() instanceof LockingTrackBlock) {
var mode = LockingTrackBlock.getLockingMode(accessor.getBlockState()).getDisplayName();
tooltip.add(Component.translatable(Translations.Tips.CURRENT_MODE)
.append(" ").append(mode.copy().withStyle(ChatFormatting.DARK_PURPLE)));
}
}

@Override
public ResourceLocation getUid() {
return RailcraftConstants.rl("track_component");
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
package mods.railcraft.integrations.jade;

import mods.railcraft.Translations;
import mods.railcraft.api.core.RailcraftConstants;
import mods.railcraft.world.entity.vehicle.locomotive.Locomotive;
import net.minecraft.network.chat.Component;
import net.minecraft.resources.ResourceLocation;
import snownee.jade.api.EntityAccessor;
import snownee.jade.api.IEntityComponentProvider;
import snownee.jade.api.ITooltip;
import snownee.jade.api.config.IPluginConfig;

class LocomotiveComponent implements IEntityComponentProvider {

@Override
public void appendTooltip(ITooltip tooltip, EntityAccessor accessor, IPluginConfig config) {
var entity = accessor.getEntity();
if (entity instanceof Locomotive locomotive) {
tooltip.add(Component.translatable(Translations.LookingAt.MODE)
.append(locomotive.getMode().getDisplayName()));
tooltip.add(
Component.translatable(Translations.LookingAt.SPEED, locomotive.getSpeed().getLevel()));
var reverse = locomotive.isReverse() ? Translations.LookingAt.YES : Translations.LookingAt.NO;
tooltip.add(Component.translatable(Translations.LookingAt.REVERSE)
.append(Component.translatable(reverse)));
}
}

@Override
public ResourceLocation getUid() {
return RailcraftConstants.rl("locomotive");
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
package mods.railcraft.integrations.jade;

import mods.railcraft.Translations;
import mods.railcraft.api.core.RailcraftConstants;
import mods.railcraft.world.level.block.track.outfitted.LocomotiveTrackBlock;
import net.minecraft.ChatFormatting;
import net.minecraft.network.chat.Component;
import net.minecraft.resources.ResourceLocation;
import snownee.jade.api.BlockAccessor;
import snownee.jade.api.IBlockComponentProvider;
import snownee.jade.api.ITooltip;
import snownee.jade.api.config.IPluginConfig;

class LocomotiveTrackComponent implements IBlockComponentProvider {

@Override
public void appendTooltip(ITooltip tooltip, BlockAccessor accessor, IPluginConfig config) {
if (accessor.getBlock() instanceof LocomotiveTrackBlock) {
var mode = LocomotiveTrackBlock.getMode(accessor.getBlockState()).getDisplayName();
tooltip.add(Component.translatable(Translations.Tips.CURRENT_MODE)
.append(" ").append(mode.copy().withStyle(ChatFormatting.DARK_PURPLE)));
}
}

@Override
public ResourceLocation getUid() {
return RailcraftConstants.rl("track_component");
}
}

0 comments on commit 87e71c5

Please sign in to comment.