提交
@@ -7,7 +7,6 @@ import appeng.api.stacks.AEKeyTypesInternal;
|
|||||||
import appeng.api.upgrades.Upgrades;
|
import appeng.api.upgrades.Upgrades;
|
||||||
import appeng.client.gui.style.StyleManager;
|
import appeng.client.gui.style.StyleManager;
|
||||||
import appeng.core.definitions.AEItems;
|
import appeng.core.definitions.AEItems;
|
||||||
import appeng.core.localization.GuiText;
|
|
||||||
import net.minecraft.network.chat.Component;
|
import net.minecraft.network.chat.Component;
|
||||||
import net.minecraft.resources.ResourceLocation;
|
import net.minecraft.resources.ResourceLocation;
|
||||||
import net.minecraft.world.entity.player.Inventory;
|
import net.minecraft.world.entity.player.Inventory;
|
||||||
@@ -118,27 +117,30 @@ public final class ThaumicEnergistics {
|
|||||||
|
|
||||||
private void registerUpgrades(FMLCommonSetupEvent event) {
|
private void registerUpgrades(FMLCommonSetupEvent event) {
|
||||||
event.enqueueWork(() -> {
|
event.enqueueWork(() -> {
|
||||||
String essentiaIoBusGroup = GuiText.IOBuses.getTranslationKey();
|
// 注:不传 group——带 group 会在卡 tooltip 中与 AE2 原版 IO 总线合并显示为
|
||||||
|
// "ME Import/Export Bus"(同 group 跳过),ThE 设备名不显示。与存储总线一致,各自显示设备名。
|
||||||
var importBusItem = ModItems.ESSENTIA_IMPORT_BUS.get();
|
var importBusItem = ModItems.ESSENTIA_IMPORT_BUS.get();
|
||||||
Upgrades.add(AEItems.FUZZY_CARD, importBusItem, 1, essentiaIoBusGroup);
|
Upgrades.add(AEItems.FUZZY_CARD, importBusItem, 1);
|
||||||
Upgrades.add(AEItems.REDSTONE_CARD, importBusItem, 1, essentiaIoBusGroup);
|
Upgrades.add(AEItems.REDSTONE_CARD, importBusItem, 1);
|
||||||
Upgrades.add(AEItems.CAPACITY_CARD, importBusItem, 5, essentiaIoBusGroup);
|
Upgrades.add(AEItems.CAPACITY_CARD, importBusItem, 5);
|
||||||
Upgrades.add(AEItems.SPEED_CARD, importBusItem, 4, essentiaIoBusGroup);
|
Upgrades.add(AEItems.SPEED_CARD, importBusItem, 4);
|
||||||
Upgrades.add(AEItems.INVERTER_CARD, importBusItem, 1, essentiaIoBusGroup);
|
Upgrades.add(AEItems.INVERTER_CARD, importBusItem, 1);
|
||||||
|
|
||||||
var exportBusItem = ModItems.ESSENTIA_EXPORT_BUS.get();
|
var exportBusItem = ModItems.ESSENTIA_EXPORT_BUS.get();
|
||||||
Upgrades.add(AEItems.FUZZY_CARD, exportBusItem, 1, essentiaIoBusGroup);
|
Upgrades.add(AEItems.FUZZY_CARD, exportBusItem, 1);
|
||||||
Upgrades.add(AEItems.REDSTONE_CARD, exportBusItem, 1, essentiaIoBusGroup);
|
Upgrades.add(AEItems.REDSTONE_CARD, exportBusItem, 1);
|
||||||
Upgrades.add(AEItems.CAPACITY_CARD, exportBusItem, 5, essentiaIoBusGroup);
|
Upgrades.add(AEItems.CAPACITY_CARD, exportBusItem, 5);
|
||||||
Upgrades.add(AEItems.SPEED_CARD, exportBusItem, 4, essentiaIoBusGroup);
|
Upgrades.add(AEItems.SPEED_CARD, exportBusItem, 4);
|
||||||
Upgrades.add(AEItems.CRAFTING_CARD, exportBusItem, 1, essentiaIoBusGroup);
|
Upgrades.add(AEItems.CRAFTING_CARD, exportBusItem, 1);
|
||||||
|
|
||||||
var storageBusItem = ModItems.ESSENTIA_STORAGE_BUS.get();
|
var storageBusItem = ModItems.ESSENTIA_STORAGE_BUS.get();
|
||||||
Upgrades.add(AEItems.FUZZY_CARD, storageBusItem, 1);
|
Upgrades.add(AEItems.FUZZY_CARD, storageBusItem, 1);
|
||||||
Upgrades.add(AEItems.INVERTER_CARD, storageBusItem, 1);
|
Upgrades.add(AEItems.INVERTER_CARD, storageBusItem, 1);
|
||||||
Upgrades.add(AEItems.CAPACITY_CARD, storageBusItem, 5);
|
Upgrades.add(AEItems.CAPACITY_CARD, storageBusItem, 5);
|
||||||
Upgrades.add(AEItems.VOID_CARD, storageBusItem, 1);
|
Upgrades.add(AEItems.VOID_CARD, storageBusItem, 1);
|
||||||
|
|
||||||
|
// 神秘装配台:加速卡(AEItems.SPEED_CARD = Acceleration Card,tooltip 名单 + 装配台升级槽可装——加快合成)
|
||||||
|
Upgrades.add(AEItems.SPEED_CARD, ModItems.ARCANE_ASSEMBLER_ITEM.get(), 4);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -7,6 +7,8 @@ import net.minecraft.client.renderer.MultiBufferSource;
|
|||||||
import net.minecraft.network.chat.Component;
|
import net.minecraft.network.chat.Component;
|
||||||
import net.minecraft.resources.ResourceLocation;
|
import net.minecraft.resources.ResourceLocation;
|
||||||
import net.minecraft.world.level.Level;
|
import net.minecraft.world.level.Level;
|
||||||
|
import thaumcraft.api.aspects.Aspect;
|
||||||
|
import thaumcraft.client.gui.AspectGuiRenderer;
|
||||||
import thaumicenergistics.common.integration.appeng.AEssentiaKey;
|
import thaumicenergistics.common.integration.appeng.AEssentiaKey;
|
||||||
|
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
@@ -16,29 +18,13 @@ public class EssentiaKeyRenderHandler implements appeng.api.client.AEKeyRenderHa
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void drawInGui(Minecraft minecraft, GuiGraphics guiGraphics, int x, int y, AEssentiaKey stack) {
|
public void drawInGui(Minecraft minecraft, GuiGraphics guiGraphics, int x, int y, AEssentiaKey stack) {
|
||||||
|
// 复用 TC 的 AspectGuiRenderer(positionTexColor shader + enableBlend)——透明背景正确,
|
||||||
|
// 与蒸馏编码台一致;避免 GuiGraphics.blit 的 blend 状态问题(图标内部镂空被填黑)。
|
||||||
String tag = stack.getId().getPath();
|
String tag = stack.getId().getPath();
|
||||||
// 渲染要素图标(透明背景):TC 的 aspect 图标是白色剪影,需用 aspect 颜色着色(与 JEI 的 AspectGuiRenderer 一致)
|
Aspect aspect = Aspect.getAspect(tag);
|
||||||
int color = getAspectColor(tag);
|
if (aspect != null) {
|
||||||
float r = ((color >> 16) & 0xFF) / 255.0f;
|
AspectGuiRenderer.draw(guiGraphics, aspect, x, y, 16, 1.0f);
|
||||||
float g = ((color >> 8) & 0xFF) / 255.0f;
|
|
||||||
float b = (color & 0xFF) / 255.0f;
|
|
||||||
guiGraphics.setColor(r, g, b, 1.0f);
|
|
||||||
guiGraphics.blit(aspectTexture(tag), x, y, 0, 0, 16, 16, 16, 16);
|
|
||||||
guiGraphics.setColor(1.0f, 1.0f, 1.0f, 1.0f);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/** 按 tag 缓存 aspect 贴图 RL,避免每帧 fromNamespaceAndPath。 */
|
|
||||||
private static final java.util.Map<String, ResourceLocation> TEXTURE_CACHE = new java.util.HashMap<>();
|
|
||||||
|
|
||||||
private static ResourceLocation aspectTexture(String tag) {
|
|
||||||
return TEXTURE_CACHE.computeIfAbsent(tag,
|
|
||||||
t -> ResourceLocation.fromNamespaceAndPath("thaumcraft", "textures/aspects/" + t + ".png"));
|
|
||||||
}
|
|
||||||
|
|
||||||
/** 获取 aspect 的 ARGB 颜色(按 tag 查 Thaumcraft Aspect),未知返回白色。 */
|
|
||||||
private static int getAspectColor(String tag) {
|
|
||||||
thaumcraft.api.aspects.Aspect aspect = thaumcraft.api.aspects.Aspect.getAspect(tag);
|
|
||||||
return aspect != null ? aspect.getColor() : 0xFFFFFFFF;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|||||||
@@ -32,7 +32,7 @@ public class ContainerArcaneAssembler extends AbstractContainerMenu {
|
|||||||
|
|
||||||
// ===== 坐标常量(1:1 对应1.7.10) =====
|
// ===== 坐标常量(1:1 对应1.7.10) =====
|
||||||
private static final int PLAYER_INV_X = 8;
|
private static final int PLAYER_INV_X = 8;
|
||||||
private static final int PLAYER_INV_Y = 115;
|
private static final int PLAYER_INV_Y = 113;
|
||||||
private static final int HOTBAR_Y = PLAYER_INV_Y + 58; // 173
|
private static final int HOTBAR_Y = PLAYER_INV_Y + 58; // 173
|
||||||
|
|
||||||
private static final int PATTERN_X = 26;
|
private static final int PATTERN_X = 26;
|
||||||
|
|||||||
@@ -29,8 +29,8 @@ import java.util.List;
|
|||||||
|
|
||||||
public class ContainerDistillationPatternEncoder extends AbstractContainerMenu {
|
public class ContainerDistillationPatternEncoder extends AbstractContainerMenu {
|
||||||
|
|
||||||
private static final int PLAYER_INV_Y = 152;
|
private static final int PLAYER_INV_Y = 150;
|
||||||
private static final int HOTBAR_Y = 210;
|
private static final int HOTBAR_Y = 208;
|
||||||
private static final int PLAYER_INV_X = 8;
|
private static final int PLAYER_INV_X = 8;
|
||||||
|
|
||||||
private static final int SLOT_SOURCE_X = 15;
|
private static final int SLOT_SOURCE_X = 15;
|
||||||
|
|||||||
@@ -48,8 +48,8 @@ public class ContainerEssentiaCellWorkbench extends AbstractContainerMenu {
|
|||||||
|
|
||||||
IItemHandler cellHandler = workbench != null ? workbench.getCellInventory() : fallbackCell;
|
IItemHandler cellHandler = workbench != null ? workbench.getCellInventory() : fallbackCell;
|
||||||
addSlot(new SlotItemHandler(cellHandler, 0, 152, 8));
|
addSlot(new SlotItemHandler(cellHandler, 0, 152, 8));
|
||||||
for (int r = 0; r < 3; r++) for (int c = 0; c < 9; c++) addSlot(new Slot(inv, c + r * 9 + 9, 8 + c * 18, 169 + r * 18));
|
for (int r = 0; r < 3; r++) for (int c = 0; c < 9; c++) addSlot(new Slot(inv, c + r * 9 + 9, 8 + c * 18, 167 + r * 18));
|
||||||
for (int c = 0; c < 9; c++) addSlot(new Slot(inv, c, 8 + c * 18, 227));
|
for (int c = 0; c < 9; c++) addSlot(new Slot(inv, c, 8 + c * 18, 225));
|
||||||
}
|
}
|
||||||
|
|
||||||
/** 客户端打开菜单用(IMenuTypeExtension 注册);workbench 为 null,分区操作走 C2S 到服务端。 */
|
/** 客户端打开菜单用(IMenuTypeExtension 注册);workbench 为 null,分区操作走 C2S 到服务端。 */
|
||||||
|
|||||||
@@ -45,8 +45,8 @@ public class ContainerKnowledgeInscriber extends AbstractContainerMenu {
|
|||||||
|
|
||||||
private static final int MAXIMUM_PATTERNS = HandlerKnowledgeCore.MAXIMUM_STORED_PATTERNS;
|
private static final int MAXIMUM_PATTERNS = HandlerKnowledgeCore.MAXIMUM_STORED_PATTERNS;
|
||||||
|
|
||||||
private static final int PLAYER_INV_Y = 162;
|
private static final int PLAYER_INV_Y = 160;
|
||||||
private static final int HOTBAR_Y = 220;
|
private static final int HOTBAR_Y = 218;
|
||||||
private static final int PLAYER_INV_X = 8;
|
private static final int PLAYER_INV_X = 8;
|
||||||
|
|
||||||
private static final int KCORE_SLOT_X = 186;
|
private static final int KCORE_SLOT_X = 186;
|
||||||
|
|||||||
@@ -25,7 +25,7 @@ public class GuiEssentiaCellWorkbench extends AbstractContainerScreen<ContainerE
|
|||||||
private static final ResourceLocation TEX = ResourceLocation.fromNamespaceAndPath(ThaumicEnergistics.MODID, "textures/gui/essentia_cell_workbench.png");
|
private static final ResourceLocation TEX = ResourceLocation.fromNamespaceAndPath(ThaumicEnergistics.MODID, "textures/gui/essentia_cell_workbench.png");
|
||||||
private static final int GUI_WIDTH = 176, GUI_HEIGHT = 251;
|
private static final int GUI_WIDTH = 176, GUI_HEIGHT = 251;
|
||||||
/** 分区格布局常量(JEI ghost 拖拽也使用,故公开)。 */
|
/** 分区格布局常量(JEI ghost 拖拽也使用,故公开)。 */
|
||||||
public static final int WIDGET_POS_X = 7, WIDGET_POS_Y = 28;
|
public static final int WIDGET_POS_X = 8, WIDGET_POS_Y = 29;
|
||||||
public static final int WIDGETS_PER_ROW = 9, WIDGET_ROWS = 7, NUMBER_OF_WIDGETS = 63;
|
public static final int WIDGETS_PER_ROW = 9, WIDGET_ROWS = 7, NUMBER_OF_WIDGETS = 63;
|
||||||
public static final int WIDGET_SIZE = 18;
|
public static final int WIDGET_SIZE = 18;
|
||||||
|
|
||||||
|
|||||||
@@ -50,6 +50,8 @@ public final class RecipeRegistration {
|
|||||||
public static ShapelessArcaneRecipe ARCANE_CRAFTING_TERMINAL;
|
public static ShapelessArcaneRecipe ARCANE_CRAFTING_TERMINAL;
|
||||||
public static ShapelessArcaneRecipe VIS_INTERFACE;
|
public static ShapelessArcaneRecipe VIS_INTERFACE;
|
||||||
public static ShapelessArcaneRecipe ESSENTIA_VIBRATION_CHAMBER;
|
public static ShapelessArcaneRecipe ESSENTIA_VIBRATION_CHAMBER;
|
||||||
|
/** 赛特斯石英复制(坩埚炼金配方——研究页关联)。 */
|
||||||
|
public static CrucibleRecipe CERTUS_DUPE_RECIPE;
|
||||||
|
|
||||||
private static final TagKey<Item> WISP_ESSENCES = tag("thaumicenergistics", "wisp_essences");
|
private static final TagKey<Item> WISP_ESSENCES = tag("thaumicenergistics", "wisp_essences");
|
||||||
|
|
||||||
@@ -62,9 +64,21 @@ public final class RecipeRegistration {
|
|||||||
registerShapedArcane();
|
registerShapedArcane();
|
||||||
registerShapelessArcane();
|
registerShapelessArcane();
|
||||||
registerInfusion();
|
registerInfusion();
|
||||||
|
registerCrucible();
|
||||||
ThaumicEnergistics.LOG.info("ThaumicEnergistics recipes registered.");
|
ThaumicEnergistics.LOG.info("ThaumicEnergistics recipes registered.");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/** 坩埚炼金配方:赛特斯石英复制(丢 1 赛特斯石英 + 水晶/交换要素 → 2 赛特斯石英)。 */
|
||||||
|
private static void registerCrucible() {
|
||||||
|
ItemStack quartz = ae("certus_quartz_crystal");
|
||||||
|
if (quartz.isEmpty()) return;
|
||||||
|
CERTUS_DUPE_RECIPE = ThaumcraftApi.addCrucibleRecipe(
|
||||||
|
"CERTUS_DUPE",
|
||||||
|
quartz.copyWithCount(2),
|
||||||
|
quartz.copyWithCount(1),
|
||||||
|
new AspectList().add(Aspect.CRYSTAL, 5).add(Aspect.EXCHANGE, 5));
|
||||||
|
}
|
||||||
|
|
||||||
private static void registerShapedArcane() {
|
private static void registerShapedArcane() {
|
||||||
STORAGE_COMPONENT_1K = ThaumcraftApi.addArcaneCraftingRecipe("ESSENTIASTORAGE1K", stack(ModItems.STORAGE_COMPONENT_1K),
|
STORAGE_COMPONENT_1K = ThaumcraftApi.addArcaneCraftingRecipe("ESSENTIASTORAGE1K", stack(ModItems.STORAGE_COMPONENT_1K),
|
||||||
new AspectList().add(Aspect.FIRE, 3).add(Aspect.ORDER, 1),
|
new AspectList().add(Aspect.FIRE, 3).add(Aspect.ORDER, 1),
|
||||||
|
|||||||
@@ -4,13 +4,14 @@ import java.util.Locale;
|
|||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
import java.util.concurrent.ConcurrentHashMap;
|
import java.util.concurrent.ConcurrentHashMap;
|
||||||
|
|
||||||
|
import net.minecraft.core.Direction;
|
||||||
import net.minecraft.resources.ResourceLocation;
|
import net.minecraft.resources.ResourceLocation;
|
||||||
import net.minecraft.world.level.block.entity.BlockEntity;
|
import net.minecraft.world.level.block.entity.BlockEntity;
|
||||||
import org.jetbrains.annotations.Nullable;
|
import org.jetbrains.annotations.Nullable;
|
||||||
import thaumcraft.api.aspects.Aspect;
|
import thaumcraft.api.aspects.Aspect;
|
||||||
import thaumcraft.api.aspects.AspectList;
|
import thaumcraft.api.aspects.AspectList;
|
||||||
import thaumcraft.api.aspects.IAspectContainer;
|
import thaumcraft.api.aspects.IAspectContainer;
|
||||||
import thaumicenergistics.ThaumicEnergistics;
|
import thaumcraft.common.essentia.EssentiaTransport;
|
||||||
import thaumicenergistics.api.storage.AspectStack;
|
import thaumicenergistics.api.storage.AspectStack;
|
||||||
|
|
||||||
public final class TCReflection {
|
public final class TCReflection {
|
||||||
@@ -18,16 +19,69 @@ public final class TCReflection {
|
|||||||
/** aspect tag → ResourceLocation 缓存(tag 有界:6 个源质 + 已注册方面)。 */
|
/** aspect tag → ResourceLocation 缓存(tag 有界:6 个源质 + 已注册方面)。 */
|
||||||
private static final Map<String, ResourceLocation> ASPECT_ID_CACHE = new ConcurrentHashMap<>();
|
private static final Map<String, ResourceLocation> ASPECT_ID_CACHE = new ConcurrentHashMap<>();
|
||||||
|
|
||||||
|
/** 荒古炼金炉类名(TC port;不实现 IAspectContainer,需反射抽内部源质)。 */
|
||||||
|
private static final String FURNACE_CLASS_NAME = "thaumcraft.common.blockentities.AlchemicalFurnaceBlockEntity";
|
||||||
|
/** 炼金炉 private aspects 字段(缓存 Field 避免每 tick getDeclaredField)。 */
|
||||||
|
private static volatile java.lang.reflect.Field furnaceAspectsField;
|
||||||
|
|
||||||
private TCReflection() {}
|
private TCReflection() {}
|
||||||
|
|
||||||
|
/** 从荒古炼金炉内部源质缓存直接抽取(替代蒸馏釜/罐子中转)。 */
|
||||||
|
@Nullable
|
||||||
|
private static AspectStack extractFromFurnace(BlockEntity be, int maxAmount) {
|
||||||
|
try {
|
||||||
|
if (furnaceAspectsField == null) {
|
||||||
|
furnaceAspectsField = be.getClass().getDeclaredField("aspects");
|
||||||
|
furnaceAspectsField.setAccessible(true);
|
||||||
|
}
|
||||||
|
AspectList furnaceAspects = (AspectList) furnaceAspectsField.get(be);
|
||||||
|
if (furnaceAspects != null && furnaceAspects.size() > 0) {
|
||||||
|
Aspect[] aspects = furnaceAspects.getAspects();
|
||||||
|
for (Aspect aspect : aspects) {
|
||||||
|
if (aspect == null) continue;
|
||||||
|
int amt = furnaceAspects.getAmount(aspect);
|
||||||
|
if (amt <= 0) continue;
|
||||||
|
int toExtract = Math.min(amt, maxAmount);
|
||||||
|
furnaceAspects.remove(aspect, toExtract);
|
||||||
|
be.setChanged();
|
||||||
|
ResourceLocation id = getAspectId(aspect);
|
||||||
|
return id != null ? new AspectStack(id, toExtract) : null;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} catch (Exception ignored) {
|
||||||
|
}
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
@Nullable
|
@Nullable
|
||||||
public static AspectStack extractEssentia(@Nullable BlockEntity be, int maxAmount) {
|
public static AspectStack extractEssentia(@Nullable BlockEntity be, int maxAmount) {
|
||||||
if (be == null) {
|
if (be == null) {
|
||||||
ThaumicEnergistics.LOG.debug("[TCReflection] extractEssentia: be is null");
|
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
// ===== 路径0: 荒古炼金炉直连(AlchemicalFurnaceBlockEntity 不实现 IAspectContainer,
|
||||||
|
// 源质在 private aspects 缓存——直接抽取,替代"必须经蒸馏釜/罐子")=====
|
||||||
|
if (FURNACE_CLASS_NAME.equals(be.getClass().getName())) {
|
||||||
|
AspectStack fromFurnace = extractFromFurnace(be, maxAmount);
|
||||||
|
if (fromFurnace != null) return fromFurnace;
|
||||||
|
}
|
||||||
|
// ===== 路径0b: TC 管道接口(EssentiaTransport——高级荒古炼金炉喷嘴/源质管道)=====
|
||||||
|
if (be instanceof EssentiaTransport transport) {
|
||||||
|
for (Direction face : Direction.values()) {
|
||||||
|
if (!transport.canOutputTo(face)) continue;
|
||||||
|
Aspect aspect = transport.getEssentiaType(face);
|
||||||
|
if (aspect == null) continue;
|
||||||
|
int amount = transport.getEssentiaAmount(face);
|
||||||
|
if (amount <= 0) continue;
|
||||||
|
int toExtract = Math.min(amount, maxAmount);
|
||||||
|
int taken = transport.takeEssentia(aspect, toExtract, face);
|
||||||
|
if (taken > 0) {
|
||||||
|
be.setChanged();
|
||||||
|
ResourceLocation id = getAspectId(aspect);
|
||||||
|
return id != null ? new AspectStack(id, taken) : null;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
if (!(be instanceof IAspectContainer container)) {
|
if (!(be instanceof IAspectContainer container)) {
|
||||||
ThaumicEnergistics.LOG.debug("[TCReflection] extractEssentia: {} does not implement IAspectContainer", be.getClass().getName());
|
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -36,7 +90,6 @@ public final class TCReflection {
|
|||||||
if (aspectList != null && aspectList.size() > 0) {
|
if (aspectList != null && aspectList.size() > 0) {
|
||||||
Aspect[] aspects = aspectList.getAspects();
|
Aspect[] aspects = aspectList.getAspects();
|
||||||
if (aspects != null) {
|
if (aspects != null) {
|
||||||
ThaumicEnergistics.LOG.debug("[TCReflection] extractEssentia: found {} aspects via getAspects()", aspects.length);
|
|
||||||
for (Aspect aspect : aspects) {
|
for (Aspect aspect : aspects) {
|
||||||
if (aspect == null) continue;
|
if (aspect == null) continue;
|
||||||
int amt = aspectList.getAmount(aspect);
|
int amt = aspectList.getAmount(aspect);
|
||||||
@@ -45,7 +98,6 @@ public final class TCReflection {
|
|||||||
if (container.takeFromContainer(aspect, toExtract)) {
|
if (container.takeFromContainer(aspect, toExtract)) {
|
||||||
be.setChanged();
|
be.setChanged();
|
||||||
ResourceLocation id = getAspectId(aspect);
|
ResourceLocation id = getAspectId(aspect);
|
||||||
ThaumicEnergistics.LOG.debug("[TCReflection] extractEssentia: SUCCESS (API) - extracted {} of {}", toExtract, id);
|
|
||||||
return id != null ? new AspectStack(id, toExtract) : null;
|
return id != null ? new AspectStack(id, toExtract) : null;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -53,7 +105,6 @@ public final class TCReflection {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// ===== 路径B: TC 移植版反射回退 (getAspect/getAmount) =====
|
// ===== 路径B: TC 移植版反射回退 (getAspect/getAmount) =====
|
||||||
ThaumicEnergistics.LOG.debug("[TCReflection] extractEssentia: getAspects() empty, trying reflection fallback for {}", be.getClass().getName());
|
|
||||||
try {
|
try {
|
||||||
java.lang.reflect.Method[] methods = getAspectMethods(be.getClass());
|
java.lang.reflect.Method[] methods = getAspectMethods(be.getClass());
|
||||||
if (methods.length < 2) {
|
if (methods.length < 2) {
|
||||||
@@ -66,18 +117,12 @@ public final class TCReflection {
|
|||||||
if (container.takeFromContainer(aspect, toExtract)) {
|
if (container.takeFromContainer(aspect, toExtract)) {
|
||||||
be.setChanged();
|
be.setChanged();
|
||||||
ResourceLocation id = getAspectId(aspect);
|
ResourceLocation id = getAspectId(aspect);
|
||||||
ThaumicEnergistics.LOG.debug("[TCReflection] extractEssentia: SUCCESS (reflection) - extracted {} of {}", toExtract, id);
|
|
||||||
return id != null ? new AspectStack(id, toExtract) : null;
|
return id != null ? new AspectStack(id, toExtract) : null;
|
||||||
}
|
}
|
||||||
ThaumicEnergistics.LOG.debug("[TCReflection] extractEssentia: takeFromContainer returned false for {} of {}", toExtract, aspect.getTag());
|
|
||||||
} else {
|
|
||||||
ThaumicEnergistics.LOG.debug("[TCReflection] extractEssentia: reflection got aspect={}, amount={}", aspect, amount);
|
|
||||||
}
|
}
|
||||||
} catch (Exception e) {
|
} catch (Exception ignored) {
|
||||||
ThaumicEnergistics.LOG.debug("[TCReflection] extractEssentia: reflection fallback error: {}", e.getMessage());
|
|
||||||
}
|
}
|
||||||
|
|
||||||
ThaumicEnergistics.LOG.debug("[TCReflection] extractEssentia: no extractable aspect found");
|
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -96,10 +141,8 @@ public final class TCReflection {
|
|||||||
Aspect aspect = findAspectById(stack.aspectId());
|
Aspect aspect = findAspectById(stack.aspectId());
|
||||||
if (aspect == null) return 0;
|
if (aspect == null) return 0;
|
||||||
int toInsert = (int) stack.amount();
|
int toInsert = (int) stack.amount();
|
||||||
ThaumicEnergistics.LOG.debug("[TCReflection] insertEssentia: inserting {} of {} into {}", toInsert, stack.aspectId(), be.getClass().getName());
|
|
||||||
int leftover = container.addToContainer(aspect, toInsert);
|
int leftover = container.addToContainer(aspect, toInsert);
|
||||||
int added = toInsert - leftover;
|
int added = toInsert - leftover;
|
||||||
ThaumicEnergistics.LOG.debug("[TCReflection] insertEssentia: added={}, leftover={}", added, leftover);
|
|
||||||
if (added > 0) {
|
if (added > 0) {
|
||||||
be.setChanged();
|
be.setChanged();
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -58,7 +58,7 @@ public final class ThEThaumcraft {
|
|||||||
|
|
||||||
ResearchCategories.registerCategory(TAB,
|
ResearchCategories.registerCategory(TAB,
|
||||||
ResourceLocation.fromNamespaceAndPath(MODID, "textures/research/tab_icon.png"),
|
ResourceLocation.fromNamespaceAndPath(MODID, "textures/research/tab_icon.png"),
|
||||||
ResourceLocation.fromNamespaceAndPath("thaumcraft", "textures/gui/gui_researchback.png"));
|
ResourceLocation.fromNamespaceAndPath(MODID, "textures/research/research_background.png"));
|
||||||
|
|
||||||
registerScanEvent();
|
registerScanEvent();
|
||||||
|
|
||||||
@@ -346,7 +346,9 @@ public final class ThEThaumcraft {
|
|||||||
new AspectList().add(Aspect.CRYSTAL, 5).add(Aspect.MAGIC, 5).add(Aspect.EXCHANGE, 5),
|
new AspectList().add(Aspect.CRYSTAL, 5).add(Aspect.MAGIC, 5).add(Aspect.EXCHANGE, 5),
|
||||||
-5, -5, 2, new ItemStack(appeng.core.definitions.AEItems.CERTUS_QUARTZ_CRYSTAL.asItem()))
|
-5, -5, 2, new ItemStack(appeng.core.definitions.AEItems.CERTUS_QUARTZ_CRYSTAL.asItem()))
|
||||||
.setRound().setParents("PSEUDO_ALCHEMICALDUPLICATION").setParentsHidden("BASEENERGISTICS")
|
.setRound().setParents("PSEUDO_ALCHEMICALDUPLICATION").setParentsHidden("BASEENERGISTICS")
|
||||||
.setPages(new ResearchPage("tc.research_text.CERTUS_DUPE"))
|
.setPages(
|
||||||
|
new ResearchPage("tc.research_text.CERTUS_DUPE"),
|
||||||
|
new ResearchPage(RecipeRegistration.CERTUS_DUPE_RECIPE))
|
||||||
.registerResearchItem();
|
.registerResearchItem();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -83,9 +83,10 @@ public class EssentiaExportBusPart extends IOBusPart
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void getBoxes(IPartCollisionHelper bch) {
|
public void getBoxes(IPartCollisionHelper bch) {
|
||||||
bch.addBox(6, 6, 11, 10, 10, 13);
|
bch.addBox(4, 4, 12, 12, 12, 14);
|
||||||
bch.addBox(5, 5, 13, 11, 11, 14);
|
bch.addBox(5, 5, 14, 11, 11, 15);
|
||||||
bch.addBox(4, 4, 14, 12, 12, 16);
|
bch.addBox(6, 6, 15, 10, 10, 16);
|
||||||
|
bch.addBox(6, 6, 11, 10, 10, 12);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|||||||
@@ -20,10 +20,12 @@ public final class ModBlocks {
|
|||||||
private ModBlocks() {}
|
private ModBlocks() {}
|
||||||
public static final DeferredRegister.Blocks REGISTRY = DeferredRegister.createBlocks(ThaumicEnergistics.MODID);
|
public static final DeferredRegister.Blocks REGISTRY = DeferredRegister.createBlocks(ThaumicEnergistics.MODID);
|
||||||
private static final BlockBehaviour.Properties P = BlockBehaviour.Properties.of().mapColor(MapColor.STONE).strength(2f).sound(SoundType.STONE);
|
private static final BlockBehaviour.Properties P = BlockBehaviour.Properties.of().mapColor(MapColor.STONE).strength(2f).sound(SoundType.STONE);
|
||||||
|
/** 装配器专用:noOcclusion——玻璃方块不被视为不透明,相邻方块(如冰/半透明)接触面不被剔除,透明玻璃后可正常看到后方方块。 */
|
||||||
|
private static final BlockBehaviour.Properties PA = P.noOcclusion();
|
||||||
|
|
||||||
public static final DeferredBlock<Block> ESSENTIA_PROVIDER = REGISTRY.register("essentia_provider", () -> new ThEBaseEntityBlock(P) { public net.minecraft.world.level.block.entity.BlockEntity newBlockEntity(BlockPos pos, BlockState st) { return new TileEssentiaProvider(pos, st); } });
|
public static final DeferredBlock<Block> ESSENTIA_PROVIDER = REGISTRY.register("essentia_provider", () -> new ThEBaseEntityBlock(P) { public net.minecraft.world.level.block.entity.BlockEntity newBlockEntity(BlockPos pos, BlockState st) { return new TileEssentiaProvider(pos, st); } });
|
||||||
public static final DeferredBlock<Block> INFUSION_PROVIDER = REGISTRY.register("infusion_provider", () -> new ThEBaseEntityBlock(P) { public net.minecraft.world.level.block.entity.BlockEntity newBlockEntity(BlockPos pos, BlockState st) { return new TileInfusionProvider(pos, st); } });
|
public static final DeferredBlock<Block> INFUSION_PROVIDER = REGISTRY.register("infusion_provider", () -> new ThEBaseEntityBlock(P) { public net.minecraft.world.level.block.entity.BlockEntity newBlockEntity(BlockPos pos, BlockState st) { return new TileInfusionProvider(pos, st); } });
|
||||||
public static final DeferredBlock<Block> ARCANE_ASSEMBLER = REGISTRY.register("arcane_assembler", () -> new ThEBaseEntityBlock(P) {
|
public static final DeferredBlock<Block> ARCANE_ASSEMBLER = REGISTRY.register("arcane_assembler", () -> new ThEBaseEntityBlock(PA) {
|
||||||
public net.minecraft.world.level.block.entity.BlockEntity newBlockEntity(BlockPos pos, BlockState st) { return new TileArcaneAssembler(pos, st); }
|
public net.minecraft.world.level.block.entity.BlockEntity newBlockEntity(BlockPos pos, BlockState st) { return new TileArcaneAssembler(pos, st); }
|
||||||
@Override
|
@Override
|
||||||
protected net.minecraft.world.ItemInteractionResult useItemOn(net.minecraft.world.item.ItemStack stack, BlockState state, net.minecraft.world.level.Level level, BlockPos pos, net.minecraft.world.entity.player.Player player, net.minecraft.world.InteractionHand hand, net.minecraft.world.phys.BlockHitResult hit) {
|
protected net.minecraft.world.ItemInteractionResult useItemOn(net.minecraft.world.item.ItemStack stack, BlockState state, net.minecraft.world.level.Level level, BlockPos pos, net.minecraft.world.entity.player.Player player, net.minecraft.world.InteractionHand hand, net.minecraft.world.phys.BlockHitResult hit) {
|
||||||
@@ -53,6 +55,14 @@ public final class ModBlocks {
|
|||||||
public static final DeferredBlock<Block> KNOWLEDGE_INSCRIBER = REGISTRY.register("knowledge_inscriber", () -> new ThEBaseEntityBlock(P) {
|
public static final DeferredBlock<Block> KNOWLEDGE_INSCRIBER = REGISTRY.register("knowledge_inscriber", () -> new ThEBaseEntityBlock(P) {
|
||||||
public net.minecraft.world.level.block.entity.BlockEntity newBlockEntity(BlockPos pos, BlockState st) { return new TileKnowledgeInscriber(pos, st); }
|
public net.minecraft.world.level.block.entity.BlockEntity newBlockEntity(BlockPos pos, BlockState st) { return new TileKnowledgeInscriber(pos, st); }
|
||||||
@Override
|
@Override
|
||||||
|
protected void createBlockStateDefinition(net.minecraft.world.level.block.state.StateDefinition.Builder<Block, BlockState> builder) {
|
||||||
|
builder.add(OrientableEntityBlock.FACING);
|
||||||
|
}
|
||||||
|
@Override
|
||||||
|
public BlockState getStateForPlacement(net.minecraft.world.item.context.BlockPlaceContext context) {
|
||||||
|
return this.defaultBlockState().setValue(OrientableEntityBlock.FACING, context.getHorizontalDirection().getOpposite());
|
||||||
|
}
|
||||||
|
@Override
|
||||||
protected net.minecraft.world.ItemInteractionResult useItemOn(net.minecraft.world.item.ItemStack stack, BlockState state, net.minecraft.world.level.Level level, BlockPos pos, net.minecraft.world.entity.player.Player player, net.minecraft.world.InteractionHand hand, net.minecraft.world.phys.BlockHitResult hit) {
|
protected net.minecraft.world.ItemInteractionResult useItemOn(net.minecraft.world.item.ItemStack stack, BlockState state, net.minecraft.world.level.Level level, BlockPos pos, net.minecraft.world.entity.player.Player player, net.minecraft.world.InteractionHand hand, net.minecraft.world.phys.BlockHitResult hit) {
|
||||||
if (!level.isClientSide) player.openMenu(state.getMenuProvider(level, pos));
|
if (!level.isClientSide) player.openMenu(state.getMenuProvider(level, pos));
|
||||||
return net.minecraft.world.ItemInteractionResult.SUCCESS;
|
return net.minecraft.world.ItemInteractionResult.SUCCESS;
|
||||||
@@ -68,6 +78,14 @@ public final class ModBlocks {
|
|||||||
public static final DeferredBlock<Block> DISTILLATION_ENCODER = REGISTRY.register("distillation_encoder", () -> new ThEBaseEntityBlock(P) {
|
public static final DeferredBlock<Block> DISTILLATION_ENCODER = REGISTRY.register("distillation_encoder", () -> new ThEBaseEntityBlock(P) {
|
||||||
public net.minecraft.world.level.block.entity.BlockEntity newBlockEntity(BlockPos pos, BlockState st) { return new TileDistillationPatternEncoder(pos, st); }
|
public net.minecraft.world.level.block.entity.BlockEntity newBlockEntity(BlockPos pos, BlockState st) { return new TileDistillationPatternEncoder(pos, st); }
|
||||||
@Override
|
@Override
|
||||||
|
protected void createBlockStateDefinition(net.minecraft.world.level.block.state.StateDefinition.Builder<Block, BlockState> builder) {
|
||||||
|
builder.add(OrientableEntityBlock.FACING);
|
||||||
|
}
|
||||||
|
@Override
|
||||||
|
public BlockState getStateForPlacement(net.minecraft.world.item.context.BlockPlaceContext context) {
|
||||||
|
return this.defaultBlockState().setValue(OrientableEntityBlock.FACING, context.getHorizontalDirection().getOpposite());
|
||||||
|
}
|
||||||
|
@Override
|
||||||
protected net.minecraft.world.ItemInteractionResult useItemOn(net.minecraft.world.item.ItemStack stack, BlockState state, net.minecraft.world.level.Level level, BlockPos pos, net.minecraft.world.entity.player.Player player, net.minecraft.world.InteractionHand hand, net.minecraft.world.phys.BlockHitResult hit) {
|
protected net.minecraft.world.ItemInteractionResult useItemOn(net.minecraft.world.item.ItemStack stack, BlockState state, net.minecraft.world.level.Level level, BlockPos pos, net.minecraft.world.entity.player.Player player, net.minecraft.world.InteractionHand hand, net.minecraft.world.phys.BlockHitResult hit) {
|
||||||
if (!level.isClientSide) player.openMenu(state.getMenuProvider(level, pos));
|
if (!level.isClientSide) player.openMenu(state.getMenuProvider(level, pos));
|
||||||
return net.minecraft.world.ItemInteractionResult.SUCCESS;
|
return net.minecraft.world.ItemInteractionResult.SUCCESS;
|
||||||
|
|||||||
@@ -1 +1,6 @@
|
|||||||
{"variants":{"":{"model":"thaumicenergistics:block/distillation_encoder"}}}
|
{"variants":{
|
||||||
|
"facing=north": {"model": "thaumicenergistics:block/distillation_encoder"},
|
||||||
|
"facing=south": {"model": "thaumicenergistics:block/distillation_encoder", "y": 180},
|
||||||
|
"facing=west": {"model": "thaumicenergistics:block/distillation_encoder", "y": 270},
|
||||||
|
"facing=east": {"model": "thaumicenergistics:block/distillation_encoder", "y": 90}
|
||||||
|
}}
|
||||||
|
|||||||
@@ -1 +1,6 @@
|
|||||||
{"variants":{"":{"model":"thaumicenergistics:block/knowledge_inscriber"}}}
|
{"variants":{
|
||||||
|
"facing=north": {"model": "thaumicenergistics:block/knowledge_inscriber"},
|
||||||
|
"facing=south": {"model": "thaumicenergistics:block/knowledge_inscriber", "y": 180},
|
||||||
|
"facing=west": {"model": "thaumicenergistics:block/knowledge_inscriber", "y": 270},
|
||||||
|
"facing=east": {"model": "thaumicenergistics:block/knowledge_inscriber", "y": 90}
|
||||||
|
}}
|
||||||
|
|||||||
@@ -40,7 +40,7 @@
|
|||||||
"ae2.keytype.thaumicenergistics.essentia": "Essentia",
|
"ae2.keytype.thaumicenergistics.essentia": "Essentia",
|
||||||
"tc.research_category.THAUMICENERGISTICS": "Thaumic Energistics",
|
"tc.research_category.THAUMICENERGISTICS": "Thaumic Energistics",
|
||||||
"tc.research_name.BASEENERGISTICS": "Basic Energistics",
|
"tc.research_name.BASEENERGISTICS": "Basic Energistics",
|
||||||
"tc.research_text.BASEENERGISTICS": "You have discovered a curious resonance between AE2's mechanical networks and Thaumaturgy. The precision of AE devices seems capable of sensing and manipulating essentia, that mysterious form of matter.",
|
"tc.research_text.BASEENERGISTICS": "You have discovered a curious resonance between AE2's mechanical networks and Thaumaturgy. The precision of AE devices seems capable of sensing and manipulating essentia, that mysterious form of matter. High version materials are created by §§b§l麦淇淋§r.",
|
||||||
"tc.research_name.FOCUS_AEWRENCH": "Focus: AE Wrench",
|
"tc.research_name.FOCUS_AEWRENCH": "Focus: AE Wrench",
|
||||||
"tc.research_text.FOCUS_AEWRENCH": "By condensing the functionality of an AE wrench into a wand focus, you can manipulate AE network devices without switching tools.",
|
"tc.research_text.FOCUS_AEWRENCH": "By condensing the functionality of an AE wrench into a wand focus, you can manipulate AE network devices without switching tools.",
|
||||||
"tc.research_name.DIGISENTIA": "Digitized Essentia",
|
"tc.research_name.DIGISENTIA": "Digitized Essentia",
|
||||||
|
|||||||
@@ -28,6 +28,7 @@
|
|||||||
"item.thaumicenergistics.essentia_storage_bus": "源质存储总线",
|
"item.thaumicenergistics.essentia_storage_bus": "源质存储总线",
|
||||||
"item.thaumicenergistics.essentia_terminal": "源质终端",
|
"item.thaumicenergistics.essentia_terminal": "源质终端",
|
||||||
"item.thaumicenergistics.arcane_crafting_terminal": "奥术合成终端",
|
"item.thaumicenergistics.arcane_crafting_terminal": "奥术合成终端",
|
||||||
|
"gui.thaumicenergistics.ArcaneCraftingTerminal": "奥术合成终端",
|
||||||
"item.thaumicenergistics.essentia_level_emitter": "源质发信器",
|
"item.thaumicenergistics.essentia_level_emitter": "源质发信器",
|
||||||
"item.thaumicenergistics.vis_interface": "要素中继接口",
|
"item.thaumicenergistics.vis_interface": "要素中继接口",
|
||||||
"tooltip.thaumicenergistics.essentia_import_bus.desc": "从相邻的源质容器抽取源质导入ME网络",
|
"tooltip.thaumicenergistics.essentia_import_bus.desc": "从相邻的源质容器抽取源质导入ME网络",
|
||||||
@@ -43,7 +44,7 @@
|
|||||||
"tc.research_category.THAUMICENERGISTICS": "神秘能源",
|
"tc.research_category.THAUMICENERGISTICS": "神秘能源",
|
||||||
|
|
||||||
"tc.research_name.BASEENERGISTICS": "基础能源学",
|
"tc.research_name.BASEENERGISTICS": "基础能源学",
|
||||||
"tc.research_text.BASEENERGISTICS": "你发现AE2的机械网络与神秘学之间存在奇妙的共鸣。精密的AE设备似乎能够感知并操控源质这种神秘的物质形态。",
|
"tc.research_text.BASEENERGISTICS": "你发现AE2的机械网络与神秘学之间存在奇妙的共鸣。精密的AE设备似乎能够感知并操控源质这种神秘的物质形态。高版本材质由§b§l麦淇淋§r制作。",
|
||||||
|
|
||||||
"tc.research_name.FOCUS_AEWRENCH": "法杖核心:AE扳手",
|
"tc.research_name.FOCUS_AEWRENCH": "法杖核心:AE扳手",
|
||||||
"tc.research_text.FOCUS_AEWRENCH": "将AE扳手的功能凝聚到法杖核心中,让你无需切换工具即可操控AE网络设备。",
|
"tc.research_text.FOCUS_AEWRENCH": "将AE扳手的功能凝聚到法杖核心中,让你无需切换工具即可操控AE网络设备。",
|
||||||
|
|||||||
@@ -1 +1,177 @@
|
|||||||
{"parent":"minecraft:block/cube_all","textures":{"all":"thaumicenergistics:block/arcane_assembler_fallback"}}
|
{
|
||||||
|
"format_version": "1.9.0",
|
||||||
|
"credit": "Made with _leng",
|
||||||
|
"texture_size": [64, 64],
|
||||||
|
"render_type": "cutout",
|
||||||
|
"textures": {
|
||||||
|
"model": "thaumicenergistics:block/arcane_assembler_fallback",
|
||||||
|
"particle": "ae2:block/molecular_assembler"
|
||||||
|
},
|
||||||
|
"elements": [
|
||||||
|
{
|
||||||
|
"from": [14, 0.02, 0],
|
||||||
|
"to": [15, 15.98, 16],
|
||||||
|
"faces": {
|
||||||
|
"north": {"uv": [5.5, 3, 5.75, 7], "texture": "#model", "cullface": "north"},
|
||||||
|
"east": {"uv": [0, 0, 4, 4], "texture": "#model"},
|
||||||
|
"south": {"uv": [5.75, 3, 6, 7], "texture": "#model", "cullface": "south"},
|
||||||
|
"west": {"uv": [0, 4, 4, 0], "texture": "#model"},
|
||||||
|
"up": {"uv": [6.25, 7, 6, 3], "texture": "#model", "cullface": "up"},
|
||||||
|
"down": {"uv": [6.5, 7, 6.25, 3], "texture": "#model", "cullface": "down"}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"from": [0, 0, 1],
|
||||||
|
"to": [16, 16, 2],
|
||||||
|
"faces": {
|
||||||
|
"north": {"uv": [0, 0, 4, 4], "texture": "#model"},
|
||||||
|
"east": {"uv": [5.75, 3, 6, 7], "texture": "#model", "cullface": "east"},
|
||||||
|
"south": {"uv": [0, 4, 4, 0], "texture": "#model", "cullface": "west"},
|
||||||
|
"west": {"uv": [5.5, 3, 5.75, 7], "texture": "#model"},
|
||||||
|
"up": {"uv": [6, 3, 6.25, 7], "rotation": 90, "texture": "#model", "cullface": "up"},
|
||||||
|
"down": {"uv": [6.5, 7, 6.25, 3], "rotation": 90, "texture": "#model", "cullface": "down"}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"from": [0, 0, 14],
|
||||||
|
"to": [16, 16, 15],
|
||||||
|
"faces": {
|
||||||
|
"north": {"uv": [0, 4, 4, 0], "texture": "#model"},
|
||||||
|
"east": {"uv": [5.5, 3, 5.75, 7], "texture": "#model", "cullface": "east"},
|
||||||
|
"south": {"uv": [0, 0, 4, 4], "texture": "#model"},
|
||||||
|
"west": {"uv": [5.75, 3, 6, 7], "texture": "#model", "cullface": "west"},
|
||||||
|
"up": {"uv": [6, 7, 6.25, 3], "rotation": 90, "texture": "#model", "cullface": "up"},
|
||||||
|
"down": {"uv": [6.5, 3, 6.25, 7], "rotation": 90, "texture": "#model", "cullface": "down"}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"from": [1, 0.02, 0],
|
||||||
|
"to": [2, 15.98, 16],
|
||||||
|
"faces": {
|
||||||
|
"north": {"uv": [5.75, 3, 6, 7], "texture": "#model", "cullface": "north"},
|
||||||
|
"east": {"uv": [0, 4, 4, 0], "texture": "#model"},
|
||||||
|
"south": {"uv": [5.5, 3, 5.75, 7], "texture": "#model", "cullface": "south"},
|
||||||
|
"west": {"uv": [0, 0, 4, 4], "texture": "#model"},
|
||||||
|
"up": {"uv": [6.25, 3, 6, 7], "texture": "#model", "cullface": "up"},
|
||||||
|
"down": {"uv": [6.5, 3, 6.25, 7], "texture": "#model", "cullface": "down"}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"from": [2, 15, 2],
|
||||||
|
"to": [14, 16, 14],
|
||||||
|
"faces": {
|
||||||
|
"up": {"uv": [3, 7, 0, 4], "texture": "#model", "cullface": "up"},
|
||||||
|
"down": {"uv": [0, 4, 3, 7], "texture": "#model"}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"from": [2, 0, 2],
|
||||||
|
"to": [14, 1, 14],
|
||||||
|
"faces": {
|
||||||
|
"up": {"uv": [0, 4, 3, 7], "texture": "#model"},
|
||||||
|
"down": {"uv": [0, 4, 3, 7], "texture": "#model", "cullface": "down"}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "cube_outline",
|
||||||
|
"from": [2, 14, 14],
|
||||||
|
"to": [1, 2, 2],
|
||||||
|
"faces": {
|
||||||
|
"east": {"uv": [4, 0, 7, 3], "texture": "#model"},
|
||||||
|
"west": {"uv": [4, 0, 7, 3], "texture": "#model"},
|
||||||
|
"up": {"uv": [3.25, 9.5, 3, 6.5], "texture": "#model"},
|
||||||
|
"down": {"uv": [6.75, 6, 6.5, 3], "texture": "#model"}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "cube_outline",
|
||||||
|
"from": [15, 14, 14],
|
||||||
|
"to": [14, 2, 2],
|
||||||
|
"faces": {
|
||||||
|
"east": {"uv": [4, 0, 7, 3], "texture": "#model"},
|
||||||
|
"west": {"uv": [4, 3, 7, 0], "texture": "#model"},
|
||||||
|
"up": {"uv": [3, 6.5, 3.25, 9.5], "texture": "#model"},
|
||||||
|
"down": {"uv": [6.75, 3, 6.5, 6], "texture": "#model"}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "cube_outline",
|
||||||
|
"from": [14, 14, 15],
|
||||||
|
"to": [2, 2, 14],
|
||||||
|
"faces": {
|
||||||
|
"north": {"uv": [4, 3, 7, 0], "texture": "#model"},
|
||||||
|
"south": {"uv": [4, 0, 7, 3], "texture": "#model"},
|
||||||
|
"up": {"uv": [3, 6.5, 3.25, 9.5], "rotation": 90, "texture": "#model"},
|
||||||
|
"down": {"uv": [6.75, 6, 6.5, 3], "rotation": 90, "texture": "#model"}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "cube_outline",
|
||||||
|
"from": [14, 14, 2],
|
||||||
|
"to": [2, 2, 1],
|
||||||
|
"faces": {
|
||||||
|
"north": {"uv": [4, 0, 7, 3], "texture": "#model"},
|
||||||
|
"south": {"uv": [4, 3, 7, 0], "texture": "#model"},
|
||||||
|
"up": {"uv": [3, 6.5, 3.25, 9.5], "rotation": 270, "texture": "#model"},
|
||||||
|
"down": {"uv": [6.75, 3, 6.5, 6], "rotation": 90, "texture": "#model"}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "cube_outline",
|
||||||
|
"from": [13, 16, 13],
|
||||||
|
"to": [3, 15, 3],
|
||||||
|
"faces": {
|
||||||
|
"north": {"uv": [6.5, 6, 9, 6.25], "texture": "#model"},
|
||||||
|
"east": {"uv": [6.5, 6.25, 9, 6.5], "texture": "#model"},
|
||||||
|
"south": {"uv": [6.5, 6.5, 9, 6.75], "texture": "#model"},
|
||||||
|
"west": {"uv": [6.75, 3, 9.25, 3.25], "texture": "#model"},
|
||||||
|
"up": {"uv": [5.5, 6.5, 3, 4], "texture": "#model"},
|
||||||
|
"down": {"uv": [3, 4, 5.5, 6.5], "texture": "#model"}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "cube_outline",
|
||||||
|
"from": [13, 1, 13],
|
||||||
|
"to": [3, 0, 3],
|
||||||
|
"faces": {
|
||||||
|
"north": {"uv": [9, 6, 6.5, 6.25], "texture": "#model"},
|
||||||
|
"east": {"uv": [6.5, 6.25, 9, 6.5], "texture": "#model"},
|
||||||
|
"south": {"uv": [6.5, 6.5, 9, 6.75], "texture": "#model"},
|
||||||
|
"west": {"uv": [6.75, 3, 9.25, 3.25], "texture": "#model"},
|
||||||
|
"up": {"uv": [3, 4, 5.5, 6.5], "texture": "#model"},
|
||||||
|
"down": {"uv": [3, 4, 5.5, 6.5], "texture": "#model"}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"display": {
|
||||||
|
"thirdperson_righthand": {
|
||||||
|
"rotation": [75, 45, 0],
|
||||||
|
"translation": [0, 2.5, 0],
|
||||||
|
"scale": [0.375, 0.375, 0.375]
|
||||||
|
},
|
||||||
|
"thirdperson_lefthand": {
|
||||||
|
"rotation": [75, 45, 0],
|
||||||
|
"translation": [0, 2.5, 0],
|
||||||
|
"scale": [0.375, 0.375, 0.375]
|
||||||
|
},
|
||||||
|
"firstperson_righthand": {
|
||||||
|
"rotation": [0, 45, 0],
|
||||||
|
"scale": [0.4, 0.4, 0.4]
|
||||||
|
},
|
||||||
|
"firstperson_lefthand": {
|
||||||
|
"rotation": [0, -135, 0],
|
||||||
|
"scale": [0.4, 0.4, 0.4]
|
||||||
|
},
|
||||||
|
"ground": {
|
||||||
|
"translation": [0, 3, 0],
|
||||||
|
"scale": [0.25, 0.25, 0.25]
|
||||||
|
},
|
||||||
|
"gui": {
|
||||||
|
"rotation": [30, -135, 0],
|
||||||
|
"scale": [0.625, 0.625, 0.625]
|
||||||
|
},
|
||||||
|
"fixed": {
|
||||||
|
"scale": [0.5, 0.5, 0.5]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -1 +1,57 @@
|
|||||||
{"parent":"minecraft:block/cube_all","textures":{"all":"thaumicenergistics:block/distillation_encoder_face"}}
|
{
|
||||||
|
"format_version": "1.21.6",
|
||||||
|
"credit": "Made with _leng",
|
||||||
|
"parent": "minecraft:block/cube_all",
|
||||||
|
"textures": {
|
||||||
|
"positive": "thaumicenergistics:block/distillation_encoder_face",
|
||||||
|
"particle": "thaumicenergistics:block/distillation_encoder_bottom",
|
||||||
|
"bottom": "thaumicenergistics:block/distillation_encoder_bottom",
|
||||||
|
"side": "thaumicenergistics:block/distillation_encoder_front",
|
||||||
|
"top": "thaumicenergistics:block/distillation_encoder_top"
|
||||||
|
},
|
||||||
|
"elements": [
|
||||||
|
{
|
||||||
|
"from": [0, 0, 0],
|
||||||
|
"to": [16, 16, 16],
|
||||||
|
"faces": {
|
||||||
|
"north": {"uv": [0, 0, 16, 16], "texture": "#positive", "cullface": "north"},
|
||||||
|
"east": {"uv": [0, 0, 16, 16], "texture": "#side", "cullface": "east"},
|
||||||
|
"south": {"uv": [0, 0, 16, 16], "texture": "#side", "cullface": "south"},
|
||||||
|
"west": {"uv": [0, 0, 16, 16], "texture": "#side", "cullface": "west"},
|
||||||
|
"up": {"uv": [0, 0, 16, 16], "texture": "#top", "cullface": "up"},
|
||||||
|
"down": {"uv": [0, 0, 16, 16], "texture": "#bottom", "cullface": "down"}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"display": {
|
||||||
|
"thirdperson_righthand": {
|
||||||
|
"rotation": [75, 45, 0],
|
||||||
|
"translation": [0, 2.5, 0],
|
||||||
|
"scale": [0.375, 0.375, 0.375]
|
||||||
|
},
|
||||||
|
"thirdperson_lefthand": {
|
||||||
|
"rotation": [75, 45, 0],
|
||||||
|
"translation": [0, 2.5, 0],
|
||||||
|
"scale": [0.375, 0.375, 0.375]
|
||||||
|
},
|
||||||
|
"firstperson_righthand": {
|
||||||
|
"rotation": [0, 45, 0],
|
||||||
|
"scale": [0.4, 0.4, 0.4]
|
||||||
|
},
|
||||||
|
"firstperson_lefthand": {
|
||||||
|
"rotation": [0, -135, 0],
|
||||||
|
"scale": [0.4, 0.4, 0.4]
|
||||||
|
},
|
||||||
|
"ground": {
|
||||||
|
"translation": [0, 3, 0],
|
||||||
|
"scale": [0.25, 0.25, 0.25]
|
||||||
|
},
|
||||||
|
"gui": {
|
||||||
|
"rotation": [30, -135, 0],
|
||||||
|
"scale": [0.625, 0.625, 0.625]
|
||||||
|
},
|
||||||
|
"fixed": {
|
||||||
|
"scale": [0.5, 0.5, 0.5]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -1,8 +1,28 @@
|
|||||||
{
|
{
|
||||||
|
"format_version": "1.21.6",
|
||||||
|
"credit": "Made with _leng",
|
||||||
"parent": "minecraft:block/orientable",
|
"parent": "minecraft:block/orientable",
|
||||||
"textures": {
|
"textures": {
|
||||||
"front": "thaumicenergistics:block/e_vibration_face_off",
|
"front": "thaumicenergistics:block/e_vibration_face_off",
|
||||||
"side": "thaumicenergistics:block/e_vibration_input",
|
"top": "thaumicenergistics:block/e_vibration_input",
|
||||||
"top": "thaumicenergistics:block/e_vibration_input"
|
"particle": "thaumicenergistics:block/e_vibration_face_back",
|
||||||
|
"back": "thaumicenergistics:block/e_vibration_face_back",
|
||||||
|
"bottom": "thaumicenergistics:block/e_vibration_face_bottom",
|
||||||
|
"side": "thaumicenergistics:block/e_vibration_face_side"
|
||||||
|
},
|
||||||
|
"elements": [
|
||||||
|
{
|
||||||
|
"from": [0, 0, 0],
|
||||||
|
"to": [16, 16, 16],
|
||||||
|
"faces": {
|
||||||
|
"north": {"uv": [0, 0, 16, 16], "texture": "#front", "cullface": "north"},
|
||||||
|
"east": {"uv": [16, 0, 0, 16], "texture": "#side", "cullface": "east"},
|
||||||
|
"south": {"uv": [0, 0, 16, 16], "texture": "#back", "cullface": "south"},
|
||||||
|
"west": {"uv": [0, 0, 16, 16], "texture": "#side", "cullface": "west"},
|
||||||
|
"up": {"uv": [0, 0, 16, 16], "texture": "#top", "cullface": "up"},
|
||||||
|
"down": {"uv": [0, 0, 16, 16], "texture": "#bottom", "cullface": "down"}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
],
|
||||||
|
"display": {}
|
||||||
|
}
|
||||||
@@ -1,8 +1,57 @@
|
|||||||
{
|
{
|
||||||
|
"format_version": "1.21.6",
|
||||||
|
"credit": "Made with _leng",
|
||||||
"parent": "minecraft:block/cube_bottom_top",
|
"parent": "minecraft:block/cube_bottom_top",
|
||||||
"textures": {
|
"textures": {
|
||||||
|
"positive": "thaumicenergistics:block/knowledge_inscriber_positive",
|
||||||
"top": "thaumicenergistics:block/knowledge_inscriber_top",
|
"top": "thaumicenergistics:block/knowledge_inscriber_top",
|
||||||
"bottom": "thaumicenergistics:block/knowledge_inscriber_bottom",
|
"bottom": "thaumicenergistics:block/knowledge_inscriber_bottom",
|
||||||
"side": "thaumicenergistics:block/knowledge_inscriber_side"
|
"side": "thaumicenergistics:block/knowledge_inscriber_side",
|
||||||
|
"particle": "thaumicenergistics:block/knowledge_inscriber_positive"
|
||||||
|
},
|
||||||
|
"elements": [
|
||||||
|
{
|
||||||
|
"from": [0, 0, 0],
|
||||||
|
"to": [16, 16, 16],
|
||||||
|
"faces": {
|
||||||
|
"north": {"uv": [0, 0, 16, 16], "texture": "#positive", "cullface": "north"},
|
||||||
|
"east": {"uv": [0, 0, 16, 16], "texture": "#side", "cullface": "east"},
|
||||||
|
"south": {"uv": [0, 0, 16, 16], "texture": "#side", "cullface": "south"},
|
||||||
|
"west": {"uv": [0, 0, 16, 16], "texture": "#side", "cullface": "west"},
|
||||||
|
"up": {"uv": [0, 0, 16, 16], "texture": "#top", "cullface": "up"},
|
||||||
|
"down": {"uv": [0, 0, 16, 16], "texture": "#bottom", "cullface": "down"}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"display": {
|
||||||
|
"thirdperson_righthand": {
|
||||||
|
"rotation": [75, 45, 0],
|
||||||
|
"translation": [0, 2.5, 0],
|
||||||
|
"scale": [0.375, 0.375, 0.375]
|
||||||
|
},
|
||||||
|
"thirdperson_lefthand": {
|
||||||
|
"rotation": [75, 45, 0],
|
||||||
|
"translation": [0, 2.5, 0],
|
||||||
|
"scale": [0.375, 0.375, 0.375]
|
||||||
|
},
|
||||||
|
"firstperson_righthand": {
|
||||||
|
"rotation": [0, 45, 0],
|
||||||
|
"scale": [0.4, 0.4, 0.4]
|
||||||
|
},
|
||||||
|
"firstperson_lefthand": {
|
||||||
|
"rotation": [0, -135, 0],
|
||||||
|
"scale": [0.4, 0.4, 0.4]
|
||||||
|
},
|
||||||
|
"ground": {
|
||||||
|
"translation": [0, 3, 0],
|
||||||
|
"scale": [0.25, 0.25, 0.25]
|
||||||
|
},
|
||||||
|
"gui": {
|
||||||
|
"rotation": [30, -135, 0],
|
||||||
|
"scale": [0.625, 0.625, 0.625]
|
||||||
|
},
|
||||||
|
"fixed": {
|
||||||
|
"scale": [0.5, 0.5, 0.5]
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -1,4 +1,6 @@
|
|||||||
{
|
{
|
||||||
|
"format_version": "1.21.6",
|
||||||
|
"credit": "Made with _leng",
|
||||||
"textures": {
|
"textures": {
|
||||||
"sides": "thaumicenergistics:part/arcane_crafting_terminal/arcane_crafting_side",
|
"sides": "thaumicenergistics:part/arcane_crafting_terminal/arcane_crafting_side",
|
||||||
"particle": "ae2:part/monitor_back_no_status",
|
"particle": "ae2:part/monitor_back_no_status",
|
||||||
@@ -19,8 +21,8 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"from": [4, 4, 2],
|
"from": [4.01, 4.01, 2.01],
|
||||||
"to": [12, 12, 3],
|
"to": [11.99, 11.99, 2.99],
|
||||||
"faces": {
|
"faces": {
|
||||||
"east": {"uv": [11, 4, 12, 12], "texture": "#back"},
|
"east": {"uv": [11, 4, 12, 12], "texture": "#back"},
|
||||||
"south": {"uv": [4, 4, 12, 12], "texture": "#back"},
|
"south": {"uv": [4, 4, 12, 12], "texture": "#back"},
|
||||||
|
|||||||
@@ -1,7 +1,8 @@
|
|||||||
{
|
{
|
||||||
|
"format_version": "1.21.6",
|
||||||
"credit": "Made with Blockbench by Sea_Kerman",
|
"credit": "Made with Blockbench by Sea_Kerman",
|
||||||
"textures": {
|
"textures": {
|
||||||
"sides": "ae2:part/export_bus_sides",
|
"sides": "thaumicenergistics:part/export_bus_sides_customized",
|
||||||
"sidesStatus": "ae2:part/monitor_sides_status",
|
"sidesStatus": "ae2:part/monitor_sides_status",
|
||||||
"particle": "ae2:part/monitor_back",
|
"particle": "ae2:part/monitor_back",
|
||||||
"back": "ae2:part/monitor_back",
|
"back": "ae2:part/monitor_back",
|
||||||
@@ -9,50 +10,128 @@
|
|||||||
},
|
},
|
||||||
"elements": [
|
"elements": [
|
||||||
{
|
{
|
||||||
"from": [4, 4, 0],
|
"from": [
|
||||||
"to": [12, 12, 2],
|
4,
|
||||||
|
4,
|
||||||
|
2
|
||||||
|
],
|
||||||
|
"to": [
|
||||||
|
12,
|
||||||
|
12,
|
||||||
|
4
|
||||||
|
],
|
||||||
"faces": {
|
"faces": {
|
||||||
"north": { "uv": [4, 4, 12, 12], "texture": "#front" },
|
"down": {
|
||||||
"east": { "uv": [14, 4, 16, 12], "texture": "#sides" },
|
"texture": "#sides"
|
||||||
"south": { "uv": [4, 4, 12, 12], "texture": "#sides" },
|
},
|
||||||
"west": { "uv": [0, 4, 2, 12], "texture": "#sides" },
|
"up": {
|
||||||
"up": { "uv": [4, 0, 12, 2], "texture": "#sides" },
|
"texture": "#sides"
|
||||||
"down": { "uv": [4, 14, 12, 16], "texture": "#sides" }
|
},
|
||||||
|
"south": {
|
||||||
|
"texture": "#back"
|
||||||
|
},
|
||||||
|
"east": {
|
||||||
|
"texture": "#sides"
|
||||||
|
},
|
||||||
|
"north": {
|
||||||
|
"texture": "#front"
|
||||||
|
},
|
||||||
|
"west": {
|
||||||
|
"texture": "#sides"
|
||||||
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"from": [5, 5, 2],
|
"from": [
|
||||||
"to": [11, 11, 3],
|
5,
|
||||||
|
5,
|
||||||
|
1
|
||||||
|
],
|
||||||
|
"to": [
|
||||||
|
11,
|
||||||
|
11,
|
||||||
|
2
|
||||||
|
],
|
||||||
"faces": {
|
"faces": {
|
||||||
"north": { "uv": [5, 5, 11, 11], "texture": "#front" },
|
"down": {
|
||||||
"east": { "uv": [13, 5, 14, 11], "texture": "#sides" },
|
"texture": "#sides"
|
||||||
"south": { "uv": [5, 5, 11, 11], "texture": "#sides" },
|
},
|
||||||
"west": { "uv": [2, 5, 3, 11], "texture": "#sides" },
|
"up": {
|
||||||
"up": { "uv": [5, 2, 11, 3], "texture": "#sides" },
|
"texture": "#sides"
|
||||||
"down": { "uv": [5, 13, 11, 14], "texture": "#sides" }
|
},
|
||||||
|
"south": {
|
||||||
|
"texture": "#back"
|
||||||
|
},
|
||||||
|
"east": {
|
||||||
|
"texture": "#sides"
|
||||||
|
},
|
||||||
|
"north": {
|
||||||
|
"texture": "#front"
|
||||||
|
},
|
||||||
|
"west": {
|
||||||
|
"texture": "#sides"
|
||||||
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"from": [6, 6, 3],
|
"from": [
|
||||||
"to": [10, 10, 4],
|
6,
|
||||||
|
6,
|
||||||
|
0
|
||||||
|
],
|
||||||
|
"to": [
|
||||||
|
10,
|
||||||
|
10,
|
||||||
|
1
|
||||||
|
],
|
||||||
"faces": {
|
"faces": {
|
||||||
"north": { "uv": [6, 6, 10, 10], "texture": "#front" },
|
"down": {
|
||||||
"east": { "uv": [12, 6, 13, 10], "texture": "#sides" },
|
"texture": "#sides"
|
||||||
"south": { "uv": [6, 6, 10, 10], "texture": "#back" },
|
},
|
||||||
"west": { "uv": [3, 6, 4, 10], "texture": "#sides" },
|
"up": {
|
||||||
"up": { "uv": [6, 3, 10, 4], "texture": "#sides" },
|
"texture": "#sides"
|
||||||
"down": { "uv": [6, 12, 10, 13], "texture": "#sides" }
|
},
|
||||||
|
"south": {
|
||||||
|
"texture": "#back"
|
||||||
|
},
|
||||||
|
"east": {
|
||||||
|
"texture": "#sides"
|
||||||
|
},
|
||||||
|
"north": {
|
||||||
|
"texture": "#front"
|
||||||
|
},
|
||||||
|
"west": {
|
||||||
|
"texture": "#sides"
|
||||||
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"from": [6, 6, 4],
|
"from": [
|
||||||
"to": [10, 10, 5],
|
6,
|
||||||
|
6,
|
||||||
|
4
|
||||||
|
],
|
||||||
|
"to": [
|
||||||
|
10,
|
||||||
|
10,
|
||||||
|
5
|
||||||
|
],
|
||||||
"faces": {
|
"faces": {
|
||||||
"east": { "uv": [11, 6, 12, 10], "texture": "#sidesStatus" },
|
"down": {
|
||||||
"south": { "uv": [6, 6, 10, 10], "texture": "#back" },
|
"texture": "#sidesStatus"
|
||||||
"west": { "uv": [4, 6, 5, 10], "texture": "#sidesStatus" },
|
},
|
||||||
"up": { "uv": [6, 4, 10, 5], "texture": "#sidesStatus" },
|
"up": {
|
||||||
"down": { "uv": [6, 11, 10, 12], "texture": "#sidesStatus" }
|
"texture": "#sidesStatus"
|
||||||
|
},
|
||||||
|
"south": {
|
||||||
|
"texture": "#back"
|
||||||
|
},
|
||||||
|
"east": {
|
||||||
|
"texture": "#sidesStatus"
|
||||||
|
},
|
||||||
|
"west": {
|
||||||
|
"texture": "#sidesStatus"
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
|
|||||||
@@ -1,7 +1,8 @@
|
|||||||
{
|
{
|
||||||
|
"format_version": "1.21.6",
|
||||||
"credit": "Made with Blockbench by Sea_Kerman",
|
"credit": "Made with Blockbench by Sea_Kerman",
|
||||||
"textures": {
|
"textures": {
|
||||||
"sides": "ae2:part/import_bus_sides",
|
"sides": "thaumicenergistics:part/import_bus_sides_customized",
|
||||||
"sidesStatus": "ae2:part/monitor_sides_status",
|
"sidesStatus": "ae2:part/monitor_sides_status",
|
||||||
"particle": "ae2:part/monitor_back",
|
"particle": "ae2:part/monitor_back",
|
||||||
"back": "ae2:part/monitor_back",
|
"back": "ae2:part/monitor_back",
|
||||||
|
|||||||
@@ -1,4 +1,5 @@
|
|||||||
{
|
{
|
||||||
|
"format_version": "1.21.6",
|
||||||
"credit": "Made with Blockbench by Sea_Kerman",
|
"credit": "Made with Blockbench by Sea_Kerman",
|
||||||
"textures": {
|
"textures": {
|
||||||
"sides": "ae2:part/storage_bus_sides",
|
"sides": "ae2:part/storage_bus_sides",
|
||||||
@@ -8,39 +9,74 @@
|
|||||||
"elements": [
|
"elements": [
|
||||||
{
|
{
|
||||||
"from": [3, 3, 0],
|
"from": [3, 3, 0],
|
||||||
"to": [13, 13, 2],
|
"to": [13, 13, 1],
|
||||||
"faces": {
|
"faces": {
|
||||||
"north": {"uv": [3, 3, 13, 13], "texture": "#front"},
|
"north": {"uv": [3, 3, 13, 13], "texture": "#front"},
|
||||||
"east": { "uv": [14, 3, 16, 13], "texture": "#sides" },
|
"east": {"uv": [13, 3, 14, 13], "texture": "#front"},
|
||||||
"south": { "uv": [3, 3, 13, 13], "texture": "#sides" },
|
"south": {"uv": [3, 3, 13, 13], "texture": "#front"},
|
||||||
"west": { "uv": [0, 3, 2, 13], "texture": "#sides" },
|
"west": {"uv": [2, 13, 3, 3], "texture": "#front"},
|
||||||
"up": { "uv": [3, 0, 13, 2], "texture": "#sides" },
|
"up": {"uv": [3, 2, 13, 3], "texture": "#front"},
|
||||||
"down": { "uv": [3, 14, 13, 16], "texture": "#sides" }
|
"down": {"uv": [3, 13, 13, 14], "texture": "#front"}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"from": [2, 2, 2],
|
"from": [2, 2, 1],
|
||||||
"to": [14, 14, 3],
|
"to": [14, 14, 2],
|
||||||
"faces": {
|
"faces": {
|
||||||
"north": { "uv": [2, 2, 14, 14], "texture": "#front" },
|
"north": {"uv": [2, 2, 14, 14], "texture": "#back"},
|
||||||
"east": { "uv": [13, 2, 14, 14], "texture": "#sides" },
|
"east": {"uv": [13, 2, 14, 14], "texture": "#back"},
|
||||||
"south": { "uv": [2, 2, 14, 14], "texture": "#sides" },
|
"south": {"uv": [2, 2, 14, 14], "texture": "#back"},
|
||||||
"west": { "uv": [2, 2, 3, 14], "texture": "#sides" },
|
"west": {"uv": [2, 2, 3, 14], "texture": "#back"},
|
||||||
"up": { "uv": [2, 2, 14, 3], "texture": "#sides" },
|
"up": {"uv": [2, 2, 14, 3], "texture": "#back"},
|
||||||
"down": { "uv": [2, 13, 14, 14], "texture": "#sides" }
|
"down": {"uv": [2, 13, 14, 14], "texture": "#back"}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"from": [5, 5, 3],
|
"from": [5, 5, 2],
|
||||||
"to": [11, 11, 5],
|
"to": [11, 11, 4],
|
||||||
"faces": {
|
"faces": {
|
||||||
"north": {"uv": [5, 5, 11, 11], "texture": "#front"},
|
"north": {"uv": [5, 5, 11, 11], "texture": "#front"},
|
||||||
"east": { "uv": [6, 5, 8, 11], "texture": "#sides" },
|
"east": {"uv": [4, 5, 2, 11], "texture": "#sides"},
|
||||||
"south": {"uv": [5, 5, 11, 11], "texture": "#back"},
|
"south": {"uv": [5, 5, 11, 11], "texture": "#back"},
|
||||||
"west": { "uv": [8, 5, 10, 11], "texture": "#sides" },
|
"west": {"uv": [14, 5, 12, 11], "texture": "#sides"},
|
||||||
"up": { "uv": [5, 3, 11, 5], "texture": "#sides" },
|
"up": {"uv": [5, 2, 11, 4], "texture": "#sides"},
|
||||||
"down": { "uv": [5, 11, 11, 13], "texture": "#sides" }
|
"down": {"uv": [5, 12, 11, 14], "texture": "#sides"}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"display": {
|
||||||
|
"thirdperson_righthand": {
|
||||||
|
"rotation": [75, 45, 0],
|
||||||
|
"translation": [0, -1.5, 0],
|
||||||
|
"scale": [0.375, 0.375, 0.375]
|
||||||
|
},
|
||||||
|
"thirdperson_lefthand": {
|
||||||
|
"rotation": [75, 45, 0],
|
||||||
|
"translation": [0, -1.5, 0],
|
||||||
|
"scale": [0.375, 0.375, 0.375]
|
||||||
|
},
|
||||||
|
"firstperson_righthand": {
|
||||||
|
"rotation": [0, 45, 0],
|
||||||
|
"translation": [2, 0, 0],
|
||||||
|
"scale": [0.4, 0.4, 0.4]
|
||||||
|
},
|
||||||
|
"firstperson_lefthand": {
|
||||||
|
"rotation": [0, 45.5, 0],
|
||||||
|
"translation": [2.5, 0.5, 0],
|
||||||
|
"scale": [0.4, 0.4, 0.4]
|
||||||
|
},
|
||||||
|
"ground": {
|
||||||
|
"translation": [0, 3, 0],
|
||||||
|
"scale": [0.25, 0.25, 0.25]
|
||||||
|
},
|
||||||
|
"gui": {
|
||||||
|
"rotation": [30, -135, 0],
|
||||||
|
"translation": [-3.75, 1.25, 0],
|
||||||
|
"scale": [0.785, 0.785, 0.785]
|
||||||
|
},
|
||||||
|
"fixed": {
|
||||||
|
"translation": [0, 0, 2.75],
|
||||||
|
"scale": [0.5, 0.5, 0.5]
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
]
|
|
||||||
}
|
}
|
||||||
@@ -1,16 +1,18 @@
|
|||||||
{
|
{
|
||||||
|
"format_version": "1.21.6",
|
||||||
|
"credit": "Made with _leng",
|
||||||
"textures": {
|
"textures": {
|
||||||
"indicator": "ae2:part/monitor_sides_status_has_channel"
|
"indicator": "ae2:part/monitor_sides_status_has_channel"
|
||||||
},
|
},
|
||||||
"elements": [
|
"elements": [
|
||||||
{
|
{
|
||||||
"from": [5, 5, 3],
|
"from": [4.99, 4.99, 1.99],
|
||||||
"to": [11, 11, 5],
|
"to": [11.01, 11.01, 3.01],
|
||||||
"faces": {
|
"faces": {
|
||||||
"down": { "texture": "#indicator" },
|
"east": {"uv": [13, 5, 14, 11], "texture": "#indicator"},
|
||||||
"up": { "texture": "#indicator" },
|
"west": {"uv": [2, 5, 3, 11], "texture": "#indicator"},
|
||||||
"east": { "texture": "#indicator" },
|
"up": {"uv": [5, 2, 11, 3], "texture": "#indicator"},
|
||||||
"west": { "texture": "#indicator" }
|
"down": {"uv": [5, 13, 11, 14], "texture": "#indicator"}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
|
|||||||
@@ -1,16 +1,18 @@
|
|||||||
{
|
{
|
||||||
|
"format_version": "1.21.6",
|
||||||
|
"credit": "Made with _leng",
|
||||||
"textures": {
|
"textures": {
|
||||||
"indicator": "ae2:part/monitor_sides_status_off"
|
"indicator": "ae2:part/monitor_sides_status_off"
|
||||||
},
|
},
|
||||||
"elements": [
|
"elements": [
|
||||||
{
|
{
|
||||||
"from": [5, 5, 3],
|
"from": [4.99, 4.99, 1.99],
|
||||||
"to": [11, 11, 5],
|
"to": [11.01, 11.01, 3.01],
|
||||||
"faces": {
|
"faces": {
|
||||||
"down": { "texture": "#indicator" },
|
"east": {"uv": [13, 5, 14, 11], "texture": "#indicator"},
|
||||||
"up": { "texture": "#indicator" },
|
"west": {"uv": [2, 5, 3, 11], "texture": "#indicator"},
|
||||||
"east": { "texture": "#indicator" },
|
"up": {"uv": [5, 2, 11, 3], "texture": "#indicator"},
|
||||||
"west": { "texture": "#indicator" }
|
"down": {"uv": [5, 13, 11, 14], "texture": "#indicator"}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
|
|||||||
@@ -1,16 +1,18 @@
|
|||||||
{
|
{
|
||||||
|
"format_version": "1.21.6",
|
||||||
|
"credit": "Made with _leng",
|
||||||
"textures": {
|
"textures": {
|
||||||
"indicator": "ae2:part/monitor_sides_status_on"
|
"indicator": "ae2:part/monitor_sides_status_on"
|
||||||
},
|
},
|
||||||
"elements": [
|
"elements": [
|
||||||
{
|
{
|
||||||
"from": [5, 5, 3],
|
"from": [4.99, 4.99, 1.99],
|
||||||
"to": [11, 11, 5],
|
"to": [11.01, 11.01, 3.01],
|
||||||
"faces": {
|
"faces": {
|
||||||
"down": { "texture": "#indicator" },
|
"east": {"uv": [13, 5, 14, 11], "texture": "#indicator"},
|
||||||
"up": { "texture": "#indicator" },
|
"west": {"uv": [2, 5, 3, 11], "texture": "#indicator"},
|
||||||
"east": { "texture": "#indicator" },
|
"up": {"uv": [5, 2, 11, 3], "texture": "#indicator"},
|
||||||
"west": { "texture": "#indicator" }
|
"down": {"uv": [5, 13, 11, 14], "texture": "#indicator"}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
|
|||||||
@@ -1,4 +1,5 @@
|
|||||||
{
|
{
|
||||||
|
"format_version": "1.21.6",
|
||||||
"credit": "对齐 AE2 monitor_base.json",
|
"credit": "对齐 AE2 monitor_base.json",
|
||||||
"textures": {
|
"textures": {
|
||||||
"sides": "ae2:part/monitor_sides",
|
"sides": "ae2:part/monitor_sides",
|
||||||
@@ -8,130 +9,26 @@
|
|||||||
},
|
},
|
||||||
"elements": [
|
"elements": [
|
||||||
{
|
{
|
||||||
"from": [
|
"from": [2, 2, 0],
|
||||||
2,
|
"to": [14, 14, 2],
|
||||||
2,
|
|
||||||
0
|
|
||||||
],
|
|
||||||
"to": [
|
|
||||||
14,
|
|
||||||
14,
|
|
||||||
2
|
|
||||||
],
|
|
||||||
"faces": {
|
"faces": {
|
||||||
"north": {
|
"north": {"uv": [2, 2, 14, 14], "texture": "#front"},
|
||||||
"uv": [
|
"east": {"uv": [14, 2, 16, 14], "texture": "#sides"},
|
||||||
2,
|
"south": {"uv": [2, 2, 14, 14], "texture": "#back"},
|
||||||
2,
|
"west": {"uv": [0, 2, 2, 14], "texture": "#sides"},
|
||||||
14,
|
"up": {"uv": [2, 0, 14, 2], "texture": "#sides"},
|
||||||
14
|
"down": {"uv": [2, 14, 14, 16], "texture": "#sides"}
|
||||||
],
|
|
||||||
"texture": "#front"
|
|
||||||
},
|
|
||||||
"east": {
|
|
||||||
"uv": [
|
|
||||||
14,
|
|
||||||
2,
|
|
||||||
16,
|
|
||||||
14
|
|
||||||
],
|
|
||||||
"texture": "#sides"
|
|
||||||
},
|
|
||||||
"south": {
|
|
||||||
"uv": [
|
|
||||||
2,
|
|
||||||
2,
|
|
||||||
14,
|
|
||||||
14
|
|
||||||
],
|
|
||||||
"texture": "#back"
|
|
||||||
},
|
|
||||||
"west": {
|
|
||||||
"uv": [
|
|
||||||
0,
|
|
||||||
2,
|
|
||||||
2,
|
|
||||||
14
|
|
||||||
],
|
|
||||||
"texture": "#sides"
|
|
||||||
},
|
|
||||||
"up": {
|
|
||||||
"uv": [
|
|
||||||
2,
|
|
||||||
0,
|
|
||||||
14,
|
|
||||||
2
|
|
||||||
],
|
|
||||||
"texture": "#sides"
|
|
||||||
},
|
|
||||||
"down": {
|
|
||||||
"uv": [
|
|
||||||
2,
|
|
||||||
14,
|
|
||||||
14,
|
|
||||||
16
|
|
||||||
],
|
|
||||||
"texture": "#sides"
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"from": [
|
"from": [4.01, 4.01, 2.01],
|
||||||
4,
|
"to": [11.99, 11.99, 2.99],
|
||||||
4,
|
|
||||||
2
|
|
||||||
],
|
|
||||||
"to": [
|
|
||||||
12,
|
|
||||||
12,
|
|
||||||
3
|
|
||||||
],
|
|
||||||
"faces": {
|
"faces": {
|
||||||
"east": {
|
"east": {"uv": [11, 4, 12, 12], "texture": "#back"},
|
||||||
"uv": [
|
"south": {"uv": [4, 4, 12, 12], "texture": "#back"},
|
||||||
11,
|
"west": {"uv": [4, 4, 5, 12], "texture": "#back"},
|
||||||
4,
|
"up": {"uv": [4, 4, 12, 5], "texture": "#back"},
|
||||||
12,
|
"down": {"uv": [4, 11, 12, 12], "texture": "#back"}
|
||||||
12
|
|
||||||
],
|
|
||||||
"texture": "#back"
|
|
||||||
},
|
|
||||||
"south": {
|
|
||||||
"uv": [
|
|
||||||
4,
|
|
||||||
4,
|
|
||||||
12,
|
|
||||||
12
|
|
||||||
],
|
|
||||||
"texture": "#back"
|
|
||||||
},
|
|
||||||
"west": {
|
|
||||||
"uv": [
|
|
||||||
4,
|
|
||||||
4,
|
|
||||||
5,
|
|
||||||
12
|
|
||||||
],
|
|
||||||
"texture": "#back"
|
|
||||||
},
|
|
||||||
"up": {
|
|
||||||
"uv": [
|
|
||||||
4,
|
|
||||||
4,
|
|
||||||
12,
|
|
||||||
5
|
|
||||||
],
|
|
||||||
"texture": "#back"
|
|
||||||
},
|
|
||||||
"down": {
|
|
||||||
"uv": [
|
|
||||||
4,
|
|
||||||
11,
|
|
||||||
12,
|
|
||||||
12
|
|
||||||
],
|
|
||||||
"texture": "#back"
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
|
|||||||
|
Before Width: | Height: | Size: 2.9 KiB After Width: | Height: | Size: 608 B |
|
Before Width: | Height: | Size: 3.6 KiB After Width: | Height: | Size: 361 B |
|
Before Width: | Height: | Size: 3.1 KiB After Width: | Height: | Size: 354 B |
|
Before Width: | Height: | Size: 3.2 KiB After Width: | Height: | Size: 540 B |
|
Before Width: | Height: | Size: 3.0 KiB After Width: | Height: | Size: 347 B |
|
Before Width: | Height: | Size: 3.0 KiB After Width: | Height: | Size: 435 B |
|
Before Width: | Height: | Size: 3.0 KiB After Width: | Height: | Size: 318 B |
|
Before Width: | Height: | Size: 3.5 KiB After Width: | Height: | Size: 592 B |
|
Before Width: | Height: | Size: 3.5 KiB After Width: | Height: | Size: 519 B |
|
Before Width: | Height: | Size: 2.8 KiB After Width: | Height: | Size: 293 B |
|
Before Width: | Height: | Size: 2.9 KiB After Width: | Height: | Size: 383 B |
|
Before Width: | Height: | Size: 3.2 KiB After Width: | Height: | Size: 391 B |
|
Before Width: | Height: | Size: 6.1 KiB After Width: | Height: | Size: 5.7 KiB |
|
Before Width: | Height: | Size: 9.7 KiB After Width: | Height: | Size: 15 KiB |
|
Before Width: | Height: | Size: 4.0 KiB After Width: | Height: | Size: 3.7 KiB |
|
Before Width: | Height: | Size: 4.1 KiB After Width: | Height: | Size: 3.5 KiB |
|
Before Width: | Height: | Size: 3.8 KiB After Width: | Height: | Size: 3.2 KiB |
|
Before Width: | Height: | Size: 4.1 KiB After Width: | Height: | Size: 3.7 KiB |
|
Before Width: | Height: | Size: 4.7 KiB After Width: | Height: | Size: 3.5 KiB |
|
Before Width: | Height: | Size: 4.8 KiB After Width: | Height: | Size: 4.4 KiB |
|
Before Width: | Height: | Size: 1.2 KiB After Width: | Height: | Size: 2.5 KiB |
|
Before Width: | Height: | Size: 3.0 KiB After Width: | Height: | Size: 448 B |
|
Before Width: | Height: | Size: 3.0 KiB After Width: | Height: | Size: 464 B |
|
Before Width: | Height: | Size: 3.0 KiB After Width: | Height: | Size: 442 B |
|
Before Width: | Height: | Size: 3.0 KiB After Width: | Height: | Size: 448 B |
|
Before Width: | Height: | Size: 3.0 KiB After Width: | Height: | Size: 447 B |
|
Before Width: | Height: | Size: 3.0 KiB After Width: | Height: | Size: 763 B |
|
Before Width: | Height: | Size: 3.2 KiB After Width: | Height: | Size: 455 B |
|
Before Width: | Height: | Size: 3.2 KiB After Width: | Height: | Size: 487 B |
|
Before Width: | Height: | Size: 3.0 KiB After Width: | Height: | Size: 458 B |
|
Before Width: | Height: | Size: 15 KiB After Width: | Height: | Size: 1.3 KiB |
@@ -1,5 +1,6 @@
|
|||||||
{
|
{
|
||||||
"animation": {
|
"animation": {
|
||||||
|
"interpolate": true,
|
||||||
"frametime": 3
|
"frametime": 3
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Before Width: | Height: | Size: 2.9 KiB After Width: | Height: | Size: 612 B |
|
Before Width: | Height: | Size: 2.9 KiB After Width: | Height: | Size: 604 B |
|
Before Width: | Height: | Size: 2.9 KiB After Width: | Height: | Size: 482 B |
|
Before Width: | Height: | Size: 2.9 KiB After Width: | Height: | Size: 277 B |
|
Before Width: | Height: | Size: 2.9 KiB After Width: | Height: | Size: 370 B |
|
Before Width: | Height: | Size: 3.0 KiB After Width: | Height: | Size: 561 B |
|
Before Width: | Height: | Size: 3.4 KiB After Width: | Height: | Size: 338 B |
|
Before Width: | Height: | Size: 301 B After Width: | Height: | Size: 410 B |