From 683451061e2297568e93540802b632be9e0ff5c1 Mon Sep 17 00:00:00 2001 From: Me <135455255+IcarussOne@users.noreply.github.com> Date: Tue, 27 Aug 2024 00:27:25 -0500 Subject: [PATCH] New Dimensional Ripper model [WIP] Still need to get the texture working on this and correctly position it. @Carvercarver1 - Model @TechnoMysterio - Texture --- .../common/events/RegistrationEvents.java | 7 + .../common/init/InitRecipes.java | 246 ++++++------ .../blockstates/dimensional_ripper.json | 26 +- .../assets/thaumicwonders/lang/en_us.lang | 6 +- .../models/block/dimensional_ripper.json | 266 ------------ .../models/block/dimensional_ripper.mtl | 4 + .../models/block/dimensional_ripper.obj | 379 ++++++++++++++++++ .../textures/blocks/dimensional_ripper.png | Bin 0 -> 8332 bytes 8 files changed, 529 insertions(+), 405 deletions(-) delete mode 100644 src/main/resources/assets/thaumicwonders/models/block/dimensional_ripper.json create mode 100644 src/main/resources/assets/thaumicwonders/models/block/dimensional_ripper.mtl create mode 100644 src/main/resources/assets/thaumicwonders/models/block/dimensional_ripper.obj create mode 100644 src/main/resources/assets/thaumicwonders/textures/blocks/dimensional_ripper.png diff --git a/src/main/java/com/verdantartifice/thaumicwonders/common/events/RegistrationEvents.java b/src/main/java/com/verdantartifice/thaumicwonders/common/events/RegistrationEvents.java index 4d1fa690..cdb6057c 100644 --- a/src/main/java/com/verdantartifice/thaumicwonders/common/events/RegistrationEvents.java +++ b/src/main/java/com/verdantartifice/thaumicwonders/common/events/RegistrationEvents.java @@ -10,6 +10,8 @@ import net.minecraft.block.Block; import net.minecraft.item.Item; import net.minecraft.item.crafting.IRecipe; +import net.minecraftforge.client.event.ModelRegistryEvent; +import net.minecraftforge.client.model.obj.OBJLoader; import net.minecraftforge.event.RegistryEvent; import net.minecraftforge.fml.common.Mod; import net.minecraftforge.fml.common.eventhandler.EventPriority; @@ -47,4 +49,9 @@ public static void registerRecipes(RegistryEvent.Register event) { public static void registerEntities(RegistryEvent.Register event) { InitEntities.initEntities(event.getRegistry()); } + + @SubscribeEvent + public static void registerModels(ModelRegistryEvent event) { + OBJLoader.INSTANCE.addDomain(ThaumicWonders.MODID); + } } diff --git a/src/main/java/com/verdantartifice/thaumicwonders/common/init/InitRecipes.java b/src/main/java/com/verdantartifice/thaumicwonders/common/init/InitRecipes.java index 71f4fb9c..70e9332f 100644 --- a/src/main/java/com/verdantartifice/thaumicwonders/common/init/InitRecipes.java +++ b/src/main/java/com/verdantartifice/thaumicwonders/common/init/InitRecipes.java @@ -46,7 +46,7 @@ public class InitRecipes { private static ResourceLocation defaultGroup = new ResourceLocation(""); - + public static void initRecipes(IForgeRegistry forgeRegistry) { initNormalRecipes(forgeRegistry); initArcaneRecipes(); @@ -55,13 +55,13 @@ public static void initRecipes(IForgeRegistry forgeRegistry) { initMultiblockRecipes(); initSmelting(); } - + private static void initMultiblockRecipes() { initCatalyzationChamber(); initPrimordialAccretionChamber(); initCoalescencePlatform(); } - + private static void initCatalyzationChamber() { Part AS = new Part(BlocksTC.stoneArcane, new ItemStack(BlocksTW.PLACEHOLDER_ARCANE_STONE)); Part OB = new Part(Blocks.OBSIDIAN, new ItemStack(BlocksTW.PLACEHOLDER_OBSIDIAN)); @@ -69,26 +69,26 @@ private static void initCatalyzationChamber() { Part QS = new Part(BlocksTW.FLUID_QUICKSILVER, BlocksTW.CATALYZATION_CHAMBER, true); Part[][][] catalyzationChamberBlueprint = { { - { AS, OB, AS }, - { OB, null, OB}, - { AS, OB, AS } + {AS, OB, AS}, + {OB, null, OB}, + {AS, OB, AS} }, { - { AS, OB, AS }, - { OB, QS, OB }, - { AS, IB, AS } + {AS, OB, AS}, + {OB, QS, OB}, + {AS, IB, AS} }, { - { AS, OB, AS }, - { OB, OB, OB }, - { AS, OB, AS } + {AS, OB, AS}, + {OB, OB, OB}, + {AS, OB, AS} } }; IDustTrigger.registerDustTrigger(new DustTriggerMultiblock("TWOND_CATALYZATION_CHAMBER@2", catalyzationChamberBlueprint)); ThaumcraftApi.addMultiblockRecipeToCatalog(new ResourceLocation(ThaumicWonders.MODID, "catalyzation_chamber"), new ThaumcraftApi.BluePrint( - "TWOND_CATALYZATION_CHAMBER@2", - catalyzationChamberBlueprint, - new ItemStack[] { + "TWOND_CATALYZATION_CHAMBER@2", + catalyzationChamberBlueprint, + new ItemStack[]{ new ItemStack(BlocksTC.stoneArcane, 12), new ItemStack(Blocks.OBSIDIAN, 12), new ItemStack(Blocks.IRON_BARS), @@ -96,7 +96,7 @@ private static void initCatalyzationChamber() { } )); } - + private static void initPrimordialAccretionChamber() { Part TH = new Part(BlocksTC.metalBlockThaumium, new ItemStack(BlocksTW.PLACEHOLDER_THAUMIUM_BLOCK)); Part VM = new Part(BlocksTC.metalBlockVoid, new ItemStack(BlocksTW.PLACEHOLDER_VOID_METAL_BLOCK)); @@ -105,26 +105,26 @@ private static void initPrimordialAccretionChamber() { Part QS = new Part(BlocksTW.FLUID_QUICKSILVER, BlocksTW.PRIMORDIAL_ACCRETION_CHAMBER, true); Part[][][] accretionChamberBlueprint = { { - { VM, TH, VM }, - { TH, null, TH }, - { VM, TH, VM } + {VM, TH, VM}, + {TH, null, TH}, + {VM, TH, VM} }, { - { AA, TH, AA }, - { AA, QS, AA }, - { AA, IB, AA } + {AA, TH, AA}, + {AA, QS, AA}, + {AA, IB, AA} }, { - { VM, TH, VM }, - { TH, TH, TH }, - { VM, TH, VM } + {VM, TH, VM}, + {TH, TH, TH}, + {VM, TH, VM} } }; IDustTrigger.registerDustTrigger(new DustTriggerMultiblock("TWOND_PRIMORDIAL_ACCRETION_CHAMBER", accretionChamberBlueprint)); ThaumcraftApi.addMultiblockRecipeToCatalog(new ResourceLocation(ThaumicWonders.MODID, "primordial_accretion_chamber"), new ThaumcraftApi.BluePrint( - "TWOND_PRIMORDIAL_ACCRETION_CHAMBER", - accretionChamberBlueprint, - new ItemStack[] { + "TWOND_PRIMORDIAL_ACCRETION_CHAMBER", + accretionChamberBlueprint, + new ItemStack[]{ new ItemStack(BlocksTC.metalBlockThaumium, 10), new ItemStack(BlocksTC.metalBlockVoid, 8), new ItemStack(BlocksTC.metalAlchemicalAdvanced, 6), @@ -133,7 +133,7 @@ private static void initPrimordialAccretionChamber() { } )); } - + private static void initCoalescencePlatform() { Part VMET = new Part(BlocksTC.stoneArcane, null); Part ASBR = new Part(BlocksTC.stoneArcaneBrick, null); @@ -145,71 +145,71 @@ private static void initCoalescencePlatform() { Part CMAT = new Part(BlocksTW.COALESCENCE_MATRIX_PRECURSOR, new ItemStack(BlocksTW.COALESCENCE_MATRIX)); Part[][][] coalescencePlatformBlueprint = { { - { null, null, SNTP, null, null, null, SNTP, null, null }, - { null, null, null, null, null, null, null, null, null }, - { SNTP, null, null, null, null, null, null, null, SNTP }, - { null, null, null, null, null, null, null, null, null }, - { null, null, null, null, null, null, null, null, null }, - { null, null, null, null, null, null, null, null, null }, - { SNTP, null, null, null, null, null, null, null, SNTP }, - { null, null, null, null, null, null, null, null, null }, - { null, null, SNTP, null, null, null, SNTP, null, null }, + {null, null, SNTP, null, null, null, SNTP, null, null}, + {null, null, null, null, null, null, null, null, null}, + {SNTP, null, null, null, null, null, null, null, SNTP}, + {null, null, null, null, null, null, null, null, null}, + {null, null, null, null, null, null, null, null, null}, + {null, null, null, null, null, null, null, null, null}, + {SNTP, null, null, null, null, null, null, null, SNTP}, + {null, null, null, null, null, null, null, null, null}, + {null, null, SNTP, null, null, null, SNTP, null, null}, }, { - { null, null, SNB1, null, null, null, SNB2, null, null }, - { null, null, null, null, null, null, null, null, null }, - { SNB1, null, null, null, null, null, null, null, SNB2 }, - { null, null, null, null, null, null, null, null, null }, - { null, null, null, null, CMAT, null, null, null, null }, - { null, null, null, null, null, null, null, null, null }, - { SNB3, null, null, null, null, null, null, null, SNB4 }, - { null, null, null, null, null, null, null, null, null }, - { null, null, SNB3, null, null, null, SNB4, null, null }, + {null, null, SNB1, null, null, null, SNB2, null, null}, + {null, null, null, null, null, null, null, null, null}, + {SNB1, null, null, null, null, null, null, null, SNB2}, + {null, null, null, null, null, null, null, null, null}, + {null, null, null, null, CMAT, null, null, null, null}, + {null, null, null, null, null, null, null, null, null}, + {SNB3, null, null, null, null, null, null, null, SNB4}, + {null, null, null, null, null, null, null, null, null}, + {null, null, SNB3, null, null, null, SNB4, null, null}, }, { - { null, null, ASBR, ASBR, ASBR, ASBR, ASBR, null, null }, - { null, ASBR, VMET, VMET, VMET, VMET, VMET, ASBR, null }, - { ASBR, VMET, VMET, VMET, VMET, VMET, VMET, VMET, ASBR }, - { ASBR, VMET, VMET, VMET, VMET, VMET, VMET, VMET, ASBR }, - { ASBR, VMET, VMET, VMET, VMET, VMET, VMET, VMET, ASBR }, - { ASBR, VMET, VMET, VMET, VMET, VMET, VMET, VMET, ASBR }, - { ASBR, VMET, VMET, VMET, VMET, VMET, VMET, VMET, ASBR }, - { null, ASBR, VMET, VMET, VMET, VMET, VMET, ASBR, null }, - { null, null, ASBR, ASBR, ASBR, ASBR, ASBR, null, null }, + {null, null, ASBR, ASBR, ASBR, ASBR, ASBR, null, null}, + {null, ASBR, VMET, VMET, VMET, VMET, VMET, ASBR, null}, + {ASBR, VMET, VMET, VMET, VMET, VMET, VMET, VMET, ASBR}, + {ASBR, VMET, VMET, VMET, VMET, VMET, VMET, VMET, ASBR}, + {ASBR, VMET, VMET, VMET, VMET, VMET, VMET, VMET, ASBR}, + {ASBR, VMET, VMET, VMET, VMET, VMET, VMET, VMET, ASBR}, + {ASBR, VMET, VMET, VMET, VMET, VMET, VMET, VMET, ASBR}, + {null, ASBR, VMET, VMET, VMET, VMET, VMET, ASBR, null}, + {null, null, ASBR, ASBR, ASBR, ASBR, ASBR, null, null}, } }; IDustTrigger.registerDustTrigger(new DustTriggerMultiblock("TWOND_COALESCENCE_MATRIX", coalescencePlatformBlueprint)); ThaumcraftApi.addMultiblockRecipeToCatalog(new ResourceLocation(ThaumicWonders.MODID, "coalescence_platform"), new ThaumcraftApi.BluePrint( - "TWOND_COALESCENCE_MATRIX", - coalescencePlatformBlueprint, - new ItemStack[] { + "TWOND_COALESCENCE_MATRIX", + coalescencePlatformBlueprint, + new ItemStack[]{ new ItemStack(BlocksTC.stoneArcaneBrick, 24), new ItemStack(BlocksTC.stoneArcane, 61), new ItemStack(BlocksTW.COALESCENCE_MATRIX_PRECURSOR) } )); } - + private static void initNormalRecipes(IForgeRegistry forgeRegistry) { forgeRegistry.register(new RecipeFlyingCarpetDyes()); - + ResourceLocation qsGroup = new ResourceLocation(ThaumicWonders.MODID, "quicksilver_bucket_group"); - shapelessOreDictRecipe("quicksilver_bucket", qsGroup, FluidUtil.getFilledBucket(new FluidStack(FluidQuicksilver.INSTANCE, 1000)), new Object[] { - Items.BUCKET, new ItemStack(ItemsTC.quicksilver), new ItemStack(ItemsTC.quicksilver), new ItemStack(ItemsTC.quicksilver), - new ItemStack(ItemsTC.quicksilver), new ItemStack(ItemsTC.quicksilver), new ItemStack(ItemsTC.quicksilver), - new ItemStack(ItemsTC.quicksilver), new ItemStack(ItemsTC.quicksilver) + shapelessOreDictRecipe("quicksilver_bucket", qsGroup, FluidUtil.getFilledBucket(new FluidStack(FluidQuicksilver.INSTANCE, 1000)), new Object[]{ + Items.BUCKET, new ItemStack(ItemsTC.quicksilver), new ItemStack(ItemsTC.quicksilver), new ItemStack(ItemsTC.quicksilver), + new ItemStack(ItemsTC.quicksilver), new ItemStack(ItemsTC.quicksilver), new ItemStack(ItemsTC.quicksilver), + new ItemStack(ItemsTC.quicksilver), new ItemStack(ItemsTC.quicksilver) }); - shapelessOreDictRecipe("quicksilver_bucket_deconstruct", qsGroup, new ItemStack(ItemsTC.quicksilver, 8), - new Object[] { new IngredientNBTTC(FluidUtil.getFilledBucket(new FluidStack(FluidQuicksilver.INSTANCE, 1000))) }); + shapelessOreDictRecipe("quicksilver_bucket_deconstruct", qsGroup, new ItemStack(ItemsTC.quicksilver, 8), + new Object[]{new IngredientNBTTC(FluidUtil.getFilledBucket(new FluidStack(FluidQuicksilver.INSTANCE, 1000)))}); } - + private static IRecipe shapelessOreDictRecipe(@Nonnull String name, @Nullable ResourceLocation group, @Nonnull ItemStack result, Object[] inputs) { IRecipe recipe = new ShapelessOreRecipe(group, result, inputs); recipe.setRegistryName(new ResourceLocation(ThaumicWonders.MODID, name)); GameData.register_impl(recipe); return recipe; } - + private static void initArcaneRecipes() { ThaumcraftApi.addArcaneCraftingRecipe(new ResourceLocation(ThaumicWonders.MODID, "dimensional_ripper"), new ShapedArcaneRecipe( defaultGroup, @@ -217,7 +217,7 @@ private static void initArcaneRecipes() { 100, new AspectList(), BlocksTW.DIMENSIONAL_RIPPER, - new Object[] { + new Object[]{ "BBB", "VAV", "VMV", @@ -233,7 +233,7 @@ private static void initArcaneRecipes() { 50, new AspectList().add(Aspect.AIR, 1).add(Aspect.WATER, 1).add(Aspect.ORDER, 1), BlocksTW.INSPIRATION_ENGINE, - new Object[] { + new Object[]{ "BRB", "VMV", "SZS", @@ -251,7 +251,7 @@ private static void initArcaneRecipes() { 150, new AspectList().add(Aspect.AIR, 3).add(Aspect.ORDER, 3).add(Aspect.ENTROPY, 3), BlocksTW.PORTAL_ANCHOR, - new Object[] { + new Object[]{ "VPV", "PRP", "VPV", @@ -266,7 +266,7 @@ private static void initArcaneRecipes() { 50, new AspectList(), BlocksTW.HEXAMITE, - new Object[] { + new Object[]{ "AVA", "VGV", "AVA", @@ -281,7 +281,7 @@ private static void initArcaneRecipes() { 750, new AspectList().add(Aspect.AIR, 8).add(Aspect.WATER, 8).add(Aspect.ORDER, 8), BlocksTW.FLUX_DISTILLER, - new Object[] { + new Object[]{ "VLV", "MCM", "VAV", @@ -298,7 +298,7 @@ private static void initArcaneRecipes() { 100, new AspectList().add(Aspect.AIR, 2).add(Aspect.ORDER, 2), BlocksTW.PRIMORDIAL_ACCELERATOR_TUNNEL, - new Object[] { + new Object[]{ "VEV", "ETE", "VEV", @@ -313,7 +313,7 @@ private static void initArcaneRecipes() { 250, new AspectList().add(Aspect.EARTH, 5).add(Aspect.ORDER, 5), BlocksTW.PRIMORDIAL_ACCELERATOR_TERMINUS, - new Object[] { + new Object[]{ " V ", "VCV", " V ", @@ -403,7 +403,7 @@ private static void initCrucibleRecipes() { new AspectList().add(Aspect.MAGIC, 20).add(Aspect.MIND, 20).add(Aspect.VOID, 20) )); } - + private static void initInfusionRecipes() { ThaumcraftApi.addInfusionCraftingRecipe(new ResourceLocation(ThaumicWonders.MODID, "everburning_urn"), new InfusionRecipe( "TWOND_EVERBURNING_URN", @@ -411,7 +411,7 @@ private static void initInfusionRecipes() { 4, new AspectList().add(Aspect.FIRE, 40).add(Aspect.EARTH, 20).add(Aspect.ENERGY, 10).add(Aspect.CRAFT, 10), new ItemStack(BlocksTC.everfullUrn), - new Object[] { + new Object[]{ new ItemStack(Items.NETHERBRICK), new ItemStack(Items.NETHERBRICK), new ItemStack(Items.NETHERBRICK), @@ -420,7 +420,7 @@ private static void initInfusionRecipes() { new ItemStack(Blocks.OBSIDIAN) } )); - + ItemStack destroyer = new ItemStack(ItemsTW.PRIMAL_DESTROYER); EnumInfusionEnchantment.addInfusionEnchantment(destroyer, EnumInfusionEnchantment.ESSENCE, 3); ThaumcraftApi.addInfusionCraftingRecipe(new ResourceLocation(ThaumicWonders.MODID, "primal_destroyer"), new InfusionRecipe( @@ -429,7 +429,7 @@ private static void initInfusionRecipes() { 8, new AspectList().add(Aspect.FIRE, 100).add(Aspect.ENTROPY, 50).add(Aspect.VOID, 50).add(Aspect.AVERSION, 100).add(Aspect.ELDRITCH, 75).add(Aspect.DARKNESS, 75).add(Aspect.DEATH, 100), Ingredient.fromItem(ItemsTC.voidSword), - new Object[] { + new Object[]{ Ingredient.fromItem(ItemsTC.primordialPearl), new ItemStack(Items.NETHER_STAR), "plateVoid", @@ -438,14 +438,14 @@ private static void initInfusionRecipes() { ThaumcraftApiHelper.makeCrystal(Aspect.FIRE) } )); - + ThaumcraftApi.addInfusionCraftingRecipe(new ResourceLocation(ThaumicWonders.MODID, "flying_carpet"), new InfusionRecipe( "TWOND_FLYING_CARPET", new ItemStack(ItemsTW.FLYING_CARPET), 6, new AspectList().add(Aspect.FLIGHT, 150).add(Aspect.MOTION, 100).add(Aspect.AIR, 100).add(Aspect.MAGIC, 50).add(Aspect.ENERGY, 50), new ItemStack(Blocks.CARPET, 1, 32767), - new Object[] { + new Object[]{ new ItemStack(BlocksTC.levitator), new ItemStack(Items.SADDLE), new ItemStack(ItemsTC.visResonator), @@ -453,14 +453,14 @@ private static void initInfusionRecipes() { ThaumcraftApiHelper.makeCrystal(Aspect.AIR) } )); - + ThaumcraftApi.addInfusionCraftingRecipe(new ResourceLocation(ThaumicWonders.MODID, "timewinder"), new InfusionRecipe( "TWOND_TIMEWINDER", new ItemStack(ItemsTW.TIMEWINDER), 7, new AspectList().add(Aspect.ELDRITCH, 100).add(Aspect.DARKNESS, 100).add(Aspect.LIGHT, 100), new ItemStack(Items.CLOCK), - new Object[] { + new Object[]{ new ItemStack(Items.DIAMOND), new ItemStack(Items.ENDER_PEARL), new ItemStack(ItemsTC.quicksilver), @@ -475,14 +475,14 @@ private static void initInfusionRecipes() { new ItemStack(ItemsTC.celestialNotes, 1, 0), } )); - + ThaumcraftApi.addInfusionCraftingRecipe(new ResourceLocation(ThaumicWonders.MODID, "madness_engine"), new InfusionRecipe( "TWOND_MADNESS_ENGINE", new ItemStack(BlocksTW.MADNESS_ENGINE), 6, new AspectList().add(Aspect.ELDRITCH, 150).add(Aspect.MIND, 100).add(Aspect.MECHANISM, 100).add(Aspect.AURA, 50), new ItemStack(BlocksTW.INSPIRATION_ENGINE), - new Object[] { + new Object[]{ "plateVoid", "plateVoid", "plateThaumium", @@ -491,34 +491,34 @@ private static void initInfusionRecipes() { new ItemStack(Items.ENDER_PEARL) } )); - + ThaumcraftApi.addInfusionCraftingRecipe(new ResourceLocation(ThaumicWonders.MODID, "portal_generator"), new InfusionRecipe( "TWOND_VOID_PORTAL", new ItemStack(BlocksTW.PORTAL_GENERATOR), 8, new AspectList().add(Aspect.ELDRITCH, 150).add(Aspect.MOTION, 150).add(Aspect.EXCHANGE, 100), new ItemStack(BlocksTW.PORTAL_ANCHOR), - new Object[] { + new Object[]{ Ingredient.fromItem(ItemsTC.primordialPearl), new ItemStack(BlocksTC.mirror), new ItemStack(Items.ENDER_PEARL) } )); - + ThaumcraftApi.addInfusionCraftingRecipe(new ResourceLocation(ThaumicWonders.MODID, "flux_capacitor"), new InfusionRecipe( "TWOND_FLUX_CAPACITOR", new ItemStack(BlocksTW.FLUX_CAPACITOR), 6, new AspectList().add(Aspect.FLUX, 50).add(Aspect.AURA, 50).add(Aspect.VOID, 50), new ItemStack(BlocksTC.visBattery), - new Object[] { + new Object[]{ Ingredient.fromItem(ItemsTC.primordialPearl), new ItemStack(BlocksTC.crystalTaint), new ItemStack(ItemsTC.visResonator), new ItemStack(BlocksTC.condenserlattice) } )); - + List ingredients = new ArrayList(); ingredients.add(Ingredient.fromItem(ItemsTC.primordialPearl)); ingredients.add(new ItemStack(ItemsTC.clusters, 1, 0)); @@ -543,22 +543,22 @@ private static void initInfusionRecipes() { new AspectList().add(Aspect.METAL, 100).add(Aspect.FLUX, 100).add(Aspect.ALCHEMY, 25), new ItemStack(ItemsTW.ALCHEMIST_STONE), ingredients.toArray() - )); - + )); + List divinerIngredients = new ArrayList(); divinerIngredients.add("oreIron"); divinerIngredients.add("oreGold"); if (OreDictionary.doesOreNameExist("oreCopper") && !OreDictionary.getOres("oreCopper", false).isEmpty()) { - divinerIngredients.add("oreCopper"); + divinerIngredients.add("oreCopper"); } if (OreDictionary.doesOreNameExist("oreTin") && !OreDictionary.getOres("oreTin", false).isEmpty()) { - divinerIngredients.add("oreTin"); + divinerIngredients.add("oreTin"); } if (OreDictionary.doesOreNameExist("oreSilver") && !OreDictionary.getOres("oreSilver", false).isEmpty()) { - divinerIngredients.add("oreSilver"); + divinerIngredients.add("oreSilver"); } if (OreDictionary.doesOreNameExist("oreLead") && !OreDictionary.getOres("oreLead", false).isEmpty()) { - divinerIngredients.add("oreLead"); + divinerIngredients.add("oreLead"); } divinerIngredients.add("oreCinnabar"); ThaumcraftApi.addInfusionCraftingRecipe(new ResourceLocation(ThaumicWonders.MODID, "ore_diviner"), new InfusionRecipe( @@ -576,7 +576,7 @@ private static void initInfusionRecipes() { 8, new AspectList().add(Aspect.PROTECT, 45).add(Aspect.METAL, 45).add(Aspect.ELDRITCH, 50).add(Aspect.ENERGY, 25).add(Aspect.VOID, 25).add(Aspect.MAGIC, 25).add(Aspect.SENSES, 25).add(Aspect.UNDEAD, 40).add(Aspect.LIFE, 40), new ItemStack(ItemsTC.voidHelm), - new Object[] { + new Object[]{ Ingredient.fromItem(ItemsTC.primordialPearl), "plateVoid", new ItemStack(ItemsTC.crimsonPlateHelm), @@ -586,14 +586,14 @@ private static void initInfusionRecipes() { "leather" } )); - + ThaumcraftApi.addInfusionCraftingRecipe(new ResourceLocation(ThaumicWonders.MODID, "void_fortress_chest"), new InfusionRecipe( "TWOND_VOID_FORTRESS_ARMOR", new ItemStack(ItemsTW.VOID_FORTRESS_CHEST), 8, new AspectList().add(Aspect.PROTECT, 55).add(Aspect.METAL, 55).add(Aspect.ELDRITCH, 50).add(Aspect.ENERGY, 25).add(Aspect.VOID, 35).add(Aspect.MAGIC, 25), new ItemStack(ItemsTC.voidChest), - new Object[] { + new Object[]{ Ingredient.fromItem(ItemsTC.primordialPearl), "plateVoid", "plateVoid", @@ -603,14 +603,14 @@ private static void initInfusionRecipes() { "leather" } )); - + ThaumcraftApi.addInfusionCraftingRecipe(new ResourceLocation(ThaumicWonders.MODID, "void_fortress_legs"), new InfusionRecipe( "TWOND_VOID_FORTRESS_ARMOR", new ItemStack(ItemsTW.VOID_FORTRESS_LEGS), 8, new AspectList().add(Aspect.PROTECT, 50).add(Aspect.METAL, 50).add(Aspect.ELDRITCH, 50).add(Aspect.ENERGY, 25).add(Aspect.VOID, 30).add(Aspect.MAGIC, 25), new ItemStack(ItemsTC.voidLegs), - new Object[] { + new Object[]{ Ingredient.fromItem(ItemsTC.primordialPearl), "plateVoid", "plateVoid", @@ -619,14 +619,14 @@ private static void initInfusionRecipes() { "leather" } )); - + ThaumcraftApi.addInfusionCraftingRecipe(new ResourceLocation(ThaumicWonders.MODID, "structure_diviner"), new InfusionRecipe( "TWOND_STRUCTURE_DIVINER", new ItemStack(ItemsTW.STRUCTURE_DIVINER), 6, new AspectList().add(Aspect.SENSES, 100).add(Aspect.MECHANISM, 50).add(Aspect.MAGIC, 50).add(Aspect.EARTH, 50), new ItemStack(Items.COMPASS), - new Object[] { + new Object[]{ new ItemStack(Items.ENDER_EYE), new ItemStack(Items.EMERALD), new ItemStack(Items.ENDER_EYE), @@ -635,28 +635,28 @@ private static void initInfusionRecipes() { new ItemStack(Items.PRISMARINE_CRYSTALS) } )); - + ThaumcraftApi.addInfusionCraftingRecipe(new ResourceLocation(ThaumicWonders.MODID, "night_vision_goggles"), new InfusionRecipe( "TWOND_NV_GOGGLES", new ItemStack(ItemsTW.NIGHT_VISION_GOGGLES), 4, new AspectList().add(Aspect.SENSES, 50).add(Aspect.LIGHT, 50).add(Aspect.MAGIC, 25).add(Aspect.ENERGY, 25), new ItemStack(ItemsTC.goggles), - new Object[] { + new Object[]{ new ItemStack(Items.GOLDEN_CARROT), "nitor", ThaumcraftApiHelper.makeCrystal(Aspect.SENSES), ThaumcraftApiHelper.makeCrystal(Aspect.SENSES) } )); - + ThaumcraftApi.addInfusionCraftingRecipe(new ResourceLocation(ThaumicWonders.MODID, "void_beacon"), new InfusionRecipe( "TWOND_VOID_BEACON", new ItemStack(BlocksTW.VOID_BEACON), 10, new AspectList().add(Aspect.ELDRITCH, 250).add(Aspect.VOID, 250).add(Aspect.MAGIC, 250).add(Aspect.FLUX, 200).add(Aspect.AIR, 100).add(Aspect.EARTH, 100).add(Aspect.FIRE, 100).add(Aspect.WATER, 100).add(Aspect.ORDER, 100).add(Aspect.ENTROPY, 100), new ItemStack(Blocks.BEACON), - new Object[] { + new Object[]{ Ingredient.fromItem(ItemsTC.primordialPearl), "plateVoid", Ingredient.fromItem(ItemsTC.primordialPearl), @@ -667,28 +667,28 @@ private static void initInfusionRecipes() { "plateVoid" } )); - + ThaumcraftApi.addInfusionCraftingRecipe(new ResourceLocation(ThaumicWonders.MODID, "cleansing_charm"), new InfusionRecipe( "TWOND_CLEANSING_CHARM", new ItemStack(ItemsTW.CLEANSING_CHARM), 8, new AspectList().add(Aspect.MIND, 225).add(Aspect.ORDER, 225).add(Aspect.ELDRITCH, 150).add(Aspect.LIFE, 150), new ItemStack(Items.ENDER_PEARL), - new Object[] { + new Object[]{ Ingredient.fromItem(ItemsTC.primordialPearl), new ItemStack(Items.GOLD_INGOT), new ItemStack(Items.GOLD_INGOT), new ItemStack(Items.GOLD_INGOT) } )); - + ThaumcraftApi.addInfusionCraftingRecipe(new ResourceLocation(ThaumicWonders.MODID, "primordial_accelerator"), new InfusionRecipe( "TWOND_PRIMORDIAL_ACCELERATOR", new ItemStack(BlocksTW.PRIMORDIAL_ACCELERATOR), 10, new AspectList().add(Aspect.MOTION, 250).add(Aspect.MECHANISM, 200).add(Aspect.ENERGY, 200).add(Aspect.ELDRITCH, 100), new ItemStack(Blocks.DISPENSER), - new Object[] { + new Object[]{ new ItemStack(BlocksTW.PRIMORDIAL_ACCELERATOR_TUNNEL), "plateVoid", new ItemStack(ItemsTC.mechanismComplex), @@ -699,47 +699,47 @@ private static void initInfusionRecipes() { "plateVoid" } )); - + ThaumcraftApi.addInfusionCraftingRecipe(new ResourceLocation(ThaumicWonders.MODID, "shimmerleaf_seed"), new InfusionRecipe( "TWOND_MYSTIC_GARDENING", new ItemStack(ItemsTW.SHIMMERLEAF_SEED, 1), 1, new AspectList().add(Aspect.PLANT, 5).add(Aspect.LIFE, 5).add(Aspect.AURA, 5), new ItemStack(Items.WHEAT_SEEDS), - new Object[] { + new Object[]{ new ItemStack(ItemsTC.salisMundus) } )); - + ThaumcraftApi.addInfusionCraftingRecipe(new ResourceLocation(ThaumicWonders.MODID, "cinderpearl_seed"), new InfusionRecipe( "TWOND_MYSTIC_GARDENING", new ItemStack(ItemsTW.CINDERPEARL_SEED, 1), 1, new AspectList().add(Aspect.PLANT, 5).add(Aspect.LIFE, 5).add(Aspect.FIRE, 5), new ItemStack(Items.WHEAT_SEEDS), - new Object[] { + new Object[]{ new ItemStack(ItemsTC.salisMundus) } )); - + ThaumcraftApi.addInfusionCraftingRecipe(new ResourceLocation(ThaumicWonders.MODID, "vishroom_spore"), new InfusionRecipe( "TWOND_MYSTIC_GARDENING", new ItemStack(ItemsTW.VISHROOM_SPORE, 1), 1, new AspectList().add(Aspect.PLANT, 5).add(Aspect.LIFE, 5).add(Aspect.MAGIC, 5), new ItemStack(Items.WHEAT_SEEDS), - new Object[] { + new Object[]{ new ItemStack(ItemsTC.salisMundus) } )); - + ThaumcraftApi.addInfusionCraftingRecipe(new ResourceLocation(ThaumicWonders.MODID, "coalescence_matrix"), new InfusionRecipe( "TWOND_COALESCENCE_MATRIX", new ItemStack(BlocksTW.COALESCENCE_MATRIX_PRECURSOR), 10, new AspectList().add(Aspect.FLUX, 200).add(Aspect.MAN, 100).add(Aspect.MAGIC, 200).add(Aspect.ENERGY, 100), new ItemStack(Blocks.GOLD_BLOCK), - new Object[] { + new Object[]{ Ingredient.fromItem(ItemsTC.primordialPearl), new ItemStack(BlocksTC.inlay), new ItemStack(BlocksTC.inlay), @@ -749,20 +749,20 @@ private static void initInfusionRecipes() { } )); } - + private static void initSmelting() { GameRegistry.addSmelting(new ItemStack(ItemsTW.ELDRITCH_CLUSTER, 1, 0), new ItemStack(Items.IRON_INGOT, 3, 0), 1.0F); GameRegistry.addSmelting(new ItemStack(ItemsTW.ELDRITCH_CLUSTER, 1, 1), new ItemStack(Items.GOLD_INGOT, 3, 0), 1.0F); GameRegistry.addSmelting(new ItemStack(ItemsTW.ELDRITCH_CLUSTER, 1, 6), new ItemStack(ItemsTC.quicksilver, 3, 0), 1.0F); GameRegistry.addSmelting(new ItemStack(ItemsTW.ELDRITCH_CLUSTER, 1, 7), new ItemStack(Items.QUARTZ, 3, 0), 1.0F); GameRegistry.addSmelting(new ItemStack(ItemsTW.ELDRITCH_CLUSTER, 1, 8), new ItemStack(ItemsTC.ingots, 2, 1), 1.0F); - + ThaumcraftApi.addSmeltingBonus(new ItemStack(ItemsTW.ELDRITCH_CLUSTER, 1, 0), new ItemStack(Items.IRON_NUGGET, 1, 0)); ThaumcraftApi.addSmeltingBonus(new ItemStack(ItemsTW.ELDRITCH_CLUSTER, 1, 1), new ItemStack(Items.GOLD_NUGGET, 1, 0)); ThaumcraftApi.addSmeltingBonus(new ItemStack(ItemsTW.ELDRITCH_CLUSTER, 1, 6), new ItemStack(ItemsTC.nuggets, 1, 5)); ThaumcraftApi.addSmeltingBonus(new ItemStack(ItemsTW.ELDRITCH_CLUSTER, 1, 7), new ItemStack(ItemsTC.nuggets, 1, 9)); ThaumcraftApi.addSmeltingBonus(new ItemStack(ItemsTW.ELDRITCH_CLUSTER, 1, 8), new ItemStack(ItemsTC.nuggets, 1, 7)); - + ThaumcraftApi.addSmeltingBonus(new ItemStack(ItemsTW.ELDRITCH_CLUSTER, 1, 32767), new ItemStack(ItemsTC.nuggets, 1, 10), 0.025F); ThaumcraftApi.addSmeltingBonus(new ItemStack(ItemsTW.ELDRITCH_CLUSTER, 1, 32767), ThaumcraftApiHelper.makeCrystal(Aspect.FLUX), 0.1F); diff --git a/src/main/resources/assets/thaumicwonders/blockstates/dimensional_ripper.json b/src/main/resources/assets/thaumicwonders/blockstates/dimensional_ripper.json index e9969bc8..f6d658c9 100644 --- a/src/main/resources/assets/thaumicwonders/blockstates/dimensional_ripper.json +++ b/src/main/resources/assets/thaumicwonders/blockstates/dimensional_ripper.json @@ -1,22 +1,22 @@ { "forge_marker": 1, "defaults": { - "model": "thaumicwonders:dimensional_ripper", + "model": "thaumicwonders:dimensional_ripper.obj", "transform": "forge:default-block" }, "variants": { "normal": [{}], "inventory": [{}], - "enabled=false,facing=down": { "model": "thaumicwonders:dimensional_ripper","x": 180 }, - "enabled=false,facing=up": { "model": "thaumicwonders:dimensional_ripper"}, - "enabled=false,facing=north": { "model": "thaumicwonders:dimensional_ripper","x": 90 }, - "enabled=false,facing=south": { "model": "thaumicwonders:dimensional_ripper","y": 180, "x": 90 }, - "enabled=false,facing=west": { "model": "thaumicwonders:dimensional_ripper","y": 270, "x": 90 }, - "enabled=false,facing=east": { "model": "thaumicwonders:dimensional_ripper","y": 90, "x": 90 }, - "enabled=true,facing=down": { "model": "thaumicwonders:dimensional_ripper","x": 180 }, - "enabled=true,facing=up": { "model": "thaumicwonders:dimensional_ripper"}, - "enabled=true,facing=north": { "model": "thaumicwonders:dimensional_ripper","x": 90 }, - "enabled=true,facing=south": { "model": "thaumicwonders:dimensional_ripper","y": 180, "x": 90 }, - "enabled=true,facing=west": { "model": "thaumicwonders:dimensional_ripper","y": 270, "x": 90 }, - "enabled=true,facing=east": { "model": "thaumicwonders:dimensional_ripper","y": 90, "x": 90 } + "enabled=false,facing=down": { "model": "thaumicwonders:dimensional_ripper.obj","x": 180 }, + "enabled=false,facing=up": { "model": "thaumicwonders:dimensional_ripper.obj"}, + "enabled=false,facing=north": { "model": "thaumicwonders:dimensional_ripper.obj","x": 90 }, + "enabled=false,facing=south": { "model": "thaumicwonders:dimensional_ripper.obj","y": 180, "x": 90 }, + "enabled=false,facing=west": { "model": "thaumicwonders:dimensional_ripper.obj","y": 270, "x": 90 }, + "enabled=false,facing=east": { "model": "thaumicwonders:dimensional_ripper.obj","y": 90, "x": 90 }, + "enabled=true,facing=down": { "model": "thaumicwonders:dimensional_ripper.obj","x": 180 }, + "enabled=true,facing=up": { "model": "thaumicwonders:dimensional_ripper.obj"}, + "enabled=true,facing=north": { "model": "thaumicwonders:dimensional_ripper.obj","x": 90 }, + "enabled=true,facing=south": { "model": "thaumicwonders:dimensional_ripper.obj","y": 180, "x": 90 }, + "enabled=true,facing=west": { "model": "thaumicwonders:dimensional_ripper.obj","y": 270, "x": 90 }, + "enabled=true,facing=east": { "model": "thaumicwonders:dimensional_ripper.obj","y": 90, "x": 90 } } } diff --git a/src/main/resources/assets/thaumicwonders/lang/en_us.lang b/src/main/resources/assets/thaumicwonders/lang/en_us.lang index b5c39a79..c355b701 100644 --- a/src/main/resources/assets/thaumicwonders/lang/en_us.lang +++ b/src/main/resources/assets/thaumicwonders/lang/en_us.lang @@ -1,6 +1,6 @@ // Device Tiles tile.thaumicwonders.everburning_urn.name=Everburning Urn -tile.thaumicwonders.dimensional_ripper.name=Dimensional Ripper +tile.thaumicwonders.dimensional_ripper.name=Dimensional Perforator tile.thaumicwonders.creative_essentia_jar.name=Creative Essentia Jar tile.thaumicwonders.creative_essentia_jar.tooltip.1=Returns infinite amount of tile.thaumicwonders.creative_essentia_jar.tooltip.2=contained essentia type. @@ -95,9 +95,9 @@ thaumicwonders.research.everburning_urn.title=Everburning Urn thaumicwonders.research.everburning_urn.text.stage.1=The Everfull Urn is an incredibly useful device, but I'm convinced that I can do better. Something similar, but for other types of fluids. Fluids like, say... lava? thaumicwonders.research.everburning_urn.text.stage.2=By infusing the Everfull Urn with a series of microscopic portals to the Nether, I'm able to siphon all the lava that I could ever need. The process is not perfect, however.
For one thing, it's slow. Whereas its watery brethren fills up in moments, this device, which I've dubbed the Everburning Urn, takes about a minute to generate a single bucket.
The process is much more draining to the aura, as well. My calculations indicate that maintaining the portal mesh consumes about 25 points of vis from the aura.
Finally, for safety's sake, I've disabled the urn's ability to automatically fill nearby vessels. Can't have liquid hot magma just flying around the place. -thaumicwonders.research.dimensional_ripper.title=Dimensional Ripper +thaumicwonders.research.dimensional_ripper.title=Dimensional Perforator thaumicwonders.research.dimensional_ripper.text.stage.1=If I'm going to continue to study these flux rifts and properly utilize them, I'll need better tools. Current methods revolve mostly around polluting aura with flux in large quantities, hoping the emerging rifts are not too far to get to, and to also hope they will not cause yet another violent rearrangement of my furniture and floor plans.
This is too haphazard and uncontrollable to make rifts this way, as well as annoying to repair the damages caused by the breach in the fabric of reality.
A precision is required, an option preferably less costly and damaging to the aura. -thaumicwonders.research.dimensional_ripper.text.stage.2=I do believe I've outdone myself in the area of rifts here. By channeling concentrated beams of Vitium in a particular way into one singular spot, I was able to successfully create a tear in the real space right where I want it to be.
A single Dimensional Ripper isn't enough, however, nor could it ever be. The energies required would be completely infeasible. Rather, a pair of the devices must be used. By placing them precisely ten blocks apart and having the output ends facing each other, the machines can resonate together, amplifying their power enough to serve my needs. When so placed, small amounts of energy will flit between them, confirming that they are connected.
Each of the two devices must be fueled with at least fifty Vitium essentia to reach critical mass. Applying a redstone signal to either ripper will disable the pair and prevent any reaction from taking place. Rippers disabled in this way can be fed additional essentia, beyond the minimum of fifty, to result in a larger rift once they're finally activated. I need to be careful and plan the expected size beforehand.
As a safety measure, the Rippers will not activate if they sense another rift already open nearby, but not at the target point. The veil between us and the void can only take so much tampering before it fails completely and makes or perhaps lets-in something utterly terrible, or causes a devastating feedback from the aura itself, and I'm not §othat§r crazy to find out the exact specifics in practice. Not yet at least...Additionally, despite using Vitium as a power source and the means to create a Rift, the Dimensional Rippers cannot sustain the rift or stabilize it enough by any means. After all, this machine's purpose is to create a rift in the first place, not maintain or manipulate it. I should use other means of interacting with rifts if I desire something specific. +thaumicwonders.research.dimensional_ripper.text.stage.2=I do believe I've outdone myself in the area of rifts here. By channeling concentrated beams of Vitium in a particular way into one singular spot, I was able to successfully create a tear in the real space right where I want it to be.
A single Dimensional Perforator isn't enough, however, nor could it ever be. The energies required would be completely infeasible. Rather, a pair of the devices must be used. By placing them precisely ten blocks apart and having the output ends facing each other, the machines can resonate together, amplifying their power enough to serve my needs. When so placed, small amounts of energy will flit between them, confirming that they are connected.
Each of the two devices must be fueled with at least fifty Vitium essentia to reach critical mass. Applying a redstone signal to either perforator will disable the pair and prevent any reaction from taking place. Perforators disabled in this way can be fed additional essentia, beyond the minimum of fifty, to result in a larger rift once they're finally activated. I need to be careful and plan the expected size beforehand.
As a safety measure, the perforators will not activate if they sense another rift already open nearby, but not at the target point. The veil between us and the void can only take so much tampering before it fails completely and makes or perhaps lets-in something utterly terrible, or causes a devastating feedback from the aura itself, and I'm not §othat§r crazy to find out the exact specifics in practice. Not yet at least...Additionally, despite using Vitium as a power source and the means to create a Rift, the Dimensional Perforators cannot sustain the rift or stabilize it enough by any means. After all, this machine's purpose is to create a rift in the first place, not maintain or manipulate it. I should use other means of interacting with rifts if I desire something specific. thaumicwonders.research.primal_destroyer.title=Primal Destroyer thaumicwonders.research.primal_destroyer.text.stage.1=A void sword is, as any sword, deadly by design, but the only thing that changes about it is the metal, as it is still a sword in nature - a simple tool. It will be handy to try and see if I can make an even more powerful item with the application of the right magics. diff --git a/src/main/resources/assets/thaumicwonders/models/block/dimensional_ripper.json b/src/main/resources/assets/thaumicwonders/models/block/dimensional_ripper.json deleted file mode 100644 index a1320a1f..00000000 --- a/src/main/resources/assets/thaumicwonders/models/block/dimensional_ripper.json +++ /dev/null @@ -1,266 +0,0 @@ -{ - "__comment": "Model generated using MrCrayfish's Model Creator (https://mrcrayfish.com/tools?id=mc)", - "textures": { - "particle": "thaumcraft:blocks/metal_void", - "void": "thaumcraft:blocks/metal_void", - "metal": "thaumcraft:blocks/base_metal", - "wood": "thaumcraft:blocks/base_wood", - "brass": "thaumcraft:blocks/metal_brass", - "redstone": "minecraft:blocks/redstone_block" - }, - "display": { - "gui": { - "rotation": [ 30, 45, 0 ], - "translation": [ 0, 0, 0 ], - "scale": [ 0.625, 0.625, 0.625 ] - }, - "ground": { - "rotation": [ 0, 0, 0 ], - "translation": [ 0, 3, 0 ], - "scale": [ 0.25, 0.25, 0.25 ] - }, - "fixed": { - "rotation": [ 0, 180, 0 ], - "translation": [ 0, 0, 0 ], - "scale": [ 1, 1, 1 ] - }, - "head": { - "rotation": [ 0, 180, 0 ], - "translation": [ 0, 0, 0 ], - "scale": [ 1, 1, 1 ] - }, - "firstperson_righthand": { - "rotation": [ 0, 315, 0 ], - "translation": [ 0, 2.5, 0 ], - "scale": [ 0.4, 0.4, 0.4 ] - }, - "thirdperson_righthand": { - "rotation": [ 75, 315, 0 ], - "translation": [ 0, 2.5, 0 ], - "scale": [ 0.375, 0.375, 0.375 ] - } - }, - "elements": [ - { - "name": "base", - "from": [ 0, 0, 0 ], - "to": [ 16, 6, 16 ], - "faces": { - "north": { "texture": "#void", "uv": [ 0, 0, 16, 6 ] }, - "east": { "texture": "#void", "uv": [ 0, 0, 16, 6 ] }, - "south": { "texture": "#void", "uv": [ 0, 0, 16, 6 ] }, - "west": { "texture": "#void", "uv": [ 0, 0, 16, 6 ] }, - "up": { "texture": "#void", "uv": [ 0, 0, 16, 16 ] }, - "down": { "texture": "#void", "uv": [ 0, 0, 16, 16 ], "cullface": "down" } - } - }, - { - "name": "antenna", - "from": [ 7, 10, 7 ], - "to": [ 9, 12, 9 ], - "faces": { - "north": { "texture": "#metal", "uv": [ 7, 7, 9, 9 ] }, - "east": { "texture": "#metal", "uv": [ 7, 7, 9, 9 ] }, - "south": { "texture": "#metal", "uv": [ 7, 7, 9, 9 ] }, - "west": { "texture": "#metal", "uv": [ 7, 7, 9, 9 ] } - } - }, - { - "name": "orb", - "from": [ 6, 12, 6 ], - "to": [ 10, 16, 10 ], - "faces": { - "north": { "texture": "#redstone", "uv": [ 0, 0, 4, 4 ] }, - "east": { "texture": "#redstone", "uv": [ 0, 0, 4, 4 ] }, - "south": { "texture": "#redstone", "uv": [ 0, 0, 4, 4 ] }, - "west": { "texture": "#redstone", "uv": [ 0, 0, 4, 4 ] }, - "up": { "texture": "#redstone", "uv": [ 0, 0, 4, 4 ] }, - "down": { "texture": "#redstone", "uv": [ 0, 0, 4, 4 ] } - } - }, - { - "name": "arm1a", - "from": [ 1, 7, 7 ], - "to": [ 3, 9, 9 ], - "faces": { - "north": { "texture": "#brass", "uv": [ 1, 13, 3, 15 ] }, - "south": { "texture": "#brass", "uv": [ 1, 13, 3, 15 ] }, - "west": { "texture": "#brass", "uv": [ 1, 13, 3, 15 ] } - } - }, - { - "name": "arm1b", - "from": [ 1, 9, 7 ], - "to": [ 3, 15, 9 ], - "faces": { - "north": { "texture": "#brass", "uv": [ 1, 7, 3, 13 ] }, - "east": { "texture": "#brass", "uv": [ 1, 7, 3, 13 ] }, - "south": { "texture": "#brass", "uv": [ 1, 7, 3, 13 ] }, - "west": { "texture": "#brass", "uv": [ 1, 7, 3, 13 ] }, - "up": { "texture": "#brass", "uv": [ 1, 7, 3, 9 ] } - } - }, - { - "name": "arm1c", - "from": [ 3, 13, 7 ], - "to": [ 5, 15, 9 ], - "faces": { - "north": { "texture": "#brass", "uv": [ 3, 7, 5, 9 ] }, - "east": { "texture": "#brass", "uv": [ 3, 7, 5, 9 ] }, - "south": { "texture": "#brass", "uv": [ 3, 7, 5, 9 ] }, - "up": { "texture": "#brass", "uv": [ 3, 7, 5, 9 ] }, - "down": { "texture": "#brass", "uv": [ 3, 7, 5, 9 ] } - } - }, - { - "name": "arm2a", - "from": [ 7, 7, 1 ], - "to": [ 9, 9, 3 ], - "faces": { - "north": { "texture": "#brass", "uv": [ 1, 13, 3, 15 ] }, - "east": { "texture": "#brass", "uv": [ 1, 13, 3, 15 ] }, - "west": { "texture": "#brass", "uv": [ 1, 13, 3, 15 ] } - } - }, - { - "name": "arm2b", - "from": [ 7, 9, 1 ], - "to": [ 9, 15, 3 ], - "faces": { - "north": { "texture": "#brass", "uv": [ 1, 9, 3, 15 ] }, - "east": { "texture": "#brass", "uv": [ 1, 9, 3, 15 ] }, - "south": { "texture": "#brass", "uv": [ 1, 9, 3, 15 ] }, - "west": { "texture": "#brass", "uv": [ 1, 9, 3, 15 ] }, - "up": { "texture": "#brass", "uv": [ 1, 7, 3, 9 ] } - } - }, - { - "name": "arm2c", - "from": [ 7, 13, 3 ], - "to": [ 9, 15, 5 ], - "faces": { - "east": { "texture": "#brass", "uv": [ 3, 7, 5, 9 ] }, - "south": { "texture": "#brass", "uv": [ 3, 7, 5, 9 ] }, - "west": { "texture": "#brass", "uv": [ 3, 7, 5, 9 ] }, - "up": { "texture": "#brass", "uv": [ 3, 7, 5, 9 ] }, - "down": { "texture": "#brass", "uv": [ 3, 7, 5, 9 ] } - } - }, - { - "name": "arm3a", - "from": [ 13, 7, 7 ], - "to": [ 15, 9, 9 ], - "faces": { - "north": { "texture": "#brass", "uv": [ 12, 13, 14, 15 ] }, - "east": { "texture": "#brass", "uv": [ 13, 13, 15, 15 ] }, - "south": { "texture": "#brass", "uv": [ 12, 13, 14, 15 ] } - } - }, - { - "name": "arm3b", - "from": [ 13, 9, 7 ], - "to": [ 15, 15, 9 ], - "faces": { - "north": { "texture": "#brass", "uv": [ 13, 7, 15, 13 ] }, - "east": { "texture": "#brass", "uv": [ 13, 7, 15, 13 ] }, - "south": { "texture": "#brass", "uv": [ 13, 7, 15, 13 ] }, - "west": { "texture": "#brass", "uv": [ 13, 7, 15, 13 ] }, - "up": { "texture": "#brass", "uv": [ 13, 7, 15, 9 ] } - } - }, - { - "name": "arm3c", - "from": [ 11, 13, 7 ], - "to": [ 13, 15, 9 ], - "faces": { - "north": { "texture": "#brass", "uv": [ 11, 7, 13, 9 ] }, - "south": { "texture": "#brass", "uv": [ 11, 7, 13, 9 ] }, - "west": { "texture": "#brass", "uv": [ 11, 7, 13, 9 ] }, - "up": { "texture": "#brass", "uv": [ 11, 7, 13, 9 ] }, - "down": { "texture": "#brass", "uv": [ 11, 7, 13, 9 ] } - } - }, - { - "name": "arm4a", - "from": [ 7, 7, 13 ], - "to": [ 9, 9, 15 ], - "faces": { - "east": { "texture": "#brass", "uv": [ 12, 13, 14, 15 ] }, - "south": { "texture": "#brass", "uv": [ 13, 13, 15, 15 ] }, - "west": { "texture": "#brass", "uv": [ 12, 13, 14, 15 ] } - } - }, - { - "name": "arm4b", - "from": [ 7, 9, 13 ], - "to": [ 9, 15, 15 ], - "faces": { - "north": { "texture": "#brass", "uv": [ 13, 7, 15, 13 ] }, - "east": { "texture": "#brass", "uv": [ 13, 7, 15, 13 ] }, - "south": { "texture": "#brass", "uv": [ 13, 7, 15, 13 ] }, - "west": { "texture": "#brass", "uv": [ 13, 7, 15, 13 ] }, - "up": { "texture": "#brass", "uv": [ 13, 7, 15, 9 ] } - } - }, - { - "name": "arm4c", - "from": [ 7, 13, 11 ], - "to": [ 9, 15, 13 ], - "faces": { - "north": { "texture": "#brass", "uv": [ 11, 7, 13, 9 ] }, - "east": { "texture": "#brass", "uv": [ 11, 7, 13, 9 ] }, - "west": { "texture": "#brass", "uv": [ 11, 7, 13, 9 ] }, - "up": { "texture": "#brass", "uv": [ 11, 7, 13, 9 ] }, - "down": { "texture": "#brass", "uv": [ 11, 7, 13, 9 ] } - } - }, - { - "name": "riser1", - "from": [ 1, 6, 1 ], - "to": [ 15, 7, 15 ], - "faces": { - "north": { "texture": "#wood", "uv": [ 1, 14, 15, 15 ] }, - "east": { "texture": "#wood", "uv": [ 1, 14, 15, 15 ] }, - "south": { "texture": "#wood", "uv": [ 1, 14, 15, 15 ] }, - "west": { "texture": "#wood", "uv": [ 1, 14, 15, 15 ] }, - "up": { "texture": "#wood", "uv": [ 1, 1, 15, 15 ] } - } - }, - { - "name": "riser2", - "from": [ 2, 7, 2 ], - "to": [ 14, 8, 14 ], - "faces": { - "north": { "texture": "#wood", "uv": [ 2, 13, 14, 14 ] }, - "east": { "texture": "#wood", "uv": [ 2, 13, 14, 14 ] }, - "south": { "texture": "#wood", "uv": [ 2, 13, 14, 14 ] }, - "west": { "texture": "#wood", "uv": [ 2, 13, 14, 14 ] }, - "up": { "texture": "#wood", "uv": [ 2, 2, 14, 14 ] } - } - }, - { - "name": "riser3", - "from": [ 3, 8, 3 ], - "to": [ 13, 9, 13 ], - "faces": { - "north": { "texture": "#wood", "uv": [ 3, 13, 13, 14 ] }, - "east": { "texture": "#wood", "uv": [ 3, 13, 13, 14 ] }, - "south": { "texture": "#wood", "uv": [ 3, 13, 13, 14 ] }, - "west": { "texture": "#wood", "uv": [ 3, 13, 13, 14 ] }, - "up": { "texture": "#wood", "uv": [ 3, 3, 13, 13 ] } - } - }, - { - "name": "riser4", - "from": [ 4, 9, 4 ], - "to": [ 12, 10, 12 ], - "faces": { - "north": { "texture": "#wood", "uv": [ 4, 12, 12, 13 ] }, - "east": { "texture": "#wood", "uv": [ 4, 12, 12, 13 ] }, - "south": { "texture": "#wood", "uv": [ 4, 12, 12, 13 ] }, - "west": { "texture": "#wood", "uv": [ 4, 12, 12, 13 ] }, - "up": { "texture": "#wood", "uv": [ 4, 4, 12, 12 ] } - } - } - ] -} diff --git a/src/main/resources/assets/thaumicwonders/models/block/dimensional_ripper.mtl b/src/main/resources/assets/thaumicwonders/models/block/dimensional_ripper.mtl new file mode 100644 index 00000000..664577e4 --- /dev/null +++ b/src/main/resources/assets/thaumicwonders/models/block/dimensional_ripper.mtl @@ -0,0 +1,4 @@ +newmtl Material +Kd 1.000000 1.000000 1.000000 +d 1.000000 +map_Kd thaumicwonders:blocks/dimensional_ripper \ No newline at end of file diff --git a/src/main/resources/assets/thaumicwonders/models/block/dimensional_ripper.obj b/src/main/resources/assets/thaumicwonders/models/block/dimensional_ripper.obj new file mode 100644 index 00000000..3bb1f03e --- /dev/null +++ b/src/main/resources/assets/thaumicwonders/models/block/dimensional_ripper.obj @@ -0,0 +1,379 @@ +mtllib dimensional_ripper.mtl +o Base +v 0.137500 1.268750 0.143750 +v 0.137500 1.268750 -0.137500 +v 0.137500 0.987500 0.143750 +v 0.137500 0.987500 -0.137500 +v -0.143750 1.268750 -0.137500 +v -0.143750 1.268750 0.143750 +v -0.143750 0.987500 -0.137500 +v -0.143750 0.987500 0.143750 +v 0.125000 1.250000 0.125000 +v 0.125000 1.250000 -0.125000 +v 0.125000 1.000000 0.125000 +v 0.125000 1.000000 -0.125000 +v -0.125000 1.250000 -0.125000 +v -0.125000 1.250000 0.125000 +v -0.125000 1.000000 -0.125000 +v -0.125000 1.000000 0.125000 +v 0.093750 1.000000 0.093750 +v 0.093750 1.000000 -0.093750 +v 0.093750 0.875000 0.093750 +v 0.093750 0.875000 -0.093750 +v -0.093750 1.000000 -0.093750 +v -0.093750 1.000000 0.093750 +v -0.093750 0.875000 -0.093750 +v -0.093750 0.875000 0.093750 +v 0.125000 0.875000 0.125000 +v 0.125000 0.875000 -0.125000 +v 0.125000 0.500000 0.125000 +v 0.125000 0.500000 -0.125000 +v -0.125000 0.875000 -0.125000 +v -0.125000 0.875000 0.125000 +v -0.125000 0.500000 -0.125000 +v -0.125000 0.500000 0.125000 +v 0.187500 0.500000 0.187500 +v 0.187500 0.500000 -0.187500 +v 0.187500 0.437500 0.187500 +v 0.187500 0.437500 -0.187500 +v -0.187500 0.500000 -0.187500 +v -0.187500 0.500000 0.187500 +v -0.187500 0.437500 -0.187500 +v -0.187500 0.437500 0.187500 +v 0.341518 1.089864 0.093750 +v 0.341518 1.089864 -0.093750 +v 0.500000 0.749999 0.093750 +v 0.500000 0.749999 -0.093750 +v 0.171586 1.010623 -0.093750 +v 0.171586 1.010623 0.093750 +v 0.330067 0.670758 -0.093750 +v 0.330067 0.670758 0.093750 +v 0.500000 0.750000 0.125000 +v 0.500000 0.750000 -0.125000 +v 0.500000 0.062500 0.125000 +v 0.500000 0.062500 -0.125000 +v 0.250000 0.750000 -0.125000 +v 0.250000 0.750000 0.125000 +v 0.250000 0.062500 -0.125000 +v 0.250000 0.062500 0.125000 +v 0.093750 1.089864 -0.341519 +v -0.093750 1.089864 -0.341519 +v 0.093750 0.749999 -0.500000 +v -0.093750 0.749999 -0.500000 +v -0.093750 1.010623 -0.171586 +v 0.093750 1.010623 -0.171586 +v -0.093750 0.670758 -0.330067 +v 0.093750 0.670758 -0.330067 +v 0.125000 0.750000 -0.500000 +v -0.125000 0.750000 -0.500000 +v 0.125000 0.062500 -0.500000 +v -0.125000 0.062500 -0.500000 +v -0.125000 0.750000 -0.250000 +v 0.125000 0.750000 -0.250000 +v -0.125000 0.062500 -0.250000 +v 0.125000 0.062500 -0.250000 +v -0.341518 1.089864 -0.093750 +v -0.341518 1.089864 0.093750 +v -0.500000 0.749999 -0.093750 +v -0.500000 0.749999 0.093750 +v -0.171586 1.010623 0.093750 +v -0.171586 1.010623 -0.093750 +v -0.330067 0.670758 0.093750 +v -0.330067 0.670758 -0.093750 +v -0.500000 0.750000 -0.125000 +v -0.500000 0.750000 0.125000 +v -0.500000 0.062500 -0.125000 +v -0.500000 0.062500 0.125000 +v -0.250000 0.750000 0.125000 +v -0.250000 0.750000 -0.125000 +v -0.250000 0.062500 0.125000 +v -0.250000 0.062500 -0.125000 +v -0.093750 1.089864 0.341518 +v 0.093750 1.089864 0.341518 +v -0.093750 0.749999 0.500000 +v 0.093750 0.749999 0.500000 +v 0.093750 1.010623 0.171586 +v -0.093750 1.010623 0.171586 +v 0.093750 0.670758 0.330067 +v -0.093750 0.670758 0.330067 +v -0.125000 0.750000 0.500000 +v 0.125000 0.750000 0.500000 +v -0.125000 0.062500 0.500000 +v 0.125000 0.062500 0.500000 +v 0.125000 0.750000 0.250000 +v -0.125000 0.750000 0.250000 +v 0.125000 0.062500 0.250000 +v -0.125000 0.062500 0.250000 +v -0.225000 0.687500 -0.313388 +v -0.313388 0.687500 -0.401777 +v -0.225000 0.062500 -0.313388 +v -0.313388 0.062500 -0.401777 +v -0.401777 0.687500 -0.313388 +v -0.313388 0.687500 -0.225000 +v -0.401777 0.062500 -0.313388 +v -0.313388 0.062500 -0.225000 +v -0.313388 0.687500 0.225000 +v -0.401777 0.687500 0.313388 +v -0.313388 0.062500 0.225000 +v -0.401777 0.062500 0.313388 +v -0.313388 0.687500 0.401777 +v -0.225000 0.687500 0.313388 +v -0.313388 0.062500 0.401777 +v -0.225000 0.062500 0.313388 +v 0.225000 0.687500 0.313388 +v 0.313388 0.687500 0.401777 +v 0.225000 0.062500 0.313388 +v 0.313388 0.062500 0.401777 +v 0.401777 0.687500 0.313388 +v 0.313388 0.687500 0.225000 +v 0.401777 0.062500 0.313388 +v 0.313388 0.062500 0.225000 +v 0.313388 0.687500 -0.225000 +v 0.401777 0.687500 -0.313388 +v 0.313388 0.062500 -0.225000 +v 0.401777 0.062500 -0.313388 +v 0.313388 0.687500 -0.401777 +v 0.225000 0.687500 -0.313388 +v 0.313388 0.062500 -0.401777 +v 0.225000 0.062500 -0.313388 +v -0.437500 -0.000000 -0.187500 +v 0.437500 0.437500 -0.187500 +v 0.187500 0.437500 -0.437500 +v 0.437500 -0.000000 -0.187500 +v 0.187500 -0.000000 -0.437500 +v -0.437500 0.437500 -0.187500 +v -0.187500 0.437500 -0.437500 +v -0.187500 -0.000000 -0.437500 +v 0.437500 0.437500 0.187500 +v 0.187500 0.437500 0.437500 +v 0.437500 0.000000 0.187500 +v 0.187500 0.000000 0.437500 +v -0.437500 0.437500 0.187500 +v -0.187500 0.437500 0.437500 +v -0.437500 0.000000 0.187500 +v -0.187500 0.000000 0.437500 +vn -0.0000 -0.0000 -1.0000 +vn 1.0000 -0.0000 -0.0000 +vn -0.0000 -0.0000 1.0000 +vn -1.0000 -0.0000 -0.0000 +vn -0.0000 1.0000 -0.0000 +vn -0.0000 -1.0000 -0.0000 +vn 0.9063 0.4226 -0.0000 +vn -0.9063 -0.4226 -0.0000 +vn -0.4226 0.9063 -0.0000 +vn -0.0000 0.4226 -0.9063 +vn -0.0000 -0.4226 0.9063 +vn -0.0000 0.9063 0.4226 +vn -0.9063 0.4226 -0.0000 +vn 0.9063 -0.4226 -0.0000 +vn 0.4226 0.9063 -0.0000 +vn -0.0000 0.4226 0.9063 +vn -0.0000 -0.4226 -0.9063 +vn -0.0000 0.9063 -0.4226 +vn -0.7071 -0.0000 -0.7071 +vn 0.7071 -0.0000 -0.7071 +vn 0.7071 -0.0000 0.7071 +vn -0.7071 -0.0000 0.7071 +vt 0.937500 0.250000 +vt 1.000000 0.250000 +vt 1.000000 0.375000 +vt 0.937500 0.375000 +vt 1.000000 0.500000 +vt 0.937500 0.500000 +vt 1.000000 0.125000 +vt 0.937500 0.125000 +vt 0.812500 0.250000 +vt 0.875000 0.250000 +vt 0.875000 0.375000 +vt 0.812500 0.375000 +vt 0.875000 0.500000 +vt 0.812500 0.500000 +vt 0.875000 0.125000 +vt 0.812500 0.125000 +vt 0.906250 0.718750 +vt 0.953125 0.718750 +vt 0.953125 0.781250 +vt 0.906250 0.781250 +vt 0.953125 0.875000 +vt 0.906250 0.875000 +vt 0.843750 0.562500 +vt 0.906250 0.562500 +vt 0.906250 0.750000 +vt 0.843750 0.750000 +vt 0.843750 0.875000 +vt 0.750000 0.640625 +vt 0.843750 0.640625 +vt 0.843750 0.671875 +vt 0.750000 0.671875 +vt 0.750000 0.875000 +vt 0.609375 0.218750 +vt 0.656250 0.218750 +vt 0.656250 0.406250 +vt 0.609375 0.406250 +vt 0.562500 0.218750 +vt 0.562500 0.406250 +vt 0.609375 0.500000 +vt 0.562500 0.500000 +vt 0.625000 0.531250 +vt 0.687500 0.531250 +vt 0.687500 0.875000 +vt 0.625000 0.875000 +vt 0.562500 0.531250 +vt 0.562500 0.875000 +vt 0.625000 1.000000 +vt 0.562500 1.000000 +vt 0.750000 0.125000 +vt 0.718750 0.125000 +vt 0.718750 0.437500 +vt 0.750000 0.437500 +vt 0.718750 0.500000 +vt 0.750000 0.500000 +vt 0.718750 0.062500 +vt 0.750000 0.062500 +vt 0.148438 0.531250 +vt 0.242188 0.531250 +vt 0.242188 0.750000 +vt 0.148438 0.750000 +vt 0.148438 0.781250 +vt 0.242188 0.781250 +vt 0.242188 1.000000 +vt 0.148438 1.000000 +vt 0.000000 0.187500 +vt 0.218750 0.187500 +vt 0.218750 0.375000 +vt 0.000000 0.375000 +vt 0.468750 0.375000 +vt 0.250000 0.375000 +vt 0.250000 0.187500 +vt 0.468750 0.187500 +vt 0.328125 0.531250 +vt 0.328125 0.750000 +vt 0.062500 1.000000 +vt 0.062500 0.781250 +vt 0.156250 0.500000 +vt 0.062500 0.500000 +vt 0.312500 0.500000 +vt 0.406250 0.500000 +vt 0.421875 0.531250 +vt 0.421875 0.750000 +vt 0.062500 0.750000 +vt 0.062500 0.531250 +vt 0.328125 1.000000 +vt 0.328125 0.781250 +vt 0.062500 0.062500 +vt 0.156250 0.062500 +vt 0.312500 0.062500 +vt 0.406250 0.062500 +vt 0.421875 1.000000 +vt 0.421875 0.781250 +s 0 +usemtl Material +f 4/1/1 7/2/1 5/3/1 2/4/1 +f 3/1/2 4/2/2 2/3/2 1/4/2 +f 8/1/3 3/2/3 1/3/3 6/4/3 +f 7/1/4 8/2/4 6/3/4 5/4/4 +f 6/5/5 1/6/5 2/4/5 5/3/5 +f 7/7/6 4/8/6 3/1/6 8/2/6 +f 12/9/1 15/10/1 13/11/1 10/12/1 +f 11/9/2 12/10/2 10/11/2 9/12/2 +f 16/9/3 11/10/3 9/11/3 14/12/3 +f 15/9/4 16/10/4 14/11/4 13/12/4 +f 14/13/5 9/14/5 10/12/5 13/11/5 +f 15/15/6 12/16/6 11/9/6 16/10/6 +f 20/17/1 23/18/1 21/19/1 18/20/1 +f 19/17/2 20/18/2 18/19/2 17/20/2 +f 24/17/3 19/18/3 17/19/3 22/20/3 +f 23/17/4 24/18/4 22/19/4 21/20/4 +f 22/21/5 17/22/5 18/20/5 21/19/5 +f 28/23/1 31/24/1 29/25/1 26/26/1 +f 27/23/2 28/24/2 26/25/2 25/26/2 +f 32/23/3 27/24/3 25/25/3 30/26/3 +f 31/23/4 32/24/4 30/25/4 29/26/4 +f 30/22/5 25/27/5 26/26/5 29/25/5 +f 36/28/1 39/29/1 37/30/1 34/31/1 +f 35/28/2 36/29/2 34/30/2 33/31/2 +f 40/28/3 35/29/3 33/30/3 38/31/3 +f 39/28/4 40/29/4 38/30/4 37/31/4 +f 38/27/5 33/32/5 34/31/5 37/30/5 +f 44/33/1 47/34/1 45/35/1 42/36/1 +f 43/37/7 44/33/7 42/36/7 41/38/7 +f 48/33/3 43/34/3 41/35/3 46/36/3 +f 47/37/8 48/33/8 46/36/8 45/38/8 +f 46/39/9 41/40/9 42/38/9 45/36/9 +f 52/41/1 55/42/1 53/43/1 50/44/1 +f 51/45/2 52/41/2 50/44/2 49/46/2 +f 56/41/3 51/42/3 49/43/3 54/44/3 +f 55/41/4 56/42/4 54/43/4 53/44/4 +f 54/47/5 49/48/5 50/46/5 53/44/5 +f 55/44/6 52/46/6 51/48/6 56/47/6 +f 60/33/4 63/34/4 61/35/4 58/36/4 +f 59/37/10 60/33/10 58/36/10 57/38/10 +f 64/33/2 59/34/2 57/35/2 62/36/2 +f 63/37/11 64/33/11 62/36/11 61/38/11 +f 62/39/12 57/40/12 58/38/12 61/36/12 +f 68/41/4 71/42/4 69/43/4 66/44/4 +f 67/45/1 68/41/1 66/44/1 65/46/1 +f 72/41/2 67/42/2 65/43/2 70/44/2 +f 71/41/3 72/42/3 70/43/3 69/44/3 +f 70/47/5 65/48/5 66/46/5 69/44/5 +f 71/44/6 68/46/6 67/48/6 72/47/6 +f 76/33/3 79/34/3 77/35/3 74/36/3 +f 75/37/13 76/33/13 74/36/13 73/38/13 +f 80/33/1 75/34/1 73/35/1 78/36/1 +f 79/37/14 80/33/14 78/36/14 77/38/14 +f 78/39/15 73/40/15 74/38/15 77/36/15 +f 84/41/3 87/42/3 85/43/3 82/44/3 +f 83/45/4 84/41/4 82/44/4 81/46/4 +f 88/41/1 83/42/1 81/43/1 86/44/1 +f 87/41/2 88/42/2 86/43/2 85/44/2 +f 86/47/5 81/48/5 82/46/5 85/44/5 +f 87/44/6 84/46/6 83/48/6 88/47/6 +f 92/33/2 95/34/2 93/35/2 90/36/2 +f 91/37/16 92/33/16 90/36/16 89/38/16 +f 96/33/4 91/34/4 89/35/4 94/36/4 +f 95/37/17 96/33/17 94/36/17 93/38/17 +f 94/39/18 89/40/18 90/38/18 93/36/18 +f 100/41/2 103/42/2 101/43/2 98/44/2 +f 99/45/3 100/41/3 98/44/3 97/46/3 +f 104/41/4 99/42/4 97/43/4 102/44/4 +f 103/41/1 104/42/1 102/43/1 101/44/1 +f 102/47/5 97/48/5 98/46/5 101/44/5 +f 103/44/6 100/46/6 99/48/6 104/47/6 +f 108/49/19 111/50/19 109/51/19 106/52/19 +f 107/49/20 108/50/20 106/51/20 105/52/20 +f 112/49/21 107/50/21 105/51/21 110/52/21 +f 111/49/22 112/50/22 110/51/22 109/52/22 +f 110/53/5 105/54/5 106/52/5 109/51/5 +f 111/55/6 108/56/6 107/49/6 112/50/6 +f 116/49/22 119/50/22 117/51/22 114/52/22 +f 115/49/19 116/50/19 114/51/19 113/52/19 +f 120/49/20 115/50/20 113/51/20 118/52/20 +f 119/49/21 120/50/21 118/51/21 117/52/21 +f 118/53/5 113/54/5 114/52/5 117/51/5 +f 119/55/6 116/56/6 115/49/6 120/50/6 +f 124/49/21 127/50/21 125/51/21 122/52/21 +f 123/49/22 124/50/22 122/51/22 121/52/22 +f 128/49/19 123/50/19 121/51/19 126/52/19 +f 127/49/20 128/50/20 126/51/20 125/52/20 +f 126/53/5 121/54/5 122/52/5 125/51/5 +f 127/55/6 124/56/6 123/49/6 128/50/6 +f 132/49/20 135/50/20 133/51/20 130/52/20 +f 131/49/21 132/50/21 130/51/21 129/52/21 +f 136/49/22 131/50/22 129/51/22 134/52/22 +f 135/49/19 136/50/19 134/51/19 133/52/19 +f 134/53/5 129/54/5 130/52/5 133/51/5 +f 135/55/6 132/56/6 131/49/6 136/50/6 +f 147/57/2 140/58/2 138/59/2 145/60/2 +f 137/61/4 151/62/4 149/63/4 142/64/4 +f 149/65/5 145/66/5 138/67/5 142/68/5 +f 137/69/6 140/70/6 147/71/6 151/72/6 +f 141/73/20 139/74/20 138/59/20 140/58/20 +f 137/61/19 142/64/19 143/75/19 144/76/19 +f 138/67/5 139/77/5 143/78/5 142/68/5 +f 141/79/6 140/70/6 137/69/6 144/80/6 +f 144/81/1 143/82/1 139/74/1 141/73/1 +f 145/60/21 146/83/21 148/84/21 147/57/21 +f 150/85/22 149/63/22 151/62/22 152/86/22 +f 150/87/5 146/88/5 145/66/5 149/65/5 +f 151/72/6 147/71/6 148/89/6 152/90/6 +f 146/91/3 150/85/3 152/86/3 148/92/3 diff --git a/src/main/resources/assets/thaumicwonders/textures/blocks/dimensional_ripper.png b/src/main/resources/assets/thaumicwonders/textures/blocks/dimensional_ripper.png new file mode 100644 index 0000000000000000000000000000000000000000..859500461983ad08f4ca0f5b555f1636ed530ee6 GIT binary patch literal 8332 zcmV;7Aamb|P)Px#1ZP1_K>z@;j|==^1poj532;bRa{vGi!vFvd!vV){sAK>DAR$RaK~#8N?VMSR zT3@`gkp z5+r$u!~+P4$AlN6@DL$H6c)iSWD~P^#-6s@-PP5#ul#@K+*@vsyX&^w#Vp9D`s?rB zZ@*{%mV0xS0fjX6ef%?%({YEJ1BUHix= z73~}>8);rZkk(Hj(ubpdTHuc0iHpxp3i*PK`HhA)p2YY%y?q-DM|NfB#kutJRzc?A z7s|^Ch9`~$znY942@s-?D>~8i&uKBXk(c3?<{@2_C41VG^2IP?&$WD1^-57L>Z|o6 zgKM+VL~WB!d8OxdL7dcxLb}dP3fAuL``w+wQxAP`vbwmUX7kn`^=&jB*=RVh{dV12 zoqfBq`|@1+d8g4l;qWUVSZdqw6L%zzFi|U^=#k5Nv?Ui&--^HTZ*LCD8s2$p$7v#j!Fe1;A z8|SRw@7hodfGi}u`HqH6?%h~9E2ZahB?;{7BBXY#I1g%^cpzNpP)RT2k_qBe6LAGp zek|#sE*c|mMQTi8G8uYVFP>!Nt>k6nMs1J#(I$`-baRoWi7MRF_HOfPns`U>U0CfVc^ z+grP@&V?|KUwmeAYVjWHN%DKWwvFTmz+(MD%UZprZSB3Y86evPNQD>jk||WUBpvk| zs+;>DM&#u^pL>2LqCHFHhl7NQ9F6goQ-^V4L#2B@bMambv^33}a@HKqDd`Tb$nI*MV4p_pNk;NqPOnGE2>gn$sk5ggY} zbRnDIX`0V(tl;kL+%z#QAk}k&ae$u)kF4Ir$sl$wcwqcI6904MX z)z3hV8Ew#qo0>VnNMq>r+lkF@TTe5A?yw^bAaf)Q^iGG&C%9+rf`ko;%Sj@8`Y)AB zHBkp5xi_!i5-CCqWy^&bM-C+^iV1*0oKYmL6A`jlkeXI~%I2lUMP^s$sD0ANE95K5 z098&`seb{H$rlSn7A15~ikm0Z+upkzRqqfUyZ;$)8Ae4r4TtiB=tUbJ)@}S-p<5QR)kM< zsxpi6dvKT~SQ4VL9P?66Q)3ANLWqDJ1=&7;re_{NvJ)PJD~QvH-AlHcR6AfoQ0Z=VRG&23fm@&{l5lVw>9rG|!3yEdNC~se1EAqR z-hZpLV?#+&L5!_|Dpky@j>v~`bGdMiD}}06ic8b{EU1WZB?-bpnR+!5a#4)5B&Mo* zTq9p?f-`!{T9?34mE8DP5JH3uAvp?;;R6J6amv!?0pX~Be?SF>6vR}=NOe*Wl@(rl z3=W3y*@35s8RW4$3RwySlubJ>-7p!9L;q?=Bk_FNzJb`Jo&bjOJSD+w^8$ZHs_n$lQR>kgV$E-wq|ZEN&ewzhOy>N;#Ri$#Mm z%$JiYZq0PQQlS0C+Nv0;BxV;As1Cw`X@lrIuFrBL06j6n+UjZf21_;`%JEZKG!EGA z4%$xiMfn3U8$+uEBciqH?d?OyF&8BLe}>2IfB$463Hs#L3kGQ~ipgqJ{Q9C0iB>Ny^X%aTJdc*cq z6E4-3q-_?QsIG0rbeL5L-V@`T**Nd}CtYa{v_)vjkzKm>gS!lH5_tFdrzS-!S*g5W zB}rgwFt7y~&g&w6TWa{!^14;!^yTD~^(B$4aiE<#B0l!_>fUSyc<}6FljVgCdF~ZW z&9;Ott!jkpQ{_7`W z05<_D=BmV%wt&{Bpj@>Q!;Mn>96aKm7oa2w38d;8xKSsKBQO3(3y~8RAj$w?er}in zFQpO7M>*KpiQ$oRPfo_YuKjuaMf7Ap;YbyxqiePx1krBd<<1sn~HYW*W}yR82D(iN+C?8C70tv>A=xAv|>U ziAh0yGYbGx_wqAq58AHm?vm`caKw|kGmGtp0lIQ+MX$%I=a0$t3c2G;DwD1HxvLf3@-2%yFFGe0b8Aoo3Xic*mhLLJ%Ij(w=J;U7p{3 zz!o$MDCW!VG$QTz8(pr|&b5sG-UvZ~8Bi&e<#m=lu2d>kDOYqar%0i!YvK}V<+9=^ zODGZRp7N9-E)r8up;oR%9ol6TO!<{cEy{D9+*g%fEmKeFMag!NwyH4(@2{eK^3+9 zdID)Y7bl=f#iDPI=Zj)%F`ciINE^fo?bz2vScdmavDA#-24pe-$HC&LR_xiwk+0ah zFZw>d2C9cyqV4photo`BH_es;pEGoT}!|Br;99t}P&)9sqTbc+E zOL%@33?#K}X^NH{#Kg$V%ZzUHifVkT%5y9{uR+Jv~Iz;Q4G^IUR$IY=3!vF6X77v<=K zwjJXtmztnd%>&+#(vw>UHvnSFOIwG}dv6yWloL4Wwe8D|OZLfop0Gx9+e%e=?HbEo zw<#asw3`4J5*0jQ-mNEqDe&lbnp<-jM+)!0@V?1nd07ltw0$uPP9VhZ$svVlZnwWo z4G_C)5JB7r;qfkURP>zn z^E3qR=ui19b$WlaE5?KQ2=q;z7-RJ5=_)%fK-IF;o5EMxTlS@$?^{9rFltxDJhLPf zAdN9Hw)Cmy3G_qTJ)TkhFntVsh4#E%$gJU~c_6O(@Qn_2N=%or0~kd2ZCs_rBa==D zM9>CXw_Xn7I|D$>V4k7s`nIp9CrqVl-#^ejoXvW+t3;*wKDf$wAB;sYIB>?GuFB2} zXb%(ciH-L#wY1+@xnLhZbx~71o`?QGp^5T>XPw0Ir9ec}o zKz73FsWuwzoy=!D4xC-TIH{Hv>{PKPbvy8RH)E)GJJuX_ty-1$u6+Cz@B?AU zAM|54Z+A}X5h+|e^By6KCMOz;w4ui2_!EveSzSM3#qTJ{)BvIWK|Y-X!aWwk@qC@2 z>Jr2=u&~3rbD{;&J?I)6MOoM)^59$u3QKqb&3XIO$3(cdFGgWei26=^%2Fl;HR^2% zsGD>>7oaZ)x+l|9mv*TS#)FZeoU_k@-~Pp?C-td|?w*6SVn%GdsLW;(A16cuwd z&~sj?*X=-JIam=&-6gX$k`w4wb>-a{1|CDx8sFn)$6VKgaKmNqMcF&oGB=u-m z*7Fbd_idtJ3gbq@@`|tT?b*v5KFNTr`iDMAt+M1ZO`oFaVax2ml`4MLtWsg;E_Ux? z=Z|;v*^HqnuciMvZ^Lg+08V@^lK$C=JtA?0;TN zz&ZQguy5b^xzE@a9{Q-Q)Yj}ymYNrrOV(}=tsuPRN7;}jL7@M6F#&HIpa0D#?8pA}qqbUG zbp|^rynd}^-~5kl`^L8~+vR#INj(}M(6)%!WQHLk67y`!3bFDr8?x%(!~hU1Y=s_C z@q!aSk#Ggy=ZDa|%cj_w0CT{Wtq{*KrIN0h28jlWqs?eN8z9)B{g*^wNeo(tw{n}E zhNf8~rHL_F7-B4nZ}cB)6EtMw-!qxSuq0FpN7 z>+kS;c`UFJRN0q{g#3~u76STQKWW=9W_U0OE>lJQmyteGaQF{ z?X}me*Xzj?Ega~dQQhbtjgaCpo_4AH=p@@|= zHg*;(%Z_l?=Lf^C?Y6I4qusE*{XJ_mcCFE@TXR3YkhS01vreaF-ELc<9U8{75!-^zig77>zZLDHp7qtFY0U2`jCZeRnW$mHnN5 z-@euD+V^z-9rh!Hvnk?e8it*)_&f^(K1u(3<8q1gS*6p;D z)T5!lx@sTT+_Xp6*X^0pr|p@I4SQVIPb+?=lKm;1tonI2VNB|?Ak{R^kL14(^qeCb z<$6*b;#R3$q_XM*kB>2rzb+>K?)J7_ z+1asI6t?SidzE;1*Z#hp%|Kc85tjsMfhhN;WuI920%7qJbEAUU4DzBvr;zQ!CJ1>; z#1fqXGY&z|q(>6ksuJ+q9IqmB%jg5BQ%}=viH{O6D-^Zgk z9iwj>b206o+#~v*0UWkKBmLmjx?Q>2a8-{JNIGxmvK5=Qe;ntKJ-kFaVBR}xLXYG;49?u+O;Tc}iKlN|!pPNJa&j2*gvTXggpFeMxuRd;F5uBz-=d?3UF(;P>Xi|U3 z*}!ypz&n7Qju@bmq#g|{;9OPv#1In?{)#jQp8bwO7G%|D{q_KIlpxg`oDAwgqDZa4 zbcpL40LLpzvTvHh^lzH?Mo=2el=jbS&f9xe{5|=Qv^WGwsg98LwZHtd z{mq~Jl702_KWl&du@xr(egn=PGYGzzfxp5#aX0r5Q*v{Az^R)?d&e&CylAi2Uv<9+ zypYcL!bFYKGpNk&pd{PBv$OBc^Y9oN;F^fFE5g0XI3S?Hbp?pXDqj|4)kkI=QGh$z z3Qlj?G`DL4a)Ztgm4}3w#IekH!!$%$0A~k;a8LV@Pn}x<;*br~bow28^vQ=Uzrf)S zl~=`Nkj?-*m;c*7^eca6ANjq%vu>;I(nmSk_je3s5}tncDcd-+;#%c6{m%k4BTnw` z|LUfFxv1x3Vo$BmCJ&x z`qNoJiX5bzwQiiNV1x)x3;m)L$Oft6dPlteQBDlu2uaF0&i$WfPwO6pw0|Fi$}*)& z=lOj97rerhWJByy|C+6>t=aPOvi17vk%y2&=J{e+mV?v!IICIxX90&z*?UNR0A?y_ zx{qDY>qpnz{$vBMdhgbo*3tBg4{&8cDye%AQ1OmpZ21<1)O8kQ)z72Gz>(99hf!vn zssRFRp0EF@s)pVmo@_S@;sPh2{@5XO6XFee#c5tbi<{u4{zYk)ne)8`TdSNC!EvzC zBWA$>&wuNi_D4V8w@?4%b^F1Uo~KPFn!$LVF+J9W-^$1P%{_$Ve z?UmOacB%JS2(tho(Z6tpu<$#E7U=Z4@&tRTe}M zl%Rj!DpLO%7{|mLt%f9A$W~p@3t?fpKltmuefDp2_UXSG*q8ocYy)hu>Y*j@{OO-_ z`K(iLf;X%GEP%k>Vapnwx?PoTQg2>I45sOPwuKK!^8R2pIivvweQULvmQ&$l(9d2_ zp{@c_i__LoXe&UxOA1+#Ro_iOSYV+_ghZ13owrn-^XJ6pGJex3mqS9rgfYTtRID~U zi(II41n$%RIY-ZYp3}WB0{s(%RS3*}#Qt?n`8p*lk5_Clf67+No3^=f-W@(TfO2la z)OYwWv_HH5EMWG5x8CgR#ap-{IKpyNdKUC$nuepU^+$XNGfA8Q>=u9{wr|%I$_kYv zUX3C%A*;U60(`+HAv|ggB%(f%I9II#w{?!#xF!__A$VF+23$Kor~^uQJ+3@H1eE9} ziXpsIDKA4()?a#%l=-JnD5HNpsn2G+>EG_%@3iHe?|WcA?S1%oqtVo4v3?Q#s}Jw+ z_Tb9S%Q-#?f30yjx4nNQx6^z*$Hx|qN>8dC34<< z7T0WLX~Rw_tS+6lmBn@69gBEPY3u&IT<-bYSxBsi1|8HyDt9r1xb=x=_0LBZFa=WP zUJxzN(LB7-+Vzhk_?tjt7&`Jk4~Ap*|7HXG2SYI}yMmn0%L2C2(iML^8fuWn{DDWz zf~@*^4p2H`^v7#meA)!shct;}GzV_9u3KGUPl09Fz1EK6UE3q*y3V}Nn{>t(W%yb|F5n)fm}7f4^tne72zWvs@AQ4-rU>MWFbuf535we-P3GB7jd3-J6U44(*?8 zJq+K?_mRLb3DW>?C*lJie(ua)NZtkCUv-&6h zM*nX|;sbd9OuZ^qiI}fkzO`^D0{}N9k^e}dyl`wRQt5%o83BpJA%tY{n+Ni5?O!tr zcPx>70`{K3SYllB?En7?F4u?l@BcHfum4-iUfm5p=PulZyKooo!d