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 8fc635d..535b3bf 100644 --- a/src/main/java/com/extendedae_plus/client/screen/ProviderSelectScreen.java +++ b/src/main/java/com/extendedae_plus/client/screen/ProviderSelectScreen.java @@ -32,7 +32,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 { @@ -63,6 +65,7 @@ public class ProviderSelectScreen extends Screen { private EditBox searchBox; // 中文名输入框(用于添加映射) private EditBox cnInput; + private Button autoUploadToggleButton; private String query = ""; private boolean needsRefresh = false; private int page = 0; @@ -143,6 +146,22 @@ public class ProviderSelectScreen extends Screen { } } + private Component buildAutoUploadToggleLabel() { + String stateKey = autoUploadUniqueMatchEnabled + ? "extendedae_plus.configuration.state_on" + : "extendedae_plus.configuration.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(this.buildAutoUploadToggleLabel()); + } + } + private String buildLabel(int idx) { String name = this.fNames.get(idx); int totalSlots = this.fTotalSlots.get(idx); @@ -251,7 +270,7 @@ public class ProviderSelectScreen extends Screen { } private void tryAutoUploadIfUniqueMatch() { - if (!this.autoUploadRequestedFromPresetSearch || this.autoUploadAttempted) { + if (!autoUploadUniqueMatchEnabled || !this.autoUploadRequestedFromPresetSearch || this.autoUploadAttempted) { return; } this.autoUploadAttempted = true; @@ -336,35 +355,40 @@ public class ProviderSelectScreen extends Screen { // 重载映射按钮(热重载 recipe_type_names.json)——移至下一行,与关闭按钮并排 Button reload = Button.builder(Component.translatable("extendedae_plus.screen.reload_mapping"), b -> this.reloadMapping()) - .bounds(centerX - 130, navY + 30, 80, 20) + .bounds(centerX - 130, navY + 55, 80, 20) .build(); this.addRenderableWidget(reload); + this.autoUploadToggleButton = Button.builder(this.buildAutoUploadToggleLabel(), b -> this.toggleAutoUploadUniqueMatch()) + .bounds(centerX + 50, navY + 30, 250, 20) + .build(); + this.addRenderableWidget(this.autoUploadToggleButton); + // 中文名输入框(用于新增映射的值) if (this.cnInput == null) { - this.cnInput = new EditBox(this.font, centerX + 50, navY + 30, 120, 20, Component.translatable("extendedae_plus.screen.cn_name")); + this.cnInput = new EditBox(this.font, centerX + 50, navY + 55, 120, 20, Component.translatable("extendedae_plus.screen.cn_name")); } else { this.cnInput.setX(centerX + 50); - this.cnInput.setY(navY + 30); + this.cnInput.setY(navY + 55); this.cnInput.setWidth(120); } this.addRenderableWidget(this.cnInput); // 增加映射按钮(使用当前搜索关键字 -> 中文) Button addMap = Button.builder(Component.translatable("extendedae_plus.screen.add_mapping"), b -> this.addMappingFromUI()) - .bounds(centerX + 175, navY + 30, 60, 20) + .bounds(centerX + 175, navY + 55, 60, 20) .build(); this.addRenderableWidget(addMap); // 删除映射(按中文值精确匹配删除)按钮 Button delByCn = Button.builder(Component.translatable("extendedae_plus.screen.remove_mapping"), b -> this.deleteMappingByCnFromUI()) - .bounds(centerX + 240, navY + 30, 60, 20) + .bounds(centerX + 240, navY + 55, 60, 20) .build(); this.addRenderableWidget(delByCn); // 关闭按钮 Button close = Button.builder(Component.translatable("gui.cancel"), b -> this.onClose()) - .bounds(centerX - 40, navY + 30, 80, 20) + .bounds(centerX - 40, navY + 55, 80, 20) .build(); this.addRenderableWidget(close); @@ -533,6 +557,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) { // 加载失败时静默处理 } @@ -552,6 +581,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/MirrorPatternProviderBlockEntity.java b/src/main/java/com/extendedae_plus/content/ae2/MirrorPatternProviderBlockEntity.java index 2d1ee0f..1612eb8 100644 --- a/src/main/java/com/extendedae_plus/content/ae2/MirrorPatternProviderBlockEntity.java +++ b/src/main/java/com/extendedae_plus/content/ae2/MirrorPatternProviderBlockEntity.java @@ -5,8 +5,12 @@ import appeng.api.ids.AEComponents; import appeng.api.inventories.InternalInventory; 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.helpers.patternprovider.PatternProviderLogicHost; +import appeng.parts.AEBasePart; import appeng.util.SettingsFrom; import appeng.util.inv.AppEngInternalInventory; import com.extendedae_plus.api.bridge.PatternProviderLogicSyncBridge; @@ -21,6 +25,7 @@ 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; @@ -38,6 +43,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; @@ -52,10 +58,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); } @@ -106,6 +128,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); @@ -118,6 +143,7 @@ public class MirrorPatternProviderBlockEntity extends PatternProviderBlockEntity this.masterDimension = null; this.masterPos = null; + this.masterSide = null; this.scheduleImmediateSync(); this.invalidatePatternSyncState(); this.needsUnboundPatternCleanup = true; @@ -128,6 +154,9 @@ public class MirrorPatternProviderBlockEntity extends PatternProviderBlockEntity Registries.DIMENSION, ResourceLocation.parse(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; } } @@ -166,6 +195,10 @@ public class MirrorPatternProviderBlockEntity extends PatternProviderBlockEntity } public boolean bindToMaster(GlobalPos master) { + return this.bindToMaster(new MasterLocation(master.dimension(), master.pos(), null)); + } + + public boolean bindToMaster(MasterLocation master) { if (!(this.getLevel() instanceof ServerLevel serverLevel)) { return false; } @@ -174,17 +207,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(); } @@ -193,33 +227,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; } - ServerLevel masterLevel; - if (serverLevel.dimension() == this.masterDimension) { - masterLevel = serverLevel; - } else { - masterLevel = serverLevel.getServer().getLevel(this.masterDimension); - } - - 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"); @@ -227,11 +250,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"); @@ -273,7 +296,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; } @@ -298,18 +325,19 @@ public class MirrorPatternProviderBlockEntity extends PatternProviderBlockEntity return true; } - ServerLevel masterLevel; - if (serverLevel.dimension() == this.masterDimension) { - masterLevel = serverLevel; - } else { - masterLevel = serverLevel.getServer().getLevel(this.masterDimension); - } - - 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) { @@ -317,6 +345,7 @@ public class MirrorPatternProviderBlockEntity extends PatternProviderBlockEntity this.masterDimension = null; this.masterPos = null; + this.masterSide = null; this.invalidatePatternSyncState(); this.needsUnboundPatternCleanup = false; @@ -329,12 +358,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(); @@ -343,7 +374,7 @@ public class MirrorPatternProviderBlockEntity extends PatternProviderBlockEntity } @Nullable - private PatternProviderBlockEntity findAdjacentMaster() { + private ResolvedMaster findAdjacentMaster() { var level = this.getLevel(); if (level == null) { return null; @@ -351,24 +382,23 @@ public class MirrorPatternProviderBlockEntity extends PatternProviderBlockEntity for (var direction : Direction.values()) { var adjacent = level.getBlockEntity(this.getBlockPos().relative(direction)); - if (isValidMaster(adjacent)) { - return (PatternProviderBlockEntity) adjacent; + var master = resolveMaster(adjacent, null); + if (master == null) { + master = resolveMaster(adjacent, direction.getOpposite()); + } + if (master != null) { + return master; } } return null; } - private boolean syncFromMaster(PatternProviderBlockEntity master) { - var masterLevel = master.getLevel(); - if (masterLevel == null) { - return false; - } - - var bindingChanged = this.setBoundMaster(masterLevel.dimension(), master.getBlockPos()); + 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(); @@ -377,18 +407,21 @@ public class MirrorPatternProviderBlockEntity extends PatternProviderBlockEntity return changed; } - private boolean syncMirroredSettings(PatternProviderBlockEntity master) { + private boolean syncMirroredSettings(PatternProviderLogicHost master) { if (!this.hasDifferentMirroredSettings(master)) { return false; } var builder = DataComponentMap.builder(); - if (master.getCustomName() != null) { - builder.set(AEComponents.EXPORTED_CUSTOM_NAME, master.getCustomName()); + var customName = getCustomName(master); + if (customName != null) { + builder.set(AEComponents.EXPORTED_CUSTOM_NAME, customName); } builder.set(AEComponents.EXPORTED_SETTINGS, master.getConfigManager().exportSettings()); builder.set(AEComponents.EXPORTED_PRIORITY, master.getPriority()); - builder.set(AEComponents.EXPORTED_PUSH_DIRECTION, master.getBlockState().getValue(PatternProviderBlock.PUSH_DIRECTION)); + if (supportsPushDirectionState(master)) { + builder.set(AEComponents.EXPORTED_PUSH_DIRECTION, getPushDirection(master)); + } this.importSettings(SettingsFrom.MEMORY_CARD, builder.build(), null); return true; } @@ -399,11 +432,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)) || mirrorLogic.getPriority() != masterLogic.getPriority() || mirrorLogic.getConfigManager().getSetting(Settings.BLOCKING_MODE) != masterLogic.getConfigManager().getSetting(Settings.BLOCKING_MODE) @@ -411,11 +444,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) { @@ -508,7 +541,7 @@ public class MirrorPatternProviderBlockEntity extends PatternProviderBlockEntity return ItemStack.isSameItemSameComponents(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(); } @@ -516,10 +549,116 @@ public class MirrorPatternProviderBlockEntity extends PatternProviderBlockEntity return UNKNOWN_PATTERN_SYNC_VERSION; } - private static boolean isValidMaster(@Nullable BlockEntity blockEntity) { - return blockEntity instanceof PatternProviderBlockEntity - && !(blockEntity instanceof MirrorPatternProviderBlockEntity) - && !blockEntity.isRemoved(); + @Nullable + private MasterLocation getBoundMasterLocation() { + if (this.masterDimension == null || this.masterPos == null) { + return null; + } + 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; + } + + @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 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..b4d59ce --- /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 + protected BlockState rotate(BlockState state, Rotation rotation) { + return state.setValue(FACING, rotation.rotate(state.getValue(FACING))); + } + + @Override + protected 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 677d7cf..baa84ce 100644 --- a/src/main/java/com/extendedae_plus/init/ModBlocks.java +++ b/src/main/java/com/extendedae_plus/init/ModBlocks.java @@ -7,6 +7,7 @@ import com.extendedae_plus.content.matrix.CrafterCorePlusBlock; import com.extendedae_plus.content.matrix.PatternCorePlusBlock; import com.extendedae_plus.content.matrix.SpeedCorePlusBlock; import com.extendedae_plus.content.matrix.UploadCoreBlock; +import com.extendedae_plus.content.decor.DollBlock; import com.extendedae_plus.content.wireless.LabeledWirelessTransceiverBlock; import com.extendedae_plus.content.wireless.WirelessTransceiverBlock; import com.extendedae_plus.content.crafting.EPlusCraftingUnitType; @@ -14,6 +15,7 @@ import appeng.block.crafting.CraftingUnitBlock; import appeng.blockentity.crafting.CraftingBlockEntity; import appeng.core.definitions.AEBlockEntities; import net.minecraft.world.level.block.Block; +import net.minecraft.world.level.block.Blocks; import net.minecraft.world.level.block.state.BlockBehaviour; import net.minecraft.world.level.material.MapColor; import net.neoforged.neoforge.registries.DeferredBlock; @@ -131,4 +133,16 @@ public final class ModBlocks { "mirror_pattern_provider", MirrorPatternProviderBlock::new ); + + public static final DeferredBlock C_H716 = registerDollBlock("c-h716"); + public static final DeferredBlock FISH_DAN = registerDollBlock("fish_dan_"); + public static final DeferredBlock _FENG = registerDollBlock("_feng"); + public static final DeferredBlock XBAI = registerDollBlock("xbai"); + + private static DeferredBlock registerDollBlock(String name) { + return BLOCKS.register( + name, + () -> new DollBlock(BlockBehaviour.Properties.ofFullCopy(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 093cd58..9ef14d4 100644 --- a/src/main/java/com/extendedae_plus/init/ModCreativeTabs.java +++ b/src/main/java/com/extendedae_plus/init/ModCreativeTabs.java @@ -36,6 +36,10 @@ public final class ModCreativeTabs { ModItems.ASSEMBLER_MATRIX_CRAFTER_PLUS.get().getDefaultInstance(), ModItems.ASSEMBLER_MATRIX_PATTERN_PLUS.get().getDefaultInstance(), ModItems.MIRROR_PATTERN_PROVIDER.get().getDefaultInstance(), + ModItems.C_H716.get().getDefaultInstance(), + ModItems.FISH_DAN.get().getDefaultInstance(), + ModItems._FENG.get().getDefaultInstance(), + ModItems.XBAI.get().getDefaultInstance(), ModItems.MIRROR_PATTERN_BINDING_TOOL.get().getDefaultInstance() ).forEach(output::accept); diff --git a/src/main/java/com/extendedae_plus/init/ModItems.java b/src/main/java/com/extendedae_plus/init/ModItems.java index 547618e..0ac9146 100644 --- a/src/main/java/com/extendedae_plus/init/ModItems.java +++ b/src/main/java/com/extendedae_plus/init/ModItems.java @@ -85,6 +85,22 @@ public final class ModItems { "mirror_pattern_provider", () -> new BlockItem(ModBlocks.MIRROR_PATTERN_PROVIDER_BLOCK.get(), new Item.Properties()) ); + public static final DeferredItem C_H716 = ITEMS.register( + "c-h716", + () -> new BlockItem(ModBlocks.C_H716.get(), new Item.Properties()) + ); + public static final DeferredItem FISH_DAN = ITEMS.register( + "fish_dan_", + () -> new BlockItem(ModBlocks.FISH_DAN.get(), new Item.Properties()) + ); + public static final DeferredItem _FENG = ITEMS.register( + "_feng", + () -> new BlockItem(ModBlocks._FENG.get(), new Item.Properties()) + ); + public static final DeferredItem XBAI = ITEMS.register( + "xbai", + () -> new BlockItem(ModBlocks.XBAI.get(), new Item.Properties()) + ); public static final DeferredItem 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 0f3801d..5c99b79 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.component.DataComponents; 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.world.InteractionHand; import net.minecraft.world.InteractionResult; import net.minecraft.world.InteractionResultHolder; @@ -18,6 +23,7 @@ import net.minecraft.world.item.TooltipFlag; import net.minecraft.world.item.component.CustomData; 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; @@ -27,6 +33,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)); @@ -47,18 +54,13 @@ public class MirrorPatternBindingToolItem extends Item { 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) { - setSelectedMaster(stack, GlobalPos.of(level.dimension(), context.getClickedPos())); + setSelectedMaster(stack, clickedMaster); clearSelectedRangeStart(stack); - player.displayClientMessage( - Component.translatable( - "extendedae_plus.message.mirror_binding_tool.selected", - context.getClickedPos().getX(), - context.getClickedPos().getY(), - context.getClickedPos().getZ()), - true); + player.displayClientMessage(createSelectedMessage(clickedMaster), true); } return InteractionResult.sidedSuccess(level.isClientSide); } @@ -130,6 +132,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")); } @@ -145,9 +150,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.getOrDefault(DataComponents.CUSTOM_DATA, CustomData.EMPTY).copyTag(); - tag.put(TAG_SELECTED_MASTER, createGlobalPosTag(master)); + tag.put(TAG_SELECTED_MASTER, createMasterTag(master)); stack.set(DataComponents.CUSTOM_DATA, CustomData.of(tag)); } @@ -170,8 +175,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 @@ -179,6 +184,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()); @@ -186,6 +199,23 @@ 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.getOrDefault(DataComponents.CUSTOM_DATA, CustomData.EMPTY).copyTag(); + 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.getOrDefault(DataComponents.CUSTOM_DATA, CustomData.EMPTY).copyTag(); @@ -253,7 +283,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; @@ -277,6 +307,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/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..d2d8f41 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,8 @@ item_ids: - **超级装配矩阵样板核心**:;每个核心提供 72 个样板槽位。 - **超级装配矩阵合成核心**:每个核心可同时运行 32 个合成任务。 -- **超级装配矩阵速度核心**:提供相当于普通速度核心5倍的加速效果。 +- **超级装配矩阵速度核心**:提供相当于普通速度核心5倍的加速效果。(一个的效果顶原版五个,放一个就到上限了,多放无用。) +超级速度核心Guide新增准确描述 \ No newline at end of file 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..1db4fde 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 0000000..95da6c9 Binary files /dev/null and b/src/main/resources/assets/extendedae_plus/ae2guide/picture/entity_speed_ticker_en.png differ 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 0000000..60bfe09 Binary files /dev/null and b/src/main/resources/assets/extendedae_plus/ae2guide/picture/network_pattern_controller_en.png differ diff --git a/src/main/resources/assets/extendedae_plus/blockstates/_feng.json b/src/main/resources/assets/extendedae_plus/blockstates/_feng.json new file mode 100644 index 0000000..9aec4ca --- /dev/null +++ b/src/main/resources/assets/extendedae_plus/blockstates/_feng.json @@ -0,0 +1,8 @@ +{ + "variants": { + "facing=north": { "model": "extendedae_plus:block/_feng" }, + "facing=east": { "model": "extendedae_plus:block/_feng", "y": 90 }, + "facing=south": { "model": "extendedae_plus:block/_feng", "y": 180 }, + "facing=west": { "model": "extendedae_plus:block/_feng", "y": 270 } + } +} diff --git a/src/main/resources/assets/extendedae_plus/blockstates/c-h716.json b/src/main/resources/assets/extendedae_plus/blockstates/c-h716.json new file mode 100644 index 0000000..11a0213 --- /dev/null +++ b/src/main/resources/assets/extendedae_plus/blockstates/c-h716.json @@ -0,0 +1,8 @@ +{ + "variants": { + "facing=north": { "model": "extendedae_plus:block/c-h716" }, + "facing=east": { "model": "extendedae_plus:block/c-h716", "y": 90 }, + "facing=south": { "model": "extendedae_plus:block/c-h716", "y": 180 }, + "facing=west": { "model": "extendedae_plus:block/c-h716", "y": 270 } + } +} diff --git a/src/main/resources/assets/extendedae_plus/blockstates/fish_dan_.json b/src/main/resources/assets/extendedae_plus/blockstates/fish_dan_.json new file mode 100644 index 0000000..3492a00 --- /dev/null +++ b/src/main/resources/assets/extendedae_plus/blockstates/fish_dan_.json @@ -0,0 +1,8 @@ +{ + "variants": { + "facing=north": { "model": "extendedae_plus:block/fish_dan_" }, + "facing=east": { "model": "extendedae_plus:block/fish_dan_", "y": 90 }, + "facing=south": { "model": "extendedae_plus:block/fish_dan_", "y": 180 }, + "facing=west": { "model": "extendedae_plus:block/fish_dan_", "y": 270 } + } +} diff --git a/src/main/resources/assets/extendedae_plus/blockstates/xbai.json b/src/main/resources/assets/extendedae_plus/blockstates/xbai.json new file mode 100644 index 0000000..fc27d56 --- /dev/null +++ b/src/main/resources/assets/extendedae_plus/blockstates/xbai.json @@ -0,0 +1,8 @@ +{ + "variants": { + "facing=north": { "model": "extendedae_plus:block/xbai" }, + "facing=east": { "model": "extendedae_plus:block/xbai", "y": 90 }, + "facing=south": { "model": "extendedae_plus:block/xbai", "y": 180 }, + "facing=west": { "model": "extendedae_plus:block/xbai", "y": 270 } + } +} diff --git a/src/main/resources/assets/extendedae_plus/lang/en_us.json b/src/main/resources/assets/extendedae_plus/lang/en_us.json index e092e77..3e0001c 100644 --- a/src/main/resources/assets/extendedae_plus/lang/en_us.json +++ b/src/main/resources/assets/extendedae_plus/lang/en_us.json @@ -22,6 +22,10 @@ "item.extendedae_plus.channel_card": "Channel Card", "item.extendedae_plus.mirror_pattern_binding_tool": "Mirror Pattern Binder", "item.extendedae_plus.virtual_crafting_card": "Virtual Crafting Card", + "item.extendedae_plus.c-h716": "C-H716 Doll", + "item.extendedae_plus.fish_dan_": "Fish Dan Doll", + "item.extendedae_plus._feng": "_feng Doll", + "item.extendedae_plus.xbai": "Xbai Doll", "item.extendedae_plus.channel_card.channel": "Channel: %d", "item.extendedae_plus.channel_card.channel.unset": "Channel: Unset", "item.extendedae_plus.channel_card.set": "Channel set to: %d", @@ -61,6 +65,10 @@ "block.extendedae_plus.assembler_matrix_speed_plus": "Assembler Matrix Speed Core Plus", "block.extendedae_plus.assembler_matrix_crafter_plus": "Assembler Matrix Crafter Core Plus", "block.extendedae_plus.assembler_matrix_pattern_plus": "Assembler Matrix Pattern Core Plus", + "block.extendedae_plus.c-h716": "C-H716 Doll", + "block.extendedae_plus.fish_dan_": "Fish Dan Doll", + "block.extendedae_plus._feng": "_feng Doll", + "block.extendedae_plus.xbai": "Xbai Doll", "gui.extendedae_plus.assembler_matrix.pattern": "Assembler Matrix Pattern Core Plus", "extendedae_plus.upload_to_matrix": "Upload to Assembly Matrix", @@ -71,6 +79,7 @@ "extendedae_plus.screen.reload_mapping": "Reload Mapping", "extendedae_plus.screen.add_mapping": "Add Mapping", "extendedae_plus.screen.remove_mapping": "Remove Mapping", + "extendedae_plus.screen.auto_upload_unique_match": "Auto Upload on Unique Match: %s", "extendedae_plus.screen.cn_name": "Chinese Name", "extendedae_plus.button.choose_provider": "Upload Pattern", "key.extendedae_plus.create_pattern": "Create Pattern (Ctrl+Q)", 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 b8854fc..abb9125 100644 --- a/src/main/resources/assets/extendedae_plus/lang/zh_cn.json +++ b/src/main/resources/assets/extendedae_plus/lang/zh_cn.json @@ -22,6 +22,10 @@ "item.extendedae_plus.channel_card": "频道卡", "item.extendedae_plus.mirror_pattern_binding_tool": "镜像样板绑定器", "item.extendedae_plus.virtual_crafting_card": "虚拟合成卡", + "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.channel_card.channel": "频道: %d", "item.extendedae_plus.channel_card.channel.unset": "频道: 未设置", "item.extendedae_plus.channel_card.set": "频道已设置为: %d", @@ -61,6 +65,10 @@ "block.extendedae_plus.assembler_matrix_speed_plus": "超级装配矩阵速度核心", "block.extendedae_plus.assembler_matrix_crafter_plus": "超级装配矩阵合成核心", "block.extendedae_plus.assembler_matrix_pattern_plus": "超级装配矩阵样板核心", + "block.extendedae_plus.c-h716": "C-H716 玩偶", + "block.extendedae_plus.fish_dan_": "Fish_Dan_ 玩偶", + "block.extendedae_plus._feng": "_feng 玩偶", + "block.extendedae_plus.xbai": "Xbai 玩偶", "gui.extendedae_plus.assembler_matrix.pattern": "超级装配矩阵样板核心", "extendedae_plus.upload_to_matrix": "上传到装配矩阵", @@ -71,6 +79,7 @@ "extendedae_plus.screen.reload_mapping": "重载映射", "extendedae_plus.screen.add_mapping": "增加映射", "extendedae_plus.screen.remove_mapping": "删除映射", + "extendedae_plus.screen.auto_upload_unique_match": "唯一匹配时自动上传: %s", "extendedae_plus.screen.cn_name": "中文名", "extendedae_plus.button.choose_provider":"上传样板", "key.extendedae_plus.create_pattern": "快速创建样板 (Ctrl+Q)", 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..fb79e35 --- /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" +} 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 0000000..2557c6a Binary files /dev/null and b/src/main/resources/assets/extendedae_plus/textures/block/_feng_fumo.png differ 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 0000000..bfe501a Binary files /dev/null and b/src/main/resources/assets/extendedae_plus/textures/block/beam_former_yudan.png differ diff --git a/src/main/resources/assets/extendedae_plus/textures/block/iava_user.png b/src/main/resources/assets/extendedae_plus/textures/block/iava_user.png new file mode 100644 index 0000000..d79fe17 Binary files /dev/null and b/src/main/resources/assets/extendedae_plus/textures/block/iava_user.png differ diff --git a/src/main/resources/assets/extendedae_plus/textures/block/infinity_biginteger_cell.png b/src/main/resources/assets/extendedae_plus/textures/block/infinity_biginteger_cell.png new file mode 100644 index 0000000..4ee0b10 Binary files /dev/null and b/src/main/resources/assets/extendedae_plus/textures/block/infinity_biginteger_cell.png differ diff --git a/src/main/resources/assets/extendedae_plus/textures/block/xbai.png b/src/main/resources/assets/extendedae_plus/textures/block/xbai.png new file mode 100644 index 0000000..bb356c9 Binary files /dev/null and b/src/main/resources/assets/extendedae_plus/textures/block/xbai.png differ 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 0000000..43691dc Binary files /dev/null and b/src/main/resources/assets/extendedae_plus/textures/block/yudan.png differ diff --git a/src/main/resources/data/extendedae_plus/loot_table/blocks/_feng.json b/src/main/resources/data/extendedae_plus/loot_table/blocks/_feng.json new file mode 100644 index 0000000..5e9ec36 --- /dev/null +++ b/src/main/resources/data/extendedae_plus/loot_table/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_table/blocks/c-h716.json b/src/main/resources/data/extendedae_plus/loot_table/blocks/c-h716.json new file mode 100644 index 0000000..5645907 --- /dev/null +++ b/src/main/resources/data/extendedae_plus/loot_table/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_table/blocks/fish_dan_.json b/src/main/resources/data/extendedae_plus/loot_table/blocks/fish_dan_.json new file mode 100644 index 0000000..46921a0 --- /dev/null +++ b/src/main/resources/data/extendedae_plus/loot_table/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_table/blocks/xbai.json b/src/main/resources/data/extendedae_plus/loot_table/blocks/xbai.json new file mode 100644 index 0000000..03d6732 --- /dev/null +++ b/src/main/resources/data/extendedae_plus/loot_table/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" + } + ] + } + ] +}