Skip to content

Commit e25308e

Browse files
authored
Full Jade Compat (#593)
* Add a switch for jade or oneprobe in gradle files
1 parent e443f6c commit e25308e

File tree

9 files changed

+298
-11
lines changed

9 files changed

+298
-11
lines changed

build.gradle

Lines changed: 14 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -268,13 +268,21 @@ dependencies {
268268
compileOnly fg.deobf("mezz.jei:jei-${jei_mc_version}-forge-api:${jei_version}")
269269
runtimeOnly fg.deobf("mezz.jei:jei-${jei_mc_version}-forge:${jei_version}")
270270

271-
// The One Probe
272-
implementation(fg.deobf("curse.maven:theoneprobe-245211:4629624"))
271+
// Visual Data Mod
272+
compileOnly fg.deobf("curse.maven:theoneprobe-245211:4629624")
273+
compileOnly fg.deobf("curse.maven:jade-324717:5776962")
273274

274275
if (!System.getenv().containsKey("CI") && include_test_mods.equals("true")) {
275276
// Nicephore - Screenshots and Stuff
276277
//runtimeOnly(fg.deobf("curse.maven:nicephore-401014:3879841"))
277278

279+
// Visual Data Mods
280+
if (visual_info_mod.equals("theoneprobe")) {
281+
implementation(fg.deobf("curse.maven:theoneprobe-245211:4629624"))
282+
} else if (visual_info_mod.equals("jade")) {
283+
implementation(fg.deobf("curse.maven:jade-324717:5776962"))
284+
}
285+
278286
// Testing Mods - Trash Cans, Pipez, Create, Refined Pipes, Pretty Pipes, Refined Storage
279287
runtimeOnly(fg.deobf("curse.maven:SuperMartijn642Core-454372:5668859"))
280288
runtimeOnly(fg.deobf("curse.maven:SuperMartijn642Config-438332:4715408"))
@@ -296,10 +304,10 @@ dependencies {
296304
// runtimeOnly(fg.deobf("curse.maven:immersiveeng-231951:3587149"))
297305

298306
// FTB Chunks
299-
// runtimeOnly(fg.deobf("curse.maven:architectury-forge-419699:3781711"))
300-
// runtimeOnly(fg.deobf("curse.maven:ftb-teams-404468:3725501"))
301-
// runtimeOnly(fg.deobf("curse.maven:ftblib-404465:3725485"))
302-
// runtimeOnly(fg.deobf("curse.maven:ftbchunks-314906:3780113"))
307+
// runtimeOnly(fg.deobf("curse.maven:architectury-forge-419699:5137938"))
308+
// runtimeOnly(fg.deobf("curse.maven:ftb-teams-404468:5267190"))
309+
// runtimeOnly(fg.deobf("curse.maven:ftblib-404465:5567591"))
310+
// runtimeOnly(fg.deobf("curse.maven:ftbchunks-314906:5856503"))
303311

304312
// Mekanism + Mek Generators - Tunnel testing
305313
runtimeOnly(fg.deobf("curse.maven:mekanism-268560:5662583"))

gradle.properties

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,4 +18,6 @@ jei_version=15.18.0.79
1818
mixin_version = 0.8.5
1919
mixingradle_version = 0.7-SNAPSHOT
2020

21-
include_test_mods = true
21+
include_test_mods = true
22+
# theoneprobe or jade or none
23+
visual_info_mod = jade
Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
package dev.compactmods.machines.api.core;
2+
3+
import net.minecraft.resources.ResourceLocation;
4+
5+
public class JadeInfo {
6+
public static final String JADE_CONFIG = "config.jade.plugin_compactmachines";
7+
8+
public static final String MACHINE = JADE_CONFIG.concat(".machine");
9+
public static final String MACHINE_TUNNELS = JADE_CONFIG.concat(".machine_tunnels");
10+
public static final String TUNNEL = JADE_CONFIG.concat(".tunnel");
11+
public static final String TUNNEL_CONNECTION = JADE_CONFIG.concat(".tunnel_connection");
12+
}

src/datagen/java/dev/compactmods/machines/datagen/lang/EnglishLangGenerator.java

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,6 @@
11
package dev.compactmods.machines.datagen.lang;
22

3-
import dev.compactmods.machines.api.core.CMCommands;
4-
import dev.compactmods.machines.api.core.Constants;
5-
import dev.compactmods.machines.api.core.Messages;
6-
import dev.compactmods.machines.api.core.Tooltips;
3+
import dev.compactmods.machines.api.core.*;
74
import dev.compactmods.machines.api.room.RoomSize;
85
import dev.compactmods.machines.api.room.upgrade.RoomUpgrade;
96
import dev.compactmods.machines.client.CreativeTabs;
@@ -109,6 +106,13 @@ protected void addTranslations() {
109106

110107
addMessage(Messages.UNKNOWN_ROOM_CHUNK, "Unknown room at %s; please verify it exists.");
111108

109+
// Jade Plugin Specific Translations
110+
add(JadeInfo.MACHINE, "Compact Machine Block Information");
111+
add(JadeInfo.MACHINE_TUNNELS, "Compact Machine Tunnel Presence");
112+
add(JadeInfo.TUNNEL, "Tunnel Information");
113+
add(JadeInfo.TUNNEL_CONNECTION, "Tunnel Connection");
114+
115+
112116
add("biome." + Constants.MOD_ID + ".machine", "Compact Machine");
113117

114118
add("compactmachines.psd.pages.machines.title", "Compact Machines");
Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
package dev.compactmods.machines.compat.jade;
2+
3+
import dev.compactmods.machines.compat.jade.providers.client.CompactMachineProvider;
4+
import dev.compactmods.machines.compat.jade.providers.client.TunnelProvider;
5+
import dev.compactmods.machines.compat.jade.providers.server.CompactMachineComponentProvider;
6+
import dev.compactmods.machines.compat.jade.providers.server.TunnelComponentProvider;
7+
import dev.compactmods.machines.machine.CompactMachineBlock;
8+
import dev.compactmods.machines.machine.CompactMachineBlockEntity;
9+
import dev.compactmods.machines.tunnel.TunnelWallBlock;
10+
import dev.compactmods.machines.tunnel.TunnelWallEntity;
11+
import snownee.jade.api.IWailaClientRegistration;
12+
import snownee.jade.api.IWailaCommonRegistration;
13+
import snownee.jade.api.IWailaPlugin;
14+
import snownee.jade.api.WailaPlugin;
15+
16+
@WailaPlugin
17+
public class JadePlugin implements IWailaPlugin {
18+
@Override
19+
public void register(IWailaCommonRegistration registration) {
20+
registration.registerBlockDataProvider(CompactMachineComponentProvider.INSTANCE, CompactMachineBlockEntity.class);
21+
registration.registerBlockDataProvider(TunnelComponentProvider.INSTANCE, TunnelWallEntity.class);
22+
}
23+
24+
@Override
25+
public void registerClient(IWailaClientRegistration registration) {
26+
registration.registerBlockComponent(CompactMachineProvider.INSTANCE, CompactMachineBlock.class);
27+
registration.registerBlockComponent(TunnelProvider.INSTANCE, TunnelWallBlock.class);
28+
}
29+
}
Lines changed: 73 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,73 @@
1+
package dev.compactmods.machines.compat.jade.providers.client;
2+
3+
import dev.compactmods.machines.api.core.Constants;
4+
import dev.compactmods.machines.api.core.Tooltips;
5+
import dev.compactmods.machines.i18n.TranslationUtil;
6+
import dev.compactmods.machines.machine.CompactMachineBlockEntity;
7+
import net.minecraft.ChatFormatting;
8+
import net.minecraft.nbt.CompoundTag;
9+
import net.minecraft.nbt.ListTag;
10+
import net.minecraft.network.chat.Component;
11+
import net.minecraft.network.chat.MutableComponent;
12+
import net.minecraft.resources.ResourceLocation;
13+
import net.minecraft.world.entity.player.Player;
14+
import net.minecraft.world.item.ItemStack;
15+
import net.minecraft.world.phys.Vec2;
16+
import snownee.jade.api.BlockAccessor;
17+
import snownee.jade.api.IBlockComponentProvider;
18+
import snownee.jade.api.ITooltip;
19+
import snownee.jade.api.config.IPluginConfig;
20+
import snownee.jade.api.ui.IElement;
21+
import snownee.jade.api.ui.IElementHelper;
22+
23+
public class CompactMachineProvider implements IBlockComponentProvider {
24+
public static final CompactMachineProvider INSTANCE = new CompactMachineProvider();
25+
26+
@Override
27+
public void appendTooltip(
28+
ITooltip tooltip,
29+
BlockAccessor accessor,
30+
IPluginConfig config
31+
) {
32+
final CompactMachineBlockEntity machine = (CompactMachineBlockEntity) accessor.getBlockEntity();
33+
machine.getConnectedRoom().ifPresentOrElse(room -> {
34+
tooltip.add(TranslationUtil.tooltip(Tooltips.Machines.BOUND_TO, room));
35+
}, () -> {
36+
MutableComponent newMachine = TranslationUtil
37+
.message(new ResourceLocation(Constants.MOD_ID, "new_machine"))
38+
.withStyle(ChatFormatting.GREEN);
39+
tooltip.add(newMachine);
40+
});
41+
42+
machine.getOwnerUUID().ifPresent(ownerID -> {
43+
// Owner Name
44+
Player owner = accessor.getLevel().getPlayerByUUID(ownerID);
45+
if (owner != null) {
46+
MutableComponent ownerName = TranslationUtil
47+
.tooltip(Tooltips.Machines.OWNER, owner.getDisplayName())
48+
.withStyle(ChatFormatting.GRAY);
49+
tooltip.add(ownerName);
50+
}
51+
});
52+
53+
if (accessor.getServerData().contains("attached_tunnels")) {
54+
ListTag tag = (ListTag) accessor.getServerData().get("attached_tunnels");
55+
tooltip.add(Component.literal("")); // New Line
56+
tag.forEach(t -> {
57+
CompoundTag compound = (CompoundTag) t;
58+
ItemStack itemStack = ItemStack.of(compound);
59+
IElementHelper helper = tooltip.getElementHelper();
60+
IElement icon = helper
61+
.item(itemStack)
62+
.size(new Vec2(15, 15))
63+
.translate(new Vec2(-4, -3));
64+
tooltip.append(icon);
65+
});
66+
}
67+
}
68+
69+
@Override
70+
public ResourceLocation getUid() {
71+
return new ResourceLocation(Constants.MOD_ID, "machine");
72+
}
73+
}
Lines changed: 56 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,56 @@
1+
package dev.compactmods.machines.compat.jade.providers.client;
2+
3+
import dev.compactmods.machines.api.core.Constants;
4+
import dev.compactmods.machines.tunnel.TunnelWallBlock;
5+
import net.minecraft.core.Direction;
6+
import net.minecraft.nbt.CompoundTag;
7+
import net.minecraft.network.chat.Component;
8+
import net.minecraft.resources.ResourceLocation;
9+
import net.minecraft.world.item.ItemStack;
10+
import net.minecraft.world.item.Items;
11+
import net.minecraft.world.phys.Vec2;
12+
import snownee.jade.api.BlockAccessor;
13+
import snownee.jade.api.IBlockComponentProvider;
14+
import snownee.jade.api.ITooltip;
15+
import snownee.jade.api.config.IPluginConfig;
16+
import snownee.jade.api.ui.IElement;
17+
import snownee.jade.api.ui.IElementHelper;
18+
19+
public class TunnelProvider implements IBlockComponentProvider {
20+
public static final TunnelProvider INSTANCE = new TunnelProvider();
21+
22+
@Override
23+
public void appendTooltip(ITooltip iTooltip, BlockAccessor blockAccessor, IPluginConfig iPluginConfig) {
24+
Direction outSide = blockAccessor.getBlockState().getValue(TunnelWallBlock.CONNECTED_SIDE);
25+
26+
IElementHelper helper = iTooltip.getElementHelper();
27+
IElement compassIcon = helper
28+
.item(new ItemStack(Items.COMPASS), 1)
29+
.size(new Vec2(15, 15)).translate(new Vec2(0, -1));
30+
iTooltip.add(compassIcon);
31+
32+
String sideTranslated = Constants.MOD_ID + ".direction." + outSide.getName();
33+
IElement directionText = helper
34+
.text(Component.translatable(sideTranslated))
35+
.translate(new Vec2(5, 3));
36+
iTooltip.append(directionText);
37+
38+
if (blockAccessor.getServerData().contains("connected_block")) {
39+
ItemStack connectedBlockItemStack =
40+
ItemStack.of((CompoundTag) blockAccessor.getServerData().get("connected_block"));
41+
IElement itemIcon = helper
42+
.item(connectedBlockItemStack, 1)
43+
.size(new Vec2(15, 15)).translate(new Vec2(0, -1));
44+
iTooltip.add(itemIcon);
45+
IElement itemName = helper
46+
.text(connectedBlockItemStack.getHoverName())
47+
.translate(new Vec2(5, 3));
48+
iTooltip.append(itemName);
49+
}
50+
}
51+
52+
@Override
53+
public ResourceLocation getUid() {
54+
return new ResourceLocation(Constants.MOD_ID, "tunnel");
55+
}
56+
}
Lines changed: 51 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,51 @@
1+
package dev.compactmods.machines.compat.jade.providers.server;
2+
3+
import dev.compactmods.machines.api.core.Constants;
4+
import dev.compactmods.machines.api.dimension.CompactDimension;
5+
import dev.compactmods.machines.machine.CompactMachineBlockEntity;
6+
import dev.compactmods.machines.tunnel.TunnelItem;
7+
import dev.compactmods.machines.tunnel.graph.TunnelConnectionGraph;
8+
import net.minecraft.nbt.CompoundTag;
9+
import net.minecraft.nbt.ListTag;
10+
import net.minecraft.resources.ResourceLocation;
11+
import net.minecraft.world.item.ItemStack;
12+
import snownee.jade.api.BlockAccessor;
13+
import snownee.jade.api.IBlockComponentProvider;
14+
import snownee.jade.api.IServerDataProvider;
15+
import snownee.jade.api.ITooltip;
16+
import snownee.jade.api.config.IPluginConfig;
17+
18+
public class CompactMachineComponentProvider implements IBlockComponentProvider, IServerDataProvider<BlockAccessor> {
19+
public static final CompactMachineComponentProvider INSTANCE = new CompactMachineComponentProvider();
20+
21+
@Override
22+
public void appendTooltip(ITooltip tooltip, BlockAccessor accessor, IPluginConfig config) {
23+
}
24+
25+
@Override
26+
public void appendServerData(CompoundTag data, BlockAccessor accessor) {
27+
final CompactMachineBlockEntity machine = (CompactMachineBlockEntity) accessor.getBlockEntity();
28+
machine.getConnectedRoom().ifPresent(room -> {
29+
final var compactDim = accessor.getLevel().getServer().getLevel(CompactDimension.LEVEL_KEY);
30+
final var graph = TunnelConnectionGraph.forRoom(compactDim, room);
31+
final var attachedTunnelsStream = graph.getTypesForSide(machine.getLevelPosition(), accessor.getSide());
32+
33+
ItemStack[] itemStackArray = attachedTunnelsStream
34+
.map(TunnelItem::createStack)
35+
.toArray(ItemStack[]::new);
36+
37+
ListTag attachedTunnels = new ListTag();
38+
for (ItemStack itemStack : itemStackArray) {
39+
CompoundTag tag = itemStack.save(new CompoundTag());
40+
attachedTunnels.add(tag);
41+
}
42+
43+
data.put("attached_tunnels", attachedTunnels);
44+
});
45+
}
46+
47+
@Override
48+
public ResourceLocation getUid() {
49+
return new ResourceLocation(Constants.MOD_ID, "machine_tunnels");
50+
}
51+
}
Lines changed: 52 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,52 @@
1+
package dev.compactmods.machines.compat.jade.providers.server;
2+
3+
import dev.compactmods.machines.api.core.Constants;
4+
import dev.compactmods.machines.api.location.IDimensionalBlockPosition;
5+
import dev.compactmods.machines.api.location.IDimensionalPosition;
6+
import dev.compactmods.machines.tunnel.TunnelWallEntity;
7+
import net.minecraft.nbt.CompoundTag;
8+
import net.minecraft.resources.ResourceLocation;
9+
import net.minecraft.server.level.ServerLevel;
10+
import net.minecraft.world.item.ItemStack;
11+
import net.minecraft.world.level.block.entity.BlockEntity;
12+
import net.minecraft.world.level.block.state.BlockState;
13+
import snownee.jade.api.BlockAccessor;
14+
import snownee.jade.api.IBlockComponentProvider;
15+
import snownee.jade.api.IServerDataProvider;
16+
import snownee.jade.api.ITooltip;
17+
import snownee.jade.api.config.IPluginConfig;
18+
19+
public class TunnelComponentProvider implements IBlockComponentProvider, IServerDataProvider<BlockAccessor> {
20+
public static final TunnelComponentProvider INSTANCE = new TunnelComponentProvider();
21+
22+
@Override
23+
public void appendTooltip(ITooltip iTooltip, BlockAccessor blockAccessor, IPluginConfig iPluginConfig) {
24+
}
25+
26+
@Override
27+
public void appendServerData(CompoundTag data, BlockAccessor accessor) {
28+
final ServerLevel compactLevel = (ServerLevel) accessor.getLevel();
29+
30+
final TunnelWallEntity tunnelWallEntity = (TunnelWallEntity) accessor.getBlockEntity();
31+
final IDimensionalBlockPosition machinePosition = tunnelWallEntity.getConnectedPosition();
32+
final IDimensionalPosition connectedWorldPosition = machinePosition.relative(tunnelWallEntity.getConnectedSide());
33+
34+
final BlockState connectedBlockState = connectedWorldPosition
35+
.level(compactLevel.getServer())
36+
.getBlockState(connectedWorldPosition.getBlockPosition());
37+
38+
final BlockEntity connectedBlockEntity = connectedWorldPosition
39+
.level(compactLevel.getServer())
40+
.getBlockEntity(connectedWorldPosition.getBlockPosition());
41+
42+
if (!connectedBlockState.isAir()) {
43+
ItemStack connectedBlockItemStack = connectedBlockState.getBlock().asItem().getDefaultInstance();
44+
data.put("connected_block", connectedBlockItemStack.save(new CompoundTag()));
45+
}
46+
}
47+
48+
@Override
49+
public ResourceLocation getUid() {
50+
return new ResourceLocation(Constants.MOD_ID, "tunnel_connection");
51+
}
52+
}

0 commit comments

Comments
 (0)