Skip to content

Commit 4367742

Browse files
authored
Object Mapper Inverter (#339)
* implement basic * apply simple instances * update oredict * add sound and entityentry * adjust thermal compactorMode * tinkers construct * alchemistry elements * evilcraft weather type * questionable thaumcraft crystal logic * fluid stack adjustments * use Iterable instead of Collection * fix mekanism using wrong texture * toolMaterial * update comment for OMs with multiple creation methods
1 parent 560624a commit 4367742

File tree

19 files changed

+195
-11
lines changed

19 files changed

+195
-11
lines changed

examples/preInit/mekanism.groovy

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,6 @@ import net.minecraftforge.client.event.TextureStitchEvent
55
if (!isLoaded('mekanism')) return
66
println 'mod \'mekanism\' detected, running script'
77

8-
eventManager.listen(TextureStitchEvent.Pre) { event ->
9-
event.getMap().registerSprite(resource('placeholdername:blocks/mekanism_infusion_texture'))
8+
eventManager.listen { TextureStitchEvent.Pre event ->
9+
event.getMap().registerSprite(resource('groovyscriptdev:blocks/mekanism_infusion_texture'))
1010
}

src/main/java/com/cleanroommc/groovyscript/compat/mods/alchemistry/Alchemistry.java

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,20 @@ public static String asGroovyCode(ChemicalElement element, boolean colored) {
3030
return GroovyScriptCodeConverter.formatGenericHandler("element", element.getName(), colored);
3131
}
3232

33+
public static String itemStackToElementGroovyCode(ItemStack itemStack, boolean colored) {
34+
for (var x : ElementRegistry.INSTANCE.getAllElements()) {
35+
if (ItemStack.areItemsEqual(x.toItemStack(1), itemStack)) {
36+
return asGroovyCode(x, colored);
37+
}
38+
}
39+
for (var x : CompoundRegistry.INSTANCE.compounds()) {
40+
if (ItemStack.areItemsEqual(x.toItemStack(1), itemStack)) {
41+
return asGroovyCode(x, colored);
42+
}
43+
}
44+
return null;
45+
}
46+
3347
@Override
3448
public void initialize(GroovyContainer<?> container) {
3549
container.objectMapperBuilder("element", ItemStack.class)
@@ -49,6 +63,7 @@ public void initialize(GroovyContainer<?> container) {
4963
.completerOfNamed(CompoundRegistry.INSTANCE::compounds, ChemicalCompound::getName)
5064
.completerOfNamed(ElementRegistry.INSTANCE::getAllElements, ChemicalElement::getName)
5165
.docOfType("chemical element or compound as item stack")
66+
.toGroovyCode(x -> itemStackToElementGroovyCode(x, false))
5267
.register();
5368

5469
InfoParserRegistry.addInfoParser(InfoParserElement.instance);

src/main/java/com/cleanroommc/groovyscript/compat/mods/appliedenergistics2/AppliedEnergistics2.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,7 @@ public void initialize(GroovyContainer<?> container) {
2929
.completerOfNamed(() -> Arrays.asList(TunnelType.values()), v -> v.name().toUpperCase(Locale.ROOT))
3030
.defaultValue(() -> TunnelType.ME)
3131
.docOfType("P2P tunnel type")
32+
.toGroovyCode(x -> asGroovyCode(x, false))
3233
.register();
3334

3435
InfoParserRegistry.addInfoParser(InfoParserTunnel.instance);

src/main/java/com/cleanroommc/groovyscript/compat/mods/astralsorcery/AstralSorcery.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -53,6 +53,7 @@ public void initialize(GroovyContainer<?> container) {
5353
})
5454
.completerOfNamed(ConstellationRegistryAccessor::getConstellationList, IConstellation::getSimpleName)
5555
.docOfType("constellation")
56+
.toGroovyCode(x -> asGroovyCode(x, false))
5657
.register();
5758
ExpansionHelper.mixinClass(ItemStack.class, CrystalItemStackExpansion.class);
5859

src/main/java/com/cleanroommc/groovyscript/compat/mods/botania/Botania.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -56,6 +56,7 @@ public void initialize(GroovyContainer<?> container) {
5656
.completerOfNames(() -> BotaniaAPI.brewMap.keySet())
5757
.defaultValue(() -> BotaniaAPI.fallbackBrew)
5858
.docOfType("brew")
59+
.toGroovyCode(x -> asGroovyCode(x, false))
5960
.register();
6061

6162
InfoParserRegistry.addInfoParser(InfoParserBrew.instance);

src/main/java/com/cleanroommc/groovyscript/compat/mods/evilcraft/EvilCraft.java

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,10 @@ public static String asGroovyCode(String weatherType, boolean colored) {
1919
return GroovyScriptCodeConverter.formatGenericHandler("weather", weatherType, colored);
2020
}
2121

22+
public static String asGroovyCode(WeatherType weatherType, boolean colored) {
23+
return asGroovyCode(weatherType.toString(), colored);
24+
}
25+
2226
@Override
2327
public void initialize(GroovyContainer<?> container) {
2428
final List<String> weatherTypes = Arrays.asList("any", "clear", "rain", "lightning");
@@ -27,6 +31,7 @@ public void initialize(GroovyContainer<?> container) {
2731
.completerOfNames(() -> weatherTypes) // elements don't have names
2832
.defaultValue(() -> WeatherType.ANY)
2933
.docOfType("weather type")
34+
.toGroovyCode(x -> asGroovyCode(x, false))
3035
.register();
3136

3237
InfoParserRegistry.addInfoParser(InfoParserWeather.instance);

src/main/java/com/cleanroommc/groovyscript/compat/mods/mekanism/Mekanism.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -80,11 +80,13 @@ public void initialize(GroovyContainer<?> container) {
8080
})
8181
.completerOfNamed(GasRegistry::getRegisteredGasses, Gas::getName)
8282
.docOfType("gas stack")
83+
.toGroovyCode(x -> asGroovyCode(x, false))
8384
.register();
8485
container.objectMapperBuilder("infusionType", InfuseType.class)
8586
.parser(IObjectParser.wrapStringGetter(InfuseRegistry::get, true))
8687
.completerOfNames(InfuseRegistry.getInfuseMap()::keySet)
8788
.docOfType("infusion type")
89+
.toGroovyCode(x -> asGroovyCode(x, false))
8890
.register();
8991

9092
InfoParserRegistry.addInfoParser(InfoParserGas.instance);

src/main/java/com/cleanroommc/groovyscript/compat/mods/roots/Roots.java

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -59,27 +59,32 @@ public void initialize(GroovyContainer<?> container) {
5959
.parser(IObjectParser.wrapStringGetter(RitualRegistry::getRitual))
6060
.completerOfNames(() -> RitualRegistry.ritualRegistry.keySet())
6161
.docOfType("ritual")
62+
.toGroovyCode(x -> GroovyScriptCodeConverter.formatGenericHandler("ritual", x.getName(), false))
6263
.register();
6364
container.objectMapperBuilder("herb", Herb.class)
6465
.parser(IObjectParser.wrapStringGetter(HerbRegistry::getHerbByName))
6566
.completerOfNames(HerbRegistry.registry::keySet)
6667
.docOfType("herb")
68+
.toGroovyCode(x -> asGroovyCode(x, false))
6769
.register();
6870
container.objectMapperBuilder("cost", CostType.class)
6971
.parser(IObjectParser.wrapEnum(CostType.class, false))
7072
.completerOfEnum(CostType.class, false)
7173
.docOfType("cost")
74+
.toGroovyCode(x -> GroovyScriptCodeConverter.formatGenericHandler("cost", x.name(), false))
7275
.register();
7376
container.objectMapperBuilder("spell", SpellBase.class)
7477
.parser(Roots::getSpell)
7578
.completer(SpellRegistry.spellRegistry::keySet)
7679
.defaultValueSup(() -> Result.some(FakeSpell.INSTANCE)) // crashes otherwise
7780
.docOfType("spell")
81+
.toGroovyCode(x -> asGroovyCode(x, false))
7882
.register();
7983
container.objectMapperBuilder("modifier", Modifier.class)
8084
.parser(Roots::getModifier)
8185
.completerOfNamed(ModifierRegistry::getModifiers, v -> v.getRegistryName().toString())
8286
.docOfType("modifier")
87+
.toGroovyCode(x -> asGroovyCode(x, false))
8388
.register();
8489

8590
InfoParserRegistry.addInfoParser(InfoParserHerb.instance);

src/main/java/com/cleanroommc/groovyscript/compat/mods/thaumcraft/Thaumcraft.java

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,8 @@
1717
import net.minecraft.item.ItemStack;
1818
import thaumcraft.api.ThaumcraftApiHelper;
1919
import thaumcraft.api.aspects.AspectList;
20+
import thaumcraft.api.aspects.IEssentiaContainerItem;
21+
import thaumcraft.api.items.ItemsTC;
2022

2123
import java.util.Collection;
2224

@@ -42,18 +44,26 @@ public static String asGroovyCode(AspectStack aspectStack, boolean colored) {
4244
return asGroovyCode(aspectStack.getAspect(), colored) + GroovyScriptCodeConverter.formatMultiple(aspectStack.getAmount(), colored);
4345
}
4446

47+
public static String itemStackCrystalToAspectGroovyCode(ItemStack itemStack, boolean colored) {
48+
if (itemStack.getItem() != ItemsTC.crystalEssence) return null;
49+
var aspects = ((IEssentiaContainerItem) ItemsTC.crystalEssence).getAspects(itemStack);
50+
return aspects.size() > 0 ? asGroovyCode(aspects.getAspects()[0], colored) : null;
51+
}
52+
4553
@Override
4654
public void initialize(GroovyContainer<?> container) {
4755
container.objectMapperBuilder("aspect", AspectStack.class)
4856
.parser(IObjectParser.wrapStringGetter(Thaumcraft::getAspect, AspectStack::new))
4957
.completerOfNames(thaumcraft.api.aspects.Aspect.aspects::keySet)
5058
.docOfType("aspect stack")
59+
.toGroovyCode(x -> asGroovyCode(x, false))
5160
.register();
5261
container.objectMapperBuilder("crystal", ItemStack.class)
5362
.parser(IObjectParser.wrapStringGetter(Thaumcraft::getAspect, ThaumcraftApiHelper::makeCrystal))
5463
.completerOfNames(thaumcraft.api.aspects.Aspect.aspects::keySet)
5564
.defaultValue(() -> ItemStack.EMPTY)
5665
.docOfType("aspect crystal as item stack")
66+
.toGroovyCode(x -> itemStackCrystalToAspectGroovyCode(x, false))
5767
.register();
5868
ExpansionHelper.mixinClass(ItemStack.class, AspectItemStackExpansion.class);
5969
ExpansionHelper.mixinClass(ItemStack.class, WarpItemStackExpansion.class);

src/main/java/com/cleanroommc/groovyscript/compat/mods/thermalexpansion/ThermalExpansion.java

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -7,9 +7,7 @@
77
import com.cleanroommc.groovyscript.compat.mods.thermalexpansion.device.*;
88
import com.cleanroommc.groovyscript.compat.mods.thermalexpansion.dynamo.*;
99
import com.cleanroommc.groovyscript.compat.mods.thermalexpansion.machine.*;
10-
11-
import java.util.Arrays;
12-
import java.util.Locale;
10+
import com.cleanroommc.groovyscript.helper.ingredient.GroovyScriptCodeConverter;
1311

1412
public class ThermalExpansion extends GroovyPropertyContainer {
1513

@@ -53,8 +51,9 @@ public class ThermalExpansion extends GroovyPropertyContainer {
5351
public void initialize(GroovyContainer<?> container) {
5452
container.objectMapperBuilder("compactorMode", CompactorManager.Mode.class)
5553
.parser(IObjectParser.wrapEnum(CompactorManager.Mode.class, false))
56-
.completerOfNamed(() -> Arrays.asList(CompactorManager.Mode.values()), v -> v.name().toUpperCase(Locale.ROOT))
54+
.completerOfEnum(CompactorManager.Mode.class, false)
5755
.defaultValue(() -> CompactorManager.Mode.ALL)
56+
.toGroovyCode(x -> GroovyScriptCodeConverter.formatGenericHandler("compactorMode", x.name(), false))
5857
.register();
5958
}
6059
}

0 commit comments

Comments
 (0)