Skip to content

Commit 2bf14d2

Browse files
committed
Overhaul translations, move basic room templates into new datapack
This means the basic room templates are optional now!
1 parent 6af5082 commit 2bf14d2

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

43 files changed

+408
-277
lines changed

core-api/src/main/java/dev/compactmods/machines/api/CompactMachines.java

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,10 @@ public static String id(String path) {
3030
return ResourceLocation.isValidPath(path) ? (MOD_ID + ":" + path) : MOD_ID + ":invalid";
3131
}
3232

33+
public static String langPrefix(String path) {
34+
return MOD_ID + "." + path;
35+
}
36+
3337
public static ResourceLocation modRL(String path) {
3438
return ResourceLocation.fromNamespaceAndPath(MOD_ID, path);
3539
}

core-api/src/main/java/dev/compactmods/machines/api/advancement/Advancements.java

Lines changed: 0 additions & 42 deletions
Original file line numberDiff line numberDiff line change
@@ -32,46 +32,4 @@ public interface Advancements {
3232
* Granted if a player tries to enter a machine room they're currently in.
3333
*/
3434
ResourceLocation RECURSIVE_ROOMS = CompactMachines.modRL("recursion");
35-
36-
/**
37-
* Was granted when players gained a tiny machine item. TBR in 1.20 once tiny machines are no longer
38-
* part of the mod.
39-
*/
40-
@Deprecated(since = "2.0.0", forRemoval = true)
41-
ResourceLocation CLAIMED_TINY_MACHINE = CompactMachines.modRL("claimed_machine_tiny");
42-
43-
/**
44-
* Was granted when players gained a small machine item. TBR in 1.20 once small machines are no longer
45-
* part of the mod.
46-
*/
47-
@Deprecated(since = "2.0.0", forRemoval = true)
48-
ResourceLocation CLAIMED_SMALL_MACHINE = CompactMachines.modRL("claimed_machine_small");
49-
50-
/**
51-
* Was granted when players gained a normal machine item. TBR in 1.20 once normal machines are no longer
52-
* part of the mod.
53-
*/
54-
@Deprecated(since = "2.0.0", forRemoval = true)
55-
ResourceLocation CLAIMED_NORMAL_MACHINE = CompactMachines.modRL("claimed_machine_normal");
56-
57-
/**
58-
* Was granted when players gained a large machine item. TBR in 1.20 once large machines are no longer
59-
* part of the mod.
60-
*/
61-
@Deprecated(since = "2.0.0", forRemoval = true)
62-
ResourceLocation CLAIMED_LARGE_MACHINE = CompactMachines.modRL("claimed_machine_large");
63-
64-
/**
65-
* Was granted when players gained a giant machine item. TBR in 1.20 once giant machines are no longer
66-
* part of the mod.
67-
*/
68-
@Deprecated(since = "2.0.0", forRemoval = true)
69-
ResourceLocation CLAIMED_GIANT_MACHINE = CompactMachines.modRL("claimed_machine_giant");
70-
71-
/**
72-
* Was granted when players gained a maximum-size machine item. TBR in 1.20 once maximum-size machines are no longer
73-
* part of the mod.
74-
*/
75-
@Deprecated(since = "2.0.0", forRemoval = true)
76-
ResourceLocation CLAIMED_MAX_MACHINE = CompactMachines.modRL("claimed_machine_max");
7735
}

core-api/src/main/java/dev/compactmods/machines/api/room/template/RoomTemplate.java

Lines changed: 14 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -4,10 +4,10 @@
44
import com.mojang.serialization.codecs.RecordCodecBuilder;
55
import dev.compactmods.machines.api.CompactMachines;
66
import dev.compactmods.machines.api.machine.MachineColor;
7-
import dev.compactmods.machines.api.machine.MachineTranslations;
87
import dev.compactmods.machines.api.room.RoomDimensions;
98
import dev.compactmods.machines.api.room.RoomStructureInfo;
109
import net.minecraft.ChatFormatting;
10+
import net.minecraft.Util;
1111
import net.minecraft.core.Registry;
1212
import net.minecraft.network.RegistryFriendlyByteBuf;
1313
import net.minecraft.network.chat.Component;
@@ -32,12 +32,13 @@
3232
* Template structure for creating a new Compact Machine room. These can be added and removed from the registry
3333
* at any point, so persistent data must be stored outside these instances.
3434
*
35-
* @param internalDimensions The internal dimensions of the room when it is created.
36-
* @param defaultMachineColor The color of the machine blocks created for this template.
37-
* @param structures Information used to fill a newly-created room with structures.
35+
* @param internalDimensions The internal dimensions of the room when it is created.
36+
* @param defaultMachineColor The color of the machine blocks created for this template.
37+
* @param structures Information used to fill a newly-created room with structures.
3838
*/
39-
public record RoomTemplate(RoomDimensions internalDimensions, MachineColor defaultMachineColor, List<RoomStructureInfo> structures, Optional<BlockState> optionalFloor)
40-
implements TooltipProvider {
39+
public record RoomTemplate(RoomDimensions internalDimensions, MachineColor defaultMachineColor,
40+
List<RoomStructureInfo> structures, Optional<BlockState> optionalFloor)
41+
implements TooltipProvider {
4142

4243
public static final ResourceKey<Registry<RoomTemplate>> REGISTRY_KEY = ResourceKey.createRegistryKey(CompactMachines.modRL("room_templates"));
4344

@@ -80,14 +81,19 @@ public AABB getBoundariesCenteredAt(Vec3 center) {
8081
.inflate(1);
8182
}
8283

84+
public static final String I18N_INTERNAL_ROOM_DIMS = CompactMachines.langPrefix("rooms.templates.room_dimensions");
85+
public static final String I18N_STRUCTURE_GEN_TOOLTIP = CompactMachines.langPrefix("rooms.templates.structure_tooltip");
86+
8387
@Override
8488
public void addToTooltip(Item.TooltipContext ctx, Consumer<Component> tooltips, TooltipFlag flags) {
8589
final var roomDimensions = internalDimensions();
8690

87-
tooltips.accept(MachineTranslations.SIZE.apply(roomDimensions.toString()));
91+
tooltips.accept(Component.translatableWithFallback(I18N_INTERNAL_ROOM_DIMS, "Internal Size: %s", roomDimensions.toString())
92+
.withStyle(ChatFormatting.YELLOW));
8893

8994
if (!structures().isEmpty()) {
90-
tooltips.accept(Component.literal("Generates " + structures().size() + " structures after creation.").withStyle(ChatFormatting.DARK_GRAY));
95+
tooltips.accept(Component.translatableWithFallback(I18N_STRUCTURE_GEN_TOOLTIP, "Generates %s structures upon room creation.", structures.size())
96+
.withStyle(ChatFormatting.DARK_GRAY));
9197
}
9298
}
9399
}

neoforge-datagen/src/main/java/dev.compactmods.machines.datagen/DataGeneration.java

Lines changed: 0 additions & 78 deletions
This file was deleted.

neoforge-datagen/src/main/java/dev.compactmods.machines.datagen/VillagerTrades.java

Lines changed: 0 additions & 4 deletions
This file was deleted.
Lines changed: 50 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,50 @@
1+
package dev.compactmods.machines.datagen;
2+
3+
import dev.compactmods.machines.api.CompactMachines;
4+
import dev.compactmods.machines.datagen.base.BaseDatapack;
5+
import dev.compactmods.machines.datagen.base.DatapackRegisteredStuff;
6+
import dev.compactmods.machines.datagen.base.loot.BlockLootGenerator;
7+
import dev.compactmods.machines.datagen.basic_room_templates.BasicRoomTemplateRecipeGenerator;
8+
import dev.compactmods.machines.datagen.basic_room_templates.BasicRoomTemplatesDatapack;
9+
import dev.compactmods.machines.feature.CMFeatureFlags;
10+
import net.minecraft.data.DataGenerator;
11+
import net.minecraft.data.loot.LootTableProvider;
12+
import net.minecraft.data.metadata.PackMetadataGenerator;
13+
import net.minecraft.network.chat.Component;
14+
import net.minecraft.world.flag.FeatureFlagSet;
15+
import net.minecraft.world.level.storage.loot.parameters.LootContextParamSets;
16+
import net.neoforged.bus.api.SubscribeEvent;
17+
import net.neoforged.fml.common.EventBusSubscriber;
18+
import net.neoforged.neoforge.data.event.GatherDataEvent;
19+
20+
import java.util.Collections;
21+
import java.util.List;
22+
23+
@EventBusSubscriber(modid = CompactMachines.MOD_ID, bus = EventBusSubscriber.Bus.MOD)
24+
public class DataGeneration {
25+
26+
@SubscribeEvent
27+
public static void gatherData(GatherDataEvent event) {
28+
final var fileHelper = event.getExistingFileHelper();
29+
final var generator = event.getGenerator();
30+
31+
final var packOut = generator.getPackOutput();
32+
final var holderLookup = event.getLookupProvider();
33+
34+
final var baseResults = BaseDatapack.generatePack(event);
35+
BasicRoomTemplatesDatapack.generatePack(event, baseResults.holderLookupProvider());
36+
37+
addExperimentalPacks(event);
38+
}
39+
40+
private static void addExperimentalPacks(GatherDataEvent event) {
41+
final var generator = event.getGenerator();
42+
43+
DataGenerator.PackGenerator roomUpgrades = generator.getBuiltinDatapack(true, CompactMachines.MOD_ID, "room_upgrades");
44+
roomUpgrades.addProvider(output -> PackMetadataGenerator.forFeaturePack(
45+
output,
46+
Component.literal("Enables the room upgrade experimental features."),
47+
FeatureFlagSet.of(CMFeatureFlags.ROOM_UPDATES_FLAG)
48+
));
49+
}
50+
}
Lines changed: 63 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,63 @@
1+
package dev.compactmods.machines.datagen.base;
2+
3+
import dev.compactmods.machines.datagen.base.curios.CurioEntityGenerator;
4+
import dev.compactmods.machines.datagen.base.curios.CurioSlotGenerator;
5+
import dev.compactmods.machines.datagen.base.lang.EnglishLangGenerator;
6+
import dev.compactmods.machines.datagen.base.loot.BlockLootGenerator;
7+
import dev.compactmods.machines.datagen.base.tags.BlockTagGenerator;
8+
import dev.compactmods.machines.datagen.base.tags.ItemTagGenerator;
9+
import dev.compactmods.machines.datagen.base.tags.PointOfInterestTagGenerator;
10+
import net.minecraft.core.HolderLookup;
11+
import net.minecraft.data.loot.LootTableProvider;
12+
import net.minecraft.world.level.storage.loot.parameters.LootContextParamSets;
13+
import net.neoforged.neoforge.data.event.GatherDataEvent;
14+
15+
import java.util.Collections;
16+
import java.util.List;
17+
import java.util.concurrent.CompletableFuture;
18+
19+
public class BaseDatapack {
20+
21+
public record BaseDatapackGenerationResults(CompletableFuture<HolderLookup.Provider> holderLookupProvider) {
22+
//
23+
}
24+
25+
public static BaseDatapackGenerationResults generatePack(GatherDataEvent event) {
26+
final var fileHelper = event.getExistingFileHelper();
27+
final var generator = event.getGenerator();
28+
29+
final var basePackOutput = generator.getPackOutput();
30+
final var holderLookup = event.getLookupProvider();
31+
32+
// Server
33+
boolean server = event.includeServer();
34+
35+
var dataRegistered = generator.addProvider(server, new DatapackRegisteredStuff(basePackOutput, holderLookup));
36+
generator.addProvider(server, new LootTableProvider(basePackOutput,
37+
Collections.emptySet(),
38+
List.of(new LootTableProvider.SubProviderEntry(BlockLootGenerator::new, LootContextParamSets.BLOCK)),
39+
holderLookup
40+
));
41+
42+
generator.addProvider(server, new RecipeGenerator(basePackOutput, dataRegistered.getRegistryProvider()));
43+
44+
final var blocks = new BlockTagGenerator(basePackOutput, fileHelper, holderLookup);
45+
generator.addProvider(server, blocks);
46+
generator.addProvider(server, new ItemTagGenerator(basePackOutput, blocks, holderLookup));
47+
48+
// CURIOS Integration
49+
generator.addProvider(server, new CurioSlotGenerator(basePackOutput, holderLookup, fileHelper));
50+
generator.addProvider(server, new CurioEntityGenerator(basePackOutput, holderLookup, fileHelper));
51+
52+
generator.addProvider(server, new PointOfInterestTagGenerator(basePackOutput, holderLookup, fileHelper));
53+
54+
// Client
55+
boolean client = event.includeClient();
56+
generator.addProvider(client, new StateGenerator(basePackOutput, fileHelper));
57+
generator.addProvider(client, new ItemModelGenerator(basePackOutput, fileHelper));
58+
59+
generator.addProvider(client, new EnglishLangGenerator(basePackOutput));
60+
61+
return new BaseDatapackGenerationResults(dataRegistered.getRegistryProvider());
62+
}
63+
}

neoforge-datagen/src/main/java/dev.compactmods.machines.datagen/DatapackRegisteredStuff.java renamed to neoforge-datagen/src/main/java/dev/compactmods/machines/datagen/base/DatapackRegisteredStuff.java

Lines changed: 4 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,10 @@
1-
package dev.compactmods.machines.datagen;
1+
package dev.compactmods.machines.datagen.base;
22

33
import dev.compactmods.machines.api.machine.MachineColor;
4-
import dev.compactmods.machines.api.room.RoomDimensions;
54
import dev.compactmods.machines.api.room.template.RoomTemplate;
65
import dev.compactmods.machines.api.CompactMachines;
76
import dev.compactmods.machines.api.dimension.CompactDimension;
7+
import dev.compactmods.machines.datagen.basic_room_templates.RoomTemplatesGenerator;
88
import dev.compactmods.machines.datagen.util.DimensionTypeBuilder;
99
import dev.compactmods.machines.dimension.Dimension;
1010
import net.minecraft.core.HolderLookup;
@@ -44,9 +44,9 @@ public class DatapackRegisteredStuff extends DatapackBuiltinEntriesProvider {
4444
.add(Registries.BIOME, DatapackRegisteredStuff::generateBiomes)
4545
.add(Registries.DIMENSION_TYPE, DatapackRegisteredStuff::generateDimensionTypes)
4646
.add(Registries.LEVEL_STEM, DatapackRegisteredStuff::generateDimensions)
47-
.add(RoomTemplate.REGISTRY_KEY, DatapackRegisteredStuff::addRoomTemplates);
47+
.add(RoomTemplate.REGISTRY_KEY, (ctx) -> {});
4848

49-
DatapackRegisteredStuff(PackOutput packOutput, CompletableFuture<HolderLookup.Provider> registries) {
49+
public DatapackRegisteredStuff(PackOutput packOutput, CompletableFuture<HolderLookup.Provider> registries) {
5050
super(packOutput, registries, BUILDER, Set.of(CompactMachines.MOD_ID));
5151
}
5252

@@ -100,24 +100,4 @@ private static void generateDimensions(BootstrapContext<LevelStem> ctx) {
100100
var stem = new LevelStem(dimTypes.getOrThrow(CompactDimension.DIM_TYPE_KEY), new FlatLevelSource(flatSettings));
101101
ctx.register(ResourceKey.create(Registries.LEVEL_STEM, CompactDimension.LEVEL_KEY.location()), stem);
102102
}
103-
104-
private static void addRoomTemplates(BootstrapContext<RoomTemplate> ctx) {
105-
roomTemplate(ctx, "tiny", new RoomTemplate(3, FastColor.ARGB32.color(255, 201, 91, 19)));
106-
roomTemplate(ctx, "small", new RoomTemplate(5, FastColor.ARGB32.color(255, 212, 210, 210)));
107-
roomTemplate(ctx, "normal", new RoomTemplate(7, FastColor.ARGB32.color(255, 251, 242, 54)));
108-
roomTemplate(ctx, "large", new RoomTemplate(9, FastColor.ARGB32.color(255, 33, 27, 46)));
109-
roomTemplate(ctx, "giant", new RoomTemplate(11, FastColor.ARGB32.color(255, 67, 214, 205)));
110-
roomTemplate(ctx, "colossal", new RoomTemplate(13, FastColor.ARGB32.color(255, 66, 63, 66)));
111-
112-
roomTemplate(ctx, "soaryn", new RoomTemplate(45, DyeColor.PURPLE.getFireworkColor()));
113-
roomTemplate(ctx, "farming", RoomTemplate.builder()
114-
.withInternalSize(21, 21, 11)
115-
.defaultMachineColor(MachineColor.fromARGB(CommonColors.GREEN))
116-
.withFloor(Blocks.GRASS_BLOCK.defaultBlockState())
117-
.build());
118-
}
119-
120-
private static void roomTemplate(BootstrapContext<RoomTemplate> ctx, String name, RoomTemplate template) {
121-
ctx.register(ResourceKey.create(RoomTemplate.REGISTRY_KEY, CompactMachines.modRL(name)), template);
122-
}
123103
}

neoforge-datagen/src/main/java/dev.compactmods.machines.datagen/ItemModelGenerator.java renamed to neoforge-datagen/src/main/java/dev/compactmods/machines/datagen/base/ItemModelGenerator.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
package dev.compactmods.machines.datagen;
1+
package dev.compactmods.machines.datagen.base;
22

33
import dev.compactmods.machines.api.CompactMachines;
44
import dev.compactmods.machines.machine.Machines;

0 commit comments

Comments
 (0)