-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Base registration + manager system setup + misc fixes
(Some fixes due l8r)
- Loading branch information
Showing
19 changed files
with
377 additions
and
33 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
2 changes: 1 addition & 1 deletion
2
...ent/java/com/tropicdev/TropicsClient.java → .../com/tropicdev/tropics/TropicsClient.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,4 +1,4 @@ | ||
package com.tropicdev; | ||
package com.tropicdev.tropics; | ||
|
||
import net.fabricmc.api.ClientModInitializer; | ||
|
||
|
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
2 changes: 2 additions & 0 deletions
2
src/main/generated/.cache/ff5f27f889ff495f9e4982d5f9b23954651bdee4
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,2 @@ | ||
// 1.20.1 2024-05-17T22:57:10.7395782 Tropics/Tropics: Language Localization (en_us) | ||
884888803f0cb267d6e415d82fc4462d9f4693fe assets\tropics\lang\en_us.json |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,3 @@ | ||
{ | ||
"item.minecraft.air": "Air" | ||
} |
12 changes: 0 additions & 12 deletions
12
src/main/java/com/tropicdev/datagen/TropicsDataGenerator.java
This file was deleted.
Oops, something went wrong.
11 changes: 10 additions & 1 deletion
11
src/main/java/com/tropicdev/Tropics.java → ...n/java/com/tropicdev/tropics/Tropics.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,15 +1,24 @@ | ||
package com.tropicdev; | ||
package com.tropicdev.tropics; | ||
|
||
import com.tropicdev.tropics.manager.TropicsModManager; | ||
import net.fabricmc.api.ModInitializer; | ||
import net.minecraft.resources.ResourceLocation; | ||
import org.slf4j.Logger; | ||
import org.slf4j.LoggerFactory; | ||
|
||
import java.util.Locale; | ||
|
||
public class Tropics implements ModInitializer { | ||
public static final String MOD_NAME = "Tropics"; | ||
public static final String MODID = "tropics"; | ||
public static final Logger LOGGER = LoggerFactory.getLogger(MODID); | ||
|
||
@Override | ||
public void onInitialize() { | ||
TropicsModManager.registerAll(); | ||
} | ||
|
||
public static ResourceLocation prefix(String path) { | ||
return new ResourceLocation(MODID, path.toLowerCase(Locale.ROOT)); | ||
} | ||
} |
23 changes: 23 additions & 0 deletions
23
src/main/java/com/tropicdev/tropics/datagen/TropicsDataGen.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,23 @@ | ||
package com.tropicdev.tropics.datagen; | ||
|
||
import com.tropicdev.tropics.Tropics; | ||
import com.tropicdev.tropics.datagen.providers.TropicsItemModelProvider; | ||
import com.tropicdev.tropics.datagen.providers.TropicsLanguageProvider; | ||
import net.fabricmc.fabric.api.datagen.v1.DataGeneratorEntrypoint; | ||
import net.fabricmc.fabric.api.datagen.v1.FabricDataGenerator; | ||
|
||
public class TropicsDataGen implements DataGeneratorEntrypoint { | ||
|
||
@Override | ||
public void onInitializeDataGenerator(FabricDataGenerator fabricDataGenerator) { | ||
FabricDataGenerator.Pack cdPack = fabricDataGenerator.createPack(); | ||
|
||
cdPack.addProvider(TropicsItemModelProvider::new); | ||
cdPack.addProvider(TropicsLanguageProvider::new); | ||
} | ||
|
||
@Override | ||
public String getEffectiveModId() { | ||
return Tropics.MODID; | ||
} | ||
} |
33 changes: 33 additions & 0 deletions
33
src/main/java/com/tropicdev/tropics/datagen/providers/TropicsItemModelProvider.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,33 @@ | ||
package com.tropicdev.tropics.datagen.providers; | ||
|
||
import com.tropicdev.tropics.Tropics; | ||
import com.tropicdev.tropics.registry.TropicsItems; | ||
import net.fabricmc.fabric.api.datagen.v1.FabricDataOutput; | ||
import net.fabricmc.fabric.api.datagen.v1.provider.FabricModelProvider; | ||
import net.minecraft.data.models.BlockModelGenerators; | ||
import net.minecraft.data.models.ItemModelGenerators; | ||
import net.minecraft.data.models.model.ModelTemplates; | ||
|
||
public class TropicsItemModelProvider extends FabricModelProvider { | ||
|
||
public TropicsItemModelProvider(FabricDataOutput output) { | ||
super(output); | ||
} | ||
|
||
@Override | ||
public String getName() { | ||
return Tropics.MOD_NAME.concat(": General (Block/Item) Models"); | ||
} | ||
|
||
@Override | ||
public void generateBlockStateModels(BlockModelGenerators blockStateModelGenerator) { | ||
|
||
} | ||
|
||
@Override | ||
public void generateItemModels(ItemModelGenerators itemModelGenerator) { | ||
TropicsItems.getRegisteredItems().values().forEach(curItemSup -> { //TODO Edge-case automation (probably a bunch of yanderedev looking ahh code with the checks and all that :skull:) | ||
itemModelGenerator.generateFlatItem(curItemSup.get(), ModelTemplates.FLAT_HANDHELD_ITEM); | ||
}); | ||
} | ||
} |
159 changes: 159 additions & 0 deletions
159
src/main/java/com/tropicdev/tropics/datagen/providers/TropicsLanguageProvider.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,159 @@ | ||
package com.tropicdev.tropics.datagen.providers; | ||
|
||
import com.google.common.collect.LinkedHashMultimap; | ||
import com.tropicdev.tropics.Tropics; | ||
import com.tropicdev.tropics.registry.TropicsItems; | ||
import com.tropicdev.tropics.util.MiscUtil; | ||
import it.unimi.dsi.fastutil.objects.Object2ObjectOpenHashMap; | ||
import it.unimi.dsi.fastutil.objects.ObjectArrayList; | ||
import net.fabricmc.fabric.api.datagen.v1.FabricDataOutput; | ||
import net.fabricmc.fabric.api.datagen.v1.provider.FabricLanguageProvider; | ||
import net.minecraft.world.item.Item; | ||
|
||
import java.util.List; | ||
import java.util.stream.Collectors; | ||
|
||
public class TropicsLanguageProvider extends FabricLanguageProvider { | ||
private static final ObjectArrayList<String> DEFAULT_SEPARATORS = ObjectArrayList.of("Of", "And"); | ||
private static final Object2ObjectOpenHashMap<String, String> MANUAL_TRANSLATIONS = new Object2ObjectOpenHashMap<>(); | ||
private static final LinkedHashMultimap<String, String> MANUAL_INSERTIONS = LinkedHashMultimap.create(); | ||
|
||
public TropicsLanguageProvider(FabricDataOutput dataOutput) { | ||
super(dataOutput); | ||
} | ||
|
||
@Override | ||
public String getName() { | ||
return Tropics.MOD_NAME.concat(": Language Localization (en_us)"); //TODO Maybe multi-language support? | ||
} | ||
|
||
public static void addManualTranslation(String localisedKey, String translationValue) { | ||
MANUAL_INSERTIONS.put(localisedKey, translationValue); | ||
} | ||
|
||
private String handleInput(String displayName) { | ||
ObjectArrayList<String> finalizedList = new ObjectArrayList<>(1); | ||
|
||
MANUAL_INSERTIONS.asMap().forEach((curDisplayName, matchersAndInsertion) -> { | ||
if (!displayName.equalsIgnoreCase(curDisplayName)) return; | ||
|
||
ObjectArrayList<String> copiedMatchersAndInsertions = new ObjectArrayList<String>(matchersAndInsertion); | ||
ObjectArrayList<String> prunedMatchersAndInsertion = copiedMatchersAndInsertions.stream() | ||
.filter(curString -> copiedMatchersAndInsertions.indexOf(curString) < 2) | ||
.collect(Collectors.toCollection(ObjectArrayList::new)); | ||
|
||
if (curDisplayName.indexOf(prunedMatchersAndInsertion.get(0)) == -1) return; | ||
|
||
int insertionLocation = curDisplayName.indexOf(prunedMatchersAndInsertion.get(0)) + prunedMatchersAndInsertion.get(0).length() - 1; | ||
|
||
curDisplayName = MiscUtil.insertStringAt(curDisplayName, prunedMatchersAndInsertion.get(1), insertionLocation); | ||
|
||
finalizedList.add(curDisplayName); | ||
Tropics.LOGGER.debug("[Inserted Manual String]: " + displayName + " -> " + curDisplayName); | ||
}); | ||
|
||
return finalizedList.isEmpty() ? displayName : finalizedList.get(0); | ||
} | ||
|
||
// https://stackoverflow.com/questions/1892765/how-to-capitalize-the-first-character-of-each-word-in-a-string | ||
private static String formatString(String input, List<String> separators) { | ||
char[] charSet = input.toLowerCase().toCharArray(); | ||
boolean found = false; | ||
|
||
for (int i = 0; i < charSet.length - 1; i++) { | ||
if (!found && Character.isLetter(charSet[i])) { | ||
charSet[i] = Character.toUpperCase(charSet[i]); | ||
found = true; | ||
} else if (Character.isWhitespace(charSet[i]) || charSet[i] == '.' || charSet[i] == '_') found = false; | ||
} | ||
|
||
String baseResult = String.valueOf(charSet); | ||
|
||
for (String lcw : DEFAULT_SEPARATORS) if (baseResult.contains(lcw)) baseResult = baseResult.replaceAll(lcw, lcw.toLowerCase()); | ||
|
||
return baseResult; | ||
} | ||
|
||
private static String formatString(String input) { | ||
return formatString(input, DEFAULT_SEPARATORS); | ||
} | ||
|
||
private String getTranslatedRegistryName(String registryName, List<String> separators) { | ||
if (registryName.isBlank() || registryName.isEmpty() || registryName == null) return registryName; | ||
if (!registryName.contains(".")) return registryName; | ||
|
||
String regNameTemp = registryName; | ||
String formattedName = formatString(regNameTemp, separators); | ||
String displayName = formattedName.substring(formattedName.lastIndexOf(".") + 1).replaceAll("_", " "); | ||
|
||
return displayName; | ||
} | ||
|
||
private String getTranslatedRegistryName(String registryName) { | ||
return getTranslatedRegistryName(registryName, DEFAULT_SEPARATORS); | ||
} | ||
|
||
private void localizeGeneralRegistryName(String registryName, String translatedName, List<String> toTrim, TranslationBuilder builder) { //TODO Probably overload these fellas | ||
if (toTrim != null && !toTrim.isEmpty()) { | ||
for (int i = 0; i < toTrim.size(); i++) { | ||
String curTrim = toTrim.get(i); | ||
|
||
translatedName = translatedName.replaceFirst(curTrim, ""); | ||
} | ||
} | ||
|
||
if (!MANUAL_TRANSLATIONS.containsKey(registryName)) builder.add(registryName, handleInput(translatedName)); | ||
} | ||
|
||
private void localizeGeneralRegistryName(String registryName, List<String> separators, List<String> toTrim, TranslationBuilder builder) { | ||
String translatedRegName = getTranslatedRegistryName(registryName, separators); | ||
|
||
if (toTrim != null && !toTrim.isEmpty()) { | ||
for (int i = 0; i < toTrim.size(); i++) { | ||
String curTrim = toTrim.get(i); | ||
|
||
translatedRegName = translatedRegName.replaceFirst(curTrim, ""); | ||
} | ||
} | ||
|
||
if (!MANUAL_TRANSLATIONS.containsKey(registryName)) builder.add(registryName, handleInput(translatedRegName)); | ||
} | ||
|
||
private void localizeGeneralRegistryName(String registryName, String translatedName, TranslationBuilder builder) { | ||
localizeGeneralRegistryName(registryName, translatedName, List.of(), builder); | ||
} | ||
|
||
private void localizeGeneralRegistryName(String registryName, List<String> toTrim, TranslationBuilder builder) { | ||
localizeGeneralRegistryName(registryName, DEFAULT_SEPARATORS, toTrim, builder); | ||
} | ||
|
||
private void localizeGeneralRegistryName(String registryName, TranslationBuilder builder) { | ||
localizeGeneralRegistryName(registryName, List.of(), builder); | ||
} | ||
|
||
private void translateItems(TranslationBuilder builder) { | ||
TropicsItems.getRegisteredItems().values().forEach(itemRegEntry -> { | ||
Item itemEntry = itemRegEntry.get(); | ||
String itemRegName = itemEntry.getDescriptionId(); | ||
|
||
Tropics.LOGGER.debug("[Currently Translating Item]: " + itemRegName + " -> " + getTranslatedRegistryName(itemRegName)); | ||
|
||
localizeGeneralRegistryName(itemRegName, builder); | ||
}); | ||
} | ||
|
||
private void handleManualTranslations(TranslationBuilder builder) { | ||
MANUAL_TRANSLATIONS.forEach((translationKey, translationValue) -> { | ||
if ((translationKey == null || translationValue == null) || translationKey.isEmpty() || translationKey.isBlank() || translationValue.isEmpty() || translationValue.isBlank()) return; | ||
|
||
builder.add(translationKey, translationValue); | ||
}); | ||
} | ||
|
||
@Override | ||
public void generateTranslations(TranslationBuilder translationBuilder) { | ||
translateItems(translationBuilder); | ||
|
||
handleManualTranslations(translationBuilder); | ||
} | ||
} |
22 changes: 22 additions & 0 deletions
22
src/main/java/com/tropicdev/tropics/manager/TropicsEventManager.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,22 @@ | ||
package com.tropicdev.tropics.manager; | ||
|
||
public final class TropicsEventManager { | ||
|
||
static void registerEvents() { | ||
registerCommonEvents(); | ||
registerServerEvents(); | ||
registerClientEvents(); | ||
} | ||
|
||
private static void registerClientEvents() { | ||
|
||
} | ||
|
||
private static void registerCommonEvents() { | ||
|
||
} | ||
|
||
private static void registerServerEvents() { | ||
|
||
} | ||
} |
9 changes: 9 additions & 0 deletions
9
src/main/java/com/tropicdev/tropics/manager/TropicsModManager.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,9 @@ | ||
package com.tropicdev.tropics.manager; | ||
|
||
public final class TropicsModManager { | ||
|
||
public static void registerAll() { | ||
TropicsEventManager.registerEvents(); | ||
TropicsRegistryManager.registerRegistries(); | ||
} | ||
} |
10 changes: 10 additions & 0 deletions
10
src/main/java/com/tropicdev/tropics/manager/TropicsRegistryManager.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,10 @@ | ||
package com.tropicdev.tropics.manager; | ||
|
||
import com.tropicdev.tropics.registry.TropicsItems; | ||
|
||
public final class TropicsRegistryManager { | ||
|
||
static void registerRegistries() { | ||
TropicsItems.registerItems(); | ||
} | ||
} |
7 changes: 7 additions & 0 deletions
7
src/main/java/com/tropicdev/tropics/registry/TropicsFood.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,7 @@ | ||
package com.tropicdev.tropics.registry; | ||
|
||
import net.minecraft.world.food.FoodProperties; | ||
|
||
public class TropicsFood { | ||
public static final FoodProperties PINA_COLADA = new FoodProperties.Builder().nutrition(7).saturationMod(0.5F).build(); | ||
} |
33 changes: 33 additions & 0 deletions
33
src/main/java/com/tropicdev/tropics/registry/TropicsItems.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,33 @@ | ||
package com.tropicdev.tropics.registry; | ||
|
||
import com.google.common.collect.ImmutableMap; | ||
import com.tropicdev.tropics.Tropics; | ||
import it.unimi.dsi.fastutil.objects.Object2ObjectLinkedOpenHashMap; | ||
import net.minecraft.core.Registry; | ||
import net.minecraft.core.registries.BuiltInRegistries; | ||
import net.minecraft.resources.ResourceLocation; | ||
import net.minecraft.world.item.Item; | ||
|
||
import java.util.function.Supplier; | ||
|
||
public class TropicsItems { | ||
private static final Object2ObjectLinkedOpenHashMap<ResourceLocation, Supplier<Item>> REGISTERED_ITEMS = new Object2ObjectLinkedOpenHashMap<>(); | ||
|
||
public static final Item PINA_COLADA = registerItem("pina_colada", () -> new Item(new Item.Properties().food(TropicsFood.PINA_COLADA).stacksTo(1))); | ||
|
||
protected static <I extends Item> I registerItem(String id, Supplier<I> itemSup) { | ||
return registerItem(Tropics.prefix(id), itemSup); | ||
} | ||
|
||
protected static <I extends Item> I registerItem(ResourceLocation id, Supplier<I> itemSup) { | ||
return (I) REGISTERED_ITEMS.putIfAbsent(id, (Supplier<Item>) itemSup); | ||
} | ||
|
||
public static ImmutableMap<ResourceLocation, Supplier<Item>> getRegisteredItems() { | ||
return ImmutableMap.copyOf(REGISTERED_ITEMS); | ||
} | ||
|
||
public static void registerItems() { | ||
REGISTERED_ITEMS.forEach((id, itemSup) -> Registry.register(BuiltInRegistries.ITEM, id, itemSup.get())); | ||
} | ||
} |
Oops, something went wrong.