diff --git a/gradle.properties b/gradle.properties index 36d7385..d28f3d4 100644 --- a/gradle.properties +++ b/gradle.properties @@ -3,7 +3,7 @@ org.gradle.jvmargs=-Xmx1G loom.platform = forge # Mod properties -mod_version = 1.3.2-fix1 +mod_version = 1.3.3 maven_group = com.extendedae_plus archives_name = extendedae_plus diff --git a/src/main/java/com/extendedae_plus/ExtendedAEPlus.java b/src/main/java/com/extendedae_plus/ExtendedAEPlus.java index 6c848ca..42d69e6 100644 --- a/src/main/java/com/extendedae_plus/ExtendedAEPlus.java +++ b/src/main/java/com/extendedae_plus/ExtendedAEPlus.java @@ -15,6 +15,11 @@ import net.minecraftforge.fml.common.Mod; import net.minecraftforge.fml.config.ModConfig; import net.minecraftforge.fml.event.lifecycle.FMLCommonSetupEvent; import net.minecraftforge.fml.javafmlmod.FMLJavaModLoadingContext; +import net.minecraft.resources.ResourceLocation; + +import com.extendedae_plus.client.ClientProxy; +import net.minecraftforge.api.distmarker.Dist; +import net.minecraftforge.fml.DistExecutor; /** * ExtendedAE Plus 主mod类 @@ -24,6 +29,14 @@ public class ExtendedAEPlus { public static final String MODID = "extendedae_plus"; + // 在类加载时(尽可能早)在客户端注册内置模型,避免首次资源加载时错过。 + static { + DistExecutor.unsafeRunWhenOn(Dist.CLIENT, () -> () -> { + System.out.println("[ExtendedAE_Plus] Static init: register built-in models"); + ClientProxy.init(); + }); + } + public ExtendedAEPlus() { IEventBus modEventBus = FMLJavaModLoadingContext.get().getModEventBus(); @@ -41,6 +54,9 @@ public class ExtendedAEPlus { // 注册通用配置 ModLoadingContext.get().registerConfig(ModConfig.Type.COMMON, ModConfigs.COMMON_SPEC); + + // 构造期在客户端再确保一次注册(幂等) + DistExecutor.unsafeRunWhenOn(Dist.CLIENT, () -> ClientProxy::init); } /** @@ -54,4 +70,11 @@ public class ExtendedAEPlus { MenuLocators.register(CuriosItemLocator.class, CuriosItemLocator::writeToPacket, CuriosItemLocator::readFromPacket); }); } + + /** + * 便捷方法:生成 ResourceLocation + */ + public static ResourceLocation id(String path) { + return new ResourceLocation(MODID, path); + } } diff --git a/src/main/java/com/extendedae_plus/client/ClientModelEvents.java b/src/main/java/com/extendedae_plus/client/ClientModelEvents.java new file mode 100644 index 0000000..ad33bef --- /dev/null +++ b/src/main/java/com/extendedae_plus/client/ClientModelEvents.java @@ -0,0 +1,20 @@ +package com.extendedae_plus.client; + +import net.minecraftforge.api.distmarker.Dist; +import net.minecraftforge.client.event.ModelEvent; +import net.minecraftforge.eventbus.api.SubscribeEvent; +import net.minecraftforge.fml.common.Mod; + +/** + * 确保在模型烘焙/资源重载期间也会注册内置模型,避免在刷新资源后丢失内置模型映射。 + */ +@Mod.EventBusSubscriber(value = Dist.CLIENT, bus = Mod.EventBusSubscriber.Bus.MOD) +public final class ClientModelEvents { + private ClientModelEvents() {} + + @SubscribeEvent + public static void onRegisterAdditional(ModelEvent.RegisterAdditional event) { + // 在每次模型重载开始时确保内置模型已注册 + ClientProxy.init(); + } +} diff --git a/src/main/java/com/extendedae_plus/client/ClientProxy.java b/src/main/java/com/extendedae_plus/client/ClientProxy.java new file mode 100644 index 0000000..10d95d9 --- /dev/null +++ b/src/main/java/com/extendedae_plus/client/ClientProxy.java @@ -0,0 +1,37 @@ +package com.extendedae_plus.client; + +import appeng.client.render.crafting.CraftingCubeModel; +import com.extendedae_plus.ExtendedAEPlus; +import com.extendedae_plus.client.render.crafting.EPlusCraftingCubeModelProvider; +import com.extendedae_plus.content.crafting.EPlusCraftingUnitType; +import com.extendedae_plus.hooks.BuiltInModelHooks; + +/** + * 客户端模型注册,参照 MAE2 的做法将 formed 模型注册为内置模型。 + */ +public final class ClientProxy { + private ClientProxy() {} + + private static boolean REGISTERED = false; + + public static void init() { + if (REGISTERED) return; + REGISTERED = true; + // 注册四种形成态模型为内置模型(使用 *_formed_v2 避免与现有 JSON 冲突) + BuiltInModelHooks.addBuiltInModel( + ExtendedAEPlus.id("block/crafting/4x_accelerator_formed_v2"), + new CraftingCubeModel(new EPlusCraftingCubeModelProvider(EPlusCraftingUnitType.ACCELERATOR_4x))); + + BuiltInModelHooks.addBuiltInModel( + ExtendedAEPlus.id("block/crafting/16x_accelerator_formed_v2"), + new CraftingCubeModel(new EPlusCraftingCubeModelProvider(EPlusCraftingUnitType.ACCELERATOR_16x))); + + BuiltInModelHooks.addBuiltInModel( + ExtendedAEPlus.id("block/crafting/64x_accelerator_formed_v2"), + new CraftingCubeModel(new EPlusCraftingCubeModelProvider(EPlusCraftingUnitType.ACCELERATOR_64x))); + + BuiltInModelHooks.addBuiltInModel( + ExtendedAEPlus.id("block/crafting/256x_accelerator_formed_v2"), + new CraftingCubeModel(new EPlusCraftingCubeModelProvider(EPlusCraftingUnitType.ACCELERATOR_256x))); + } +} diff --git a/src/main/java/com/extendedae_plus/client/render/crafting/EPlusCraftingCubeModelProvider.java b/src/main/java/com/extendedae_plus/client/render/crafting/EPlusCraftingCubeModelProvider.java new file mode 100644 index 0000000..edd3b36 --- /dev/null +++ b/src/main/java/com/extendedae_plus/client/render/crafting/EPlusCraftingCubeModelProvider.java @@ -0,0 +1,86 @@ +package com.extendedae_plus.client.render.crafting; + +import appeng.client.render.crafting.AbstractCraftingUnitModelProvider; +import appeng.client.render.crafting.LightBakedModel; +import com.extendedae_plus.ExtendedAEPlus; +import com.extendedae_plus.content.crafting.EPlusCraftingUnitType; +import net.minecraft.client.renderer.RenderType; +import net.minecraft.client.renderer.texture.TextureAtlas; +import net.minecraft.client.renderer.texture.TextureAtlasSprite; +import net.minecraft.client.resources.model.BakedModel; +import net.minecraft.client.resources.model.Material; +import net.minecraft.resources.ResourceLocation; +import net.minecraft.util.RandomSource; +import net.minecraft.world.level.block.state.BlockState; +import net.minecraftforge.client.ChunkRenderTypeSet; +import net.minecraftforge.client.model.data.ModelData; + +import java.util.ArrayList; +import java.util.Collections; +import java.util.List; +import java.util.function.Function; + +/** + * 参照 MAE2 的 DynamicCraftingCubeModelProvider,实现形成态光照模型。 + */ +public class EPlusCraftingCubeModelProvider + extends AbstractCraftingUnitModelProvider { + + public static final ChunkRenderTypeSet CUTOUT = ChunkRenderTypeSet.of(RenderType.cutout()); + private static final List MATERIALS = new ArrayList<>(); + + // 与 MAE2 一致:将环形边框与基础发光底图放在本模组命名空间 + protected static final Material RING_CORNER = texture(ExtendedAEPlus.MODID, "ring_corner"); + protected static final Material RING_SIDE_HOR = texture(ExtendedAEPlus.MODID, "ring_side_hor"); + protected static final Material RING_SIDE_VER = texture(ExtendedAEPlus.MODID, "ring_side_ver"); + protected static final Material LIGHT_BASE = texture(ExtendedAEPlus.MODID, "light_base"); + + // 我们自己的亮面贴图(formed 时使用) + protected static final Material ACCELERATOR_4X_LIGHT = texture(ExtendedAEPlus.MODID, + "4x_accelerator_light"); + protected static final Material ACCELERATOR_16X_LIGHT = texture(ExtendedAEPlus.MODID, + "16x_accelerator_light"); + protected static final Material ACCELERATOR_64X_LIGHT = texture(ExtendedAEPlus.MODID, + "64x_accelerator_light"); + protected static final Material ACCELERATOR_256X_LIGHT = texture(ExtendedAEPlus.MODID, + "256x_accelerator_light"); + + public EPlusCraftingCubeModelProvider(EPlusCraftingUnitType type) { + super(type); + } + + @Override + public List getMaterials() { + return Collections.unmodifiableList(MATERIALS); + } + + @Override + public BakedModel getBakedModel(Function spriteGetter) { + TextureAtlasSprite ringCorner = spriteGetter.apply(RING_CORNER); + TextureAtlasSprite ringSideHor = spriteGetter.apply(RING_SIDE_HOR); + TextureAtlasSprite ringSideVer = spriteGetter.apply(RING_SIDE_VER); + + return new LightBakedModel(ringCorner, ringSideHor, ringSideVer, + spriteGetter.apply(LIGHT_BASE), this.getLightMaterial(spriteGetter)) { + public ChunkRenderTypeSet getRenderTypes(BlockState state, RandomSource rand, ModelData data) { + return CUTOUT; + } + }; + } + + private TextureAtlasSprite getLightMaterial(Function textureGetter) { + return switch (this.type) { + case ACCELERATOR_4x -> textureGetter.apply(ACCELERATOR_4X_LIGHT); + case ACCELERATOR_16x -> textureGetter.apply(ACCELERATOR_16X_LIGHT); + case ACCELERATOR_64x -> textureGetter.apply(ACCELERATOR_64X_LIGHT); + case ACCELERATOR_256x -> textureGetter.apply(ACCELERATOR_256X_LIGHT); + }; + } + + private static Material texture(String namespace, String name) { + var mat = new Material(TextureAtlas.LOCATION_BLOCKS, + new ResourceLocation(namespace, "block/crafting/" + name)); + MATERIALS.add(mat); + return mat; + } +} diff --git a/src/main/java/com/extendedae_plus/content/crafting/EPlusCraftingUnitType.java b/src/main/java/com/extendedae_plus/content/crafting/EPlusCraftingUnitType.java new file mode 100644 index 0000000..06c7085 --- /dev/null +++ b/src/main/java/com/extendedae_plus/content/crafting/EPlusCraftingUnitType.java @@ -0,0 +1,42 @@ +package com.extendedae_plus.content.crafting; + +import appeng.block.crafting.ICraftingUnitType; +import net.minecraft.world.item.Item; + +import com.extendedae_plus.init.ModItems; + +public enum EPlusCraftingUnitType implements ICraftingUnitType { + ACCELERATOR_4x(0, 4), + ACCELERATOR_16x(0, 16), + ACCELERATOR_64x(0, 64), + ACCELERATOR_256x(0, 256); + + private final long storage; + private final int threads; + + EPlusCraftingUnitType(long storage, int threads) { + this.storage = storage; + this.threads = threads; + } + + @Override + public long getStorageBytes() { + return this.storage; + } + + @Override + public int getAcceleratorThreads() { + // 返回真实线程值,单块可能超过 16。上限校验已由 mixin 绕过。 + return this.threads; + } + + @Override + public Item getItemFromType() { + return switch (this) { + case ACCELERATOR_4x -> ModItems.ACCELERATOR_4x.get(); + case ACCELERATOR_16x -> ModItems.ACCELERATOR_16x.get(); + case ACCELERATOR_64x -> ModItems.ACCELERATOR_64x.get(); + case ACCELERATOR_256x -> ModItems.ACCELERATOR_256x.get(); + }; + } +} diff --git a/src/main/java/com/extendedae_plus/hooks/BuiltInModelHooks.java b/src/main/java/com/extendedae_plus/hooks/BuiltInModelHooks.java new file mode 100644 index 0000000..a2b32e8 --- /dev/null +++ b/src/main/java/com/extendedae_plus/hooks/BuiltInModelHooks.java @@ -0,0 +1,27 @@ +package com.extendedae_plus.hooks; + +import net.minecraft.client.resources.model.UnbakedModel; +import net.minecraft.resources.ResourceLocation; + +import java.util.Map; +import java.util.concurrent.ConcurrentHashMap; + +/** + * 复刻 Fabric 的内置模型注册能力(与 AE2/MAE2 相同实现)。 + */ +public final class BuiltInModelHooks { + private static final Map BUILTIN_MODELS = new ConcurrentHashMap<>(); + + private BuiltInModelHooks() {} + + public static void addBuiltInModel(ResourceLocation id, UnbakedModel model) { + var prev = BUILTIN_MODELS.putIfAbsent(id, model); + if (prev != null) { + throw new IllegalStateException("Duplicate built-in model ID: " + id); + } + } + + public static UnbakedModel getBuiltInModel(ResourceLocation id) { + return BUILTIN_MODELS.get(id); + } +} diff --git a/src/main/java/com/extendedae_plus/init/ModBlocks.java b/src/main/java/com/extendedae_plus/init/ModBlocks.java index 93d6fc1..6f86659 100644 --- a/src/main/java/com/extendedae_plus/init/ModBlocks.java +++ b/src/main/java/com/extendedae_plus/init/ModBlocks.java @@ -2,6 +2,10 @@ package com.extendedae_plus.init; import com.extendedae_plus.ExtendedAEPlus; import com.extendedae_plus.content.wireless.WirelessTransceiverBlock; +import com.extendedae_plus.content.crafting.EPlusCraftingUnitType; +import appeng.block.crafting.CraftingUnitBlock; +import appeng.blockentity.crafting.CraftingBlockEntity; +import appeng.core.definitions.AEBlockEntities; import net.minecraft.world.level.block.Block; import net.minecraft.world.level.block.state.BlockBehaviour; import net.minecraft.world.level.material.MapColor; @@ -23,4 +27,41 @@ public final class ModBlocks { .requiresCorrectToolForDrops() ) ); + + // Crafting Accelerators (reuse MAE2 textures/models) + public static final RegistryObject ACCELERATOR_4x = BLOCKS.register( + "4x_crafting_accelerator", + () -> { + var b = new CraftingUnitBlock(EPlusCraftingUnitType.ACCELERATOR_4x); + b.setBlockEntity(CraftingBlockEntity.class, AEBlockEntities.CRAFTING_UNIT, null, null); + return b; + } + ); + + public static final RegistryObject ACCELERATOR_16x = BLOCKS.register( + "16x_crafting_accelerator", + () -> { + var b = new CraftingUnitBlock(EPlusCraftingUnitType.ACCELERATOR_16x); + b.setBlockEntity(CraftingBlockEntity.class, AEBlockEntities.CRAFTING_UNIT, null, null); + return b; + } + ); + + public static final RegistryObject ACCELERATOR_64x = BLOCKS.register( + "64x_crafting_accelerator", + () -> { + var b = new CraftingUnitBlock(EPlusCraftingUnitType.ACCELERATOR_64x); + b.setBlockEntity(CraftingBlockEntity.class, AEBlockEntities.CRAFTING_UNIT, null, null); + return b; + } + ); + + public static final RegistryObject ACCELERATOR_256x = BLOCKS.register( + "256x_crafting_accelerator", + () -> { + var b = new CraftingUnitBlock(EPlusCraftingUnitType.ACCELERATOR_256x); + b.setBlockEntity(CraftingBlockEntity.class, AEBlockEntities.CRAFTING_UNIT, null, null); + return b; + } + ); } diff --git a/src/main/java/com/extendedae_plus/init/ModCreativeTabs.java b/src/main/java/com/extendedae_plus/init/ModCreativeTabs.java index 5919514..52d28dd 100644 --- a/src/main/java/com/extendedae_plus/init/ModCreativeTabs.java +++ b/src/main/java/com/extendedae_plus/init/ModCreativeTabs.java @@ -20,6 +20,10 @@ public final class ModCreativeTabs { .displayItems((params, output) -> { // 将本模组物品加入创造物品栏 output.accept(ModItems.WIRELESS_TRANSCEIVER.get()); + output.accept(ModItems.ACCELERATOR_4x.get()); + output.accept(ModItems.ACCELERATOR_16x.get()); + output.accept(ModItems.ACCELERATOR_64x.get()); + output.accept(ModItems.ACCELERATOR_256x.get()); }) .build()); } diff --git a/src/main/java/com/extendedae_plus/init/ModItems.java b/src/main/java/com/extendedae_plus/init/ModItems.java index c3424b2..d5c69a6 100644 --- a/src/main/java/com/extendedae_plus/init/ModItems.java +++ b/src/main/java/com/extendedae_plus/init/ModItems.java @@ -16,4 +16,25 @@ public final class ModItems { "wireless_transceiver", () -> new BlockItem(ModBlocks.WIRELESS_TRANSCEIVER.get(), new Item.Properties()) ); + + // Crafting Accelerators + public static final RegistryObject ACCELERATOR_4x = ITEMS.register( + "4x_crafting_accelerator", + () -> new BlockItem(ModBlocks.ACCELERATOR_4x.get(), new Item.Properties()) + ); + + public static final RegistryObject ACCELERATOR_16x = ITEMS.register( + "16x_crafting_accelerator", + () -> new BlockItem(ModBlocks.ACCELERATOR_16x.get(), new Item.Properties()) + ); + + public static final RegistryObject ACCELERATOR_64x = ITEMS.register( + "64x_crafting_accelerator", + () -> new BlockItem(ModBlocks.ACCELERATOR_64x.get(), new Item.Properties()) + ); + + public static final RegistryObject ACCELERATOR_256x = ITEMS.register( + "256x_crafting_accelerator", + () -> new BlockItem(ModBlocks.ACCELERATOR_256x.get(), new Item.Properties()) + ); } diff --git a/src/main/java/com/extendedae_plus/mixin/ae2/CraftingCPUClusterMixin.java b/src/main/java/com/extendedae_plus/mixin/ae2/CraftingCPUClusterMixin.java new file mode 100644 index 0000000..3558a30 --- /dev/null +++ b/src/main/java/com/extendedae_plus/mixin/ae2/CraftingCPUClusterMixin.java @@ -0,0 +1,24 @@ +package com.extendedae_plus.mixin.ae2; + +import appeng.blockentity.crafting.CraftingBlockEntity; +import appeng.me.cluster.implementations.CraftingCPUCluster; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.injection.At; +import org.spongepowered.asm.mixin.injection.Redirect; + +@Mixin(value = CraftingCPUCluster.class, remap = false) +public abstract class CraftingCPUClusterMixin { + // Redirect the second call (ordinal=1) to getAcceleratorThreads in addBlockEntity, + // which is used for the per-block <=16 validation in AE2. We return 1 so the check always passes. + @Redirect( + method = "addBlockEntity(Lappeng/blockentity/crafting/CraftingBlockEntity;)V", + at = @At( + value = "INVOKE", + target = "Lappeng/blockentity/crafting/CraftingBlockEntity;getAcceleratorThreads()I", + ordinal = 1 + ) + ) + private int extendedae_plus$onGetThreadsForLimitCheck(CraftingBlockEntity te) { + return 1; + } +} diff --git a/src/main/java/com/extendedae_plus/mixin/hooks/ModelBakeryMixin.java b/src/main/java/com/extendedae_plus/mixin/hooks/ModelBakeryMixin.java new file mode 100644 index 0000000..efc1b57 --- /dev/null +++ b/src/main/java/com/extendedae_plus/mixin/hooks/ModelBakeryMixin.java @@ -0,0 +1,33 @@ +package com.extendedae_plus.mixin.hooks; + +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.Shadow; +import org.spongepowered.asm.mixin.injection.At; +import org.spongepowered.asm.mixin.injection.Inject; +import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; + +import net.minecraft.client.resources.model.ModelBakery; +import net.minecraft.client.resources.model.UnbakedModel; +import net.minecraft.resources.ResourceLocation; + +import com.extendedae_plus.hooks.BuiltInModelHooks; + +/** + * 复制 MAE2/AE2 的做法:在模型加载时优先查询我们的内置模型表, + * 若命中则缓存并阻止继续查找 JSON 模型。 + */ +@Mixin(ModelBakery.class) +public class ModelBakeryMixin { + @Inject(method = "loadModel", at = @At("HEAD"), cancellable = true) + private void extendedae_plus$loadModelHook(ResourceLocation id, CallbackInfo ci) { + var model = BuiltInModelHooks.getBuiltInModel(id); + if (model != null) { + cacheAndQueueDependencies(id, model); + ci.cancel(); + } + } + + @Shadow + protected void cacheAndQueueDependencies(ResourceLocation id, UnbakedModel unbakedModel) { + } +} diff --git a/src/main/resources/assets/extendedae_plus/blockstates/16x_crafting_accelerator.json b/src/main/resources/assets/extendedae_plus/blockstates/16x_crafting_accelerator.json new file mode 100644 index 0000000..fdb778b --- /dev/null +++ b/src/main/resources/assets/extendedae_plus/blockstates/16x_crafting_accelerator.json @@ -0,0 +1,6 @@ +{ + "variants": { + "formed=false": { "model": "extendedae_plus:block/crafting/16x_accelerator" }, + "formed=true": { "model": "extendedae_plus:block/crafting/16x_accelerator_formed_v2" } + } +} diff --git a/src/main/resources/assets/extendedae_plus/blockstates/256x_crafting_accelerator.json b/src/main/resources/assets/extendedae_plus/blockstates/256x_crafting_accelerator.json new file mode 100644 index 0000000..acc1729 --- /dev/null +++ b/src/main/resources/assets/extendedae_plus/blockstates/256x_crafting_accelerator.json @@ -0,0 +1,6 @@ +{ + "variants": { + "formed=false": { "model": "extendedae_plus:block/crafting/256x_accelerator" }, + "formed=true": { "model": "extendedae_plus:block/crafting/256x_accelerator_formed_v2" } + } +} diff --git a/src/main/resources/assets/extendedae_plus/blockstates/4x_crafting_accelerator.json b/src/main/resources/assets/extendedae_plus/blockstates/4x_crafting_accelerator.json new file mode 100644 index 0000000..90408f2 --- /dev/null +++ b/src/main/resources/assets/extendedae_plus/blockstates/4x_crafting_accelerator.json @@ -0,0 +1,6 @@ +{ + "variants": { + "formed=false": { "model": "extendedae_plus:block/crafting/4x_accelerator" }, + "formed=true": { "model": "extendedae_plus:block/crafting/4x_accelerator_formed_v2" } + } +} diff --git a/src/main/resources/assets/extendedae_plus/blockstates/64x_crafting_accelerator.json b/src/main/resources/assets/extendedae_plus/blockstates/64x_crafting_accelerator.json new file mode 100644 index 0000000..05028e7 --- /dev/null +++ b/src/main/resources/assets/extendedae_plus/blockstates/64x_crafting_accelerator.json @@ -0,0 +1,6 @@ +{ + "variants": { + "formed=false": { "model": "extendedae_plus:block/crafting/64x_accelerator" }, + "formed=true": { "model": "extendedae_plus:block/crafting/64x_accelerator_formed_v2" } + } +} diff --git a/src/main/resources/assets/extendedae_plus/models/block/crafting/16x_accelerator.json b/src/main/resources/assets/extendedae_plus/models/block/crafting/16x_accelerator.json new file mode 100644 index 0000000..ef68088 --- /dev/null +++ b/src/main/resources/assets/extendedae_plus/models/block/crafting/16x_accelerator.json @@ -0,0 +1,4 @@ +{ + "parent": "minecraft:block/cube_all", + "textures": { "all": "extendedae_plus:block/crafting/16x_accelerator" } +} diff --git a/src/main/resources/assets/extendedae_plus/models/block/crafting/16x_accelerator_formed.json b/src/main/resources/assets/extendedae_plus/models/block/crafting/16x_accelerator_formed.json new file mode 100644 index 0000000..70416f4 --- /dev/null +++ b/src/main/resources/assets/extendedae_plus/models/block/crafting/16x_accelerator_formed.json @@ -0,0 +1,4 @@ +{ + "parent": "minecraft:block/cube_all", + "textures": { "all": "extendedae_plus:block/crafting/16x_accelerator_light" } +} diff --git a/src/main/resources/assets/extendedae_plus/models/block/crafting/256x_accelerator.json b/src/main/resources/assets/extendedae_plus/models/block/crafting/256x_accelerator.json new file mode 100644 index 0000000..d668b1b --- /dev/null +++ b/src/main/resources/assets/extendedae_plus/models/block/crafting/256x_accelerator.json @@ -0,0 +1,4 @@ +{ + "parent": "minecraft:block/cube_all", + "textures": { "all": "extendedae_plus:block/crafting/256x_accelerator" } +} diff --git a/src/main/resources/assets/extendedae_plus/models/block/crafting/256x_accelerator_formed.json b/src/main/resources/assets/extendedae_plus/models/block/crafting/256x_accelerator_formed.json new file mode 100644 index 0000000..e2fc961 --- /dev/null +++ b/src/main/resources/assets/extendedae_plus/models/block/crafting/256x_accelerator_formed.json @@ -0,0 +1,4 @@ +{ + "parent": "minecraft:block/cube_all", + "textures": { "all": "extendedae_plus:block/crafting/256x_accelerator_light" } +} diff --git a/src/main/resources/assets/extendedae_plus/models/block/crafting/4x_accelerator.json b/src/main/resources/assets/extendedae_plus/models/block/crafting/4x_accelerator.json new file mode 100644 index 0000000..978f3fb --- /dev/null +++ b/src/main/resources/assets/extendedae_plus/models/block/crafting/4x_accelerator.json @@ -0,0 +1,4 @@ +{ + "parent": "minecraft:block/cube_all", + "textures": { "all": "extendedae_plus:block/crafting/4x_accelerator" } +} diff --git a/src/main/resources/assets/extendedae_plus/models/block/crafting/4x_accelerator_formed.json b/src/main/resources/assets/extendedae_plus/models/block/crafting/4x_accelerator_formed.json new file mode 100644 index 0000000..85b70fa --- /dev/null +++ b/src/main/resources/assets/extendedae_plus/models/block/crafting/4x_accelerator_formed.json @@ -0,0 +1,4 @@ +{ + "parent": "minecraft:block/cube_all", + "textures": { "all": "extendedae_plus:block/crafting/4x_accelerator_light" } +} diff --git a/src/main/resources/assets/extendedae_plus/models/block/crafting/64x_accelerator.json b/src/main/resources/assets/extendedae_plus/models/block/crafting/64x_accelerator.json new file mode 100644 index 0000000..530d332 --- /dev/null +++ b/src/main/resources/assets/extendedae_plus/models/block/crafting/64x_accelerator.json @@ -0,0 +1,4 @@ +{ + "parent": "minecraft:block/cube_all", + "textures": { "all": "extendedae_plus:block/crafting/64x_accelerator" } +} diff --git a/src/main/resources/assets/extendedae_plus/models/block/crafting/64x_accelerator_formed.json b/src/main/resources/assets/extendedae_plus/models/block/crafting/64x_accelerator_formed.json new file mode 100644 index 0000000..9b58fa0 --- /dev/null +++ b/src/main/resources/assets/extendedae_plus/models/block/crafting/64x_accelerator_formed.json @@ -0,0 +1,4 @@ +{ + "parent": "minecraft:block/cube_all", + "textures": { "all": "extendedae_plus:block/crafting/64x_accelerator_light" } +} diff --git a/src/main/resources/assets/extendedae_plus/models/item/16x_crafting_accelerator.json b/src/main/resources/assets/extendedae_plus/models/item/16x_crafting_accelerator.json new file mode 100644 index 0000000..e6c9f52 --- /dev/null +++ b/src/main/resources/assets/extendedae_plus/models/item/16x_crafting_accelerator.json @@ -0,0 +1 @@ +{ "parent": "extendedae_plus:block/crafting/16x_accelerator" } diff --git a/src/main/resources/assets/extendedae_plus/models/item/256x_crafting_accelerator.json b/src/main/resources/assets/extendedae_plus/models/item/256x_crafting_accelerator.json new file mode 100644 index 0000000..0c537a5 --- /dev/null +++ b/src/main/resources/assets/extendedae_plus/models/item/256x_crafting_accelerator.json @@ -0,0 +1 @@ +{ "parent": "extendedae_plus:block/crafting/256x_accelerator" } diff --git a/src/main/resources/assets/extendedae_plus/models/item/4x_crafting_accelerator.json b/src/main/resources/assets/extendedae_plus/models/item/4x_crafting_accelerator.json new file mode 100644 index 0000000..a36b20e --- /dev/null +++ b/src/main/resources/assets/extendedae_plus/models/item/4x_crafting_accelerator.json @@ -0,0 +1 @@ +{ "parent": "extendedae_plus:block/crafting/4x_accelerator" } diff --git a/src/main/resources/assets/extendedae_plus/models/item/64x_crafting_accelerator.json b/src/main/resources/assets/extendedae_plus/models/item/64x_crafting_accelerator.json new file mode 100644 index 0000000..5134b5a --- /dev/null +++ b/src/main/resources/assets/extendedae_plus/models/item/64x_crafting_accelerator.json @@ -0,0 +1 @@ +{ "parent": "extendedae_plus:block/crafting/64x_accelerator" } diff --git a/src/main/resources/assets/extendedae_plus/textures/block/crafting/16x_accelerator.png b/src/main/resources/assets/extendedae_plus/textures/block/crafting/16x_accelerator.png new file mode 100644 index 0000000..306afe0 Binary files /dev/null and b/src/main/resources/assets/extendedae_plus/textures/block/crafting/16x_accelerator.png differ diff --git a/src/main/resources/assets/extendedae_plus/textures/block/crafting/16x_accelerator_light.png b/src/main/resources/assets/extendedae_plus/textures/block/crafting/16x_accelerator_light.png new file mode 100644 index 0000000..472b39c Binary files /dev/null and b/src/main/resources/assets/extendedae_plus/textures/block/crafting/16x_accelerator_light.png differ diff --git a/src/main/resources/assets/extendedae_plus/textures/block/crafting/256x_accelerator.png b/src/main/resources/assets/extendedae_plus/textures/block/crafting/256x_accelerator.png new file mode 100644 index 0000000..15c390b Binary files /dev/null and b/src/main/resources/assets/extendedae_plus/textures/block/crafting/256x_accelerator.png differ diff --git a/src/main/resources/assets/extendedae_plus/textures/block/crafting/256x_accelerator_light.png b/src/main/resources/assets/extendedae_plus/textures/block/crafting/256x_accelerator_light.png new file mode 100644 index 0000000..cabc107 Binary files /dev/null and b/src/main/resources/assets/extendedae_plus/textures/block/crafting/256x_accelerator_light.png differ diff --git a/src/main/resources/assets/extendedae_plus/textures/block/crafting/4x_accelerator.png b/src/main/resources/assets/extendedae_plus/textures/block/crafting/4x_accelerator.png new file mode 100644 index 0000000..e8a2709 Binary files /dev/null and b/src/main/resources/assets/extendedae_plus/textures/block/crafting/4x_accelerator.png differ diff --git a/src/main/resources/assets/extendedae_plus/textures/block/crafting/4x_accelerator_light.png b/src/main/resources/assets/extendedae_plus/textures/block/crafting/4x_accelerator_light.png new file mode 100644 index 0000000..38f75c5 Binary files /dev/null and b/src/main/resources/assets/extendedae_plus/textures/block/crafting/4x_accelerator_light.png differ diff --git a/src/main/resources/assets/extendedae_plus/textures/block/crafting/64x_accelerator.png b/src/main/resources/assets/extendedae_plus/textures/block/crafting/64x_accelerator.png new file mode 100644 index 0000000..f52b35d Binary files /dev/null and b/src/main/resources/assets/extendedae_plus/textures/block/crafting/64x_accelerator.png differ diff --git a/src/main/resources/assets/extendedae_plus/textures/block/crafting/64x_accelerator_light.png b/src/main/resources/assets/extendedae_plus/textures/block/crafting/64x_accelerator_light.png new file mode 100644 index 0000000..f5f7c9a Binary files /dev/null and b/src/main/resources/assets/extendedae_plus/textures/block/crafting/64x_accelerator_light.png differ diff --git a/src/main/resources/assets/extendedae_plus/textures/block/crafting/light_base.png b/src/main/resources/assets/extendedae_plus/textures/block/crafting/light_base.png new file mode 100644 index 0000000..954b135 Binary files /dev/null and b/src/main/resources/assets/extendedae_plus/textures/block/crafting/light_base.png differ diff --git a/src/main/resources/assets/extendedae_plus/textures/block/crafting/ring_corner.png b/src/main/resources/assets/extendedae_plus/textures/block/crafting/ring_corner.png new file mode 100644 index 0000000..8670a44 Binary files /dev/null and b/src/main/resources/assets/extendedae_plus/textures/block/crafting/ring_corner.png differ diff --git a/src/main/resources/assets/extendedae_plus/textures/block/crafting/ring_side_hor.png b/src/main/resources/assets/extendedae_plus/textures/block/crafting/ring_side_hor.png new file mode 100644 index 0000000..43e9e62 Binary files /dev/null and b/src/main/resources/assets/extendedae_plus/textures/block/crafting/ring_side_hor.png differ diff --git a/src/main/resources/assets/extendedae_plus/textures/block/crafting/ring_side_ver.png b/src/main/resources/assets/extendedae_plus/textures/block/crafting/ring_side_ver.png new file mode 100644 index 0000000..d280740 Binary files /dev/null and b/src/main/resources/assets/extendedae_plus/textures/block/crafting/ring_side_ver.png differ diff --git a/src/main/resources/extendedae_plus.mixins.json b/src/main/resources/extendedae_plus.mixins.json index 1c2ac18..78f9334 100644 --- a/src/main/resources/extendedae_plus.mixins.json +++ b/src/main/resources/extendedae_plus.mixins.json @@ -24,7 +24,8 @@ "extendedae.HighlightButtonMixin", "extendedae.accessor.GuiExPatternTerminalAccessor", "extendedae.accessor.GuiExPatternTerminalSlotsRowAccessor", - "jei.EncodePatternTransferHandlerMixin" + "jei.EncodePatternTransferHandlerMixin", + "hooks.ModelBakeryMixin" ], "mixins": [ "ae2.ContainerPatternEncodingTermMenuMixin", @@ -41,6 +42,7 @@ "extendedae.ContainerExPatternProviderMixin", "extendedae.ContainerExPatternTerminalMixin", "extendedae.ContainerWirelessExPatternTerminalMixin", + "ae2.CraftingCPUClusterMixin", "extendedae.PartExPatternProviderMixin", "extendedae.TileExPatternProviderMixin" ],