From 56a64b921c2408cdcc118f87790e7e33724ac66f Mon Sep 17 00:00:00 2001 From: GaLi <3096147684@qq.com> Date: Thu, 16 Apr 2026 17:31:31 +0800 Subject: [PATCH] =?UTF-8?q?=E9=80=83=E8=BF=87=E4=B8=80=E5=8A=AB?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../client/screen/ProviderSelectScreen.java | 44 +- .../ae2/MirrorPatternProviderBlock.java | 28 +- .../ae2/MirrorPatternProviderBlockEntity.java | 285 +- .../content/decor/DollBlock.java | 41 + .../com/extendedae_plus/init/ModBlocks.java | 14 + .../extendedae_plus/init/ModCreativeTabs.java | 4 + .../com/extendedae_plus/init/ModItems.java | 20 + .../tools/MirrorPatternBindingToolItem.java | 119 +- .../PatternProviderLogicSyncVersionMixin.java | 4 +- .../items/assembler_matrix_plus_cores.md | 2 +- .../devices/entity_speed_ticker_part.md | 4 +- .../devices/network_pattern_controller.md | 2 +- .../items/assembler_matrix_plus_cores.md | 2 +- .../picture/entity_speed_ticker_en.png | Bin 0 -> 12802 bytes .../picture/network_pattern_controller_en.png | Bin 0 -> 8484 bytes .../extendedae_plus/blockstates/_feng.json | 8 + .../extendedae_plus/blockstates/c-h716.json | 8 + .../blockstates/fish_dan_.json | 8 + .../extendedae_plus/blockstates/xbai.json | 8 + .../assets/extendedae_plus/lang/en_us.json | 9 + .../assets/extendedae_plus/lang/zh_cn.json | 9 + .../assets/extendedae_plus/lang/zh_tw.json | 37 +- .../extendedae_plus/models/block/_feng.json | 208 ++ .../extendedae_plus/models/block/c-h716.json | 222 ++ .../models/block/fish_dan_.json | 2623 +++++++++++++++++ .../extendedae_plus/models/block/xbai.json | 222 ++ .../extendedae_plus/models/item/_feng.json | 3 + .../extendedae_plus/models/item/c-h716.json | 3 + .../models/item/fish_dan_.json | 3 + .../models/item/iava_skin_doll.json | 221 ++ .../extendedae_plus/models/item/xbai.json | 3 + .../textures/block/_feng_fumo.png | Bin 0 -> 2785 bytes .../textures/block/beam_former_yudan.png | Bin 0 -> 904 bytes .../textures/block/iava_user.png | Bin 0 -> 3427 bytes .../block/infinity_biginteger_cell.png | Bin 0 -> 439 bytes .../extendedae_plus/textures/block/xbai.png | Bin 0 -> 2885 bytes .../extendedae_plus/textures/block/yudan.png | Bin 0 -> 3887 bytes .../loot_tables/blocks/_feng.json | 19 + .../loot_tables/blocks/c-h716.json | 19 + .../loot_tables/blocks/fish_dan_.json | 19 + .../loot_tables/blocks/xbai.json | 19 + 41 files changed, 4125 insertions(+), 115 deletions(-) create mode 100644 src/main/java/com/extendedae_plus/content/decor/DollBlock.java create mode 100644 src/main/resources/assets/extendedae_plus/ae2guide/picture/entity_speed_ticker_en.png create mode 100644 src/main/resources/assets/extendedae_plus/ae2guide/picture/network_pattern_controller_en.png create mode 100644 src/main/resources/assets/extendedae_plus/blockstates/_feng.json create mode 100644 src/main/resources/assets/extendedae_plus/blockstates/c-h716.json create mode 100644 src/main/resources/assets/extendedae_plus/blockstates/fish_dan_.json create mode 100644 src/main/resources/assets/extendedae_plus/blockstates/xbai.json create mode 100644 src/main/resources/assets/extendedae_plus/models/block/_feng.json create mode 100644 src/main/resources/assets/extendedae_plus/models/block/c-h716.json create mode 100644 src/main/resources/assets/extendedae_plus/models/block/fish_dan_.json create mode 100644 src/main/resources/assets/extendedae_plus/models/block/xbai.json create mode 100644 src/main/resources/assets/extendedae_plus/models/item/_feng.json create mode 100644 src/main/resources/assets/extendedae_plus/models/item/c-h716.json create mode 100644 src/main/resources/assets/extendedae_plus/models/item/fish_dan_.json create mode 100644 src/main/resources/assets/extendedae_plus/models/item/iava_skin_doll.json create mode 100644 src/main/resources/assets/extendedae_plus/models/item/xbai.json create mode 100644 src/main/resources/assets/extendedae_plus/textures/block/_feng_fumo.png create mode 100644 src/main/resources/assets/extendedae_plus/textures/block/beam_former_yudan.png create mode 100644 src/main/resources/assets/extendedae_plus/textures/block/iava_user.png create mode 100644 src/main/resources/assets/extendedae_plus/textures/block/infinity_biginteger_cell.png create mode 100644 src/main/resources/assets/extendedae_plus/textures/block/xbai.png create mode 100644 src/main/resources/assets/extendedae_plus/textures/block/yudan.png create mode 100644 src/main/resources/data/extendedae_plus/loot_tables/blocks/_feng.json create mode 100644 src/main/resources/data/extendedae_plus/loot_tables/blocks/c-h716.json create mode 100644 src/main/resources/data/extendedae_plus/loot_tables/blocks/fish_dan_.json create mode 100644 src/main/resources/data/extendedae_plus/loot_tables/blocks/xbai.json diff --git a/src/main/java/com/extendedae_plus/client/screen/ProviderSelectScreen.java b/src/main/java/com/extendedae_plus/client/screen/ProviderSelectScreen.java index 454c8f1..fffed29 100644 --- a/src/main/java/com/extendedae_plus/client/screen/ProviderSelectScreen.java +++ b/src/main/java/com/extendedae_plus/client/screen/ProviderSelectScreen.java @@ -47,7 +47,9 @@ public class ProviderSelectScreen extends Screen { // 置顶的供应器名称集合(静态变量,持久化到配置文件) private static final Set pinnedProviders = new HashSet<>(); private static final String PINNED_CONFIG_PATH = "extendedae_plus/pinned_providers.json"; + private static final String AUTO_UPLOAD_UNIQUE_MATCH_KEY = "auto_upload_unique_match"; private static final Gson GSON = new GsonBuilder().setPrettyPrinting().disableHtmlEscaping().create(); + private static boolean autoUploadUniqueMatchEnabled = true; // 静态初始化块:加载置顶配置 static { @@ -62,6 +64,7 @@ public class ProviderSelectScreen extends Screen { private EditBox searchBox; // 中文名输入框(用于添加映射) private EditBox cnInput; + private Button autoUploadToggleButton; private String query = ""; // 翻页按钮 private Button prevButton; @@ -168,37 +171,42 @@ public class ProviderSelectScreen extends Screen { int totalWidth = btnWidth2 + btnGap + inputWidth + btnGap + btnWidth2 * 2 + btnGap + btnWidth2; int startX = centerX - totalWidth / 2; + this.autoUploadToggleButton = Button.builder(buildAutoUploadToggleLabel(), b -> toggleAutoUploadUniqueMatch()) + .bounds(startX + btnWidth2 + btnGap + inputWidth + btnGap + btnWidth2 + btnGap, navY + 30, btnWidth2 * 2 + btnGap, 20) + .build(); + this.addRenderableWidget(this.autoUploadToggleButton); + // 重载映射按钮 Button reload = Button.builder(Component.translatable("extendedae_plus.screen.reload_mapping"), b -> reloadMapping()) - .bounds(startX, navY + 30, btnWidth2, 20) + .bounds(startX, navY + 55, btnWidth2, 20) .build(); this.addRenderableWidget(reload); // 中文名输入框(用于新增映射的值) if (cnInput == null) { - cnInput = new EditBox(this.font, startX + btnWidth2 + btnGap, navY + 30, inputWidth, 20, Component.translatable("extendedae_plus.screen.upload.name")); + cnInput = new EditBox(this.font, startX + btnWidth2 + btnGap, navY + 55, inputWidth, 20, Component.translatable("extendedae_plus.screen.upload.name")); } else { cnInput.setX(startX + btnWidth2 + btnGap); - cnInput.setY(navY + 30); + cnInput.setY(navY + 55); cnInput.setWidth(inputWidth); } this.addRenderableWidget(cnInput); // 关闭按钮 Button close = Button.builder(Component.translatable("gui.cancel"), b -> onClose()) - .bounds(startX + btnWidth2 + btnGap + inputWidth + btnGap, navY + 30, btnWidth2, 20) + .bounds(startX + btnWidth2 + btnGap + inputWidth + btnGap, navY + 55, btnWidth2, 20) .build(); this.addRenderableWidget(close); // 添加映射按钮(使用当前搜索关键字 -> 中文) Button addMap = Button.builder(Component.translatable("extendedae_plus.screen.add_mapping"), b -> addMappingFromUI()) - .bounds(startX + btnWidth2 + btnGap + inputWidth + btnGap + btnWidth2 + btnGap, navY + 30, btnWidth2, 20) + .bounds(startX + btnWidth2 + btnGap + inputWidth + btnGap + btnWidth2 + btnGap, navY + 55, btnWidth2, 20) .build(); this.addRenderableWidget(addMap); // 删除映射按钮(按中文值精确匹配删除)按钮 Button delByCn = Button.builder(Component.translatable("extendedae_plus.screen.delete_mapping"), b -> deleteMappingByCnFromUI()) - .bounds(startX + btnWidth2 + btnGap + inputWidth + btnGap + btnWidth2 * 2 + btnGap * 2, navY + 30, btnWidth2, 20) + .bounds(startX + btnWidth2 + btnGap + inputWidth + btnGap + btnWidth2 * 2 + btnGap * 2, navY + 55, btnWidth2, 20) .build(); this.addRenderableWidget(delByCn); @@ -244,6 +252,22 @@ public class ProviderSelectScreen extends Screen { } } + private Component buildAutoUploadToggleLabel() { + String stateKey = autoUploadUniqueMatchEnabled + ? "config.extendedae_plus.option.state_on" + : "config.extendedae_plus.option.state_off"; + return Component.translatable("extendedae_plus.screen.auto_upload_unique_match", + Component.translatable(stateKey)); + } + + private void toggleAutoUploadUniqueMatch() { + autoUploadUniqueMatchEnabled = !autoUploadUniqueMatchEnabled; + savePinnedProviders(); + if (this.autoUploadToggleButton != null) { + this.autoUploadToggleButton.setMessage(buildAutoUploadToggleLabel()); + } + } + /** * 将服务器发送的名称(可能是 Component JSON)反序列化为本地化文本 */ @@ -399,7 +423,7 @@ public class ProviderSelectScreen extends Screen { } private void tryAutoUploadIfUniqueMatch() { - if (!autoUploadRequestedFromPresetSearch || autoUploadAttempted) { + if (!autoUploadUniqueMatchEnabled || !autoUploadRequestedFromPresetSearch || autoUploadAttempted) { return; } autoUploadAttempted = true; @@ -636,6 +660,11 @@ public class ProviderSelectScreen extends Screen { } } } + + JsonElement autoUploadElement = obj.get(AUTO_UPLOAD_UNIQUE_MATCH_KEY); + if (autoUploadElement != null && autoUploadElement.isJsonPrimitive()) { + autoUploadUniqueMatchEnabled = autoUploadElement.getAsBoolean(); + } } catch (IOException | JsonSyntaxException e) { // 加载失败时静默处理 } @@ -655,6 +684,7 @@ public class ProviderSelectScreen extends Screen { arr.add(name); } obj.add("pinned", arr); + obj.addProperty(AUTO_UPLOAD_UNIQUE_MATCH_KEY, autoUploadUniqueMatchEnabled); Files.writeString(cfgPath, GSON.toJson(obj)); } catch (IOException e) { diff --git a/src/main/java/com/extendedae_plus/content/ae2/MirrorPatternProviderBlock.java b/src/main/java/com/extendedae_plus/content/ae2/MirrorPatternProviderBlock.java index c2d3543..38f02c3 100644 --- a/src/main/java/com/extendedae_plus/content/ae2/MirrorPatternProviderBlock.java +++ b/src/main/java/com/extendedae_plus/content/ae2/MirrorPatternProviderBlock.java @@ -4,6 +4,7 @@ import appeng.api.implementations.items.IMemoryCard; import appeng.block.crafting.PatternProviderBlock; import appeng.util.InteractionUtil; import net.minecraft.core.BlockPos; +import net.minecraft.network.chat.Component; import net.minecraft.world.InteractionHand; import net.minecraft.world.InteractionResult; import net.minecraft.world.entity.player.Player; @@ -14,6 +15,10 @@ import org.jetbrains.annotations.Nullable; public class MirrorPatternProviderBlock extends PatternProviderBlock { + public MirrorPatternProviderBlock() { + super(); + } + @Override public InteractionResult onActivated(Level level, BlockPos pos, Player player, InteractionHand hand, @Nullable ItemStack heldItem, BlockHitResult hit) { @@ -22,23 +27,32 @@ public class MirrorPatternProviderBlock extends PatternProviderBlock { return InteractionResult.PASS; } - if (InteractionUtil.isInAlternateUseMode(player)) { - return InteractionResult.PASS; - } - if (heldItem != null && (InteractionUtil.canWrenchRotate(heldItem) || heldItem.getItem() instanceof IMemoryCard)) { if (!level.isClientSide) { player.displayClientMessage( - net.minecraft.network.chat.Component.translatable( - "extendedae_plus.message.mirror_pattern_provider.readonly"), + Component.translatable("extendedae_plus.message.mirror_pattern_provider.readonly"), true); } return InteractionResult.sidedSuccess(level.isClientSide); } + if (heldItem != null && !heldItem.isEmpty()) { + return InteractionResult.PASS; + } + if (!level.isClientSide) { - player.displayClientMessage(mirror.getStatusMessage(), true); + if (player.isShiftKeyDown()) { + if (mirror.tryBindToAdjacentMaster()) { + player.displayClientMessage(mirror.createBoundMessage(), true); + } else { + player.displayClientMessage( + Component.translatable("extendedae_plus.message.mirror_pattern_provider.missing_master"), + true); + } + } else { + player.displayClientMessage(mirror.getStatusMessage(), true); + } } return InteractionResult.sidedSuccess(level.isClientSide); diff --git a/src/main/java/com/extendedae_plus/content/ae2/MirrorPatternProviderBlockEntity.java b/src/main/java/com/extendedae_plus/content/ae2/MirrorPatternProviderBlockEntity.java index a004883..7e35625 100644 --- a/src/main/java/com/extendedae_plus/content/ae2/MirrorPatternProviderBlockEntity.java +++ b/src/main/java/com/extendedae_plus/content/ae2/MirrorPatternProviderBlockEntity.java @@ -6,22 +6,27 @@ import appeng.api.networking.IManagedGridNode; import appeng.block.crafting.PatternProviderBlock; import appeng.block.crafting.PushDirection; import appeng.blockentity.crafting.PatternProviderBlockEntity; +import appeng.blockentity.networking.CableBusBlockEntity; import appeng.helpers.patternprovider.PatternProviderLogic; -import appeng.util.CustomNameUtil; +import appeng.helpers.patternprovider.PatternProviderLogicHost; +import appeng.parts.AEBasePart; import appeng.util.SettingsFrom; import appeng.util.inv.AppEngInternalInventory; import com.extendedae_plus.api.bridge.PatternProviderLogicSyncBridge; import com.extendedae_plus.config.ModConfig; import com.extendedae_plus.init.ModBlockEntities; import net.minecraft.core.BlockPos; +import net.minecraft.core.Direction; import net.minecraft.core.GlobalPos; import net.minecraft.core.registries.Registries; import net.minecraft.nbt.CompoundTag; import net.minecraft.nbt.Tag; import net.minecraft.network.chat.Component; +import net.minecraft.network.chat.MutableComponent; import net.minecraft.resources.ResourceKey; import net.minecraft.resources.ResourceLocation; import net.minecraft.server.level.ServerLevel; +import net.minecraft.world.entity.player.Player; import net.minecraft.world.item.ItemStack; import net.minecraft.world.level.Level; import net.minecraft.world.level.block.entity.BlockEntity; @@ -35,6 +40,7 @@ public class MirrorPatternProviderBlockEntity extends PatternProviderBlockEntity private static final String TAG_MASTER = "mirrorMaster"; private static final String TAG_MASTER_DIMENSION = "dimension"; private static final String TAG_MASTER_POS = "pos"; + private static final String TAG_MASTER_SIDE = "side"; private static final int FAST_SYNC_INTERVAL = 2; private static final int STABLE_SYNC_INTERVAL = 20; private static final int UNLOADED_MASTER_RETRY_INTERVAL = 40; @@ -49,10 +55,26 @@ public class MirrorPatternProviderBlockEntity extends PatternProviderBlockEntity @Nullable private BlockPos masterPos; + @Nullable + private Direction masterSide; + private long nextSyncTick = Long.MIN_VALUE; private long lastSyncedPatternVersion = UNKNOWN_PATTERN_SYNC_VERSION; private boolean needsUnboundPatternCleanup; + public record MasterLocation(ResourceKey dimension, BlockPos pos, @Nullable Direction side) { + public MasterLocation { + pos = pos.immutable(); + } + + public GlobalPos asGlobalPos() { + return GlobalPos.of(this.dimension, this.pos); + } + } + + private record ResolvedMaster(MasterLocation location, PatternProviderLogicHost host) { + } + public MirrorPatternProviderBlockEntity(BlockPos pos, BlockState blockState) { super(ModBlockEntities.MIRROR_PATTERN_PROVIDER_BE.get(), pos, blockState); } @@ -104,6 +126,9 @@ public class MirrorPatternProviderBlockEntity extends PatternProviderBlockEntity var masterTag = new CompoundTag(); masterTag.putString(TAG_MASTER_DIMENSION, this.masterDimension.location().toString()); masterTag.putLong(TAG_MASTER_POS, this.masterPos.asLong()); + if (this.masterSide != null) { + masterTag.putString(TAG_MASTER_SIDE, this.masterSide.getSerializedName()); + } data.put(TAG_MASTER, masterTag); } else { data.remove(TAG_MASTER); @@ -116,6 +141,7 @@ public class MirrorPatternProviderBlockEntity extends PatternProviderBlockEntity this.masterDimension = null; this.masterPos = null; + this.masterSide = null; this.scheduleImmediateSync(); this.invalidatePatternSyncState(); this.needsUnboundPatternCleanup = true; @@ -126,6 +152,9 @@ public class MirrorPatternProviderBlockEntity extends PatternProviderBlockEntity this.masterDimension = ResourceKey.create(Registries.DIMENSION, new ResourceLocation(masterTag.getString(TAG_MASTER_DIMENSION))); this.masterPos = BlockPos.of(masterTag.getLong(TAG_MASTER_POS)); + if (masterTag.contains(TAG_MASTER_SIDE, Tag.TAG_STRING)) { + this.masterSide = Direction.byName(masterTag.getString(TAG_MASTER_SIDE)); + } this.needsUnboundPatternCleanup = false; } } @@ -150,6 +179,24 @@ public class MirrorPatternProviderBlockEntity extends PatternProviderBlockEntity } public boolean bindToMaster(GlobalPos master) { + return this.bindToMaster(new MasterLocation(master.dimension(), master.pos(), null)); + } + + public boolean tryBindToAdjacentMaster() { + if (!(this.getLevel() instanceof ServerLevel)) { + return false; + } + + var master = this.findAdjacentMaster(); + if (master == null) { + return false; + } + + this.syncFromMaster(master); + return true; + } + + public boolean bindToMaster(MasterLocation master) { if (!(this.getLevel() instanceof ServerLevel serverLevel)) { return false; } @@ -158,17 +205,18 @@ public class MirrorPatternProviderBlockEntity extends PatternProviderBlockEntity return false; } + var resolvedMaster = this.resolveMaster(serverLevel, master); + if (resolvedMaster != null) { + this.syncFromMaster(resolvedMaster); + return true; + } + var masterLevel = serverLevel.getServer().getLevel(master.dimension()); if (masterLevel != null && masterLevel.hasChunkAt(master.pos())) { - var blockEntity = masterLevel.getBlockEntity(master.pos()); - if (isValidMaster(blockEntity)) { - this.syncFromMaster((PatternProviderBlockEntity) blockEntity); - return true; - } return false; } - var changed = this.setBoundMaster(master.dimension(), master.pos()); + var changed = this.setBoundMaster(master); if (changed) { this.flushStateChanges(); } @@ -177,27 +225,22 @@ public class MirrorPatternProviderBlockEntity extends PatternProviderBlockEntity } @Nullable - public PatternProviderBlockEntity getMaster() { - if (this.masterDimension == null || this.masterPos == null || !(this.getLevel() instanceof ServerLevel serverLevel)) { + public PatternProviderLogicHost getMaster() { + if (!(this.getLevel() instanceof ServerLevel serverLevel)) { return null; } - var masterLevel = this.getMasterLevel(serverLevel); - if (masterLevel == null || !masterLevel.hasChunkAt(this.masterPos)) { - return null; - } - - var blockEntity = masterLevel.getBlockEntity(this.masterPos); - return isValidMaster(blockEntity) ? (PatternProviderBlockEntity) blockEntity : null; + var master = this.resolveBoundMaster(serverLevel); + return master != null ? master.host() : null; } public Component createBoundMessage() { if (this.masterPos != null) { - return Component.translatable( + return this.appendMasterSide(Component.translatable( "extendedae_plus.message.mirror_pattern_provider.bound", this.masterPos.getX(), this.masterPos.getY(), - this.masterPos.getZ()); + this.masterPos.getZ())); } return Component.translatable("extendedae_plus.message.mirror_pattern_provider.missing_master"); @@ -205,11 +248,11 @@ public class MirrorPatternProviderBlockEntity extends PatternProviderBlockEntity public Component getStatusMessage() { if (this.masterPos != null) { - return Component.translatable( + return this.appendMasterSide(Component.translatable( "extendedae_plus.message.mirror_pattern_provider.following", this.masterPos.getX(), this.masterPos.getY(), - this.masterPos.getZ()); + this.masterPos.getZ())); } return Component.translatable("extendedae_plus.message.mirror_pattern_provider.missing_master"); @@ -251,7 +294,11 @@ public class MirrorPatternProviderBlockEntity extends PatternProviderBlockEntity return UNLOADED_MASTER_RETRY_INTERVAL; } - var master = this.getMaster(); + if (!(this.getLevel() instanceof ServerLevel serverLevel)) { + return UNLOADED_MASTER_RETRY_INTERVAL; + } + + var master = this.resolveBoundMaster(serverLevel); if (master != null) { return this.syncFromMaster(master) ? FAST_SYNC_INTERVAL : STABLE_SYNC_INTERVAL; } @@ -276,12 +323,19 @@ public class MirrorPatternProviderBlockEntity extends PatternProviderBlockEntity return true; } - var masterLevel = this.getMasterLevel(serverLevel); - if (masterLevel == null || !masterLevel.hasChunkAt(this.masterPos)) { + var target = this.getBoundMasterLocation(); + if (target == null) { return false; } - return !isValidMaster(masterLevel.getBlockEntity(this.masterPos)); + var masterLevel = target.dimension() == serverLevel.dimension() + ? serverLevel + : serverLevel.getServer().getLevel(target.dimension()); + if (masterLevel == null || !masterLevel.hasChunkAt(target.pos())) { + return false; + } + + return this.resolveMaster(serverLevel, target) == null; } private boolean clearMasterBinding(boolean clearMirroredPatterns) { @@ -289,6 +343,7 @@ public class MirrorPatternProviderBlockEntity extends PatternProviderBlockEntity this.masterDimension = null; this.masterPos = null; + this.masterSide = null; this.invalidatePatternSyncState(); this.needsUnboundPatternCleanup = false; @@ -301,12 +356,14 @@ public class MirrorPatternProviderBlockEntity extends PatternProviderBlockEntity return changed; } - private boolean setBoundMaster(ResourceKey dimension, BlockPos pos) { - var newPos = pos.immutable(); - var changed = !Objects.equals(this.masterDimension, dimension) || !Objects.equals(this.masterPos, newPos); + private boolean setBoundMaster(MasterLocation master) { + var changed = !Objects.equals(this.masterDimension, master.dimension()) + || !Objects.equals(this.masterPos, master.pos()) + || !Objects.equals(this.masterSide, master.side()); - this.masterDimension = dimension; - this.masterPos = newPos; + this.masterDimension = master.dimension(); + this.masterPos = master.pos(); + this.masterSide = master.side(); this.needsUnboundPatternCleanup = false; if (changed) { this.invalidatePatternSyncState(); @@ -314,16 +371,32 @@ public class MirrorPatternProviderBlockEntity extends PatternProviderBlockEntity return changed; } - private boolean syncFromMaster(PatternProviderBlockEntity master) { - var masterLevel = master.getLevel(); - if (masterLevel == null) { - return false; + @Nullable + private ResolvedMaster findAdjacentMaster() { + var level = this.getLevel(); + if (level == null) { + return null; } - var bindingChanged = this.setBoundMaster(masterLevel.dimension(), master.getBlockPos()); + for (var direction : Direction.values()) { + var adjacent = level.getBlockEntity(this.getBlockPos().relative(direction)); + var master = resolveMaster(adjacent, null); + if (master == null) { + master = resolveMaster(adjacent, direction.getOpposite()); + } + if (master != null) { + return master; + } + } + + return null; + } + + private boolean syncFromMaster(ResolvedMaster master) { + var bindingChanged = this.setBoundMaster(master.location()); var changed = bindingChanged; - changed |= this.syncMirroredSettings(master); - changed |= this.syncMirroredPatterns(master, bindingChanged); + changed |= this.syncMirroredSettings(master.host()); + changed |= this.syncMirroredPatterns(master.host(), bindingChanged); if (changed) { this.flushStateChanges(); @@ -332,17 +405,13 @@ public class MirrorPatternProviderBlockEntity extends PatternProviderBlockEntity return changed; } - private boolean syncMirroredSettings(PatternProviderBlockEntity master) { + private boolean syncMirroredSettings(PatternProviderLogicHost master) { if (!this.hasDifferentMirroredSettings(master)) { return false; } var settingsTag = new CompoundTag(); - master.getLogic().getConfigManager().writeToNBT(settingsTag); - settingsTag.putByte(PatternProviderBlock.PUSH_DIRECTION.getName(), - (byte) master.getBlockState().getValue(PatternProviderBlock.PUSH_DIRECTION).ordinal()); - CustomNameUtil.setCustomName(settingsTag, master.getCustomName()); - + exportMasterSettings(master, settingsTag); super.importSettings(SettingsFrom.MEMORY_CARD, settingsTag, null); this.getLogic().getConfigManager().readFromNBT(settingsTag); @@ -359,11 +428,11 @@ public class MirrorPatternProviderBlockEntity extends PatternProviderBlockEntity return this.syncMirroredSettings(defaultMirror); } - private boolean hasDifferentMirroredSettings(PatternProviderBlockEntity master) { + private boolean hasDifferentMirroredSettings(PatternProviderLogicHost master) { var mirrorLogic = this.getLogic(); var masterLogic = master.getLogic(); - return !Objects.equals(this.getCustomName(), master.getCustomName()) + return !Objects.equals(this.getCustomName(), getCustomName(master)) || this.getPriority() != master.getPriority() || mirrorLogic.getConfigManager().getSetting(Settings.BLOCKING_MODE) != masterLogic.getConfigManager().getSetting(Settings.BLOCKING_MODE) @@ -371,11 +440,11 @@ public class MirrorPatternProviderBlockEntity extends PatternProviderBlockEntity != masterLogic.getConfigManager().getSetting(Settings.PATTERN_ACCESS_TERMINAL) || mirrorLogic.getConfigManager().getSetting(Settings.LOCK_CRAFTING_MODE) != masterLogic.getConfigManager().getSetting(Settings.LOCK_CRAFTING_MODE) - || this.getBlockState().getValue(PatternProviderBlock.PUSH_DIRECTION) - != master.getBlockState().getValue(PatternProviderBlock.PUSH_DIRECTION); + || supportsPushDirectionState(master) + && this.getBlockState().getValue(PatternProviderBlock.PUSH_DIRECTION) != getPushDirection(master); } - private boolean syncMirroredPatterns(PatternProviderBlockEntity master, boolean forceSync) { + private boolean syncMirroredPatterns(PatternProviderLogicHost master, boolean forceSync) { var masterPatternVersion = getPatternSyncVersion(master); if (!forceSync && masterPatternVersion != UNKNOWN_PATTERN_SYNC_VERSION && masterPatternVersion == this.lastSyncedPatternVersion) { @@ -467,11 +536,107 @@ public class MirrorPatternProviderBlockEntity extends PatternProviderBlockEntity } @Nullable - private ServerLevel getMasterLevel(ServerLevel serverLevel) { - if (serverLevel.dimension() == this.masterDimension) { - return serverLevel; + private MasterLocation getBoundMasterLocation() { + if (this.masterDimension == null || this.masterPos == null) { + return null; } - return serverLevel.getServer().getLevel(this.masterDimension); + return new MasterLocation(this.masterDimension, this.masterPos, this.masterSide); + } + + @Nullable + private ResolvedMaster resolveBoundMaster(ServerLevel serverLevel) { + var target = this.getBoundMasterLocation(); + return target != null ? this.resolveMaster(serverLevel, target) : null; + } + + @Nullable + private ResolvedMaster resolveMaster(ServerLevel serverLevel, MasterLocation target) { + var masterLevel = target.dimension() == serverLevel.dimension() + ? serverLevel + : serverLevel.getServer().getLevel(target.dimension()); + if (masterLevel == null || !masterLevel.hasChunkAt(target.pos())) { + return null; + } + + return resolveMaster(masterLevel.getBlockEntity(target.pos()), target.side()); + } + + @Nullable + private static ResolvedMaster resolveMaster(@Nullable BlockEntity blockEntity, @Nullable Direction partSide) { + if (blockEntity == null || blockEntity.isRemoved()) { + return null; + } + + if (partSide == null && blockEntity instanceof PatternProviderLogicHost host && isValidMasterHost(host)) { + var level = blockEntity.getLevel(); + if (level == null) { + return null; + } + return new ResolvedMaster( + new MasterLocation(level.dimension(), blockEntity.getBlockPos(), null), + host); + } + + if (partSide != null && blockEntity instanceof CableBusBlockEntity cableBus) { + return resolvePartMaster(cableBus, partSide); + } + + return null; + } + + @Nullable + private static ResolvedMaster resolvePartMaster(CableBusBlockEntity cableBus, Direction side) { + var part = cableBus.getCableBus().getPart(side); + if (part instanceof AEBasePart basePart && isValidMasterHost(basePart)) { + var level = cableBus.getLevel(); + if (level == null) { + return null; + } + return new ResolvedMaster( + new MasterLocation(level.dimension(), cableBus.getBlockPos(), side), + (PatternProviderLogicHost) basePart); + } + + return null; + } + + private static void exportMasterSettings(PatternProviderLogicHost master, CompoundTag output) { + if (master instanceof PatternProviderBlockEntity blockEntity) { + blockEntity.exportSettings(SettingsFrom.MEMORY_CARD, output, null); + } else if (master instanceof AEBasePart part) { + part.exportSettings(SettingsFrom.MEMORY_CARD, output); + } + } + + @Nullable + private static Component getCustomName(PatternProviderLogicHost host) { + if (host instanceof PatternProviderBlockEntity blockEntity) { + return blockEntity.getCustomName(); + } + if (host instanceof AEBasePart part) { + return part.getCustomName(); + } + return null; + } + + private static PushDirection getPushDirection(PatternProviderLogicHost host) { + Direction target = null; + var targets = host.getTargets(); + if (targets.size() == 1) { + target = targets.iterator().next(); + } + return PushDirection.fromDirection(target); + } + + private static boolean supportsPushDirectionState(PatternProviderLogicHost host) { + return host instanceof PatternProviderBlockEntity; + } + + private Component appendMasterSide(MutableComponent component) { + if (this.masterSide != null) { + component.append(Component.literal(" [" + this.masterSide.getSerializedName() + "]")); + } + return component; } private static AppEngInternalInventory asPatternInventory(Object inventory) { @@ -496,7 +661,7 @@ public class MirrorPatternProviderBlockEntity extends PatternProviderBlockEntity return ItemStack.isSameItemSameTags(left, right) && left.getCount() == right.getCount(); } - private static long getPatternSyncVersion(PatternProviderBlockEntity master) { + private static long getPatternSyncVersion(PatternProviderLogicHost master) { if (master.getLogic() instanceof PatternProviderLogicSyncBridge bridge) { return bridge.eap$getPatternSyncVersion(); } @@ -510,8 +675,20 @@ public class MirrorPatternProviderBlockEntity extends PatternProviderBlockEntity && !blockEntity.isRemoved(); } - private static boolean isValidMaster(@Nullable BlockEntity blockEntity) { - return isSupportedMaster(blockEntity); + private static boolean isValidMasterHost(Object host) { + if (!(host instanceof PatternProviderLogicHost)) { + return false; + } + + if (host instanceof MirrorPatternProviderBlockEntity) { + return false; + } + + if (host instanceof BlockEntity blockEntity) { + return !blockEntity.isRemoved(); + } + + return host instanceof AEBasePart part && part.getBlockEntity() != null && !part.getBlockEntity().isRemoved(); } private static final class MirrorLogic extends PatternProviderLogic { diff --git a/src/main/java/com/extendedae_plus/content/decor/DollBlock.java b/src/main/java/com/extendedae_plus/content/decor/DollBlock.java new file mode 100644 index 0000000..5c16291 --- /dev/null +++ b/src/main/java/com/extendedae_plus/content/decor/DollBlock.java @@ -0,0 +1,41 @@ +package com.extendedae_plus.content.decor; + +import net.minecraft.core.Direction; +import net.minecraft.world.item.context.BlockPlaceContext; +import net.minecraft.world.level.block.Block; +import net.minecraft.world.level.block.Mirror; +import net.minecraft.world.level.block.Rotation; +import net.minecraft.world.level.block.state.BlockBehaviour; +import net.minecraft.world.level.block.state.BlockState; +import net.minecraft.world.level.block.state.StateDefinition; +import net.minecraft.world.level.block.state.properties.BlockStateProperties; +import net.minecraft.world.level.block.state.properties.DirectionProperty; + +public class DollBlock extends Block { + public static final DirectionProperty FACING = BlockStateProperties.HORIZONTAL_FACING; + + public DollBlock(BlockBehaviour.Properties properties) { + super(properties); + this.registerDefaultState(this.stateDefinition.any().setValue(FACING, Direction.NORTH)); + } + + @Override + protected void createBlockStateDefinition(StateDefinition.Builder builder) { + builder.add(FACING); + } + + @Override + public BlockState getStateForPlacement(BlockPlaceContext context) { + return this.defaultBlockState().setValue(FACING, context.getHorizontalDirection().getOpposite()); + } + + @Override + public BlockState rotate(BlockState state, Rotation rotation) { + return state.setValue(FACING, rotation.rotate(state.getValue(FACING))); + } + + @Override + public BlockState mirror(BlockState state, Mirror mirror) { + return state.rotate(mirror.getRotation(state.getValue(FACING))); + } +} diff --git a/src/main/java/com/extendedae_plus/init/ModBlocks.java b/src/main/java/com/extendedae_plus/init/ModBlocks.java index 551f504..7ed45fc 100644 --- a/src/main/java/com/extendedae_plus/init/ModBlocks.java +++ b/src/main/java/com/extendedae_plus/init/ModBlocks.java @@ -6,6 +6,7 @@ import appeng.core.definitions.AEBlockEntities; import com.extendedae_plus.ExtendedAEPlus; import com.extendedae_plus.content.ae2.MirrorPatternProviderBlock; import com.extendedae_plus.content.crafting.EPlusCraftingUnitType; +import com.extendedae_plus.content.decor.DollBlock; import com.extendedae_plus.content.matrix.CrafterCorePlusBlock; import com.extendedae_plus.content.matrix.PatternCorePlusBlock; import com.extendedae_plus.content.matrix.SpeedCorePlusBlock; @@ -13,6 +14,7 @@ import com.extendedae_plus.content.matrix.UploadCoreBlock; import com.extendedae_plus.content.wireless.LabeledWirelessTransceiverBlock; import com.extendedae_plus.content.wireless.WirelessTransceiverBlock; import net.minecraft.world.level.block.Block; +import net.minecraft.world.level.block.Blocks; import net.minecraft.world.level.block.state.BlockBehaviour; import net.minecraft.world.level.material.MapColor; import net.minecraftforge.registries.DeferredRegister; @@ -132,4 +134,16 @@ public final class ModBlocks { "mirror_pattern_provider", MirrorPatternProviderBlock::new ); + + public static final RegistryObject C_H716 = registerDollBlock("c-h716"); + public static final RegistryObject FISH_DAN = registerDollBlock("fish_dan_"); + public static final RegistryObject _FENG = registerDollBlock("_feng"); + public static final RegistryObject XBAI = registerDollBlock("xbai"); + + private static RegistryObject registerDollBlock(String name) { + return BLOCKS.register( + name, + () -> new DollBlock(BlockBehaviour.Properties.copy(Blocks.WHITE_WOOL).noOcclusion()) + ); + } } diff --git a/src/main/java/com/extendedae_plus/init/ModCreativeTabs.java b/src/main/java/com/extendedae_plus/init/ModCreativeTabs.java index a95e7f5..023d70b 100644 --- a/src/main/java/com/extendedae_plus/init/ModCreativeTabs.java +++ b/src/main/java/com/extendedae_plus/init/ModCreativeTabs.java @@ -28,6 +28,10 @@ public final class ModCreativeTabs { //超级装配矩阵样板核心 output.accept(ModItems.ASSEMBLER_MATRIX_PATTERN_PLUS.get()); output.accept(ModItems.MIRROR_PATTERN_PROVIDER.get()); + output.accept(ModItems.C_H716.get()); + output.accept(ModItems.FISH_DAN.get()); + output.accept(ModItems._FENG.get()); + output.accept(ModItems.XBAI.get()); output.accept(ModItems.MIRROR_PATTERN_BINDING_TOOL.get()); diff --git a/src/main/java/com/extendedae_plus/init/ModItems.java b/src/main/java/com/extendedae_plus/init/ModItems.java index f441fc9..4e1e4ec 100644 --- a/src/main/java/com/extendedae_plus/init/ModItems.java +++ b/src/main/java/com/extendedae_plus/init/ModItems.java @@ -91,6 +91,26 @@ public final class ModItems { () -> new BlockItem(ModBlocks.MIRROR_PATTERN_PROVIDER.get(), new Item.Properties()) ); + public static final RegistryObject C_H716 = ITEMS.register( + "c-h716", + () -> new BlockItem(ModBlocks.C_H716.get(), new Item.Properties()) + ); + + public static final RegistryObject FISH_DAN = ITEMS.register( + "fish_dan_", + () -> new BlockItem(ModBlocks.FISH_DAN.get(), new Item.Properties()) + ); + + public static final RegistryObject _FENG = ITEMS.register( + "_feng", + () -> new BlockItem(ModBlocks._FENG.get(), new Item.Properties()) + ); + + public static final RegistryObject XBAI = ITEMS.register( + "xbai", + () -> new BlockItem(ModBlocks.XBAI.get(), new Item.Properties()) + ); + public static final RegistryObject MIRROR_PATTERN_BINDING_TOOL = ITEMS.register( "mirror_pattern_binding_tool", () -> new MirrorPatternBindingToolItem(new Item.Properties()) diff --git a/src/main/java/com/extendedae_plus/items/tools/MirrorPatternBindingToolItem.java b/src/main/java/com/extendedae_plus/items/tools/MirrorPatternBindingToolItem.java index aa280ed..2c4b3a8 100644 --- a/src/main/java/com/extendedae_plus/items/tools/MirrorPatternBindingToolItem.java +++ b/src/main/java/com/extendedae_plus/items/tools/MirrorPatternBindingToolItem.java @@ -1,13 +1,18 @@ package com.extendedae_plus.items.tools; -import appeng.blockentity.crafting.PatternProviderBlockEntity; +import appeng.blockentity.networking.CableBusBlockEntity; +import appeng.helpers.patternprovider.PatternProviderLogicHost; +import appeng.parts.AEBasePart; import com.extendedae_plus.content.ae2.MirrorPatternProviderBlockEntity; +import com.extendedae_plus.content.ae2.MirrorPatternProviderBlockEntity.MasterLocation; import net.minecraft.core.BlockPos; +import net.minecraft.core.Direction; import net.minecraft.core.GlobalPos; import net.minecraft.core.registries.Registries; import net.minecraft.nbt.CompoundTag; import net.minecraft.nbt.Tag; import net.minecraft.network.chat.Component; +import net.minecraft.network.chat.MutableComponent; import net.minecraft.resources.ResourceKey; import net.minecraft.resources.ResourceLocation; import net.minecraft.world.InteractionHand; @@ -19,6 +24,7 @@ import net.minecraft.world.item.ItemStack; import net.minecraft.world.item.TooltipFlag; import net.minecraft.world.item.context.UseOnContext; import net.minecraft.world.level.Level; +import net.minecraft.world.phys.Vec3; import org.jetbrains.annotations.Nullable; import java.util.List; @@ -28,6 +34,7 @@ public class MirrorPatternBindingToolItem extends Item { private static final String TAG_SELECTED_RANGE_START = "selectedRangeStart"; private static final String TAG_DIMENSION = "dimension"; private static final String TAG_POS = "pos"; + private static final String TAG_SIDE = "side"; public MirrorPatternBindingToolItem(Properties properties) { super(properties.stacksTo(1)); @@ -43,31 +50,18 @@ public class MirrorPatternBindingToolItem extends Item { return this.handleBlockUse(context, context.getItemInHand()); } - public InteractionResult handleBlockUse(UseOnContext context, ItemStack stack) { + private InteractionResult handleBlockUse(UseOnContext context, ItemStack stack) { var level = context.getLevel(); var player = context.getPlayer(); var blockEntity = level.getBlockEntity(context.getClickedPos()); - if (blockEntity instanceof PatternProviderBlockEntity - && !(blockEntity instanceof MirrorPatternProviderBlockEntity)) { + var clickedMaster = getClickedMaster(level, context); + if (clickedMaster != null) { if (player != null && player.isShiftKeyDown()) { if (!level.isClientSide) { - if (MirrorPatternProviderBlockEntity.isSupportedMaster(blockEntity)) { - setSelectedMaster(stack, GlobalPos.of(level.dimension(), context.getClickedPos())); - clearSelectedRangeStart(stack); - player.displayClientMessage( - Component.translatable( - "extendedae_plus.message.mirror_binding_tool.selected", - context.getClickedPos().getX(), - context.getClickedPos().getY(), - context.getClickedPos().getZ()), - true); - } else { - player.displayClientMessage( - Component.translatable( - "extendedae_plus.message.mirror_binding_tool.unsupported_provider"), - true); - } + setSelectedMaster(stack, clickedMaster); + clearSelectedRangeStart(stack); + player.displayClientMessage(createSelectedMessage(clickedMaster), true); } return InteractionResult.sidedSuccess(level.isClientSide); } @@ -127,7 +121,6 @@ public class MirrorPatternBindingToolItem extends Item { tooltipComponents.add(Component.translatable("item.extendedae_plus.mirror_pattern_binding_tool.tip.bind")); tooltipComponents.add(Component.translatable("item.extendedae_plus.mirror_pattern_binding_tool.tip.unbind")); tooltipComponents.add(Component.translatable("item.extendedae_plus.mirror_pattern_binding_tool.tip.range")); - tooltipComponents.add(Component.translatable("item.extendedae_plus.mirror_pattern_binding_tool.tip.clear")); var selectedMaster = getSelectedMaster(stack); if (selectedMaster != null) { @@ -140,6 +133,9 @@ public class MirrorPatternBindingToolItem extends Item { tooltipComponents.add(Component.translatable( "item.extendedae_plus.mirror_pattern_binding_tool.dimension", selectedMaster.dimension().location().toString())); + if (selectedMaster.side() != null) { + tooltipComponents.add(Component.literal("方向: " + selectedMaster.side().getSerializedName())); + } } else { tooltipComponents.add(Component.translatable("item.extendedae_plus.mirror_pattern_binding_tool.unset")); } @@ -155,9 +151,9 @@ public class MirrorPatternBindingToolItem extends Item { } } - private static void setSelectedMaster(ItemStack stack, GlobalPos master) { + private static void setSelectedMaster(ItemStack stack, MasterLocation master) { var tag = stack.getOrCreateTag(); - tag.put(TAG_SELECTED_MASTER, createGlobalPosTag(master)); + tag.put(TAG_SELECTED_MASTER, createMasterTag(master)); } private static void clearSelectedMaster(ItemStack stack) { @@ -180,8 +176,8 @@ public class MirrorPatternBindingToolItem extends Item { } @Nullable - private static GlobalPos getSelectedMaster(ItemStack stack) { - return getStoredGlobalPos(stack, TAG_SELECTED_MASTER); + private static MasterLocation getSelectedMaster(ItemStack stack) { + return getStoredMasterLocation(stack, TAG_SELECTED_MASTER); } @Nullable @@ -189,6 +185,14 @@ public class MirrorPatternBindingToolItem extends Item { return getStoredGlobalPos(stack, TAG_SELECTED_RANGE_START); } + private static CompoundTag createMasterTag(MasterLocation master) { + var selectedTag = createGlobalPosTag(master.asGlobalPos()); + if (master.side() != null) { + selectedTag.putString(TAG_SIDE, master.side().getSerializedName()); + } + return selectedTag; + } + private static CompoundTag createGlobalPosTag(GlobalPos globalPos) { var selectedTag = new CompoundTag(); selectedTag.putString(TAG_DIMENSION, globalPos.dimension().location().toString()); @@ -196,6 +200,27 @@ public class MirrorPatternBindingToolItem extends Item { return selectedTag; } + @Nullable + private static MasterLocation getStoredMasterLocation(ItemStack stack, String tagKey) { + var globalPos = getStoredGlobalPos(stack, tagKey); + if (globalPos == null) { + return null; + } + + var tag = stack.getTag(); + if (tag == null) { + return null; + } + + var selectedTag = tag.getCompound(tagKey); + Direction side = null; + if (selectedTag.contains(TAG_SIDE, Tag.TAG_STRING)) { + side = Direction.byName(selectedTag.getString(TAG_SIDE)); + } + + return new MasterLocation(globalPos.dimension(), globalPos.pos(), side); + } + @Nullable private static GlobalPos getStoredGlobalPos(ItemStack stack, String tagKey) { var tag = stack.getTag(); @@ -261,7 +286,7 @@ public class MirrorPatternBindingToolItem extends Item { true); } - private static RangeBindResult bindMirrorsInRange(Level level, BlockPos start, BlockPos end, GlobalPos selectedMaster) { + private static RangeBindResult bindMirrorsInRange(Level level, BlockPos start, BlockPos end, MasterLocation selectedMaster) { int totalMirrors = 0; int boundMirrors = 0; @@ -285,6 +310,48 @@ public class MirrorPatternBindingToolItem extends Item { return new RangeBindResult(totalMirrors, boundMirrors, totalMirrors - boundMirrors); } + @Nullable + private static MasterLocation getClickedMaster(Level level, UseOnContext context) { + var pos = context.getClickedPos(); + var blockEntity = level.getBlockEntity(pos); + if (blockEntity == null || blockEntity instanceof MirrorPatternProviderBlockEntity) { + return null; + } + + if (blockEntity instanceof PatternProviderLogicHost) { + return new MasterLocation(level.dimension(), pos, null); + } + + if (blockEntity instanceof CableBusBlockEntity cableBus) { + Vec3 hitVec = context.getClickLocation(); + Vec3 hitInBlock = new Vec3(hitVec.x - pos.getX(), hitVec.y - pos.getY(), hitVec.z - pos.getZ()); + var selectedPart = cableBus.getCableBus().selectPartLocal(hitInBlock).part; + if (selectedPart instanceof AEBasePart basePart + && selectedPart instanceof PatternProviderLogicHost) { + return new MasterLocation(level.dimension(), pos, basePart.getSide()); + } + } + + return null; + } + + private static Component createSelectedMessage(MasterLocation master) { + return appendSide( + Component.translatable( + "extendedae_plus.message.mirror_binding_tool.selected", + master.pos().getX(), + master.pos().getY(), + master.pos().getZ()), + master.side()); + } + + private static Component appendSide(MutableComponent message, @Nullable Direction side) { + if (side != null) { + message.append(Component.literal(" [" + side.getSerializedName() + "]")); + } + return message; + } + @Override public InteractionResultHolder use(Level level, Player player, InteractionHand usedHand) { var stack = player.getItemInHand(usedHand); diff --git a/src/main/java/com/extendedae_plus/mixin/ae2/helpers/patternprovider/PatternProviderLogicSyncVersionMixin.java b/src/main/java/com/extendedae_plus/mixin/ae2/helpers/patternprovider/PatternProviderLogicSyncVersionMixin.java index af8cdc1..22d0d2e 100644 --- a/src/main/java/com/extendedae_plus/mixin/ae2/helpers/patternprovider/PatternProviderLogicSyncVersionMixin.java +++ b/src/main/java/com/extendedae_plus/mixin/ae2/helpers/patternprovider/PatternProviderLogicSyncVersionMixin.java @@ -1,7 +1,7 @@ package com.extendedae_plus.mixin.ae2.helpers.patternprovider; import appeng.helpers.patternprovider.PatternProviderLogic; -import appeng.util.inv.AppEngInternalInventory; +import appeng.api.inventories.InternalInventory; import com.extendedae_plus.api.bridge.PatternProviderLogicSyncBridge; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.Unique; @@ -15,7 +15,7 @@ public abstract class PatternProviderLogicSyncVersionMixin implements PatternPro private long eap$patternSyncVersion; @Inject(method = "onChangeInventory", at = @At("TAIL")) - private void eap$trackPatternInventoryChanges(AppEngInternalInventory inv, int slot, CallbackInfo ci) { + private void eap$trackPatternInventoryChanges(InternalInventory inv, int slot, CallbackInfo ci) { this.eap$patternSyncVersion++; } diff --git a/src/main/resources/assets/extendedae_plus/ae2guide/_zh_cn/introduction/items/assembler_matrix_plus_cores.md b/src/main/resources/assets/extendedae_plus/ae2guide/_zh_cn/introduction/items/assembler_matrix_plus_cores.md index 851c093..6a2a81d 100644 --- a/src/main/resources/assets/extendedae_plus/ae2guide/_zh_cn/introduction/items/assembler_matrix_plus_cores.md +++ b/src/main/resources/assets/extendedae_plus/ae2guide/_zh_cn/introduction/items/assembler_matrix_plus_cores.md @@ -25,7 +25,7 @@ item_ids: - **超级装配矩阵样板核心**:;每个核心提供 72 个样板槽位。 - **超级装配矩阵合成核心**:每个核心可同时运行 32 个合成任务。 -- **超级装配矩阵速度核心**:提供相当于普通速度核心5倍的加速效果。 +- **超级装配矩阵速度核心**:提供相当于普通速度核心5倍的加速效果。(一个的效果顶原版五个,放一个就到上限了,多放无用。) diff --git a/src/main/resources/assets/extendedae_plus/ae2guide/introduction/devices/entity_speed_ticker_part.md b/src/main/resources/assets/extendedae_plus/ae2guide/introduction/devices/entity_speed_ticker_part.md index 4481cf8..e95a106 100644 --- a/src/main/resources/assets/extendedae_plus/ae2guide/introduction/devices/entity_speed_ticker_part.md +++ b/src/main/resources/assets/extendedae_plus/ae2guide/introduction/devices/entity_speed_ticker_part.md @@ -26,7 +26,7 @@ The **Entity Accelerator** consumes energy from the AE2 network to accelerate bl - If the *Applied Flux* mod is installed, FE energy stored in network disks can be consumed to continue acceleration when AE energy is insufficient (priority configurable). 4. **Configuration Options:** Base energy consumption, entity blacklist, and per-entity energy multiplier can be adjusted via the config file. -![Entity Accelerator Interface](../../picture/entity_speed_ticker.png) +![Entity Accelerator Interface](../../picture/entity_speed_ticker_en.png) ## Energy Consumption Mechanism @@ -95,4 +95,4 @@ Let \( N \) = number of installed energy cards - Energy Ratio: 82.85% - **Final Energy Consumption:** 65,536 × 0.8285 ≈ 54,267 AE -> Actual energy consumption may vary depending on entity-specific configuration. \ No newline at end of file +> Actual energy consumption may vary depending on entity-specific configuration. diff --git a/src/main/resources/assets/extendedae_plus/ae2guide/introduction/devices/network_pattern_controller.md b/src/main/resources/assets/extendedae_plus/ae2guide/introduction/devices/network_pattern_controller.md index 4bb3dbc..06ee7ce 100644 --- a/src/main/resources/assets/extendedae_plus/ae2guide/introduction/devices/network_pattern_controller.md +++ b/src/main/resources/assets/extendedae_plus/ae2guide/introduction/devices/network_pattern_controller.md @@ -18,7 +18,7 @@ The **Pattern Provider Status Controller** is a central control unit that allows ## User Interface & Operations -![Pattern Provider Status Controller Interface](../../picture/network_pattern_controller.png) +![Pattern Provider Status Controller Interface](../../picture/network_pattern_controller_en.png) The controller UI provides the following control options: diff --git a/src/main/resources/assets/extendedae_plus/ae2guide/introduction/items/assembler_matrix_plus_cores.md b/src/main/resources/assets/extendedae_plus/ae2guide/introduction/items/assembler_matrix_plus_cores.md index 52b57e8..38ef602 100644 --- a/src/main/resources/assets/extendedae_plus/ae2guide/introduction/items/assembler_matrix_plus_cores.md +++ b/src/main/resources/assets/extendedae_plus/ae2guide/introduction/items/assembler_matrix_plus_cores.md @@ -25,6 +25,6 @@ Their roles are analogous to the original ExtendedAE Assembler Matrix cores, but - **Assembler Matrix Pattern Core+**: each core provides **72 pattern slots**. - **Assembler Matrix Craft Core+**: each core can run **32 crafting jobs in parallel**. -- **Assembler Matrix Speed Core+**: provides **5× the effect of a regular speed core** for the matrix. +- **Assembler Matrix Speed Core+**: provides **5× the effect of a regular speed core** for the matrix.(It’s just that its strength is five times, so placing just one is enough.) diff --git a/src/main/resources/assets/extendedae_plus/ae2guide/picture/entity_speed_ticker_en.png b/src/main/resources/assets/extendedae_plus/ae2guide/picture/entity_speed_ticker_en.png new file mode 100644 index 0000000000000000000000000000000000000000..95da6c9ab9a0c4aff26f2569badb83f76899cd44 GIT binary patch literal 12802 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 literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/extendedae_plus/ae2guide/picture/network_pattern_controller_en.png b/src/main/resources/assets/extendedae_plus/ae2guide/picture/network_pattern_controller_en.png new file mode 100644 index 0000000000000000000000000000000000000000..60bfe0977f287904f67aa0b9b7a12f4ce94c7342 GIT binary patch literal 8484 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 %s", diff --git a/src/main/resources/assets/extendedae_plus/lang/zh_cn.json b/src/main/resources/assets/extendedae_plus/lang/zh_cn.json index b1c1833..2213316 100644 --- a/src/main/resources/assets/extendedae_plus/lang/zh_cn.json +++ b/src/main/resources/assets/extendedae_plus/lang/zh_cn.json @@ -18,6 +18,10 @@ "item.extendedae_plus.256x_crafting_accelerator": "256x并行处理单元", "item.extendedae_plus.1024x_crafting_accelerator": "1024x并行处理单元", "item.extendedae_plus.network_pattern_controller": "样板供应器状态控制器", + "item.extendedae_plus.c-h716": "C-H716 玩偶", + "item.extendedae_plus.fish_dan_": "Fish_Dan_ 玩偶", + "item.extendedae_plus._feng": "_feng 玩偶", + "item.extendedae_plus.xbai": "Xbai 玩偶", "item.extendedae_plus.entity_speed_card": "实体加速卡", "item.extendedae_plus.entity_speed_card.x1": "§k§l?#@§r§8不§k§l1§r限§k§l0§r存于§k§l%§r现实的§c实§k&0%§r体加§k§l*§r速卡§k§l...§r", "item.extendedae_plus.entity_speed_card.x2": "实体加速卡 (x2)", @@ -68,6 +72,10 @@ "block.extendedae_plus.256x_crafting_accelerator": "256x并行处理单元", "block.extendedae_plus.1024x_crafting_accelerator": "1024x并行处理单元", "block.extendedae_plus.network_pattern_controller": "样板供应器状态控制器", + "block.extendedae_plus.c-h716": "C-H716 玩偶", + "block.extendedae_plus.fish_dan_": "Fish_Dan_ 玩偶", + "block.extendedae_plus._feng": "_feng 玩偶", + "block.extendedae_plus.xbai": "Xbai 玩偶", "block.extendedae_plus.mirror_pattern_provider": "镜像样板供应器", "block.extendedae_plus.assembler_matrix_upload_core": "装配矩阵上传核心", "block.extendedae_plus.assembler_matrix_speed_plus": "超级装配矩阵速度核心", @@ -115,6 +123,7 @@ "extendedae_plus.screen.reload_mapping_fail": "重载映射失败: %s", "extendedae_plus.screen.add_mapping": "增加映射", "extendedae_plus.screen.delete_mapping": "删除映射", + "extendedae_plus.screen.auto_upload_unique_match": "唯一匹配时自动上传: %s", "extendedae_plus.screen.upload.enter_search_key": "请输入搜索关键字后再添加映射", "extendedae_plus.screen.upload.enter_name": "请输入名称", "extendedae_plus.screen.upload.mapping_added": "已添加/更新映射: %s -> %s", diff --git a/src/main/resources/assets/extendedae_plus/lang/zh_tw.json b/src/main/resources/assets/extendedae_plus/lang/zh_tw.json index 2d84a9b..5885726 100644 --- a/src/main/resources/assets/extendedae_plus/lang/zh_tw.json +++ b/src/main/resources/assets/extendedae_plus/lang/zh_tw.json @@ -18,6 +18,10 @@ "item.extendedae_plus.256x_crafting_accelerator": "256x並行處理單元", "item.extendedae_plus.1024x_crafting_accelerator": "1024x並行處理單元", "item.extendedae_plus.network_pattern_controller": "樣板供應器狀態控制器", + "item.extendedae_plus.c-h716": "C-H716 玩偶", + "item.extendedae_plus.fish_dan_": "Fish_Dan_ 玩偶", + "item.extendedae_plus._feng": "_feng 玩偶", + "item.extendedae_plus.xbai": "Xbai 玩偶", "item.extendedae_plus.entity_speed_card": "實體加速卡", "item.extendedae_plus.entity_speed_card.x1": "§k§l?#@§r§8不§k§l1§r限§k§l0§r存於§k§l%§r現實的§c實§k&0%§r體加§k§l*§r速卡§k§l...§r", "item.extendedae_plus.entity_speed_card.x2": "實體加速卡 (x2)", @@ -50,11 +54,11 @@ "tooltip.extendedae_plus.basic_core.ready_to_craft": "核心構建完成,等待最終合成", "tooltip.extendedae_plus.infinity_biginteger_cell": "§7——§b絕對儲存的現實投影,§e\"有限\"§6已被定義為§c非法\n§b其存在本身,即是對§d熵增§b的終極否定", "tooltip.extendedae_plus.entity_speed_card.multiplier": "乘數: %s", - "tooltip.extendedae_plus.entity_speed_card.max": "最大生效: %s 倍", - "extendedae_plus.tooltip.swap_processing_outputs": "主副切換", - "extendedae_plus.tooltip.restore_processing_ratio": "恢復比例", - - "block.extendedae_plus.assembler_matrix_upload_core.tooltip": "裝配矩陣上傳核心", + "tooltip.extendedae_plus.entity_speed_card.max": "最大生效: %s 倍", + "extendedae_plus.tooltip.swap_processing_outputs": "主副切換", + "extendedae_plus.tooltip.restore_processing_ratio": "恢復比例", + + "block.extendedae_plus.assembler_matrix_upload_core.tooltip": "裝配矩陣上傳核心", "block.extendedae_plus.assembler_matrix_upload_core.tooltip.upload": "上傳到裝配矩陣", "block.extendedae_plus.assembler_matrix_upload_core.tooltip.upload_success": "樣板已上傳到裝配矩陣", "block.extendedae_plus.assembler_matrix_upload_core.tooltip.upload_fail_not_crafting": "僅支援上傳合成樣板,處理樣板將被忽略", @@ -68,11 +72,15 @@ "block.extendedae_plus.256x_crafting_accelerator": "256x並行處理單元", "block.extendedae_plus.1024x_crafting_accelerator": "1024x並行處理單元", "block.extendedae_plus.network_pattern_controller": "樣板供應器狀態控制器", + "block.extendedae_plus.c-h716": "C-H716 玩偶", + "block.extendedae_plus.fish_dan_": "Fish_Dan_ 玩偶", + "block.extendedae_plus._feng": "_feng 玩偶", + "block.extendedae_plus.xbai": "Xbai 玩偶", "block.extendedae_plus.assembler_matrix_upload_core": "裝配矩陣上傳核心", "block.extendedae_plus.assembler_matrix_speed_plus": "超級裝配矩陣速度核心", "block.extendedae_plus.assembler_matrix_crafter_plus": "超級裝配矩陣合成核心", - "block.extendedae_plus.assembler_matrix_pattern_plus": "超級裝配矩陣樣板核心", - "gui.extendedae_plus.assembler_matrix.pattern": "超級裝配矩陣樣板核心", + "block.extendedae_plus.assembler_matrix_pattern_plus": "超級裝配矩陣樣板核心", + "gui.extendedae_plus.assembler_matrix.pattern": "超級裝配矩陣樣板核心", "block.extendedae_plus.labeled_wireless_transceiver": "標籤無線收發器", "extendedae_plus.upload_to_matrix": "上傳到裝配矩陣", @@ -114,6 +122,7 @@ "extendedae_plus.screen.reload_mapping_fail": "重新載入對映失敗: %s", "extendedae_plus.screen.add_mapping": "增加對映", "extendedae_plus.screen.delete_mapping": "刪除對映", + "extendedae_plus.screen.auto_upload_unique_match": "唯一匹配時自動上傳: %s", "extendedae_plus.screen.upload.enter_search_key": "請輸入搜尋關鍵字後再新增對映", "extendedae_plus.screen.upload.enter_name": "請輸入名稱", "extendedae_plus.screen.upload.mapping_added": "已新增/更新對映: %s -> %s", @@ -122,13 +131,13 @@ "extendedae_plus.screen.upload.mapping_deleted": "已刪除 %d 條對映,名稱 = %s", "extendedae_plus.screen.upload.mapping_not_found": "未找到名稱為 '%s' 的對映", "extendedae_plus.screen.upload.name": "對映名", - "extendedae_plus.screen.upload.select_provider_first": "請先點選左側按鈕選擇一個樣板供應器", - "extendedae_plus.screen.upload.invalid_pattern": "無效樣板", - "extendedae_plus.screen.upload.no_network_support": "未找到 ExtendedAE 網路支援(可能未安裝或版本不相容)", - "extendedae_plus.screen.upload.auto_upload_success": "已自動上傳到唯一匹配的樣板供應器:%s", - "extendedae_plus.screen.upload.auto_upload_failed": "自動上傳到樣板供應器失敗:%s", - - "extendedae_plus.screen.open_provider_ui": "開啟該供應器目標容器的介面", + "extendedae_plus.screen.upload.select_provider_first": "請先點選左側按鈕選擇一個樣板供應器", + "extendedae_plus.screen.upload.invalid_pattern": "無效樣板", + "extendedae_plus.screen.upload.no_network_support": "未找到 ExtendedAE 網路支援(可能未安裝或版本不相容)", + "extendedae_plus.screen.upload.auto_upload_success": "已自動上傳到唯一匹配的樣板供應器:%s", + "extendedae_plus.screen.upload.auto_upload_failed": "自動上傳到樣板供應器失敗:%s", + + "extendedae_plus.screen.open_provider_ui": "開啟該供應器目標容器的介面", "extendedae_plus.button.choose_provider": "上傳樣板", "extendedae_plus.pattern.hovertext.player": "由 %s 編碼", diff --git a/src/main/resources/assets/extendedae_plus/models/block/_feng.json b/src/main/resources/assets/extendedae_plus/models/block/_feng.json new file mode 100644 index 0000000..22d98e0 --- /dev/null +++ b/src/main/resources/assets/extendedae_plus/models/block/_feng.json @@ -0,0 +1,208 @@ +{ + "format_version": "1.9.0", + "credit": "Made with Blockbench", + "render_type": "cutout", + "textures": { + "1": "extendedae_plus:block/_feng_fumo", + "particle": "extendedae_plus:block/_feng_fumo" + }, + "elements": [ + { + "name": "Head", + "from": [4.35, 6, 7.35], + "to": [11.65, 13.3, 14.65], + "faces": { + "north": {"uv": [2, 2, 4, 4], "texture": "#1"}, + "east": {"uv": [0, 2, 2, 4], "texture": "#1"}, + "south": {"uv": [6, 2, 8, 4], "texture": "#1"}, + "west": {"uv": [4, 2, 6, 4], "texture": "#1"}, + "up": {"uv": [4, 2, 2, 0], "texture": "#1"}, + "down": {"uv": [4, 0, 6, 2], "texture": "#1"} + } + }, + { + "name": "Hat Layer", + "from": [4.1, 6, 7], + "to": [11.8, 13.6, 14.7], + "faces": { + "north": {"uv": [10, 2, 12, 4], "texture": "#1"}, + "east": {"uv": [8, 2, 10, 4], "texture": "#1"}, + "south": {"uv": [14, 2, 16, 4], "texture": "#1"}, + "west": {"uv": [12, 2, 14, 4], "texture": "#1"}, + "up": {"uv": [12, 2, 10, 0], "texture": "#1"}, + "down": {"uv": [12, 0, 14, 2], "texture": "#1"} + } + }, + { + "name": "Left Arm", + "from": [4, 0.35599, 10.01167], + "to": [5.5, 6.35599, 12.01167], + "rotation": {"angle": -22.5, "axis": "z", "origin": [4.7627, 3.35599, 11.01167]}, + "faces": { + "north": {"uv": [9, 13, 9.75, 16], "texture": "#1"}, + "east": {"uv": [8, 13, 9, 16], "texture": "#1"}, + "south": {"uv": [10.75, 13, 11.5, 16], "texture": "#1"}, + "west": {"uv": [9.75, 13, 10.5, 16], "texture": "#1"}, + "up": {"uv": [9, 12, 9.75, 13], "texture": "#1"}, + "down": {"uv": [9.75, 12, 10.5, 13], "texture": "#1"} + } + }, + { + "name": "Left Arm Layer", + "from": [3.9254, 0.25599, 9.91167], + "to": [5.6254, 6.45599, 12.11167], + "rotation": {"angle": -22.5, "axis": "z", "origin": [4.7627, 3.35599, 11.01167]}, + "faces": { + "north": {"uv": [13, 13, 13.75, 16], "texture": "#1"}, + "east": {"uv": [12, 13, 13, 16], "texture": "#1"}, + "south": {"uv": [14.5, 13, 15.25, 16], "texture": "#1"}, + "west": {"uv": [13.75, 13, 14.5, 16], "texture": "#1"}, + "up": {"uv": [13, 12, 13.75, 13], "texture": "#1"}, + "down": {"uv": [13.75, 12, 14.5, 13], "texture": "#1"} + } + }, + { + "name": "RightArm", + "from": [10.6, 0.34246, 9.979], + "to": [12.1, 6.34246, 11.979], + "rotation": {"angle": 22.5, "axis": "z", "origin": [11.25663, 3.34246, 10.979]}, + "faces": { + "north": {"uv": [11, 5, 11.75, 8], "texture": "#1"}, + "east": {"uv": [10, 5, 11, 8], "texture": "#1"}, + "south": {"uv": [12.75, 5, 13.5, 8], "texture": "#1"}, + "west": {"uv": [11.75, 5, 12.5, 8], "texture": "#1"}, + "up": {"uv": [11, 4, 11.75, 5], "texture": "#1"}, + "down": {"uv": [11.75, 4, 12.5, 5], "texture": "#1"} + } + }, + { + "name": "Right Arm Layer", + "from": [10.48163, 0.24246, 9.879], + "to": [12.18163, 6.44246, 12.079], + "rotation": {"angle": 22.5, "axis": "z", "origin": [11.28163, 3.34246, 10.979]}, + "faces": { + "north": {"uv": [11, 9, 11.75, 12], "texture": "#1"}, + "east": {"uv": [10, 9, 11, 12], "texture": "#1"}, + "south": {"uv": [12.75, 9, 13.5, 12], "texture": "#1"}, + "west": {"uv": [11.75, 9, 12.5, 12], "texture": "#1"}, + "up": {"uv": [11, 8, 11.75, 9], "texture": "#1"}, + "down": {"uv": [11.75, 8, 12.5, 9], "texture": "#1"} + } + }, + { + "name": "Left Leg", + "from": [8, -0.1, 4], + "to": [10, 1.9, 10], + "rotation": {"angle": -22.5, "axis": "y", "origin": [8, 0, 11]}, + "faces": { + "north": {"uv": [2, 4, 3, 5], "texture": "#1"}, + "east": {"uv": [0, 8, 1, 5], "rotation": 90, "texture": "#1"}, + "south": {"uv": [1, 4, 2, 5], "texture": "#1"}, + "west": {"uv": [2, 5, 3, 8], "rotation": 90, "texture": "#1"}, + "up": {"uv": [2, 8, 1, 5], "texture": "#1"}, + "down": {"uv": [3, 5, 4, 8], "texture": "#1"} + } + }, + { + "name": "Left Leg Layer", + "from": [7.9, -0.2, 3.9], + "to": [10.1, 2, 10.1], + "rotation": {"angle": -22.5, "axis": "y", "origin": [8, 0, 11]}, + "faces": { + "north": {"uv": [2, 8, 3, 9], "texture": "#1"}, + "east": {"uv": [0, 12, 1, 9], "rotation": 90, "texture": "#1"}, + "south": {"uv": [1, 8, 2, 9], "texture": "#1"}, + "west": {"uv": [2, 9, 3, 12], "rotation": 90, "texture": "#1"}, + "up": {"uv": [2, 12, 1, 9], "texture": "#1"}, + "down": {"uv": [3, 9, 4, 12], "texture": "#1"} + } + }, + { + "name": "Right Leg", + "from": [6, -0.1, 4], + "to": [8, 1.9, 10], + "rotation": {"angle": 22.5, "axis": "y", "origin": [8, 0, 11]}, + "faces": { + "north": {"uv": [6, 12, 7, 13], "texture": "#1"}, + "east": {"uv": [4, 16, 5, 13], "rotation": 90, "texture": "#1"}, + "south": {"uv": [5, 12, 6, 13], "texture": "#1"}, + "west": {"uv": [6, 13, 7, 16], "rotation": 90, "texture": "#1"}, + "up": {"uv": [6, 16, 5, 13], "texture": "#1"}, + "down": {"uv": [7, 13, 8, 16], "texture": "#1"} + } + }, + { + "name": "Right Leg Layer", + "from": [5.9, -0.2, 3.9], + "to": [8.1, 2, 10.1], + "rotation": {"angle": 22.5, "axis": "y", "origin": [8, 0, 11]}, + "faces": { + "north": {"uv": [2, 12, 3, 13], "texture": "#1"}, + "east": {"uv": [0, 16, 1, 13], "rotation": 90, "texture": "#1"}, + "south": {"uv": [1, 12, 2, 13], "texture": "#1"}, + "west": {"uv": [2, 13, 3, 16], "rotation": 90, "texture": "#1"}, + "up": {"uv": [2, 16, 1, 13], "texture": "#1"}, + "down": {"uv": [3, 13, 4, 16], "texture": "#1"} + } + }, + { + "name": "Body", + "from": [5.6, 0, 9.6], + "to": [10.4, 6, 12.4], + "faces": { + "north": {"uv": [5, 5, 7, 8], "texture": "#1"}, + "east": {"uv": [4, 5, 5, 8], "texture": "#1"}, + "south": {"uv": [8, 5, 10, 8], "texture": "#1"}, + "west": {"uv": [7, 5, 8, 8], "texture": "#1"}, + "up": {"uv": [5, 5, 7, 4], "texture": "#1"}, + "down": {"uv": [7, 5, 9, 4], "texture": "#1"} + } + }, + { + "name": "Body Layer", + "from": [5.5, -0.1, 9.5], + "to": [10.5, 6.1, 12.5], + "faces": { + "north": {"uv": [5, 9, 7, 12], "texture": "#1"}, + "east": {"uv": [4, 9, 5, 12], "texture": "#1"}, + "south": {"uv": [8, 9, 10, 12], "texture": "#1"}, + "west": {"uv": [7, 9, 8, 12], "texture": "#1"}, + "up": {"uv": [5, 9, 7, 8], "texture": "#1"}, + "down": {"uv": [7, 9, 9, 8], "texture": "#1"} + } + } + ], + "display": { + "thirdperson_righthand": { + "rotation": [60, 0, 0], + "translation": [0.25, 4.25, 1.25], + "scale": [0.7, 0.7, 0.7] + }, + "thirdperson_lefthand": { + "rotation": [60, 0, 0], + "translation": [0.25, 4.25, 1.25], + "scale": [0.7, 0.7, 0.7] + }, + "firstperson_righthand": { + "rotation": [0, 120, 0], + "translation": [0, 3.75, 0], + "scale": [0.5, 0.5, 0.5] + }, + "firstperson_lefthand": { + "rotation": [0, 123, 0], + "translation": [0, 3.75, 0], + "scale": [0.5, 0.5, 0.5] + }, + "ground": { + "translation": [0, 5, 0], + "scale": [0.5, 0.5, 0.5] + }, + "gui": { + "rotation": [15, 150, 0], + "scale": [0.7, 0.7, 0.7] + }, + "fixed": { + "translation": [0, 0, -3.5] + } + } +} diff --git a/src/main/resources/assets/extendedae_plus/models/block/c-h716.json b/src/main/resources/assets/extendedae_plus/models/block/c-h716.json new file mode 100644 index 0000000..140f10c --- /dev/null +++ b/src/main/resources/assets/extendedae_plus/models/block/c-h716.json @@ -0,0 +1,222 @@ +{ + "format_version": "1.21.6", + "credit": "Made with Blockbench", + "render_type": "cutout", + "textures": { + "1": "extendedae_plus:block/iava_user", + "2": "extendedae_plus:block/infinity_biginteger_cell", + "particle": "extendedae_plus:block/iava_user" + }, + "elements": [ + { + "name": "Head", + "from": [4.35, 6, 7.35], + "to": [11.65, 13.3, 14.65], + "faces": { + "north": {"uv": [2, 2, 4, 4], "texture": "#1"}, + "east": {"uv": [0, 2, 2, 4], "texture": "#1"}, + "south": {"uv": [6, 2, 8, 4], "texture": "#1"}, + "west": {"uv": [4, 2, 6, 4], "texture": "#1"}, + "up": {"uv": [2, 2, 4, 0], "texture": "#1"}, + "down": {"uv": [4, 0, 6, 2], "texture": "#1"} + } + }, + { + "name": "Hat Layer", + "from": [4.1, 6, 7], + "to": [11.8, 13.6, 14.675], + "faces": { + "north": {"uv": [10, 2, 12, 4], "texture": "#1"}, + "east": {"uv": [8, 2, 10, 4], "texture": "#1"}, + "south": {"uv": [14, 2, 16, 4], "texture": "#1"}, + "west": {"uv": [12, 2, 14, 4], "texture": "#1"}, + "up": {"uv": [10, 2, 12, 0], "texture": "#1"}, + "down": {"uv": [12, 0, 14, 2], "texture": "#1"} + } + }, + { + "name": "Left Arm", + "from": [5, 4, 7.08248], + "to": [6.5, 6, 13.08248], + "rotation": {"angle": -22.5, "axis": "x", "origin": [8.04619, 5, 9.15224]}, + "faces": { + "north": {"uv": [9.75, 12, 10.5, 13], "rotation": 180, "texture": "#1"}, + "east": {"uv": [8, 13, 9, 16], "rotation": 270, "texture": "#1"}, + "south": {"uv": [9, 12, 9.75, 13], "texture": "#1"}, + "west": {"uv": [9.75, 13, 10.5, 16], "rotation": 90, "texture": "#1"}, + "up": {"uv": [9, 13, 9.75, 16], "rotation": 180, "texture": "#1"}, + "down": {"uv": [10.5, 13, 11.5, 16], "texture": "#1"} + } + }, + { + "name": "Left Arm Layer", + "from": [4.9004, 3.9, 6.98248], + "to": [6.6004, 6.1, 13.18248], + "rotation": {"angle": -22.5, "axis": "x", "origin": [7.89619, 5, 9.15224]}, + "faces": { + "north": {"uv": [13.75, 12, 14.5, 13], "rotation": 180, "texture": "#1"}, + "east": {"uv": [12, 13, 13, 16], "rotation": 270, "texture": "#1"}, + "south": {"uv": [13, 12, 13.75, 13], "texture": "#1"}, + "west": {"uv": [13.75, 13, 14.5, 16], "rotation": 90, "texture": "#1"}, + "up": {"uv": [13, 13, 13.75, 16], "rotation": 180, "texture": "#1"}, + "down": {"uv": [14.5, 13, 15.5, 16], "texture": "#1"} + } + }, + { + "name": "RightArm", + "from": [9.6, 4.34246, 6.979], + "to": [11.1, 6.34246, 12.979], + "rotation": {"angle": -22.5, "axis": "x", "origin": [10.25663, 5.34246, 9.979]}, + "faces": { + "north": {"uv": [11.75, 4, 12.5, 5], "rotation": 180, "texture": "#1"}, + "east": {"uv": [10, 5, 11, 8], "rotation": 270, "texture": "#1"}, + "south": {"uv": [11, 4, 11.75, 5], "texture": "#1"}, + "west": {"uv": [11.75, 5, 12.5, 8], "rotation": 90, "texture": "#1"}, + "up": {"uv": [11, 5, 11.75, 8], "rotation": 180, "texture": "#1"}, + "down": {"uv": [12.5, 5, 13.5, 8], "texture": "#1"} + } + }, + { + "name": "Right Arm Layer", + "from": [9.50663, 4.24246, 6.879], + "to": [11.20663, 6.44246, 13.079], + "rotation": {"angle": -22.5, "axis": "x", "origin": [10.30663, 5.34246, 9.979]}, + "faces": { + "north": {"uv": [11.75, 8, 12.5, 9], "rotation": 180, "texture": "#1"}, + "east": {"uv": [10, 9, 11, 12], "rotation": 270, "texture": "#1"}, + "south": {"uv": [11, 8, 11.75, 9], "texture": "#1"}, + "west": {"uv": [11.75, 9, 12.5, 12], "rotation": 90, "texture": "#1"}, + "up": {"uv": [11, 9, 11.75, 12], "rotation": 180, "texture": "#1"}, + "down": {"uv": [12.5, 9, 13.5, 12], "texture": "#1"} + } + }, + { + "name": "Totem", + "from": [6.5, 3, 7], + "to": [9.7, 6.2, 7.1], + "faces": { + "north": {"uv": [0, 0, 16, 16], "texture": "#2"}, + "south": {"uv": [16, 0, 0, 16], "texture": "#2"} + } + }, + { + "name": "Left Leg", + "from": [8, -0.1, 4], + "to": [10, 1.9, 10], + "rotation": {"angle": -22.5, "axis": "y", "origin": [8, 0, 11]}, + "faces": { + "north": {"uv": [2, 4, 3, 5], "texture": "#1"}, + "east": {"uv": [0, 8, 1, 5], "rotation": 90, "texture": "#1"}, + "south": {"uv": [1, 4, 2, 5], "texture": "#1"}, + "west": {"uv": [2, 5, 3, 8], "rotation": 90, "texture": "#1"}, + "up": {"uv": [2, 8, 1, 5], "texture": "#1"}, + "down": {"uv": [3, 5, 4, 8], "texture": "#1"} + } + }, + { + "name": "Left Leg Layer", + "from": [7.9, -0.2, 3.9], + "to": [10.1, 2, 10.1], + "rotation": {"angle": -22.5, "axis": "y", "origin": [8, 0, 11]}, + "faces": { + "north": {"uv": [2, 8, 3, 9], "texture": "#1"}, + "east": {"uv": [0, 12, 1, 9], "rotation": 90, "texture": "#1"}, + "south": {"uv": [1, 8, 2, 9], "texture": "#1"}, + "west": {"uv": [2, 9, 3, 12], "rotation": 90, "texture": "#1"}, + "up": {"uv": [2, 12, 1, 9], "texture": "#1"}, + "down": {"uv": [3, 9, 4, 12], "texture": "#1"} + } + }, + { + "name": "Right Leg", + "from": [6, -0.1, 4], + "to": [8, 1.9, 10], + "rotation": {"angle": 22.5, "axis": "y", "origin": [8, 0, 11]}, + "faces": { + "north": {"uv": [6, 12, 7, 13], "texture": "#1"}, + "east": {"uv": [4, 16, 5, 13], "rotation": 90, "texture": "#1"}, + "south": {"uv": [5, 12, 6, 13], "texture": "#1"}, + "west": {"uv": [6, 13, 7, 16], "rotation": 90, "texture": "#1"}, + "up": {"uv": [6, 16, 5, 13], "texture": "#1"}, + "down": {"uv": [7, 13, 8, 16], "texture": "#1"} + } + }, + { + "name": "Right Leg Layer", + "from": [5.9, -0.2, 3.9], + "to": [8.1, 2, 10.1], + "rotation": {"angle": 22.5, "axis": "y", "origin": [8, 0, 11]}, + "faces": { + "north": {"uv": [2, 12, 3, 13], "texture": "#1"}, + "east": {"uv": [0, 16, 1, 13], "rotation": 90, "texture": "#1"}, + "south": {"uv": [1, 12, 2, 13], "texture": "#1"}, + "west": {"uv": [2, 13, 3, 16], "rotation": 90, "texture": "#1"}, + "up": {"uv": [2, 16, 1, 13], "texture": "#1"}, + "down": {"uv": [3, 13, 4, 16], "texture": "#1"} + } + }, + { + "name": "Body", + "from": [5.6, 0, 9.6], + "to": [10.4, 6, 12.4], + "faces": { + "north": {"uv": [5, 5, 7, 8], "texture": "#1"}, + "east": {"uv": [4, 5, 5, 8], "texture": "#1"}, + "south": {"uv": [8, 5, 10, 8], "texture": "#1"}, + "west": {"uv": [7, 5, 8, 8], "texture": "#1"}, + "up": {"uv": [5, 5, 7, 4], "texture": "#1"}, + "down": {"uv": [7, 5, 9, 4], "texture": "#1"} + } + }, + { + "name": "Body Layer", + "from": [5.5, -0.1, 9.5], + "to": [10.5, 6.1, 12.5], + "faces": { + "north": {"uv": [5, 9, 7, 12], "texture": "#1"}, + "east": {"uv": [4, 9, 5, 12], "texture": "#1"}, + "south": {"uv": [8, 9, 10, 12], "texture": "#1"}, + "west": {"uv": [7, 9, 8, 12], "texture": "#1"}, + "up": {"uv": [5, 9, 7, 8], "texture": "#1"}, + "down": {"uv": [7, 9, 9, 8], "texture": "#1"} + } + } + ], + "display": { + "thirdperson_righthand": { + "rotation": [60, 0, 0], + "translation": [0.25, 4.25, 1.25], + "scale": [0.7, 0.7, 0.7] + }, + "thirdperson_lefthand": { + "rotation": [60, 0, 0], + "translation": [1, 1, 16], + "scale": [0.55, 0.55, 0.55] + }, + "firstperson_righthand": { + "rotation": [0, 120, 0], + "translation": [0, 3.75, 0], + "scale": [0.5, 0.5, 0.5] + }, + "firstperson_lefthand": { + "rotation": [0, 123, 0], + "translation": [0, 3.75, 0], + "scale": [0.5, 0.5, 0.5] + }, + "ground": { + "translation": [0, 2.25, 0], + "scale": [0.5, 0.5, 0.5] + }, + "gui": { + "rotation": [15, 150, 0], + "translation": [0, 0.5, 0], + "scale": [0.9, 0.9, 0.9] + }, + "head": { + "translation": [11, 2, -1.25] + }, + "fixed": { + "translation": [0, 0, -3.5] + } + } +} diff --git a/src/main/resources/assets/extendedae_plus/models/block/fish_dan_.json b/src/main/resources/assets/extendedae_plus/models/block/fish_dan_.json new file mode 100644 index 0000000..d525270 --- /dev/null +++ b/src/main/resources/assets/extendedae_plus/models/block/fish_dan_.json @@ -0,0 +1,2623 @@ +{ + "format_version": "1.9.0", + "credit": "Made with _leng", + "render_type": "cutout", + "textures": { + "2": "extendedae_plus:block/beam_former_yudan", + "particle": "extendedae_plus:block/yudan" + }, + "elements": [ + { + "name": "Head", + "from": [ + 4.35, + 6, + 7.35 + ], + "to": [ + 11.65, + 13.3, + 14.65 + ], + "faces": { + "north": { + "uv": [ + 2, + 2, + 4, + 4 + ], + "texture": "#particle" + }, + "east": { + "uv": [ + 0, + 2, + 2, + 4 + ], + "texture": "#particle" + }, + "south": { + "uv": [ + 6, + 2, + 8, + 4 + ], + "texture": "#particle" + }, + "west": { + "uv": [ + 4, + 2, + 6, + 4 + ], + "texture": "#particle" + }, + "up": { + "uv": [ + 4, + 2, + 2, + 0 + ], + "texture": "#particle" + }, + "down": { + "uv": [ + 4, + 0, + 6, + 2 + ], + "texture": "#particle" + } + } + }, + { + "name": "Hat Layer", + "from": [ + 4.1, + 5.98, + 7 + ], + "to": [ + 11.8, + 13.6, + 14.7 + ], + "faces": { + "north": { + "uv": [ + 10, + 2, + 12, + 4 + ], + "texture": "#particle" + }, + "east": { + "uv": [ + 8, + 2, + 10, + 4 + ], + "texture": "#particle" + }, + "south": { + "uv": [ + 14, + 2, + 16, + 4 + ], + "texture": "#particle" + }, + "west": { + "uv": [ + 12, + 2, + 14, + 4 + ], + "texture": "#particle" + }, + "up": { + "uv": [ + 12, + 2, + 10, + 0 + ], + "texture": "#particle" + }, + "down": { + "uv": [ + 12, + 0, + 14, + 2 + ], + "texture": "#particle" + } + } + }, + { + "name": "Left Arm", + "from": [ + 4.9, + 3.35599, + 6.28667 + ], + "to": [ + 6.4, + 5.35599, + 12.28667 + ], + "rotation": { + "angle": -22.5, + "axis": "x", + "origin": [ + 5.6627, + 4.35599, + 9.28667 + ] + }, + "faces": { + "north": { + "uv": [ + 9.75, + 12, + 10.5, + 13 + ], + "rotation": 180, + "texture": "#particle" + }, + "east": { + "uv": [ + 8, + 13, + 9, + 16 + ], + "rotation": 270, + "texture": "#particle" + }, + "south": { + "uv": [ + 9, + 12, + 9.75, + 13 + ], + "texture": "#particle" + }, + "west": { + "uv": [ + 9.75, + 13, + 10.5, + 16 + ], + "rotation": 90, + "texture": "#particle" + }, + "up": { + "uv": [ + 9, + 13, + 9.75, + 16 + ], + "rotation": 180, + "texture": "#particle" + }, + "down": { + "uv": [ + 10.75, + 13, + 11.5, + 16 + ], + "texture": "#particle" + } + } + }, + { + "name": "Left Arm Layer", + "from": [ + 4.8254, + 3.25599, + 6.18667 + ], + "to": [ + 6.5254, + 5.45599, + 12.38667 + ], + "rotation": { + "angle": -22.5, + "axis": "x", + "origin": [ + 5.6627, + 4.35599, + 9.28667 + ] + }, + "faces": { + "north": { + "uv": [ + 13.75, + 12, + 14.5, + 13 + ], + "rotation": 180, + "texture": "#particle" + }, + "east": { + "uv": [ + 12, + 13, + 13, + 16 + ], + "rotation": 270, + "texture": "#particle" + }, + "south": { + "uv": [ + 13, + 12, + 13.75, + 13 + ], + "texture": "#particle" + }, + "west": { + "uv": [ + 13.75, + 13, + 14.5, + 16 + ], + "rotation": 90, + "texture": "#particle" + }, + "up": { + "uv": [ + 13, + 13, + 13.75, + 16 + ], + "rotation": 180, + "texture": "#particle" + }, + "down": { + "uv": [ + 14.5, + 13, + 15.25, + 16 + ], + "texture": "#particle" + } + } + }, + { + "name": "RightArm", + "from": [ + 9.6, + 3.1425, + 7.079 + ], + "to": [ + 11.1, + 5.1425, + 13.079 + ], + "rotation": { + "angle": -22.5, + "axis": "x", + "origin": [ + 11.33536, + 2.16989, + 9.079 + ] + }, + "faces": { + "north": { + "uv": [ + 11.75, + 4, + 12.5, + 5 + ], + "rotation": 180, + "texture": "#particle" + }, + "east": { + "uv": [ + 10, + 5, + 11, + 8 + ], + "rotation": 270, + "texture": "#particle" + }, + "south": { + "uv": [ + 11, + 4, + 11.75, + 5 + ], + "texture": "#particle" + }, + "west": { + "uv": [ + 11.75, + 5, + 12.5, + 8 + ], + "rotation": 90, + "texture": "#particle" + }, + "up": { + "uv": [ + 11, + 5, + 11.75, + 8 + ], + "rotation": 180, + "texture": "#particle" + }, + "down": { + "uv": [ + 12.75, + 5, + 13.5, + 8 + ], + "texture": "#particle" + } + } + }, + { + "name": "Right Arm Layer", + "from": [ + 9.5066, + 3.0425, + 6.979 + ], + "to": [ + 11.2066, + 5.2425, + 13.179 + ], + "rotation": { + "angle": -22.5, + "axis": "x", + "origin": [ + 11.33536, + 2.16989, + 9.079 + ] + }, + "faces": { + "north": { + "uv": [ + 11.75, + 8, + 12.5, + 9 + ], + "rotation": 180, + "texture": "#particle" + }, + "east": { + "uv": [ + 10, + 9, + 11, + 12 + ], + "rotation": 270, + "texture": "#particle" + }, + "south": { + "uv": [ + 11, + 8, + 11.75, + 9 + ], + "texture": "#particle" + }, + "west": { + "uv": [ + 11.75, + 9, + 12.5, + 12 + ], + "rotation": 90, + "texture": "#particle" + }, + "up": { + "uv": [ + 11, + 9, + 11.75, + 12 + ], + "rotation": 180, + "texture": "#particle" + }, + "down": { + "uv": [ + 12.75, + 9, + 13.5, + 12 + ], + "texture": "#particle" + } + } + }, + { + "name": "Left Leg", + "from": [ + 8, + -0.1, + 4 + ], + "to": [ + 10, + 1.9, + 10 + ], + "rotation": { + "angle": -22.5, + "axis": "y", + "origin": [ + 8, + 0, + 11 + ] + }, + "faces": { + "north": { + "uv": [ + 2, + 4, + 3, + 5 + ], + "texture": "#particle" + }, + "east": { + "uv": [ + 1, + 8, + 0, + 5 + ], + "rotation": 90, + "texture": "#particle" + }, + "south": { + "uv": [ + 1, + 4, + 2, + 5 + ], + "texture": "#particle" + }, + "west": { + "uv": [ + 2, + 5, + 3, + 8 + ], + "rotation": 90, + "texture": "#particle" + }, + "up": { + "uv": [ + 2, + 8, + 1, + 5 + ], + "texture": "#particle" + }, + "down": { + "uv": [ + 3, + 5, + 4, + 8 + ], + "texture": "#particle" + } + } + }, + { + "name": "Left Leg Layer", + "from": [ + 7.9, + -0.2, + 3.9 + ], + "to": [ + 10.1, + 2, + 10.1 + ], + "rotation": { + "angle": -22.5, + "axis": "y", + "origin": [ + 8, + 0, + 11 + ] + }, + "faces": { + "north": { + "uv": [ + 2, + 8, + 3, + 9 + ], + "texture": "#particle" + }, + "east": { + "uv": [ + 1, + 12, + 0, + 9 + ], + "rotation": 90, + "texture": "#particle" + }, + "south": { + "uv": [ + 1, + 8, + 2, + 9 + ], + "texture": "#particle" + }, + "west": { + "uv": [ + 2, + 9, + 3, + 12 + ], + "rotation": 90, + "texture": "#particle" + }, + "up": { + "uv": [ + 2, + 12, + 1, + 9 + ], + "texture": "#particle" + }, + "down": { + "uv": [ + 3, + 9, + 4, + 12 + ], + "texture": "#particle" + } + } + }, + { + "name": "Right Leg", + "from": [ + 6, + -0.1, + 4 + ], + "to": [ + 8, + 1.9, + 10 + ], + "rotation": { + "angle": 22.5, + "axis": "y", + "origin": [ + 8, + 0, + 11 + ] + }, + "faces": { + "north": { + "uv": [ + 6, + 12, + 7, + 13 + ], + "texture": "#particle" + }, + "east": { + "uv": [ + 4, + 16, + 5, + 13 + ], + "rotation": 90, + "texture": "#particle" + }, + "south": { + "uv": [ + 5, + 12, + 6, + 13 + ], + "texture": "#particle" + }, + "west": { + "uv": [ + 6, + 13, + 7, + 16 + ], + "rotation": 90, + "texture": "#particle" + }, + "up": { + "uv": [ + 6, + 16, + 5, + 13 + ], + "texture": "#particle" + }, + "down": { + "uv": [ + 7, + 13, + 8, + 16 + ], + "texture": "#particle" + } + } + }, + { + "name": "Right Leg Layer", + "from": [ + 5.9, + -0.2, + 3.9 + ], + "to": [ + 8.1, + 2, + 10.1 + ], + "rotation": { + "angle": 22.5, + "axis": "y", + "origin": [ + 8, + 0, + 11 + ] + }, + "faces": { + "north": { + "uv": [ + 2, + 12, + 3, + 13 + ], + "texture": "#particle" + }, + "east": { + "uv": [ + 0, + 16, + 1, + 13 + ], + "rotation": 90, + "texture": "#particle" + }, + "south": { + "uv": [ + 1, + 12, + 2, + 13 + ], + "texture": "#particle" + }, + "west": { + "uv": [ + 2, + 13, + 3, + 16 + ], + "rotation": 90, + "texture": "#particle" + }, + "up": { + "uv": [ + 2, + 16, + 1, + 13 + ], + "texture": "#particle" + }, + "down": { + "uv": [ + 3, + 13, + 4, + 16 + ], + "texture": "#particle" + } + } + }, + { + "name": "Body", + "from": [ + 5.6, + 0, + 9.6 + ], + "to": [ + 10.4, + 6, + 12.4 + ], + "faces": { + "north": { + "uv": [ + 5, + 5, + 7, + 8 + ], + "texture": "#particle" + }, + "east": { + "uv": [ + 4, + 5, + 5, + 8 + ], + "texture": "#particle" + }, + "south": { + "uv": [ + 8, + 5, + 10, + 8 + ], + "texture": "#particle" + }, + "west": { + "uv": [ + 7, + 5, + 8, + 8 + ], + "texture": "#particle" + }, + "up": { + "uv": [ + 5, + 5, + 7, + 4 + ], + "texture": "#particle" + }, + "down": { + "uv": [ + 7, + 5, + 9, + 4 + ], + "texture": "#particle" + } + } + }, + { + "name": "Body Layer", + "from": [ + 5.5, + -0.1, + 9.5 + ], + "to": [ + 10.5, + 6.1, + 12.5 + ], + "faces": { + "north": { + "uv": [ + 5, + 9, + 7, + 12 + ], + "texture": "#particle" + }, + "east": { + "uv": [ + 4, + 9, + 5, + 12 + ], + "texture": "#particle" + }, + "south": { + "uv": [ + 8, + 9, + 10, + 12 + ], + "texture": "#particle" + }, + "west": { + "uv": [ + 7, + 9, + 8, + 12 + ], + "texture": "#particle" + }, + "up": { + "uv": [ + 5, + 9, + 7, + 8 + ], + "texture": "#particle" + }, + "down": { + "uv": [ + 7, + 9, + 9, + 8 + ], + "texture": "#particle" + } + } + }, + { + "name": "base1", + "from": [ + 6.7659, + 2.6159, + 5.7375 + ], + "to": [ + 9.2341, + 5.0841, + 8.1975 + ], + "rotation": { + "angle": 0, + "axis": "y", + "origin": [ + 4.72, + 0.57, + 5.7375 + ] + }, + "faces": { + "north": { + "uv": [ + 0, + 6, + 3, + 9 + ], + "texture": "#2" + }, + "east": { + "uv": [ + 3, + 3, + 0, + 6 + ], + "rotation": 90, + "texture": "#2" + }, + "south": { + "uv": [ + 0, + 0, + 3, + 3 + ], + "texture": "#2" + }, + "west": { + "uv": [ + 3, + 3, + 0, + 6 + ], + "rotation": 270, + "texture": "#2" + }, + "up": { + "uv": [ + 0, + 3, + 3, + 6 + ], + "texture": "#2" + }, + "down": { + "uv": [ + 0, + 3, + 3, + 6 + ], + "rotation": 180, + "texture": "#2" + } + } + }, + { + "name": "base2", + "from": [ + 6.36, + 2.21, + 6.9675 + ], + "to": [ + 9.64, + 5.49, + 7.7875 + ], + "rotation": { + "angle": 0, + "axis": "y", + "origin": [ + 4.72, + 0.57, + 5.7375 + ] + }, + "faces": { + "north": { + "uv": [ + 3, + 5, + 7, + 9 + ], + "texture": "#2" + }, + "east": { + "uv": [ + 3, + 4, + 7, + 5 + ], + "rotation": 90, + "texture": "#2" + }, + "south": { + "uv": [ + 3, + 0, + 7, + 4 + ], + "texture": "#2" + }, + "west": { + "uv": [ + 3, + 5, + 7, + 4 + ], + "rotation": 90, + "texture": "#2" + }, + "up": { + "uv": [ + 3, + 4, + 7, + 5 + ], + "texture": "#2" + }, + "down": { + "uv": [ + 3, + 5, + 7, + 4 + ], + "texture": "#2" + } + } + }, + { + "name": "core", + "from": [ + 7.5859, + 3.4359, + 4.5034 + ], + "to": [ + 8.4141, + 4.2641, + 5.3316 + ], + "rotation": { + "angle": 0, + "axis": "y", + "origin": [ + 4.72, + 0.57, + 5.7375 + ] + }, + "faces": { + "north": { + "uv": [ + 11.5, + 6, + 10.5, + 5 + ], + "texture": "#2" + }, + "east": { + "uv": [ + 10.5, + 5, + 11.5, + 6 + ], + "texture": "#2" + }, + "south": { + "uv": [ + 11.5, + 5, + 10.5, + 6 + ], + "texture": "#2" + }, + "west": { + "uv": [ + 10.5, + 6, + 11.5, + 5 + ], + "texture": "#2" + }, + "up": { + "uv": [ + 11.5, + 5, + 10.5, + 6 + ], + "rotation": 90, + "texture": "#2" + }, + "down": { + "uv": [ + 10.5, + 5, + 11.5, + 6 + ], + "rotation": 270, + "texture": "#2" + } + } + }, + { + "name": "core_light", + "from": [ + 8.492, + 4.342, + 5.4095 + ], + "to": [ + 7.508, + 3.358, + 4.4255 + ], + "shade": false, + "rotation": { + "angle": 0, + "axis": "y", + "origin": [ + 4.72, + 0.57, + 5.7375 + ] + }, + "faces": { + "north": { + "uv": [ + 14, + 3, + 13, + 4 + ], + "texture": "#2" + }, + "east": { + "uv": [ + 13, + 4, + 14, + 3 + ], + "texture": "#2" + }, + "south": { + "uv": [ + 14, + 4, + 13, + 3 + ], + "texture": "#2" + }, + "west": { + "uv": [ + 13, + 3, + 14, + 4 + ], + "texture": "#2" + }, + "up": { + "uv": [ + 14, + 3, + 13, + 4 + ], + "rotation": 270, + "texture": "#2" + }, + "down": { + "uv": [ + 13, + 3, + 14, + 4 + ], + "rotation": 90, + "texture": "#2" + } + } + }, + { + "name": "base_light", + "from": [ + 6.35996, + 3.43996, + 7.37746 + ], + "to": [ + 6.77004, + 4.26004, + 7.78754 + ], + "rotation": { + "angle": 0, + "axis": "y", + "origin": [ + 4.72, + 0.57, + 5.7375 + ] + }, + "faces": { + "south": { + "uv": [ + 0, + 10.5, + 0.5, + 11.5 + ], + "texture": "#2" + }, + "west": { + "uv": [ + 0, + 10.5, + 0.5, + 11.5 + ], + "texture": "#2" + } + } + }, + { + "name": "base_light", + "from": [ + 7.58996, + 2.20996, + 7.37746 + ], + "to": [ + 8.41004, + 2.62004, + 7.78754 + ], + "rotation": { + "angle": 0, + "axis": "y", + "origin": [ + 4.72, + 0.57, + 5.7375 + ] + }, + "faces": { + "south": { + "uv": [ + 0, + 10.5, + 0.5, + 11.5 + ], + "rotation": 270, + "texture": "#2" + }, + "down": { + "uv": [ + 0, + 10.5, + 0.5, + 11.5 + ], + "rotation": 270, + "texture": "#2" + } + } + }, + { + "name": "base_light", + "from": [ + 9.22996, + 3.43996, + 7.37746 + ], + "to": [ + 9.64004, + 4.26004, + 7.78754 + ], + "rotation": { + "angle": 0, + "axis": "y", + "origin": [ + 4.72, + 0.57, + 5.7375 + ] + }, + "faces": { + "east": { + "uv": [ + 0, + 10.5, + 0.5, + 11.5 + ], + "rotation": 180, + "texture": "#2" + }, + "south": { + "uv": [ + 0, + 10.5, + 0.5, + 11.5 + ], + "rotation": 180, + "texture": "#2" + } + } + }, + { + "name": "base_light", + "from": [ + 7.58996, + 5.07996, + 7.37746 + ], + "to": [ + 8.41004, + 5.49004, + 7.78754 + ], + "rotation": { + "angle": 0, + "axis": "y", + "origin": [ + 4.72, + 0.57, + 5.7375 + ] + }, + "faces": { + "south": { + "uv": [ + 0, + 10.5, + 0.5, + 11.5 + ], + "rotation": 90, + "texture": "#2" + }, + "up": { + "uv": [ + 0, + 10.5, + 0.5, + 11.5 + ], + "rotation": 90, + "texture": "#2" + } + } + }, + { + "name": "base_side", + "from": [ + 6.36, + 3.03, + 5.7375 + ], + "to": [ + 6.77, + 4.67, + 6.9675 + ], + "rotation": { + "angle": 0, + "axis": "y", + "origin": [ + 4.72, + 0.57, + 5.7375 + ] + }, + "faces": { + "north": { + "uv": [ + 7, + 0, + 7.5, + 2 + ], + "texture": "#2" + }, + "west": { + "uv": [ + 7, + 0, + 8.5, + 2 + ], + "texture": "#2" + }, + "up": { + "uv": [ + 7, + 0, + 8.5, + 0.5 + ], + "rotation": 90, + "texture": "#2" + }, + "down": { + "uv": [ + 7, + 1.5, + 8.5, + 2 + ], + "rotation": 90, + "texture": "#2" + } + } + }, + { + "name": "base_side", + "from": [ + 7.18, + 2.21, + 5.7375 + ], + "to": [ + 8.82, + 2.62, + 6.9675 + ], + "rotation": { + "angle": 0, + "axis": "y", + "origin": [ + 4.72, + 0.57, + 5.7375 + ] + }, + "faces": { + "north": { + "uv": [ + 7, + 2, + 7.5, + 0 + ], + "rotation": 90, + "texture": "#2" + }, + "east": { + "uv": [ + 7, + 1.5, + 8.5, + 2 + ], + "texture": "#2" + }, + "west": { + "uv": [ + 7, + 0, + 8.5, + 0.5 + ], + "texture": "#2" + }, + "down": { + "uv": [ + 7, + 2, + 8.5, + 0 + ], + "rotation": 270, + "texture": "#2" + } + } + }, + { + "name": "base_side", + "from": [ + 9.23, + 3.03, + 5.7375 + ], + "to": [ + 9.64, + 4.67, + 6.9675 + ], + "rotation": { + "angle": 0, + "axis": "y", + "origin": [ + 4.72, + 0.57, + 5.7375 + ] + }, + "faces": { + "north": { + "uv": [ + 7, + 0, + 7.5, + 2 + ], + "rotation": 180, + "texture": "#2" + }, + "east": { + "uv": [ + 7, + 0, + 8.5, + 2 + ], + "rotation": 180, + "texture": "#2" + }, + "up": { + "uv": [ + 7, + 1.5, + 8.5, + 2 + ], + "rotation": 270, + "texture": "#2" + }, + "down": { + "uv": [ + 7, + 0, + 8.5, + 0.5 + ], + "rotation": 270, + "texture": "#2" + } + } + }, + { + "name": "base_side", + "from": [ + 7.18, + 5.08, + 5.7375 + ], + "to": [ + 8.82, + 5.49, + 6.9675 + ], + "rotation": { + "angle": 0, + "axis": "y", + "origin": [ + 4.72, + 0.57, + 5.7375 + ] + }, + "faces": { + "north": { + "uv": [ + 7.5, + 2, + 7, + 0 + ], + "rotation": 270, + "texture": "#2" + }, + "east": { + "uv": [ + 7, + 0, + 8.5, + 0.5 + ], + "rotation": 180, + "texture": "#2" + }, + "west": { + "uv": [ + 7, + 1.5, + 8.5, + 2 + ], + "rotation": 180, + "texture": "#2" + }, + "up": { + "uv": [ + 7, + 2, + 8.5, + 0 + ], + "rotation": 90, + "texture": "#2" + } + } + }, + { + "name": "top_side", + "from": [ + 7.59, + 2.62, + 4.5075 + ], + "to": [ + 8.41, + 3.03, + 5.7375 + ], + "rotation": { + "angle": 0, + "axis": "y", + "origin": [ + 4.72, + 0.57, + 5.7375 + ] + }, + "faces": { + "north": { + "uv": [ + 8.5, + 3, + 9, + 4 + ], + "rotation": 270, + "texture": "#2" + }, + "east": { + "uv": [ + 9.5, + 2, + 9, + 3.5 + ], + "rotation": 270, + "texture": "#2" + }, + "west": { + "uv": [ + 9.5, + 2, + 9, + 3.5 + ], + "rotation": 270, + "texture": "#2" + }, + "up": { + "uv": [ + 9, + 2, + 10, + 3.5 + ], + "rotation": 180, + "texture": "#2" + }, + "down": { + "uv": [ + 10, + 2, + 9, + 3.5 + ], + "rotation": 180, + "texture": "#2" + } + } + }, + { + "name": "top_side", + "from": [ + 8.82, + 3.44, + 4.5075 + ], + "to": [ + 9.23, + 4.26, + 5.7375 + ], + "rotation": { + "angle": 0, + "axis": "y", + "origin": [ + 4.72, + 0.57, + 5.7375 + ] + }, + "faces": { + "north": { + "uv": [ + 8.5, + 3, + 9, + 4 + ], + "texture": "#2" + }, + "east": { + "uv": [ + 10, + 2, + 9, + 3.5 + ], + "rotation": 90, + "texture": "#2" + }, + "west": { + "uv": [ + 9, + 2, + 10, + 3.5 + ], + "rotation": 90, + "texture": "#2" + }, + "up": { + "uv": [ + 9.5, + 2, + 9, + 3.5 + ], + "rotation": 180, + "texture": "#2" + }, + "down": { + "uv": [ + 9.5, + 2, + 9, + 3.5 + ], + "rotation": 180, + "texture": "#2" + } + } + }, + { + "name": "top_side", + "from": [ + 7.59, + 4.67, + 4.5075 + ], + "to": [ + 8.41, + 5.08, + 5.7375 + ], + "rotation": { + "angle": 0, + "axis": "y", + "origin": [ + 4.72, + 0.57, + 5.7375 + ] + }, + "faces": { + "north": { + "uv": [ + 8.5, + 3, + 9, + 4 + ], + "rotation": 90, + "texture": "#2" + }, + "east": { + "uv": [ + 9.5, + 2, + 9, + 3.5 + ], + "rotation": 90, + "texture": "#2" + }, + "west": { + "uv": [ + 9.5, + 2, + 9, + 3.5 + ], + "rotation": 90, + "texture": "#2" + }, + "up": { + "uv": [ + 10, + 2, + 9, + 3.5 + ], + "texture": "#2" + }, + "down": { + "uv": [ + 9, + 2, + 10, + 3.5 + ], + "texture": "#2" + } + } + }, + { + "name": "top_side", + "from": [ + 6.77, + 3.44, + 4.5075 + ], + "to": [ + 7.18, + 4.26, + 5.7375 + ], + "rotation": { + "angle": 0, + "axis": "y", + "origin": [ + 4.72, + 0.57, + 5.7375 + ] + }, + "faces": { + "north": { + "uv": [ + 8.5, + 3, + 9, + 4 + ], + "rotation": 180, + "texture": "#2" + }, + "east": { + "uv": [ + 9, + 2, + 10, + 3.5 + ], + "rotation": 270, + "texture": "#2" + }, + "west": { + "uv": [ + 10, + 2, + 9, + 3.5 + ], + "rotation": 270, + "texture": "#2" + }, + "up": { + "uv": [ + 9.5, + 2, + 9, + 3.5 + ], + "texture": "#2" + }, + "down": { + "uv": [ + 9.5, + 2, + 9, + 3.5 + ], + "texture": "#2" + } + } + }, + { + "name": "top_ring_1", + "from": [ + 6.77, + 4.26, + 4.9175 + ], + "to": [ + 7.18, + 5.08, + 5.3275 + ], + "rotation": { + "angle": 0, + "axis": "y", + "origin": [ + 4.72, + 0.57, + 5.7375 + ] + }, + "faces": { + "north": { + "uv": [ + 8.5, + 0, + 9, + 1 + ], + "texture": "#2" + }, + "east": { + "uv": [ + 8.5, + 0, + 9, + 1 + ], + "texture": "#2" + }, + "south": { + "uv": [ + 8.5, + 0, + 9, + 1 + ], + "texture": "#2" + }, + "west": { + "uv": [ + 8.5, + 0, + 9, + 1 + ], + "texture": "#2" + }, + "up": { + "uv": [ + 8.5, + 0, + 9, + 0.5 + ], + "texture": "#2" + } + } + }, + { + "name": "top_ring_2", + "from": [ + 7.18, + 4.67, + 4.9175 + ], + "to": [ + 7.59, + 5.08, + 5.3275 + ], + "rotation": { + "angle": 0, + "axis": "y", + "origin": [ + 4.72, + 0.57, + 5.7375 + ] + }, + "faces": { + "north": { + "uv": [ + 10, + 0.5, + 10.5, + 1 + ], + "texture": "#2" + }, + "south": { + "uv": [ + 10, + 0.5, + 10.5, + 1 + ], + "texture": "#2" + }, + "up": { + "uv": [ + 10, + 0.5, + 10.5, + 1 + ], + "texture": "#2" + }, + "down": { + "uv": [ + 10, + 0.5, + 10.5, + 1 + ], + "texture": "#2" + } + } + }, + { + "name": "top_ring_2", + "from": [ + 6.77, + 2.62, + 4.9175 + ], + "to": [ + 7.59, + 3.03, + 5.3275 + ], + "rotation": { + "angle": 0, + "axis": "y", + "origin": [ + 4.72, + 0.57, + 5.7375 + ] + }, + "faces": { + "north": { + "uv": [ + 8.5, + 0, + 9, + 1 + ], + "rotation": 90, + "texture": "#2" + }, + "south": { + "uv": [ + 8.5, + 0, + 9, + 1 + ], + "rotation": 270, + "texture": "#2" + }, + "west": { + "uv": [ + 8.5, + 0, + 9, + 0.5 + ], + "rotation": 270, + "texture": "#2" + }, + "up": { + "uv": [ + 8.5, + 0, + 9, + 1 + ], + "rotation": 270, + "texture": "#2" + }, + "down": { + "uv": [ + 8.5, + 0, + 9, + 1 + ], + "rotation": 270, + "texture": "#2" + } + } + }, + { + "name": "top_ring_3", + "from": [ + 6.77, + 3.03, + 4.9175 + ], + "to": [ + 7.18, + 3.44, + 5.3275 + ], + "rotation": { + "angle": 0, + "axis": "y", + "origin": [ + 4.72, + 0.57, + 5.7375 + ] + }, + "faces": { + "north": { + "uv": [ + 10, + 0.5, + 10.5, + 1 + ], + "rotation": 90, + "texture": "#2" + }, + "east": { + "uv": [ + 10, + 0.5, + 10.5, + 1 + ], + "rotation": 270, + "texture": "#2" + }, + "south": { + "uv": [ + 10, + 0.5, + 10.5, + 1 + ], + "rotation": 270, + "texture": "#2" + }, + "west": { + "uv": [ + 10, + 0.5, + 10.5, + 1 + ], + "rotation": 270, + "texture": "#2" + } + } + }, + { + "name": "top_ring_3", + "from": [ + 8.41, + 4.67, + 4.9175 + ], + "to": [ + 9.23, + 5.08, + 5.3275 + ], + "rotation": { + "angle": 0, + "axis": "y", + "origin": [ + 4.72, + 0.57, + 5.7375 + ] + }, + "faces": { + "north": { + "uv": [ + 8.5, + 0, + 9, + 1 + ], + "rotation": 270, + "texture": "#2" + }, + "east": { + "uv": [ + 8.5, + 0, + 9, + 0.5 + ], + "rotation": 90, + "texture": "#2" + }, + "south": { + "uv": [ + 8.5, + 0, + 9, + 1 + ], + "rotation": 90, + "texture": "#2" + }, + "up": { + "uv": [ + 8.5, + 0, + 9, + 1 + ], + "rotation": 90, + "texture": "#2" + }, + "down": { + "uv": [ + 8.5, + 0, + 9, + 1 + ], + "rotation": 90, + "texture": "#2" + } + } + }, + { + "name": "top_ring_4", + "from": [ + 8.82, + 4.26, + 4.9175 + ], + "to": [ + 9.23, + 4.67, + 5.3275 + ], + "rotation": { + "angle": 0, + "axis": "y", + "origin": [ + 4.72, + 0.57, + 5.7375 + ] + }, + "faces": { + "north": { + "uv": [ + 10, + 0.5, + 10.5, + 1 + ], + "rotation": 270, + "texture": "#2" + }, + "east": { + "uv": [ + 10, + 0.5, + 10.5, + 1 + ], + "rotation": 90, + "texture": "#2" + }, + "south": { + "uv": [ + 10, + 0.5, + 10.5, + 1 + ], + "rotation": 90, + "texture": "#2" + }, + "west": { + "uv": [ + 10, + 0.5, + 10.5, + 1 + ], + "rotation": 90, + "texture": "#2" + } + } + }, + { + "name": "top_ring_4", + "from": [ + 8.82, + 2.62, + 4.9175 + ], + "to": [ + 9.23, + 3.44, + 5.3275 + ], + "rotation": { + "angle": 0, + "axis": "y", + "origin": [ + 4.72, + 0.57, + 5.7375 + ] + }, + "faces": { + "north": { + "uv": [ + 8.5, + 0, + 9, + 1 + ], + "rotation": 180, + "texture": "#2" + }, + "east": { + "uv": [ + 8.5, + 0, + 9, + 1 + ], + "rotation": 180, + "texture": "#2" + }, + "south": { + "uv": [ + 8.5, + 0, + 9, + 1 + ], + "rotation": 180, + "texture": "#2" + }, + "west": { + "uv": [ + 8.5, + 0, + 9, + 1 + ], + "rotation": 180, + "texture": "#2" + }, + "down": { + "uv": [ + 8.5, + 0, + 9, + 0.5 + ], + "rotation": 180, + "texture": "#2" + } + } + }, + { + "name": "top_ring_5", + "from": [ + 8.41, + 2.62, + 4.9175 + ], + "to": [ + 8.82, + 3.03, + 5.3275 + ], + "rotation": { + "angle": 0, + "axis": "y", + "origin": [ + 4.72, + 0.57, + 5.7375 + ] + }, + "faces": { + "north": { + "uv": [ + 10, + 0.5, + 10.5, + 1 + ], + "rotation": 180, + "texture": "#2" + }, + "south": { + "uv": [ + 10, + 0.5, + 10.5, + 1 + ], + "rotation": 180, + "texture": "#2" + }, + "up": { + "uv": [ + 10, + 0.5, + 10.5, + 1 + ], + "rotation": 180, + "texture": "#2" + }, + "down": { + "uv": [ + 10, + 0.5, + 10.5, + 1 + ], + "rotation": 180, + "texture": "#2" + } + } + } + ], + "display": { + "thirdperson_righthand": { + "rotation": [ + 60, + 0, + 0 + ], + "translation": [ + 0.25, + 4.25, + 1.25 + ], + "scale": [ + 0.7, + 0.7, + 0.7 + ] + }, + "thirdperson_lefthand": { + "rotation": [ + 60, + 0, + 0 + ], + "translation": [ + 0.25, + 4.25, + 1.25 + ], + "scale": [ + 0.7, + 0.7, + 0.7 + ] + }, + "firstperson_righthand": { + "rotation": [ + 0, + 120, + 0 + ], + "translation": [ + 0, + 3.75, + 0 + ], + "scale": [ + 0.5, + 0.5, + 0.5 + ] + }, + "firstperson_lefthand": { + "rotation": [ + 0, + 123, + 0 + ], + "translation": [ + 0, + 3.75, + 0 + ], + "scale": [ + 0.5, + 0.5, + 0.5 + ] + }, + "ground": { + "translation": [ + 0, + 5, + 0 + ], + "scale": [ + 0.5, + 0.5, + 0.5 + ] + }, + "gui": { + "rotation": [ + 30, + -135, + 0 + ], + "translation": [ + -2, + 0, + 0 + ], + "scale": [ + 0.625, + 0.625, + 0.625 + ] + }, + "fixed": { + "translation": [ + 0, + 0, + -3.5 + ] + } + } +} \ No newline at end of file diff --git a/src/main/resources/assets/extendedae_plus/models/block/xbai.json b/src/main/resources/assets/extendedae_plus/models/block/xbai.json new file mode 100644 index 0000000..22bf6e9 --- /dev/null +++ b/src/main/resources/assets/extendedae_plus/models/block/xbai.json @@ -0,0 +1,222 @@ +{ + "format_version": "1.21.6", + "credit": "Made with _leng", + "texture_size": [32, 32], + "render_type": "translucent", + "textures": { + "0": "extendedae_plus:block/xbai", + "particle": "extendedae_plus:block/xbai" + }, + "elements": [ + { + "name": "Head", + "from": [4.35, 6, 7.25], + "to": [11.65, 13.3, 14.55], + "faces": { + "north": {"uv": [1, 1, 2, 2], "texture": "#0"}, + "east": {"uv": [0, 1, 1, 2], "texture": "#0"}, + "south": {"uv": [3, 1, 4, 2], "texture": "#0"}, + "west": {"uv": [2, 1, 3, 2], "texture": "#0"}, + "up": {"uv": [1, 1, 2, 0], "texture": "#0"}, + "down": {"uv": [2, 0, 3, 1], "texture": "#0"} + } + }, + { + "name": "Hat Layer", + "from": [4.1, 6, 7], + "to": [11.8, 13.6, 14.6], + "faces": { + "north": {"uv": [5, 1, 6, 2], "texture": "#0"}, + "east": {"uv": [4, 1, 5, 2], "texture": "#0"}, + "south": {"uv": [7, 1, 8, 2], "texture": "#0"}, + "west": {"uv": [6, 1, 7, 2], "texture": "#0"}, + "up": {"uv": [5, 1, 6, 0], "texture": "#0"}, + "down": {"uv": [6, 0, 7, 1], "texture": "#0"} + } + }, + { + "name": "Left Arm", + "from": [5.1, 4, 7.08248], + "to": [6.6, 6, 13.08248], + "rotation": {"angle": -22.5, "axis": "x", "origin": [8.04619, 5, 9.15224]}, + "faces": { + "north": {"uv": [5, 6, 5.5, 6.5], "rotation": 180, "texture": "#0"}, + "east": {"uv": [4, 6.5, 4.5, 8], "rotation": 270, "texture": "#0"}, + "south": {"uv": [4.5, 6, 5, 6.5], "texture": "#0"}, + "west": {"uv": [5, 6.5, 5.5, 8], "rotation": 90, "texture": "#0"}, + "up": {"uv": [4.5, 6.5, 5, 8], "rotation": 180, "texture": "#0"}, + "down": {"uv": [5.5, 6.5, 6, 8], "texture": "#0"} + } + }, + { + "name": "Left Arm Layer", + "from": [5.0504, 3.9, 6.98248], + "to": [6.7504, 6.1, 13.18248], + "rotation": {"angle": -22.5, "axis": "x", "origin": [8.04619, 5, 9.15224]}, + "faces": { + "north": {"uv": [7, 6, 7.5, 6.5], "rotation": 180, "texture": "#0"}, + "east": {"uv": [6, 6.5, 6.5, 8], "rotation": 270, "texture": "#0"}, + "south": {"uv": [6.875, 6, 6.5, 6.5], "texture": "#0"}, + "west": {"uv": [7, 6.5, 7.5, 8], "rotation": 90, "texture": "#0"}, + "up": {"uv": [6.5, 6.5, 6.875, 8], "rotation": 180, "texture": "#0"}, + "down": {"uv": [7.5, 6.5, 7.875, 8], "texture": "#0"} + } + }, + { + "name": "RightArm", + "from": [9.6, 4.34246, 6.979], + "to": [11.1, 6.34246, 12.979], + "rotation": {"angle": -22.5, "axis": "x", "origin": [10.25663, 5.34246, 9.979]}, + "faces": { + "north": {"uv": [6, 2, 6.5, 2.5], "rotation": 180, "texture": "#0"}, + "east": {"uv": [5, 2.5, 5.5, 4], "rotation": 270, "texture": "#0"}, + "south": {"uv": [5.5, 2, 6, 2.5], "texture": "#0"}, + "west": {"uv": [6, 2.5, 6.5, 4], "rotation": 90, "texture": "#0"}, + "up": {"uv": [5.5, 2.5, 6, 4], "rotation": 180, "texture": "#0"}, + "down": {"uv": [6.5, 2.5, 7, 4], "texture": "#0"} + } + }, + { + "name": "Right Arm Layer", + "from": [9.45663, 4.24246, 6.879], + "to": [11.15663, 6.44246, 13.079], + "rotation": {"angle": -22.5, "axis": "x", "origin": [10.25663, 5.34246, 9.979]}, + "faces": { + "north": {"uv": [5.875, 4, 6.25, 4.5], "rotation": 180, "texture": "#0"}, + "east": {"uv": [5, 4.5, 5.5, 6], "rotation": 270, "texture": "#0"}, + "south": {"uv": [5.875, 4, 5.5, 4.5], "texture": "#0"}, + "west": {"uv": [5.875, 4.5, 6.25, 6], "rotation": 90, "texture": "#0"}, + "up": {"uv": [5.5, 4.5, 5.875, 6], "rotation": 180, "texture": "#0"}, + "down": {"uv": [6.375, 4.5, 6.75, 6], "texture": "#0"} + } + }, + { + "name": "Totem", + "from": [6.5, 3, 7], + "to": [9.7, 6.2, 7.1], + "faces": { + "north": {"uv": [7, 2, 9, 4], "texture": "#0"}, + "south": {"uv": [9, 2, 7, 4], "texture": "#0"} + } + }, + { + "name": "Left Leg", + "from": [8, -0.1, 4], + "to": [10, 1.9, 10], + "rotation": {"angle": -22.5, "axis": "y", "origin": [8, 0, 11]}, + "faces": { + "north": {"uv": [1, 2, 1.5, 2.5], "texture": "#0"}, + "east": {"uv": [0, 4, 0.5, 2.5], "rotation": 90, "texture": "#0"}, + "south": {"uv": [0.5, 2, 1, 2.5], "texture": "#0"}, + "west": {"uv": [1, 2.5, 1.5, 4], "rotation": 90, "texture": "#0"}, + "up": {"uv": [1, 4, 0.5, 2.5], "texture": "#0"}, + "down": {"uv": [1.5, 2.5, 2, 4], "texture": "#0"} + } + }, + { + "name": "Left Leg Layer", + "from": [7.9, -0.2, 3.9], + "to": [10.1, 2, 10.1], + "rotation": {"angle": -22.5, "axis": "y", "origin": [8, 0, 11]}, + "faces": { + "north": {"uv": [1, 4, 1.5, 4.5], "texture": "#0"}, + "east": {"uv": [0, 6, 0.5, 4.5], "rotation": 90, "texture": "#0"}, + "south": {"uv": [0.5, 4, 1, 4.5], "texture": "#0"}, + "west": {"uv": [1, 4.5, 1.5, 6], "rotation": 90, "texture": "#0"}, + "up": {"uv": [1, 6, 0.5, 4.5], "texture": "#0"}, + "down": {"uv": [1.5, 4.5, 2, 6], "texture": "#0"} + } + }, + { + "name": "Right Leg", + "from": [6, -0.1, 4], + "to": [8, 1.9, 10], + "rotation": {"angle": 22.5, "axis": "y", "origin": [8, 0, 11]}, + "faces": { + "north": {"uv": [3, 6, 3.5, 6.5], "texture": "#0"}, + "east": {"uv": [2, 8, 2.5, 6.5], "rotation": 90, "texture": "#0"}, + "south": {"uv": [2.5, 6, 3, 6.5], "texture": "#0"}, + "west": {"uv": [3, 6.5, 3.5, 8], "rotation": 90, "texture": "#0"}, + "up": {"uv": [3, 8, 2.5, 6.5], "texture": "#0"}, + "down": {"uv": [3.5, 6.5, 4, 8], "texture": "#0"} + } + }, + { + "name": "Right Leg Layer", + "from": [5.9, -0.2, 3.9], + "to": [8.1, 2, 10.1], + "rotation": {"angle": 22.5, "axis": "y", "origin": [8, 0, 11]}, + "faces": { + "north": {"uv": [1, 6, 1.5, 6.5], "texture": "#0"}, + "east": {"uv": [0, 8, 0.5, 6.5], "rotation": 90, "texture": "#0"}, + "south": {"uv": [0.5, 6, 1, 6.5], "texture": "#0"}, + "west": {"uv": [1, 6.5, 1.5, 8], "rotation": 90, "texture": "#0"}, + "up": {"uv": [1, 8, 0.5, 6.5], "texture": "#0"}, + "down": {"uv": [1.5, 6.5, 2, 8], "texture": "#0"} + } + }, + { + "name": "Body", + "from": [5.6, 0, 9.6], + "to": [10.4, 6, 12.4], + "faces": { + "north": {"uv": [2.5, 2.5, 3.5, 4], "texture": "#0"}, + "east": {"uv": [2, 2.5, 2.5, 4], "texture": "#0"}, + "south": {"uv": [4, 2.5, 5, 4], "texture": "#0"}, + "west": {"uv": [3.5, 2.5, 4, 4], "texture": "#0"}, + "up": {"uv": [2.5, 2.5, 3.5, 2], "texture": "#0"}, + "down": {"uv": [3.5, 2.5, 4.5, 2], "texture": "#0"} + } + }, + { + "name": "Body Layer", + "from": [5.5, -0.1, 9.5], + "to": [10.5, 6.1, 12.5], + "faces": { + "north": {"uv": [2.5, 4.5, 3.5, 6], "texture": "#0"}, + "east": {"uv": [2, 4.5, 2.5, 6], "texture": "#0"}, + "south": {"uv": [4, 4.5, 5, 6], "texture": "#0"}, + "west": {"uv": [3.5, 4.5, 4, 6], "texture": "#0"}, + "up": {"uv": [2.5, 4.5, 3.5, 4], "texture": "#0"}, + "down": {"uv": [3.5, 4.5, 4.5, 4], "texture": "#0"} + } + } + ], + "display": { + "thirdperson_righthand": { + "rotation": [60, 0, 0], + "translation": [0.25, 4.25, 1.25], + "scale": [0.8, 0.8, 0.8] + }, + "thirdperson_lefthand": { + "rotation": [60, 0, 0], + "translation": [0.25, 4.25, 1.25], + "scale": [0.8, 0.8, 0.8] + }, + "firstperson_righthand": { + "rotation": [0, 120, 0], + "translation": [0.75, 3.5, 0], + "scale": [0.5, 0.5, 0.5] + }, + "firstperson_lefthand": { + "rotation": [0, 123, 0], + "translation": [1, 3.5, 0], + "scale": [0.5, 0.5, 0.5] + }, + "ground": { + "translation": [0, 5, 0], + "scale": [0.8, 0.8, 0.8] + }, + "gui": { + "rotation": [15, 150, 0], + "translation": [-0.25, 0.5, 0], + "scale": [0.8, 0.8, 0.8] + }, + "head": { + "translation": [11, 0.75, -2.25] + }, + "fixed": { + "translation": [0, 0, -3.5] + } + } +} diff --git a/src/main/resources/assets/extendedae_plus/models/item/_feng.json b/src/main/resources/assets/extendedae_plus/models/item/_feng.json new file mode 100644 index 0000000..09145a7 --- /dev/null +++ b/src/main/resources/assets/extendedae_plus/models/item/_feng.json @@ -0,0 +1,3 @@ +{ + "parent": "extendedae_plus:block/_feng" +} diff --git a/src/main/resources/assets/extendedae_plus/models/item/c-h716.json b/src/main/resources/assets/extendedae_plus/models/item/c-h716.json new file mode 100644 index 0000000..c1af33b --- /dev/null +++ b/src/main/resources/assets/extendedae_plus/models/item/c-h716.json @@ -0,0 +1,3 @@ +{ + "parent": "extendedae_plus:item/iava_skin_doll" +} \ No newline at end of file diff --git a/src/main/resources/assets/extendedae_plus/models/item/fish_dan_.json b/src/main/resources/assets/extendedae_plus/models/item/fish_dan_.json new file mode 100644 index 0000000..1a86120 --- /dev/null +++ b/src/main/resources/assets/extendedae_plus/models/item/fish_dan_.json @@ -0,0 +1,3 @@ +{ + "parent": "extendedae_plus:block/fish_dan_" +} diff --git a/src/main/resources/assets/extendedae_plus/models/item/iava_skin_doll.json b/src/main/resources/assets/extendedae_plus/models/item/iava_skin_doll.json new file mode 100644 index 0000000..f55853f --- /dev/null +++ b/src/main/resources/assets/extendedae_plus/models/item/iava_skin_doll.json @@ -0,0 +1,221 @@ +{ + "format_version": "1.21.6", + "credit": "Made with _leng", + "render_type": "cutout", + "textures": { + "1": "extendedae_plus:block/iava_user", + "2": "extendedae_plus:block/infinity_biginteger_cell" + }, + "elements": [ + { + "name": "Head", + "from": [4.35, 6, 7.35], + "to": [11.65, 13.3, 14.65], + "faces": { + "north": {"uv": [2, 2, 4, 4], "texture": "#1"}, + "east": {"uv": [0, 2, 2, 4], "texture": "#1"}, + "south": {"uv": [6, 2, 8, 4], "texture": "#1"}, + "west": {"uv": [4, 2, 6, 4], "texture": "#1"}, + "up": {"uv": [2, 2, 4, 0], "texture": "#1"}, + "down": {"uv": [4, 0, 6, 2], "texture": "#1"} + } + }, + { + "name": "Hat Layer", + "from": [4.1, 6, 7], + "to": [11.8, 13.6, 14.675], + "faces": { + "north": {"uv": [10, 2, 12, 4], "texture": "#1"}, + "east": {"uv": [8, 2, 10, 4], "texture": "#1"}, + "south": {"uv": [14, 2, 16, 4], "texture": "#1"}, + "west": {"uv": [12, 2, 14, 4], "texture": "#1"}, + "up": {"uv": [10, 2, 12, 0], "texture": "#1"}, + "down": {"uv": [12, 0, 14, 2], "texture": "#1"} + } + }, + { + "name": "Left Arm", + "from": [5, 4, 7.08248], + "to": [6.5, 6, 13.08248], + "rotation": {"angle": -22.5, "axis": "x", "origin": [8.04619, 5, 9.15224]}, + "faces": { + "north": {"uv": [9.75, 12, 10.5, 13], "rotation": 180, "texture": "#1"}, + "east": {"uv": [8, 13, 9, 16], "rotation": 270, "texture": "#1"}, + "south": {"uv": [9, 12, 9.75, 13], "texture": "#1"}, + "west": {"uv": [9.75, 13, 10.5, 16], "rotation": 90, "texture": "#1"}, + "up": {"uv": [9, 13, 9.75, 16], "rotation": 180, "texture": "#1"}, + "down": {"uv": [10.5, 13, 11.5, 16], "texture": "#1"} + } + }, + { + "name": "Left Arm Layer", + "from": [4.9004, 3.9, 6.98248], + "to": [6.6004, 6.1, 13.18248], + "rotation": {"angle": -22.5, "axis": "x", "origin": [7.89619, 5, 9.15224]}, + "faces": { + "north": {"uv": [13.75, 12, 14.5, 13], "rotation": 180, "texture": "#1"}, + "east": {"uv": [12, 13, 13, 16], "rotation": 270, "texture": "#1"}, + "south": {"uv": [13, 12, 13.75, 13], "texture": "#1"}, + "west": {"uv": [13.75, 13, 14.5, 16], "rotation": 90, "texture": "#1"}, + "up": {"uv": [13, 13, 13.75, 16], "rotation": 180, "texture": "#1"}, + "down": {"uv": [14.5, 13, 15.5, 16], "texture": "#1"} + } + }, + { + "name": "RightArm", + "from": [9.6, 4.34246, 6.979], + "to": [11.1, 6.34246, 12.979], + "rotation": {"angle": -22.5, "axis": "x", "origin": [10.25663, 5.34246, 9.979]}, + "faces": { + "north": {"uv": [11.75, 4, 12.5, 5], "rotation": 180, "texture": "#1"}, + "east": {"uv": [10, 5, 11, 8], "rotation": 270, "texture": "#1"}, + "south": {"uv": [11, 4, 11.75, 5], "texture": "#1"}, + "west": {"uv": [11.75, 5, 12.5, 8], "rotation": 90, "texture": "#1"}, + "up": {"uv": [11, 5, 11.75, 8], "rotation": 180, "texture": "#1"}, + "down": {"uv": [12.5, 5, 13.5, 8], "texture": "#1"} + } + }, + { + "name": "Right Arm Layer", + "from": [9.50663, 4.24246, 6.879], + "to": [11.20663, 6.44246, 13.079], + "rotation": {"angle": -22.5, "axis": "x", "origin": [10.30663, 5.34246, 9.979]}, + "faces": { + "north": {"uv": [11.75, 8, 12.5, 9], "rotation": 180, "texture": "#1"}, + "east": {"uv": [10, 9, 11, 12], "rotation": 270, "texture": "#1"}, + "south": {"uv": [11, 8, 11.75, 9], "texture": "#1"}, + "west": {"uv": [11.75, 9, 12.5, 12], "rotation": 90, "texture": "#1"}, + "up": {"uv": [11, 9, 11.75, 12], "rotation": 180, "texture": "#1"}, + "down": {"uv": [12.5, 9, 13.5, 12], "texture": "#1"} + } + }, + { + "name": "Totem", + "from": [6.5, 3, 7], + "to": [9.7, 6.2, 7.1], + "faces": { + "north": {"uv": [0, 0, 16, 16], "texture": "#2"}, + "south": {"uv": [16, 0, 0, 16], "texture": "#2"} + } + }, + { + "name": "Left Leg", + "from": [8, -0.1, 4], + "to": [10, 1.9, 10], + "rotation": {"angle": -22.5, "axis": "y", "origin": [8, 0, 11]}, + "faces": { + "north": {"uv": [2, 4, 3, 5], "texture": "#1"}, + "east": {"uv": [0, 8, 1, 5], "rotation": 90, "texture": "#1"}, + "south": {"uv": [1, 4, 2, 5], "texture": "#1"}, + "west": {"uv": [2, 5, 3, 8], "rotation": 90, "texture": "#1"}, + "up": {"uv": [2, 8, 1, 5], "texture": "#1"}, + "down": {"uv": [3, 5, 4, 8], "texture": "#1"} + } + }, + { + "name": "Left Leg Layer", + "from": [7.9, -0.2, 3.9], + "to": [10.1, 2, 10.1], + "rotation": {"angle": -22.5, "axis": "y", "origin": [8, 0, 11]}, + "faces": { + "north": {"uv": [2, 8, 3, 9], "texture": "#1"}, + "east": {"uv": [0, 12, 1, 9], "rotation": 90, "texture": "#1"}, + "south": {"uv": [1, 8, 2, 9], "texture": "#1"}, + "west": {"uv": [2, 9, 3, 12], "rotation": 90, "texture": "#1"}, + "up": {"uv": [2, 12, 1, 9], "texture": "#1"}, + "down": {"uv": [3, 9, 4, 12], "texture": "#1"} + } + }, + { + "name": "Right Leg", + "from": [6, -0.1, 4], + "to": [8, 1.9, 10], + "rotation": {"angle": 22.5, "axis": "y", "origin": [8, 0, 11]}, + "faces": { + "north": {"uv": [6, 12, 7, 13], "texture": "#1"}, + "east": {"uv": [4, 16, 5, 13], "rotation": 90, "texture": "#1"}, + "south": {"uv": [5, 12, 6, 13], "texture": "#1"}, + "west": {"uv": [6, 13, 7, 16], "rotation": 90, "texture": "#1"}, + "up": {"uv": [6, 16, 5, 13], "texture": "#1"}, + "down": {"uv": [7, 13, 8, 16], "texture": "#1"} + } + }, + { + "name": "Right Leg Layer", + "from": [5.9, -0.2, 3.9], + "to": [8.1, 2, 10.1], + "rotation": {"angle": 22.5, "axis": "y", "origin": [8, 0, 11]}, + "faces": { + "north": {"uv": [2, 12, 3, 13], "texture": "#1"}, + "east": {"uv": [0, 16, 1, 13], "rotation": 90, "texture": "#1"}, + "south": {"uv": [1, 12, 2, 13], "texture": "#1"}, + "west": {"uv": [2, 13, 3, 16], "rotation": 90, "texture": "#1"}, + "up": {"uv": [2, 16, 1, 13], "texture": "#1"}, + "down": {"uv": [3, 13, 4, 16], "texture": "#1"} + } + }, + { + "name": "Body", + "from": [5.6, 0, 9.6], + "to": [10.4, 6, 12.4], + "faces": { + "north": {"uv": [5, 5, 7, 8], "texture": "#1"}, + "east": {"uv": [4, 5, 5, 8], "texture": "#1"}, + "south": {"uv": [8, 5, 10, 8], "texture": "#1"}, + "west": {"uv": [7, 5, 8, 8], "texture": "#1"}, + "up": {"uv": [5, 5, 7, 4], "texture": "#1"}, + "down": {"uv": [7, 5, 9, 4], "texture": "#1"} + } + }, + { + "name": "Body Layer", + "from": [5.5, -0.1, 9.5], + "to": [10.5, 6.1, 12.5], + "faces": { + "north": {"uv": [5, 9, 7, 12], "texture": "#1"}, + "east": {"uv": [4, 9, 5, 12], "texture": "#1"}, + "south": {"uv": [8, 9, 10, 12], "texture": "#1"}, + "west": {"uv": [7, 9, 8, 12], "texture": "#1"}, + "up": {"uv": [5, 9, 7, 8], "texture": "#1"}, + "down": {"uv": [7, 9, 9, 8], "texture": "#1"} + } + } + ], + "display": { + "thirdperson_righthand": { + "rotation": [60, 0, 0], + "translation": [0.25, 4.25, 1.25], + "scale": [0.8, 0.8, 0.8] + }, + "thirdperson_lefthand": { + "rotation": [67.5, 0, 0], + "translation": [1.25, 1.25, 16], + "scale": [0.6, 0.6, 0.6] + }, + "firstperson_righthand": { + "rotation": [0, 120, 0], + "translation": [0.75, 3.5, 0], + "scale": [0.5, 0.5, 0.5] + }, + "firstperson_lefthand": { + "rotation": [0, 123, 0], + "translation": [1, 3.5, 0], + "scale": [0.5, 0.5, 0.5] + }, + "ground": { + "translation": [0, 3.5, 0], + "scale": [0.8, 0.8, 0.8] + }, + "gui": { + "rotation": [15, 150, 0], + "translation": [-0.25, 0.5, 0], + "scale": [0.8, 0.8, 0.8] + }, + "head": { + "translation": [11, 0.75, -2.25] + }, + "fixed": { + "translation": [0, 0, -3.5] + } + } +} \ No newline at end of file diff --git a/src/main/resources/assets/extendedae_plus/models/item/xbai.json b/src/main/resources/assets/extendedae_plus/models/item/xbai.json new file mode 100644 index 0000000..999649c --- /dev/null +++ b/src/main/resources/assets/extendedae_plus/models/item/xbai.json @@ -0,0 +1,3 @@ +{ + "parent": "extendedae_plus:block/xbai" +} diff --git a/src/main/resources/assets/extendedae_plus/textures/block/_feng_fumo.png b/src/main/resources/assets/extendedae_plus/textures/block/_feng_fumo.png new file mode 100644 index 0000000000000000000000000000000000000000..2557c6a76a34b16e7d1eca4f36b43f31780bd393 GIT binary patch literal 2785 zcmV<73Lf=|P)Px%Q4lOwp>pNT0W2S)pfgbara1@>fHd+ydi^zZ z6p$pERA77RRnvDEHTu2YcKX9J!_qp8@~na&Y?zyg0d1{-%a!%(s(t+8{cle3-yeJw z117qGEdWvgA^^4x;{9*?)cjLT{8zbi9*G3NMh#YHqYubr1LNiv7ChZpT8hKz1jZ-S zceQnaMDBnFY==P{h2uI?kjWSUkmXb5FdfSrMQfEhLZnteaR+d^viAv4Q~}Ov5b|tq zFMo+F{p`%Rs$i%Chz?+R$0%xI&jaI^aA)^4PI%gQ{vUcbTLoSs_u0o$@E8*Vob4cN z+!qs^_mBmEVM3DuiqS4$TN{*{e};2Ah&G>9EXt;aLE!_pR3#AxQ+x6@5a>_=jNJfj zZUkTlNH7@G1@Ofc0AB{7EYHI+avkX0UwYj&g~xWST7P`{Q5Z-At=YzLMV7xsNzKPO zv!{#Spvv4Qa6}IQ+b%&F9s@c6r#n9fC@#Y+n=8mBaaDQcMN1h3W)&n70lNU9&y(fS17NrP;-s`|R7thjeLeNdKT zaC!>?(Bueh zI*O(L{1nbkz%gdemucIZt83VP79C@L4Edwn54*beAvS#;(=$NxCctyW4;Wr`L-5YI^Z z?Aw%7Gk-*Z^7KwsuJNR12C#2cd!DB%AUz7Y%tEP}NR^t$%W+GY2VF_#@@=VKszYdY zN}ciimglX-ayj>sRa}(NKm8{g-O~k3u%Uk%=y)MJU}q~2v@{z|Yz8l$qZsKy-HvMo z%}HL{0knONi3>g0vt8cOivz&HA7>2fAN^v0k6Ot@9R94Orsk*7bnx|6O}Huwpf$)s zH4q68;-Lf3_5Cz%|NAHh(D2k@4E@#qa9Mx=(BSn0UwMB00$@I0?2+0SAoJFiO+bqe zxHtr~JpFm8$Vd(Vj=>Ydg@ipDh{lY3f{S$;cpbjpSEr0Y3khwXuNJ z0+0=Z#m~fWMlvshMkWhhMOvFdZ6Ba%Gn;>uCNmefX8tduLQg@yzq1dU?ML{t@pK=eA@zFq zi-oR~a~qQ&XxRb=j~fKRX{q&r1;XOQW{uj!6w)T4ka(u8gY`aB-o87I^kp^bGYDk% zh<@Byt5IO?!U^3C5jMq?CFjOGfoSA=B_cvOcUL>liw_O+-(pC`Fth-KyubBt(l(g2 z&GYmN)`DOl5GVm~_4)vR>9(z{(wDo$<{^MnZ>ig6+Qb032irmV!k{z3^$lPyK3@VL zGNvl!^?IZL>NHw#VtSvKxmZI`6{~B07MMXk`ytZ;sC}b zCUs*#I+K=KfZb-#J->0Hr9{SPxht!%IA97H7C4{WQ{fmO)ll(MIKo|87@F6rGyZ5e_wOGUQA!Kqr?RUKd{m6myP%3tSIro0bg}Z4 zY@6;pfMtjkqQ||_wBfQHrS6w9gdPb}(ibKSf&iem`^5GS8hZ01&h0bmE)`o2v$`q? zg2*6Jo_xj-HPFeCQJ z0*dww9~u{6OWC30c8I+Jy``-zu(24x&If#YB)@t3TwnfPd;UOnzCgqP&qV%^6`!B9 zsE4`OEUC*EB_Zpk|&$O2ft=y|>J%mpf80c!@p%zVrMn3b;- z0JHa&H4`+eOm7r0E5}`6T7Jq*#DM0-d=O>wleKCr(T)QAWNJ~;J69ycwB_%5D49C_ zPDul_=Ld{Hn0@1~b#@dKUrgQL_jhwNwzxe~0OjllxZUm&0AG%($6DC=0_|A>8H|g6 z`Hh@Wdk@@2M*+(LF#XSyyj`1~Ib_($($%1t?HPSK=ccIh`FxiBO9+70fbstlvGP@e zAC>?R7Ifb%z>5D08QF4LyJ2Efml*(ZYXj^a^~_LuE)Kdy{V(n{bpfOO04pG5X9%?C n2aM`qWjBQWu4@7J0>J+Ok31S`^PgYR00000NkvXXu0mjf#b6!8 literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/extendedae_plus/textures/block/beam_former_yudan.png b/src/main/resources/assets/extendedae_plus/textures/block/beam_former_yudan.png new file mode 100644 index 0000000000000000000000000000000000000000..bfe501a15d098cbd37bd5b86eb00ee1306fb51c1 GIT binary patch literal 904 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 literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/extendedae_plus/textures/block/yudan.png b/src/main/resources/assets/extendedae_plus/textures/block/yudan.png new file mode 100644 index 0000000000000000000000000000000000000000..43691dcf2d70e3e3fa29f5ccbc092d5f10527416 GIT binary patch literal 3887 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 literal 0 HcmV?d00001 diff --git a/src/main/resources/data/extendedae_plus/loot_tables/blocks/_feng.json b/src/main/resources/data/extendedae_plus/loot_tables/blocks/_feng.json new file mode 100644 index 0000000..5e9ec36 --- /dev/null +++ b/src/main/resources/data/extendedae_plus/loot_tables/blocks/_feng.json @@ -0,0 +1,19 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "rolls": 1, + "entries": [ + { + "type": "minecraft:item", + "name": "extendedae_plus:_feng" + } + ], + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ] + } + ] +} diff --git a/src/main/resources/data/extendedae_plus/loot_tables/blocks/c-h716.json b/src/main/resources/data/extendedae_plus/loot_tables/blocks/c-h716.json new file mode 100644 index 0000000..5645907 --- /dev/null +++ b/src/main/resources/data/extendedae_plus/loot_tables/blocks/c-h716.json @@ -0,0 +1,19 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "rolls": 1, + "entries": [ + { + "type": "minecraft:item", + "name": "extendedae_plus:c-h716" + } + ], + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ] + } + ] +} diff --git a/src/main/resources/data/extendedae_plus/loot_tables/blocks/fish_dan_.json b/src/main/resources/data/extendedae_plus/loot_tables/blocks/fish_dan_.json new file mode 100644 index 0000000..46921a0 --- /dev/null +++ b/src/main/resources/data/extendedae_plus/loot_tables/blocks/fish_dan_.json @@ -0,0 +1,19 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "rolls": 1, + "entries": [ + { + "type": "minecraft:item", + "name": "extendedae_plus:fish_dan_" + } + ], + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ] + } + ] +} diff --git a/src/main/resources/data/extendedae_plus/loot_tables/blocks/xbai.json b/src/main/resources/data/extendedae_plus/loot_tables/blocks/xbai.json new file mode 100644 index 0000000..03d6732 --- /dev/null +++ b/src/main/resources/data/extendedae_plus/loot_tables/blocks/xbai.json @@ -0,0 +1,19 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "rolls": 1, + "entries": [ + { + "type": "minecraft:item", + "name": "extendedae_plus:xbai" + } + ], + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ] + } + ] +}