diff --git a/common-1.21.1/src/main/java/com/craisinlord/antarchy/content/block/PortalGunPortalBaseBlock.java b/common-1.21.1/src/main/java/com/craisinlord/antarchy/content/block/PortalGunPortalBaseBlock.java new file mode 100644 index 00000000..289e9a01 --- /dev/null +++ b/common-1.21.1/src/main/java/com/craisinlord/antarchy/content/block/PortalGunPortalBaseBlock.java @@ -0,0 +1,76 @@ +package com.craisinlord.antarchy.content.block; + +import com.craisinlord.antarchy.content.block.entity.PortalGunPortalBaseBlockEntity; +import com.mojang.serialization.MapCodec; +import java.util.function.Supplier; +import net.minecraft.core.BlockPos; +import net.minecraft.world.level.BlockGetter; +import net.minecraft.world.level.Level; +import net.minecraft.world.level.block.BaseEntityBlock; +import net.minecraft.world.level.block.Block; +import net.minecraft.world.level.block.RenderShape; +import net.minecraft.world.level.block.entity.BlockEntity; +import net.minecraft.world.level.block.entity.BlockEntityTicker; +import net.minecraft.world.level.block.entity.BlockEntityType; +import net.minecraft.world.level.block.state.BlockBehaviour; +import net.minecraft.world.level.block.state.BlockState; +import net.minecraft.world.phys.shapes.CollisionContext; +import net.minecraft.world.phys.shapes.Shapes; +import net.minecraft.world.phys.shapes.VoxelShape; + +public class PortalGunPortalBaseBlock extends BaseEntityBlock { + private static final VoxelShape EMPTY = Shapes.empty(); + private final Supplier> blockEntityTypeSupplier; + private final MapCodec codec; + + public PortalGunPortalBaseBlock(Supplier> blockEntityTypeSupplier, BlockBehaviour.Properties properties) { + super(properties); + this.blockEntityTypeSupplier = blockEntityTypeSupplier; + this.codec = Block.simpleCodec(ignored -> this); + } + + @Override + public MapCodec codec() { + return this.codec; + } + + @Override + protected RenderShape getRenderShape(BlockState state) { + return RenderShape.INVISIBLE; + } + + @Override + protected VoxelShape getShape(BlockState state, BlockGetter level, BlockPos pos, CollisionContext context) { + return EMPTY; + } + + @Override + protected VoxelShape getCollisionShape(BlockState state, BlockGetter level, BlockPos pos, CollisionContext context) { + return EMPTY; + } + + @Override + public BlockEntity newBlockEntity(BlockPos pos, BlockState state) { + return new PortalGunPortalBaseBlockEntity(pos, state, this.blockEntityTypeSupplier); + } + + @Override + public BlockEntityTicker getTicker(Level level, BlockState state, BlockEntityType blockEntityType) { + if (level.isClientSide) { + return null; + } + return createTickerHelper(blockEntityType, this.blockEntityTypeSupplier.get(), (tickLevel, tickPos, tickState, blockEntity) -> { + if (tickLevel instanceof net.minecraft.server.level.ServerLevel serverLevel) { + PortalGunPortalBaseBlockEntity.serverTick(serverLevel, tickPos, tickState, blockEntity); + } + }); + } + + @Override + protected void onRemove(BlockState state, Level level, BlockPos pos, BlockState newState, boolean movedByPiston) { + if (!state.is(newState.getBlock()) && level.getBlockEntity(pos) instanceof PortalGunPortalBaseBlockEntity blockEntity) { + blockEntity.onBroken(); + } + super.onRemove(state, level, pos, newState, movedByPiston); + } +} diff --git a/common-1.21.1/src/main/java/com/craisinlord/antarchy/content/block/PortalGunPortalMasterBlock.java b/common-1.21.1/src/main/java/com/craisinlord/antarchy/content/block/PortalGunPortalMasterBlock.java new file mode 100644 index 00000000..c0c92814 --- /dev/null +++ b/common-1.21.1/src/main/java/com/craisinlord/antarchy/content/block/PortalGunPortalMasterBlock.java @@ -0,0 +1,76 @@ +package com.craisinlord.antarchy.content.block; + +import com.craisinlord.antarchy.content.block.entity.PortalGunPortalMasterBlockEntity; +import com.mojang.serialization.MapCodec; +import java.util.function.Supplier; +import net.minecraft.core.BlockPos; +import net.minecraft.world.level.BlockGetter; +import net.minecraft.world.level.Level; +import net.minecraft.world.level.block.BaseEntityBlock; +import net.minecraft.world.level.block.Block; +import net.minecraft.world.level.block.RenderShape; +import net.minecraft.world.level.block.entity.BlockEntity; +import net.minecraft.world.level.block.entity.BlockEntityTicker; +import net.minecraft.world.level.block.entity.BlockEntityType; +import net.minecraft.world.level.block.state.BlockBehaviour; +import net.minecraft.world.level.block.state.BlockState; +import net.minecraft.world.phys.shapes.CollisionContext; +import net.minecraft.world.phys.shapes.Shapes; +import net.minecraft.world.phys.shapes.VoxelShape; + +public class PortalGunPortalMasterBlock extends BaseEntityBlock { + private static final VoxelShape EMPTY = Shapes.empty(); + private final Supplier> blockEntityTypeSupplier; + private final MapCodec codec; + + public PortalGunPortalMasterBlock(Supplier> blockEntityTypeSupplier, BlockBehaviour.Properties properties) { + super(properties); + this.blockEntityTypeSupplier = blockEntityTypeSupplier; + this.codec = Block.simpleCodec(ignored -> this); + } + + @Override + public MapCodec codec() { + return this.codec; + } + + @Override + protected RenderShape getRenderShape(BlockState state) { + return RenderShape.INVISIBLE; + } + + @Override + protected VoxelShape getShape(BlockState state, BlockGetter level, BlockPos pos, CollisionContext context) { + return EMPTY; + } + + @Override + protected VoxelShape getCollisionShape(BlockState state, BlockGetter level, BlockPos pos, CollisionContext context) { + return EMPTY; + } + + @Override + public BlockEntity newBlockEntity(BlockPos pos, BlockState state) { + return new PortalGunPortalMasterBlockEntity(pos, state, this.blockEntityTypeSupplier); + } + + @Override + public BlockEntityTicker getTicker(Level level, BlockState state, BlockEntityType blockEntityType) { + if (level.isClientSide) { + return null; + } + return createTickerHelper(blockEntityType, this.blockEntityTypeSupplier.get(), (tickLevel, tickPos, tickState, blockEntity) -> { + if (tickLevel instanceof net.minecraft.server.level.ServerLevel serverLevel) { + PortalGunPortalMasterBlockEntity.serverTick(serverLevel, tickPos, tickState, blockEntity); + } + }); + } + + @Override + protected void onRemove(BlockState state, Level level, BlockPos pos, BlockState newState, boolean movedByPiston) { + if (!state.is(newState.getBlock()) && level.getBlockEntity(pos) instanceof PortalGunPortalMasterBlockEntity blockEntity) { + blockEntity.onBroken(); + } + super.onRemove(state, level, pos, newState, movedByPiston); + } +} diff --git a/common-1.21.1/src/main/java/com/craisinlord/antarchy/content/block/RoyalSaplingBlock.java b/common-1.21.1/src/main/java/com/craisinlord/antarchy/content/block/RoyalSaplingBlock.java new file mode 100644 index 00000000..913edc31 --- /dev/null +++ b/common-1.21.1/src/main/java/com/craisinlord/antarchy/content/block/RoyalSaplingBlock.java @@ -0,0 +1,60 @@ +package com.craisinlord.antarchy.content.block; + +import com.mojang.serialization.MapCodec; +import net.minecraft.core.BlockPos; +import net.minecraft.core.Direction; +import net.minecraft.tags.BlockTags; +import net.minecraft.world.level.BlockGetter; +import net.minecraft.world.level.LevelAccessor; +import net.minecraft.world.level.LevelReader; +import net.minecraft.world.level.block.Block; +import net.minecraft.world.level.block.Blocks; +import net.minecraft.world.level.block.BushBlock; +import net.minecraft.world.level.block.state.BlockBehaviour; +import net.minecraft.world.level.block.state.BlockState; +import net.minecraft.world.phys.shapes.CollisionContext; +import net.minecraft.world.phys.shapes.VoxelShape; + +public class RoyalSaplingBlock extends BushBlock { + public static final MapCodec CODEC = Block.simpleCodec(RoyalSaplingBlock::new); + private static final VoxelShape SHAPE = Block.box(2.0D, 0.0D, 2.0D, 14.0D, 12.0D, 14.0D); + + public RoyalSaplingBlock(BlockBehaviour.Properties properties) { + super(properties); + } + + @Override + public MapCodec codec() { + return CODEC; + } + + @Override + protected VoxelShape getShape(BlockState state, BlockGetter level, BlockPos pos, CollisionContext context) { + return SHAPE; + } + + @Override + protected boolean mayPlaceOn(BlockState state, BlockGetter level, BlockPos pos) { + return state.is(BlockTags.DIRT); + } + + @Override + protected boolean canSurvive(BlockState state, LevelReader level, BlockPos pos) { + BlockState belowState = level.getBlockState(pos.below()); + return belowState.is(BlockTags.DIRT); + } + + @Override + protected BlockState updateShape( + BlockState state, + Direction direction, + BlockState neighborState, + LevelAccessor level, + BlockPos pos, + BlockPos neighborPos + ) { + return state.canSurvive(level, pos) + ? super.updateShape(state, direction, neighborState, level, pos, neighborPos) + : Blocks.AIR.defaultBlockState(); + } +} diff --git a/common-1.21.1/src/main/java/com/craisinlord/antarchy/content/block/TruffaloLogBlock.java b/common-1.21.1/src/main/java/com/craisinlord/antarchy/content/block/TruffaloLogBlock.java new file mode 100644 index 00000000..2e3f3e20 --- /dev/null +++ b/common-1.21.1/src/main/java/com/craisinlord/antarchy/content/block/TruffaloLogBlock.java @@ -0,0 +1,52 @@ +package com.craisinlord.antarchy.content.block; + +import com.mojang.serialization.MapCodec; +import net.minecraft.core.BlockPos; +import net.minecraft.core.Direction; +import net.minecraft.world.level.BlockGetter; +import net.minecraft.world.level.block.Block; +import net.minecraft.world.level.block.RotatedPillarBlock; +import net.minecraft.world.level.block.state.BlockBehaviour; +import net.minecraft.world.level.block.state.BlockState; +import net.minecraft.world.phys.shapes.CollisionContext; +import net.minecraft.world.phys.shapes.VoxelShape; + +public class TruffaloLogBlock extends RotatedPillarBlock { + public static final MapCodec CODEC = Block.simpleCodec(TruffaloLogBlock::new); + + private static final VoxelShape SHAPE_Y = Block.box(4.0D, 0.0D, 4.0D, 12.0D, 16.0D, 12.0D); + private static final VoxelShape SHAPE_X = Block.box(0.0D, 4.0D, 4.0D, 16.0D, 12.0D, 12.0D); + private static final VoxelShape SHAPE_Z = Block.box(4.0D, 4.0D, 0.0D, 12.0D, 12.0D, 16.0D); + + public TruffaloLogBlock(BlockBehaviour.Properties properties) { + super(properties); + } + + @Override + public MapCodec codec() { + return CODEC; + } + + @Override + protected VoxelShape getShape(BlockState state, BlockGetter level, BlockPos pos, CollisionContext context) { + return shapeFor(state); + } + + @Override + protected VoxelShape getCollisionShape(BlockState state, BlockGetter level, BlockPos pos, CollisionContext context) { + return shapeFor(state); + } + + @Override + protected VoxelShape getOcclusionShape(BlockState state, BlockGetter level, BlockPos pos) { + return shapeFor(state); + } + + private static VoxelShape shapeFor(BlockState state) { + return switch (state.getValue(AXIS)) { + case X -> SHAPE_X; + case Z -> SHAPE_Z; + default -> SHAPE_Y; + }; + } +} diff --git a/common-1.21.1/src/main/java/com/craisinlord/antarchy/content/block/TruffaloSaplingBlock.java b/common-1.21.1/src/main/java/com/craisinlord/antarchy/content/block/TruffaloSaplingBlock.java new file mode 100644 index 00000000..96decdb2 --- /dev/null +++ b/common-1.21.1/src/main/java/com/craisinlord/antarchy/content/block/TruffaloSaplingBlock.java @@ -0,0 +1,110 @@ +package com.craisinlord.antarchy.content.block; + +import com.craisinlord.antarchy.Antarchy; +import com.craisinlord.antarchy.content.worldgen.truffalo.TruffaloTreeGrowers; +import com.mojang.serialization.MapCodec; +import net.minecraft.core.BlockPos; +import net.minecraft.core.Direction; +import net.minecraft.core.Holder; +import net.minecraft.core.registries.Registries; +import net.minecraft.resources.ResourceLocation; +import net.minecraft.server.level.ServerLevel; +import net.minecraft.tags.TagKey; +import net.minecraft.util.RandomSource; +import net.minecraft.world.level.BlockGetter; +import net.minecraft.world.level.Level; +import net.minecraft.world.level.LevelAccessor; +import net.minecraft.world.level.LevelReader; +import net.minecraft.world.level.block.Block; +import net.minecraft.world.level.block.Blocks; +import net.minecraft.world.level.block.BonemealableBlock; +import net.minecraft.world.level.block.BushBlock; +import net.minecraft.world.level.block.state.BlockBehaviour; +import net.minecraft.world.level.block.state.BlockState; +import net.minecraft.world.level.levelgen.feature.ConfiguredFeature; +import net.minecraft.world.phys.shapes.CollisionContext; +import net.minecraft.world.phys.shapes.VoxelShape; + +public class TruffaloSaplingBlock extends BushBlock implements BonemealableBlock { + public static final MapCodec CODEC = Block.simpleCodec(TruffaloSaplingBlock::new); + private static final TagKey SUPPORTS = TagKey.create( + Registries.BLOCK, + ResourceLocation.fromNamespaceAndPath(Antarchy.MODID, "truffalo_sapling_supports") + ); + private static final VoxelShape SHAPE = Block.box(2.0D, 4.0D, 2.0D, 14.0D, 16.0D, 14.0D); + + public TruffaloSaplingBlock(BlockBehaviour.Properties properties) { + super(properties); + } + + @Override + public MapCodec codec() { + return CODEC; + } + + @Override + protected VoxelShape getShape(BlockState state, BlockGetter level, BlockPos pos, CollisionContext context) { + return SHAPE; + } + + @Override + protected boolean mayPlaceOn(BlockState state, BlockGetter level, BlockPos pos) { + return state.is(SUPPORTS); + } + + @Override + protected boolean canSurvive(BlockState state, LevelReader level, BlockPos pos) { + BlockPos supportPos = pos.below(); + BlockState supportState = level.getBlockState(supportPos); + return supportState.is(SUPPORTS) && supportState.isFaceSturdy(level, supportPos, Direction.UP); + } + + @Override + protected void randomTick(BlockState state, ServerLevel level, BlockPos pos, RandomSource random) { + if (random.nextInt(7) == 0) { + this.growConfiguredTree(level, pos, state, random); + } + } + + @Override + protected BlockState updateShape( + BlockState state, + Direction direction, + BlockState neighborState, + LevelAccessor level, + BlockPos pos, + BlockPos neighborPos + ) { + return state.canSurvive(level, pos) + ? super.updateShape(state, direction, neighborState, level, pos, neighborPos) + : Blocks.AIR.defaultBlockState(); + } + + @Override + public boolean isValidBonemealTarget(LevelReader level, BlockPos pos, BlockState state) { + return true; + } + + @Override + public boolean isBonemealSuccess(Level level, RandomSource random, BlockPos pos, BlockState state) { + return random.nextFloat() < 0.45F; + } + + @Override + public void performBonemeal(ServerLevel level, RandomSource random, BlockPos pos, BlockState state) { + this.growConfiguredTree(level, pos, state, random); + } + + private void growConfiguredTree(ServerLevel level, BlockPos pos, BlockState state, RandomSource random) { + Holder.Reference> feature = level.registryAccess() + .lookupOrThrow(Registries.CONFIGURED_FEATURE) + .getOrThrow(TruffaloTreeGrowers.TRUFFALO_TREE); + + level.removeBlock(pos, false); + if (feature.value().place(level, level.getChunkSource().getGenerator(), random, pos)) { + return; + } + + level.setBlock(pos, state, Block.UPDATE_ALL); + } +} diff --git a/common-1.21.1/src/main/java/com/craisinlord/antarchy/content/block/TruffaloTuftBlock.java b/common-1.21.1/src/main/java/com/craisinlord/antarchy/content/block/TruffaloTuftBlock.java new file mode 100644 index 00000000..d4c6a504 --- /dev/null +++ b/common-1.21.1/src/main/java/com/craisinlord/antarchy/content/block/TruffaloTuftBlock.java @@ -0,0 +1,33 @@ +package com.craisinlord.antarchy.content.block; + +import com.mojang.serialization.MapCodec; +import net.minecraft.core.BlockPos; +import net.minecraft.world.entity.player.Player; +import net.minecraft.world.item.ShearsItem; +import net.minecraft.world.level.BlockGetter; +import net.minecraft.world.level.block.Block; +import net.minecraft.world.level.block.state.BlockBehaviour; +import net.minecraft.world.level.block.state.BlockState; + +public class TruffaloTuftBlock extends Block { + public static final MapCodec CODEC = Block.simpleCodec(TruffaloTuftBlock::new); + private static final float SHEARS_DESTROY_SPEED = 10.0F; + + public TruffaloTuftBlock(BlockBehaviour.Properties properties) { + super(properties); + } + + @Override + public MapCodec codec() { + return CODEC; + } + + @Override + protected float getDestroyProgress(BlockState state, Player player, BlockGetter level, BlockPos pos) { + if (player.getMainHandItem().getItem() instanceof ShearsItem) { + return SHEARS_DESTROY_SPEED; + } + + return super.getDestroyProgress(state, player, level, pos); + } +} diff --git a/common-1.21.1/src/main/java/com/craisinlord/antarchy/content/block/entity/PortalGunPortalBaseBlockEntity.java b/common-1.21.1/src/main/java/com/craisinlord/antarchy/content/block/entity/PortalGunPortalBaseBlockEntity.java new file mode 100644 index 00000000..be1b9709 --- /dev/null +++ b/common-1.21.1/src/main/java/com/craisinlord/antarchy/content/block/entity/PortalGunPortalBaseBlockEntity.java @@ -0,0 +1,148 @@ +package com.craisinlord.antarchy.content.block.entity; + +import com.craisinlord.antarchy.content.portalgun.PortalGunPortalEntity; +import java.util.UUID; +import java.util.function.Supplier; +import net.minecraft.core.BlockPos; +import net.minecraft.core.HolderLookup; +import net.minecraft.nbt.CompoundTag; +import net.minecraft.network.protocol.Packet; +import net.minecraft.network.protocol.game.ClientGamePacketListener; +import net.minecraft.network.protocol.game.ClientboundBlockEntityDataPacket; +import net.minecraft.server.level.ServerLevel; +import net.minecraft.world.level.block.entity.BlockEntity; +import net.minecraft.world.level.block.entity.BlockEntityType; +import net.minecraft.world.level.block.state.BlockState; + +public class PortalGunPortalBaseBlockEntity extends BlockEntity { + private UUID ownerId; + private UUID portalId; + private PortalGunPortalEntity.PortalSide side = PortalGunPortalEntity.PortalSide.BLUE; + private BlockPos masterPos = BlockPos.ZERO; + private UUID linkedPortalId; + private int pairTime; + + public PortalGunPortalBaseBlockEntity(BlockPos pos, BlockState state, Supplier> typeSupplier) { + super(typeSupplier.get(), pos, state); + } + + public void configure(UUID ownerId, UUID portalId, PortalGunPortalEntity.PortalSide side, BlockPos masterPos) { + this.ownerId = ownerId; + this.portalId = portalId; + this.side = side; + this.masterPos = masterPos.immutable(); + this.setChanged(); + } + + public UUID getOwnerId() { + return this.ownerId; + } + + public UUID getPortalId() { + return this.portalId; + } + + public PortalGunPortalEntity.PortalSide getSide() { + return this.side; + } + + public BlockPos getMasterPos() { + return this.masterPos; + } + + public UUID getLinkedPortalId() { + return this.linkedPortalId; + } + + public int getPairTime() { + return this.pairTime; + } + + public void updatePair(UUID linkedPortalId, int pairTime) { + this.linkedPortalId = linkedPortalId; + this.pairTime = pairTime; + this.setChanged(); + } + + public boolean matches(UUID ownerId, UUID portalId, PortalGunPortalEntity.PortalSide side) { + return ownerId != null && portalId != null && ownerId.equals(this.ownerId) && portalId.equals(this.portalId) && this.side == side; + } + + public void onBroken() { + if (!(this.level instanceof ServerLevel serverLevel) || this.portalId == null) { + return; + } + if (serverLevel.getEntity(this.portalId) instanceof PortalGunPortalEntity portal && !portal.isRemoved()) { + portal.discard(); + } + } + + public static void serverTick(ServerLevel level, BlockPos pos, BlockState state, PortalGunPortalBaseBlockEntity blockEntity) { + if (((level.getGameTime() + pos.asLong()) & 15L) != 0L) { + return; + } + if (!(level.getBlockEntity(blockEntity.masterPos) instanceof PortalGunPortalMasterBlockEntity master) + || !master.matches(blockEntity.ownerId, blockEntity.portalId, blockEntity.side) + || !pos.equals(master.getBasePos())) { + level.removeBlock(pos, false); + return; + } + if (!(level.getEntity(blockEntity.portalId) instanceof PortalGunPortalEntity portal) + || portal.isRemoved() + || !pos.equals(portal.getBasePos()) + || blockEntity.ownerId == null + || !blockEntity.ownerId.equals(portal.getOwnerId()) + || blockEntity.side != portal.getPortalSide()) { + level.removeBlock(pos, false); + return; + } + UUID linkedPortalId = portal.getLinkedPortalId(); + if ((linkedPortalId == null && blockEntity.linkedPortalId != null) + || (linkedPortalId != null && !linkedPortalId.equals(blockEntity.linkedPortalId)) + || blockEntity.pairTime != portal.getPairTime()) { + blockEntity.linkedPortalId = linkedPortalId; + blockEntity.pairTime = portal.getPairTime(); + blockEntity.setChanged(); + } + } + + @Override + protected void saveAdditional(CompoundTag tag, HolderLookup.Provider registries) { + super.saveAdditional(tag, registries); + if (this.ownerId != null) { + tag.putUUID("OwnerId", this.ownerId); + } + if (this.portalId != null) { + tag.putUUID("PortalId", this.portalId); + } + if (this.linkedPortalId != null) { + tag.putUUID("LinkedPortalId", this.linkedPortalId); + } + tag.putInt("Side", this.side.ordinal()); + tag.putInt("MasterX", this.masterPos.getX()); + tag.putInt("MasterY", this.masterPos.getY()); + tag.putInt("MasterZ", this.masterPos.getZ()); + tag.putInt("PairTime", this.pairTime); + } + + @Override + protected void loadAdditional(CompoundTag tag, HolderLookup.Provider registries) { + super.loadAdditional(tag, registries); + this.ownerId = tag.hasUUID("OwnerId") ? tag.getUUID("OwnerId") : null; + this.portalId = tag.hasUUID("PortalId") ? tag.getUUID("PortalId") : null; + this.linkedPortalId = tag.hasUUID("LinkedPortalId") ? tag.getUUID("LinkedPortalId") : null; + this.side = tag.getInt("Side") == PortalGunPortalEntity.PortalSide.ORANGE.ordinal() ? PortalGunPortalEntity.PortalSide.ORANGE : PortalGunPortalEntity.PortalSide.BLUE; + this.masterPos = new BlockPos(tag.getInt("MasterX"), tag.getInt("MasterY"), tag.getInt("MasterZ")); + this.pairTime = tag.getInt("PairTime"); + } + + @Override + public CompoundTag getUpdateTag(HolderLookup.Provider registries) { + return this.saveWithoutMetadata(registries); + } + + @Override + public Packet getUpdatePacket() { + return ClientboundBlockEntityDataPacket.create(this); + } +} diff --git a/common-1.21.1/src/main/java/com/craisinlord/antarchy/content/block/entity/PortalGunPortalMasterBlockEntity.java b/common-1.21.1/src/main/java/com/craisinlord/antarchy/content/block/entity/PortalGunPortalMasterBlockEntity.java new file mode 100644 index 00000000..a0c1f10d --- /dev/null +++ b/common-1.21.1/src/main/java/com/craisinlord/antarchy/content/block/entity/PortalGunPortalMasterBlockEntity.java @@ -0,0 +1,300 @@ +package com.craisinlord.antarchy.content.block.entity; + +import com.craisinlord.antarchy.Antarchy; +import com.craisinlord.antarchy.content.portalgun.PortalGunPortalEntity; +import com.craisinlord.antarchy.content.portalgun.PortalGunPlacement; +import com.craisinlord.antarchy.content.portalgun.PortalGunSavedData; +import java.util.ArrayList; +import java.util.HashSet; +import java.util.List; +import java.util.Set; +import java.util.UUID; +import java.util.function.Supplier; +import net.minecraft.core.BlockPos; +import net.minecraft.core.Direction; +import net.minecraft.core.HolderLookup; +import net.minecraft.nbt.CompoundTag; +import net.minecraft.nbt.ListTag; +import net.minecraft.nbt.Tag; +import net.minecraft.network.protocol.Packet; +import net.minecraft.network.protocol.game.ClientGamePacketListener; +import net.minecraft.network.protocol.game.ClientboundBlockEntityDataPacket; +import net.minecraft.resources.ResourceLocation; +import net.minecraft.server.level.ServerLevel; +import net.minecraft.world.entity.EntityType; +import net.minecraft.world.level.block.entity.BlockEntityTicker; +import net.minecraft.world.level.block.entity.BlockEntity; +import net.minecraft.world.level.block.entity.BlockEntityType; +import net.minecraft.world.level.block.state.BlockState; +import net.minecraft.core.registries.BuiltInRegistries; +import net.minecraft.world.level.block.state.BlockState; +import net.minecraft.world.phys.Vec3; + +public class PortalGunPortalMasterBlockEntity extends BlockEntity { + private UUID ownerId; + private UUID portalId; + private PortalGunPortalEntity.PortalSide side = PortalGunPortalEntity.PortalSide.BLUE; + private Direction facing = Direction.NORTH; + private Direction upAxis = Direction.UP; + private BlockPos basePos = BlockPos.ZERO; + private BlockPos[] portalSpots = new BlockPos[] {BlockPos.ZERO, BlockPos.ZERO}; + private Set compensatedSpots = Set.of(); + private UUID linkedPortalId; + private int pairTime; + + public PortalGunPortalMasterBlockEntity(BlockPos pos, BlockState state, Supplier> typeSupplier) { + super(typeSupplier.get(), pos, state); + } + + public void configure( + UUID ownerId, + UUID portalId, + PortalGunPortalEntity.PortalSide side, + Direction facing, + Direction upAxis, + BlockPos basePos, + BlockPos[] portalSpots, + Set compensatedSpots, + int pairTime + ) { + this.ownerId = ownerId; + this.portalId = portalId; + this.side = side; + this.facing = facing; + this.upAxis = upAxis; + this.basePos = basePos.immutable(); + this.portalSpots = new BlockPos[] {portalSpots[0].immutable(), portalSpots[1].immutable()}; + this.compensatedSpots = new HashSet<>(compensatedSpots); + this.pairTime = pairTime; + this.setChanged(); + } + + public UUID getPortalId() { + return this.portalId; + } + + public UUID getOwnerId() { + return this.ownerId; + } + + public PortalGunPortalEntity.PortalSide getSide() { + return this.side; + } + + public Direction getFacing() { + return this.facing; + } + + public Direction getUpAxis() { + return this.upAxis; + } + + public BlockPos getBasePos() { + return this.basePos; + } + + public BlockPos[] getPortalSpots() { + return new BlockPos[] {this.portalSpots[0], this.portalSpots[1]}; + } + + public Set getCompensatedSpots() { + return Set.copyOf(this.compensatedSpots); + } + + public int getPairTime() { + return this.pairTime; + } + + public UUID getLinkedPortalId() { + return this.linkedPortalId; + } + + public void updatePair(UUID linkedPortalId, int pairTime) { + this.linkedPortalId = linkedPortalId; + this.pairTime = pairTime; + this.setChanged(); + } + + public boolean matches(UUID ownerId, UUID portalId, PortalGunPortalEntity.PortalSide side) { + return ownerId != null && portalId != null && ownerId.equals(this.ownerId) && portalId.equals(this.portalId) && this.side == side; + } + + public void onBroken() { + if (!(this.level instanceof ServerLevel serverLevel) || this.portalId == null) { + return; + } + if (serverLevel.getEntity(this.portalId) instanceof PortalGunPortalEntity portal && !portal.isRemoved()) { + portal.discard(); + } + } + + public static void serverTick(ServerLevel level, BlockPos pos, BlockState state, PortalGunPortalMasterBlockEntity blockEntity) { + if (((level.getGameTime() + pos.asLong()) & 15L) != 0L) { + return; + } + if (!blockEntity.hasValidFootprint(level, pos)) { + level.removeBlock(pos, false); + return; + } + PortalGunPortalEntity portal = blockEntity.ensurePortalEntity(level); + if (portal == null + || portal.isRemoved() + || !pos.equals(portal.getMasterPos()) + || blockEntity.ownerId == null + || !blockEntity.ownerId.equals(portal.getOwnerId()) + || blockEntity.side != portal.getPortalSide()) { + level.removeBlock(pos, false); + return; + } + blockEntity.ensureLinkedPortal(level, portal); + UUID linkedPortalId = portal.getLinkedPortalId(); + if ((linkedPortalId == null && blockEntity.linkedPortalId != null) + || (linkedPortalId != null && !linkedPortalId.equals(blockEntity.linkedPortalId)) + || blockEntity.pairTime != portal.getPairTime()) { + blockEntity.linkedPortalId = linkedPortalId; + blockEntity.pairTime = portal.getPairTime(); + blockEntity.setChanged(); + } + } + + private boolean hasValidFootprint(ServerLevel level, BlockPos pos) { + if (this.ownerId == null || this.portalId == null || !pos.equals(this.worldPosition)) { + return false; + } + if (!(level.getBlockEntity(this.basePos) instanceof PortalGunPortalBaseBlockEntity base) + || !base.matches(this.ownerId, this.portalId, this.side) + || !pos.equals(base.getMasterPos())) { + return false; + } + List supportPositions = new ArrayList<>(2); + for (BlockPos portalSpot : this.portalSpots) { + if (portalSpot == null || BlockPos.ZERO.equals(portalSpot)) { + return false; + } + supportPositions.add(portalSpot.relative(this.facing.getOpposite())); + } + for (BlockPos supportPos : supportPositions) { + BlockState supportState = level.getBlockState(supportPos); + if (!supportState.isFaceSturdy(level, supportPos, this.facing)) { + return false; + } + } + return true; + } + + private PortalGunPortalEntity ensurePortalEntity(ServerLevel level) { + if (this.portalId == null || this.ownerId == null) { + return null; + } + if (level.getEntity(this.portalId) instanceof PortalGunPortalEntity portal && !portal.isRemoved()) { + return portal; + } + EntityType rawType = BuiltInRegistries.ENTITY_TYPE.get(ResourceLocation.fromNamespaceAndPath(Antarchy.MODID, "portal_gun_portal")); + if (!(rawType instanceof EntityType)) { + return null; + } + PortalGunPlacement placement = PortalGunPlacement.fromStored(this.facing, this.upAxis, this.worldPosition, this.basePos, this.compensatedSpots); + @SuppressWarnings("unchecked") + PortalGunPortalEntity restored = new PortalGunPortalEntity((EntityType) rawType, level); + restored.setUUID(this.portalId); + restored.configure(this.ownerId, this.side, placement); + restored.restorePair(this.linkedPortalId, this.pairTime); + Vec3 center = placement.center(); + restored.moveTo(center.x, center.y, center.z, placement.yaw(), 0.0F); + level.addFreshEntity(restored); + PortalGunSavedData.setPortal(level.getServer(), this.ownerId, this.side, restored.getUUID()); + return restored; + } + + private void ensureLinkedPortal(ServerLevel level, PortalGunPortalEntity portal) { + if (this.ownerId == null) { + return; + } + PortalGunPortalEntity counterpart = PortalGunSavedData.findLoadedPortal( + level.getServer(), + this.ownerId, + this.side == PortalGunPortalEntity.PortalSide.BLUE ? PortalGunPortalEntity.PortalSide.ORANGE : PortalGunPortalEntity.PortalSide.BLUE + ); + if (counterpart == null || counterpart == portal || counterpart.isRemoved()) { + return; + } + if (!counterpart.getUUID().equals(portal.getLinkedPortalId()) || !portal.getUUID().equals(counterpart.getLinkedPortalId())) { + portal.linkTo(counterpart); + counterpart.linkTo(portal); + } + } + + @Override + protected void saveAdditional(CompoundTag tag, HolderLookup.Provider registries) { + super.saveAdditional(tag, registries); + if (this.ownerId != null) { + tag.putUUID("OwnerId", this.ownerId); + } + if (this.portalId != null) { + tag.putUUID("PortalId", this.portalId); + } + if (this.linkedPortalId != null) { + tag.putUUID("LinkedPortalId", this.linkedPortalId); + } + tag.putInt("Side", this.side.ordinal()); + tag.putInt("Facing", this.facing.get3DDataValue()); + tag.putInt("UpAxis", this.upAxis.get3DDataValue()); + tag.putInt("BaseX", this.basePos.getX()); + tag.putInt("BaseY", this.basePos.getY()); + tag.putInt("BaseZ", this.basePos.getZ()); + tag.putInt("PairTime", this.pairTime); + ListTag spots = new ListTag(); + for (BlockPos portalSpot : this.portalSpots) { + CompoundTag spot = new CompoundTag(); + spot.putInt("X", portalSpot.getX()); + spot.putInt("Y", portalSpot.getY()); + spot.putInt("Z", portalSpot.getZ()); + spots.add(spot); + } + tag.put("PortalSpots", spots); + ListTag compensated = new ListTag(); + for (BlockPos compensatedSpot : this.compensatedSpots) { + CompoundTag spot = new CompoundTag(); + spot.putInt("X", compensatedSpot.getX()); + spot.putInt("Y", compensatedSpot.getY()); + spot.putInt("Z", compensatedSpot.getZ()); + compensated.add(spot); + } + tag.put("CompensatedSpots", compensated); + } + + @Override + protected void loadAdditional(CompoundTag tag, HolderLookup.Provider registries) { + super.loadAdditional(tag, registries); + this.ownerId = tag.hasUUID("OwnerId") ? tag.getUUID("OwnerId") : null; + this.portalId = tag.hasUUID("PortalId") ? tag.getUUID("PortalId") : null; + this.linkedPortalId = tag.hasUUID("LinkedPortalId") ? tag.getUUID("LinkedPortalId") : null; + this.side = tag.getInt("Side") == PortalGunPortalEntity.PortalSide.ORANGE.ordinal() ? PortalGunPortalEntity.PortalSide.ORANGE : PortalGunPortalEntity.PortalSide.BLUE; + this.facing = Direction.from3DDataValue(tag.getInt("Facing")); + this.upAxis = Direction.from3DDataValue(tag.getInt("UpAxis")); + this.basePos = new BlockPos(tag.getInt("BaseX"), tag.getInt("BaseY"), tag.getInt("BaseZ")); + this.pairTime = tag.getInt("PairTime"); + ListTag spots = tag.getList("PortalSpots", Tag.TAG_COMPOUND); + for (int i = 0; i < Math.min(2, spots.size()); i++) { + CompoundTag spot = spots.getCompound(i); + this.portalSpots[i] = new BlockPos(spot.getInt("X"), spot.getInt("Y"), spot.getInt("Z")); + } + ListTag compensated = tag.getList("CompensatedSpots", Tag.TAG_COMPOUND); + Set compensatedSpots = new HashSet<>(); + for (int i = 0; i < compensated.size(); i++) { + CompoundTag spot = compensated.getCompound(i); + compensatedSpots.add(new BlockPos(spot.getInt("X"), spot.getInt("Y"), spot.getInt("Z"))); + } + this.compensatedSpots = compensatedSpots; + } + + @Override + public CompoundTag getUpdateTag(HolderLookup.Provider registries) { + return this.saveWithoutMetadata(registries); + } + + @Override + public Packet getUpdatePacket() { + return ClientboundBlockEntityDataPacket.create(this); + } +} diff --git a/common-1.21.1/src/main/java/com/craisinlord/antarchy/content/client/PortalGunPortalRenderState.java b/common-1.21.1/src/main/java/com/craisinlord/antarchy/content/client/PortalGunPortalRenderState.java new file mode 100644 index 00000000..d5832608 --- /dev/null +++ b/common-1.21.1/src/main/java/com/craisinlord/antarchy/content/client/PortalGunPortalRenderState.java @@ -0,0 +1,75 @@ +package com.craisinlord.antarchy.content.client; + +import com.craisinlord.antarchy.content.portalgun.PortalGunWorldPortalShape; +import java.util.ArrayDeque; +import java.util.Deque; + +public final class PortalGunPortalRenderState { + private static final ThreadLocal> ACTIVE_DESTINATION_SHAPES = ThreadLocal.withInitial(ArrayDeque::new); + private static final ThreadLocal> ACTIVE_SOURCE_SHAPES = ThreadLocal.withInitial(ArrayDeque::new); + private static final ThreadLocal RENDER_ALL_DEPTH = ThreadLocal.withInitial(() -> 0); + + private PortalGunPortalRenderState() { + } + + public static void pushPortalView(PortalGunWorldPortalShape sourceShape, PortalGunWorldPortalShape destinationShape, boolean renderAll) { + ACTIVE_SOURCE_SHAPES.get().push(sourceShape); + ACTIVE_DESTINATION_SHAPES.get().push(destinationShape); + if (renderAll) { + RENDER_ALL_DEPTH.set(RENDER_ALL_DEPTH.get() + 1); + } + } + + public static void popPortalView(boolean renderAll) { + Deque sourceShapes = ACTIVE_SOURCE_SHAPES.get(); + if (!sourceShapes.isEmpty()) { + sourceShapes.pop(); + } + if (sourceShapes.isEmpty()) { + ACTIVE_SOURCE_SHAPES.remove(); + } + Deque destinationShapes = ACTIVE_DESTINATION_SHAPES.get(); + if (!destinationShapes.isEmpty()) { + destinationShapes.pop(); + } + if (destinationShapes.isEmpty()) { + ACTIVE_DESTINATION_SHAPES.remove(); + } + if (renderAll) { + int depth = Math.max(0, RENDER_ALL_DEPTH.get() - 1); + if (depth == 0) { + RENDER_ALL_DEPTH.remove(); + } else { + RENDER_ALL_DEPTH.set(depth); + } + } + } + + public static void pushDestinationShape(PortalGunWorldPortalShape shape) { + ACTIVE_DESTINATION_SHAPES.get().push(shape); + } + + public static void popDestinationShape() { + Deque shapes = ACTIVE_DESTINATION_SHAPES.get(); + if (!shapes.isEmpty()) { + shapes.pop(); + } + if (shapes.isEmpty()) { + ACTIVE_DESTINATION_SHAPES.remove(); + } + } + + public static PortalGunWorldPortalShape getDestinationShape() { + Deque shapes = ACTIVE_DESTINATION_SHAPES.get(); + return shapes.isEmpty() ? null : shapes.peek(); + } + + public static PortalGunWorldPortalShape getSourceShape() { + Deque shapes = ACTIVE_SOURCE_SHAPES.get(); + return shapes.isEmpty() ? null : shapes.peek(); + } + + public static boolean renderAll() { + return RENDER_ALL_DEPTH.get() > 0; + } +} diff --git a/common-1.21.1/src/main/java/com/craisinlord/antarchy/content/client/PortalGunRollClientState.java b/common-1.21.1/src/main/java/com/craisinlord/antarchy/content/client/PortalGunRollClientState.java new file mode 100644 index 00000000..c9066d17 --- /dev/null +++ b/common-1.21.1/src/main/java/com/craisinlord/antarchy/content/client/PortalGunRollClientState.java @@ -0,0 +1,108 @@ +package com.craisinlord.antarchy.content.client; + +import com.craisinlord.antarchy.content.portalgun.PortalGunPortalEntity; +import com.craisinlord.antarchy.content.portalgun.PortalGunTransformUtil; +import java.util.HashMap; +import java.util.Map; +import java.util.UUID; +import net.minecraft.client.Minecraft; +import net.minecraft.world.entity.Entity; +import net.minecraft.world.phys.Vec3; +import org.joml.Quaternionf; + +public final class PortalGunRollClientState { + private static final int TELEPORT_COOLDOWN_TICKS = 15; + private static final float ROLL_DECAY = 0.85F; + private static final float ROLL_EPSILON = 0.05F; + private static final Map TELEPORT_COOLDOWNS = new HashMap<>(); + private static float previousRollDegrees; + private static float rollDegrees; + + private PortalGunRollClientState() { + } + + public static float getRollDegrees() { + return rollDegrees; + } + + public static float getRollDegrees(float partialTick) { + return previousRollDegrees + (rollDegrees - previousRollDegrees) * partialTick; + } + + public static boolean isEntityInsidePortal(Minecraft minecraft, Entity entity) { + if (minecraft.level == null || entity == null) { + return false; + } + for (Entity renderEntity : minecraft.level.entitiesForRendering()) { + if (renderEntity instanceof PortalGunPortalEntity portal && portal.isAlive() && portal.intersectsEntityBounds(entity)) { + return true; + } + } + return false; + } + + public static boolean isCameraInsidePortal(Minecraft minecraft) { + Entity cameraEntity = minecraft.getCameraEntity(); + return cameraEntity != null && isEntityInsidePortal(minecraft, cameraEntity); + } + + public static void clear() { + previousRollDegrees = 0.0F; + rollDegrees = 0.0F; + TELEPORT_COOLDOWNS.clear(); + } + + public static void tick(Minecraft minecraft) { + if (minecraft.level == null || minecraft.player == null) { + clear(); + return; + } + Entity cameraEntity = minecraft.getCameraEntity(); + if (cameraEntity == null) { + return; + } + previousRollDegrees = rollDegrees; + rollDegrees *= ROLL_DECAY; + if (Math.abs(rollDegrees) < ROLL_EPSILON) { + rollDegrees = 0.0F; + } + long gameTime = minecraft.level.getGameTime(); + TELEPORT_COOLDOWNS.entrySet().removeIf(entry -> entry.getValue() <= gameTime); + for (Entity entity : minecraft.level.entitiesForRendering()) { + if (!(entity instanceof PortalGunPortalEntity portal) || !portal.isAlive()) { + continue; + } + PortalGunPortalEntity linkedPortal = portal.getLinkedPortal(); + if (linkedPortal == null || !linkedPortal.isAlive()) { + continue; + } + if (!portal.shouldRenderFront(cameraEntity.position())) { + continue; + } + if (!canTeleport(cameraEntity, gameTime)) { + continue; + } + if (portal.resolveCrossingProbe(cameraEntity) == null) { + continue; + } + applyPredictedTeleport(cameraEntity, portal, linkedPortal, gameTime); + break; + } + } + + private static boolean canTeleport(Entity entity, long gameTime) { + if (!entity.isAlive() || entity instanceof PortalGunPortalEntity || entity.isPassenger() || entity.isVehicle()) { + return false; + } + long cooldownUntil = TELEPORT_COOLDOWNS.getOrDefault(entity.getUUID(), 0L); + return cooldownUntil <= gameTime; + } + + private static void applyPredictedTeleport(Entity entity, PortalGunPortalEntity sourcePortal, PortalGunPortalEntity destinationPortal, long gameTime) { + Quaternionf transform = PortalGunTransformUtil.createTransform(sourcePortal, destinationPortal); + Vec3 transformedLook = PortalGunTransformUtil.transform(entity.getLookAngle(), transform).normalize(); + Vec3 transformedUp = PortalGunTransformUtil.transform(PortalGunTransformUtil.upVectorFromLookAndRoll(entity.getLookAngle(), rollDegrees), transform).normalize(); + rollDegrees = PortalGunTransformUtil.rollFromOrientation(transformedLook, transformedUp); + TELEPORT_COOLDOWNS.put(entity.getUUID(), gameTime + TELEPORT_COOLDOWN_TICKS); + } +} diff --git a/common-1.21.1/src/main/java/com/craisinlord/antarchy/content/client/model/HoverboardModel.java b/common-1.21.1/src/main/java/com/craisinlord/antarchy/content/client/model/HoverboardModel.java new file mode 100644 index 00000000..8c8b58a7 --- /dev/null +++ b/common-1.21.1/src/main/java/com/craisinlord/antarchy/content/client/model/HoverboardModel.java @@ -0,0 +1,32 @@ +package com.craisinlord.antarchy.content.client.model; + +import com.craisinlord.antarchy.Antarchy; +import com.craisinlord.antarchy.content.entity.HoverboardEntity; +import net.minecraft.resources.ResourceLocation; +import net.minecraft.world.item.DyeColor; +import software.bernie.geckolib.model.GeoModel; + +public class HoverboardModel extends GeoModel { + private static final ResourceLocation MODEL = ResourceLocation.fromNamespaceAndPath(Antarchy.MODID, "geo/hoverboard.geo.json"); + private static final ResourceLocation ANIMATION = ResourceLocation.fromNamespaceAndPath(Antarchy.MODID, "animations/hoverboard.animation.json"); + private static final ResourceLocation BASE_TEXTURE = ResourceLocation.fromNamespaceAndPath(Antarchy.MODID, "textures/entity/hoverboard/hoverboard.png"); + + @Override + public ResourceLocation getModelResource(HoverboardEntity animatable) { + return MODEL; + } + + @Override + public ResourceLocation getTextureResource(HoverboardEntity animatable) { + DyeColor color = animatable.getColor(); + if (color == null) { + return BASE_TEXTURE; + } + return ResourceLocation.fromNamespaceAndPath(Antarchy.MODID, "textures/entity/hoverboard/hoverboard_" + color.getName() + ".png"); + } + + @Override + public ResourceLocation getAnimationResource(HoverboardEntity animatable) { + return ANIMATION; + } +} diff --git a/common-1.21.1/src/main/java/com/craisinlord/antarchy/content/client/renderer/HoverboardRenderer.java b/common-1.21.1/src/main/java/com/craisinlord/antarchy/content/client/renderer/HoverboardRenderer.java new file mode 100644 index 00000000..4c764495 --- /dev/null +++ b/common-1.21.1/src/main/java/com/craisinlord/antarchy/content/client/renderer/HoverboardRenderer.java @@ -0,0 +1,13 @@ +package com.craisinlord.antarchy.content.client.renderer; + +import com.craisinlord.antarchy.content.client.model.HoverboardModel; +import com.craisinlord.antarchy.content.entity.HoverboardEntity; +import net.minecraft.client.renderer.entity.EntityRendererProvider; +import software.bernie.geckolib.renderer.GeoEntityRenderer; + +public class HoverboardRenderer extends GeoEntityRenderer { + public HoverboardRenderer(EntityRendererProvider.Context context) { + super(context, new HoverboardModel()); + this.shadowRadius = 0.5F; + } +} diff --git a/common-1.21.1/src/main/java/com/craisinlord/antarchy/content/client/renderer/PortalGunPortalRenderer.java b/common-1.21.1/src/main/java/com/craisinlord/antarchy/content/client/renderer/PortalGunPortalRenderer.java index dd3c7bc7..ec9a555d 100644 --- a/common-1.21.1/src/main/java/com/craisinlord/antarchy/content/client/renderer/PortalGunPortalRenderer.java +++ b/common-1.21.1/src/main/java/com/craisinlord/antarchy/content/client/renderer/PortalGunPortalRenderer.java @@ -3,13 +3,15 @@ package com.craisinlord.antarchy.content.client.renderer; import com.craisinlord.antarchy.content.client.model.PortalGunPortalModel; import com.craisinlord.antarchy.content.portalgun.PortalGunPortalEntity; import com.mojang.blaze3d.vertex.PoseStack; -import com.mojang.math.Axis; import net.minecraft.client.renderer.MultiBufferSource; import net.minecraft.client.renderer.RenderType; import net.minecraft.client.renderer.entity.EntityRendererProvider; import net.minecraft.core.Direction; import net.minecraft.resources.ResourceLocation; +import net.minecraft.world.phys.Vec3; import org.jetbrains.annotations.Nullable; +import org.joml.Matrix3f; +import org.joml.Quaternionf; import software.bernie.geckolib.renderer.GeoEntityRenderer; public class PortalGunPortalRenderer extends GeoEntityRenderer { @@ -20,13 +22,20 @@ public class PortalGunPortalRenderer extends GeoEntityRenderer portals = collectVisiblePortals(minecraft, camera); + if (portals.isEmpty()) { + return; + } + ensureTargets(minecraft); + if (PORTAL_TARGETS[0] == null) { + return; + } + Vec3 cameraPos = camera.getPosition(); + Vec3 rootLook = new Vec3(camera.getLookVector()).normalize(); + Vec3 rootUp = new Vec3(camera.getUpVector()).normalize(); + Matrix4f rootViewMatrix = new Matrix4f().rotation(PortalGunTransformUtil.orientationQuaternion(rootLook, rootUp).conjugate(new Quaternionf())); + RenderContext rootContext = new RenderContext(cameraPos, rootLook, rootUp, rootViewMatrix); + renderingPortalView = true; + RenderSystem.backupProjectionMatrix(); + for (PortalGunPortalEntity portal : portals) { + PortalGunPortalEntity linkedPortal = portal.getLinkedPortal(); + if (linkedPortal == null || !linkedPortal.isAlive()) { + continue; + } + int textureId = renderPortalSurface(minecraft, cameraEntity, tickCounter, rootContext, portal, linkedPortal, 0); + minecraft.getMainRenderTarget().bindWrite(true); + drawPortalQuad(cameraPos, poseMatrix, portal, textureId); + drawPortalOverlay(minecraft, cameraPos, poseMatrix, portal); + } + RenderSystem.restoreProjectionMatrix(); + renderingPortalView = false; + } + + private static List collectVisiblePortals(Minecraft minecraft, Camera camera) { + return collectVisiblePortals(minecraft, camera.getPosition()); + } + + private static List collectVisiblePortals(Minecraft minecraft, Vec3 cameraPos) { + List portals = new ArrayList<>(); + for (Entity entity : minecraft.level.entitiesForRendering()) { + if (!(entity instanceof PortalGunPortalEntity portal) || !portal.isAlive()) { + continue; + } + if (portal.getLinkedPortalId() == null) { + continue; + } + if (!portal.shouldRenderFront(cameraPos)) { + continue; + } + portals.add(portal); + } + portals.sort((left, right) -> Double.compare(left.distanceToSqr(cameraPos), right.distanceToSqr(cameraPos))); + return portals; + } + + private static void ensureTargets(Minecraft minecraft) { + int width = minecraft.getWindow().getWidth(); + int height = minecraft.getWindow().getHeight(); + if (width <= 0 || height <= 0) { + return; + } + for (int i = 0; i < PORTAL_TARGETS.length; i++) { + TextureTarget target = PORTAL_TARGETS[i]; + if (target == null) { + target = new TextureTarget(width, height, true, Minecraft.ON_OSX); + target.setClearColor(0.0F, 0.0F, 0.0F, 1.0F); + PORTAL_TARGETS[i] = target; + continue; + } + if (target.width != width || target.height != height) { + target.resize(width, height, Minecraft.ON_OSX); + } + } + } + + private static int renderPortalSurface( + Minecraft minecraft, + Entity cameraEntity, + DeltaTracker tickCounter, + RenderContext currentContext, + PortalGunPortalEntity sourcePortal, + PortalGunPortalEntity destinationPortal, + int depth + ) { + TextureTarget target = PORTAL_TARGETS[depth]; + RenderContext transformedContext = transformContext(currentContext, sourcePortal, destinationPortal); + PortalCamera portalCamera = new PortalCamera(); + portalCamera.setup(minecraft.level, cameraEntity, tickCounter.getGameTimeDeltaPartialTick(true), transformedContext.cameraPos(), transformedContext.look(), transformedContext.up()); + target.bindWrite(true); + target.clear(Minecraft.ON_OSX); + double fov = minecraft.options.fov().get(); + Matrix4f baseProjectionMatrix = minecraft.gameRenderer.getProjectionMatrix(fov); + Matrix4f clippedProjectionMatrix = applyPortalClipPlane(baseProjectionMatrix, transformedContext, destinationPortal); + minecraft.gameRenderer.resetProjectionMatrix(clippedProjectionMatrix); + ScreenClip clip = computeScreenClip(minecraft, currentContext.cameraPos(), currentContext.viewMatrix(), baseProjectionMatrix, sourcePortal); + boolean clipEnabled = clip != null; + boolean renderAll = clip == null || clip.area() >= widthTimesHeight(minecraft); + if (clipEnabled) { + RenderSystem.enableScissor(clip.x(), clip.y(), clip.width(), clip.height()); + } + PortalGunPortalRenderState.pushPortalView(sourcePortal.getWorldPortalShape(), destinationPortal.getWorldPortalShape(), renderAll); + try { + minecraft.levelRenderer.prepareCullFrustum(portalCamera.getPosition(), transformedContext.viewMatrix(), clippedProjectionMatrix); + minecraft.levelRenderer.renderLevel(tickCounter, false, portalCamera, minecraft.gameRenderer, minecraft.gameRenderer.lightTexture(), transformedContext.viewMatrix(), clippedProjectionMatrix); + if (depth < MAX_RECURSION_DEPTH) { + List nestedPortals = collectVisiblePortals(minecraft, transformedContext.cameraPos()); + Matrix4f nestedPose = new Matrix4f().identity(); + for (PortalGunPortalEntity nestedPortal : nestedPortals) { + PortalGunPortalEntity nestedLinked = nestedPortal.getLinkedPortal(); + if (nestedLinked == null || !nestedLinked.isAlive() || nestedPortal == destinationPortal || nestedPortal == sourcePortal) { + continue; + } + if (clip != null && clip.area() < 6400) { + continue; + } + int nestedTextureId = renderPortalSurface(minecraft, cameraEntity, tickCounter, transformedContext, nestedPortal, nestedLinked, depth + 1); + target.bindWrite(true); + drawPortalQuad(transformedContext.cameraPos(), nestedPose, nestedPortal, nestedTextureId); + drawPortalOverlay(minecraft, transformedContext.cameraPos(), nestedPose, nestedPortal); + } + } + } finally { + PortalGunPortalRenderState.popPortalView(renderAll); + } + if (clipEnabled) { + RenderSystem.disableScissor(); + } + return target.getColorTextureId(); + } + + private static RenderContext transformContext(RenderContext currentContext, PortalGunPortalEntity sourcePortal, PortalGunPortalEntity destinationPortal) { + Quaternionf transform = PortalGunTransformUtil.createTransform(sourcePortal, destinationPortal); + Vec3 destinationNormal = destinationPortal.getNormalVec().normalize(); + Vec3 relativeEye = currentContext.cameraPos().subtract(sourcePortal.position()); + double depthOffset = Math.max(CAMERA_OFFSET, relativeEye.dot(sourcePortal.getNormalVec().normalize())); + Vec3 transformedEyeOffset = PortalGunTransformUtil.transformRelativePosition(sourcePortal, destinationPortal, relativeEye); + Vec3 destinationEye = destinationPortal.position() + .add(transformedEyeOffset) + .add(destinationNormal.scale(depthOffset + CAMERA_OFFSET - transformedEyeOffset.dot(destinationNormal))); + Vec3 transformedLook = PortalGunTransformUtil.transform(currentContext.look(), transform).normalize(); + Vec3 transformedUp = PortalGunTransformUtil.transform(currentContext.up(), transform).normalize(); + Matrix4f viewMatrix = new Matrix4f().rotation(PortalGunTransformUtil.orientationQuaternion(transformedLook, transformedUp).conjugate(new Quaternionf())); + return new RenderContext(destinationEye, transformedLook, transformedUp, viewMatrix); + } + + private static Matrix4f applyPortalClipPlane(Matrix4f projectionMatrix, RenderContext renderContext, PortalGunPortalEntity destinationPortal) { + Vec3 planePointWorld = destinationPortal.position().add(destinationPortal.getNormalVec().normalize().scale(0.01D)); + Vec3 planeNormalWorld = destinationPortal.getNormalVec().normalize(); + Vector4f clipPlane = portalPlaneToCameraSpace(renderContext, planePointWorld, planeNormalWorld); + if (clipPlane.lengthSquared() <= 1.0E-6F) { + return projectionMatrix; + } + Matrix4f clippedProjection = new Matrix4f(projectionMatrix); + Vector4f q = new Vector4f( + signNonZero(clipPlane.x()) / clippedProjection.m00(), + signNonZero(clipPlane.y()) / clippedProjection.m11(), + -1.0F, + (1.0F + clippedProjection.m22()) / clippedProjection.m32() + ); + float scale = 2.0F / clipPlane.dot(q); + Vector4f c = clipPlane.mul(scale, new Vector4f()); + clippedProjection.m02(c.x()); + clippedProjection.m12(c.y()); + clippedProjection.m22(c.z() + 1.0F); + clippedProjection.m32(c.w()); + return clippedProjection; + } + + private static Vector4f portalPlaneToCameraSpace(RenderContext renderContext, Vec3 planePointWorld, Vec3 planeNormalWorld) { + Vec3 look = renderContext.look().normalize(); + Vec3 up = renderContext.up().normalize(); + Vec3 right = up.cross(look).normalize(); + Vec3 relativePoint = planePointWorld.subtract(renderContext.cameraPos()); + Vector4f point = new Vector4f( + (float) relativePoint.dot(right), + (float) relativePoint.dot(up), + (float) -relativePoint.dot(look), + 1.0F + ); + Vector4f normal = new Vector4f( + (float) planeNormalWorld.dot(right), + (float) planeNormalWorld.dot(up), + (float) -planeNormalWorld.dot(look), + 0.0F + ); + if (normal.z() > 0.0F) { + normal.mul(-1.0F); + } + return new Vector4f(normal.x(), normal.y(), normal.z(), -(normal.x() * point.x() + normal.y() * point.y() + normal.z() * point.z())); + } + + private static float signNonZero(float value) { + return value >= 0.0F ? 1.0F : -1.0F; + } + + private static ScreenClip computeScreenClip(Minecraft minecraft, Vec3 cameraPos, Matrix4f viewMatrix, Matrix4f projectionMatrix, PortalGunPortalEntity portal) { + Vec3[] worldCorners = portal.getWorldPortalShape().getCorners(SURFACE_OFFSET); + int width = minecraft.getWindow().getWidth(); + int height = minecraft.getWindow().getHeight(); + float minX = Float.POSITIVE_INFINITY; + float minY = Float.POSITIVE_INFINITY; + float maxX = Float.NEGATIVE_INFINITY; + float maxY = Float.NEGATIVE_INFINITY; + boolean visible = false; + Matrix4f combined = new Matrix4f(projectionMatrix).mul(viewMatrix); + for (Vec3 worldCorner : worldCorners) { + Vec3 corner = worldCorner.subtract(cameraPos); + Vector4f projected = new Vector4f((float) corner.x, (float) corner.y, (float) corner.z, 1.0F).mul(combined); + if (projected.w <= 0.001F) { + continue; + } + float invW = 1.0F / projected.w; + float ndcX = projected.x * invW; + float ndcY = projected.y * invW; + if (ndcX < -1.25F || ndcX > 1.25F || ndcY < -1.25F || ndcY > 1.25F) { + continue; + } + visible = true; + float screenX = (ndcX * 0.5F + 0.5F) * width; + float screenY = (ndcY * 0.5F + 0.5F) * height; + minX = Math.min(minX, screenX); + minY = Math.min(minY, screenY); + maxX = Math.max(maxX, screenX); + maxY = Math.max(maxY, screenY); + } + if (!visible) { + return null; + } + int scissorX = Mth.clamp((int) Math.floor(minX), 0, width - 1); + int scissorMaxX = Mth.clamp((int) Math.ceil(maxX), scissorX + 1, width); + int scissorYTop = Mth.clamp((int) Math.floor(minY), 0, height - 1); + int scissorYBottom = Mth.clamp((int) Math.ceil(maxY), scissorYTop + 1, height); + int scissorY = height - scissorYBottom; + int scissorWidth = Math.max(1, scissorMaxX - scissorX); + int scissorHeight = Math.max(1, scissorYBottom - scissorYTop); + return new ScreenClip(scissorX, scissorY, scissorWidth, scissorHeight); + } + + private static void drawPortalQuad(Vec3 cameraPos, Matrix4f poseMatrix, PortalGunPortalEntity portal, int textureId) { + drawTexturedPortal(cameraPos, poseMatrix, portal, textureId, SURFACE_OFFSET, 1.0F, 1.0F, 1.0F, 1.0F, false); + } + + private static int widthTimesHeight(Minecraft minecraft) { + return minecraft.getWindow().getWidth() * minecraft.getWindow().getHeight(); + } + + private static void drawPortalOverlay(Minecraft minecraft, Vec3 cameraPos, Matrix4f poseMatrix, PortalGunPortalEntity portal) { + float time = (minecraft.level.getGameTime() + minecraft.getTimer().getGameTimeDeltaPartialTick(false)) * 0.075F; + float pulse = 0.72F + 0.18F * (float) Math.sin(time); + float edge = 0.38F + 0.08F * (float) Math.cos(time * 1.7F); + if (portal.getPortalSide() == PortalGunPortalEntity.PortalSide.BLUE) { + drawTexturedPortal(cameraPos, poseMatrix, portal, BLUE_OVERLAY, OVERLAY_OFFSET, 0.78F, 0.94F, 1.0F, pulse, false); + drawTexturedPortal(cameraPos, poseMatrix, portal, BLUE_OVERLAY, OVERLAY_OFFSET + 0.0008D, 0.26F, 0.62F, 1.0F, edge, true); + return; + } + drawTexturedPortal(cameraPos, poseMatrix, portal, ORANGE_OVERLAY, OVERLAY_OFFSET, 1.0F, 0.84F, 0.46F, pulse, false); + drawTexturedPortal(cameraPos, poseMatrix, portal, ORANGE_OVERLAY, OVERLAY_OFFSET + 0.0008D, 1.0F, 0.48F, 0.16F, edge, true); + } + + private static void drawTexturedPortal(Vec3 cameraPos, Matrix4f poseMatrix, PortalGunPortalEntity portal, ResourceLocation texture, double offset, float red, float green, float blue, float alpha, boolean additive) { + Vec3 widthVec = portal.getWidthVec().normalize().scale(0.5D); + Vec3 upVec = portal.getUpVec().normalize().scale(1.0D); + Vec3 normalVec = portal.getNormalVec().normalize().scale(offset); + Vec3 center = portal.position().add(normalVec); + Vec3 bottomLeft = center.subtract(widthVec).subtract(upVec).subtract(cameraPos); + Vec3 topLeft = center.subtract(widthVec).add(upVec).subtract(cameraPos); + Vec3 topRight = center.add(widthVec).add(upVec).subtract(cameraPos); + Vec3 bottomRight = center.add(widthVec).subtract(upVec).subtract(cameraPos); + + RenderSystem.enableBlend(); + if (additive) { + RenderSystem.blendFuncSeparate(GlStateManager.SourceFactor.SRC_ALPHA, GlStateManager.DestFactor.ONE, GlStateManager.SourceFactor.ONE, GlStateManager.DestFactor.ZERO); + } else { + RenderSystem.defaultBlendFunc(); + } + RenderSystem.depthMask(false); + RenderSystem.disableCull(); + RenderSystem.setShader(GameRenderer::getPositionTexShader); + RenderSystem.setShaderTexture(0, texture); + RenderSystem.setShaderColor(red, green, blue, alpha); + + BufferBuilder buffer = Tesselator.getInstance().begin(VertexFormat.Mode.QUADS, DefaultVertexFormat.POSITION_TEX); + buffer.addVertex(poseMatrix, (float) bottomLeft.x, (float) bottomLeft.y, (float) bottomLeft.z).setUv(0.0F, 1.0F); + buffer.addVertex(poseMatrix, (float) topLeft.x, (float) topLeft.y, (float) topLeft.z).setUv(0.0F, 0.0F); + buffer.addVertex(poseMatrix, (float) topRight.x, (float) topRight.y, (float) topRight.z).setUv(1.0F, 0.0F); + buffer.addVertex(poseMatrix, (float) bottomRight.x, (float) bottomRight.y, (float) bottomRight.z).setUv(1.0F, 1.0F); + MeshData mesh = buffer.build(); + if (mesh != null) { + BufferUploader.drawWithShader(mesh); + } + + RenderSystem.enableCull(); + RenderSystem.depthMask(true); + RenderSystem.disableBlend(); + RenderSystem.setShaderColor(1.0F, 1.0F, 1.0F, 1.0F); + } + + private static void drawTexturedPortal(Vec3 cameraPos, Matrix4f poseMatrix, PortalGunPortalEntity portal, int textureId, double offset, float red, float green, float blue, float alpha, boolean additive) { + Vec3 widthVec = portal.getWidthVec().normalize().scale(0.5D); + Vec3 upVec = portal.getUpVec().normalize().scale(1.0D); + Vec3 normalVec = portal.getNormalVec().normalize().scale(offset); + Vec3 center = portal.position().add(normalVec); + Vec3 bottomLeft = center.subtract(widthVec).subtract(upVec).subtract(cameraPos); + Vec3 topLeft = center.subtract(widthVec).add(upVec).subtract(cameraPos); + Vec3 topRight = center.add(widthVec).add(upVec).subtract(cameraPos); + Vec3 bottomRight = center.add(widthVec).subtract(upVec).subtract(cameraPos); + + RenderSystem.enableBlend(); + if (additive) { + RenderSystem.blendFuncSeparate(GlStateManager.SourceFactor.SRC_ALPHA, GlStateManager.DestFactor.ONE, GlStateManager.SourceFactor.ONE, GlStateManager.DestFactor.ZERO); + } else { + RenderSystem.defaultBlendFunc(); + } + RenderSystem.depthMask(false); + RenderSystem.disableCull(); + RenderSystem.setShader(GameRenderer::getPositionTexShader); + RenderSystem.setShaderTexture(0, textureId); + RenderSystem.setShaderColor(red, green, blue, alpha); + + BufferBuilder buffer = Tesselator.getInstance().begin(VertexFormat.Mode.QUADS, DefaultVertexFormat.POSITION_TEX); + buffer.addVertex(poseMatrix, (float) bottomLeft.x, (float) bottomLeft.y, (float) bottomLeft.z).setUv(0.0F, 1.0F); + buffer.addVertex(poseMatrix, (float) topLeft.x, (float) topLeft.y, (float) topLeft.z).setUv(0.0F, 0.0F); + buffer.addVertex(poseMatrix, (float) topRight.x, (float) topRight.y, (float) topRight.z).setUv(1.0F, 0.0F); + buffer.addVertex(poseMatrix, (float) bottomRight.x, (float) bottomRight.y, (float) bottomRight.z).setUv(1.0F, 1.0F); + MeshData mesh = buffer.build(); + if (mesh != null) { + BufferUploader.drawWithShader(mesh); + } + + RenderSystem.enableCull(); + RenderSystem.depthMask(true); + RenderSystem.disableBlend(); + RenderSystem.setShaderColor(1.0F, 1.0F, 1.0F, 1.0F); + } + + private static final class PortalCamera extends Camera { + private void setup(net.minecraft.world.level.BlockGetter level, Entity cameraEntity, float partialTick, Vec3 position, Vec3 look, Vec3 up) { + super.setup(level, cameraEntity, false, false, partialTick); + Vec3 normalizedLook = look.normalize(); + Vec3 normalizedUp = up.subtract(normalizedLook.scale(up.dot(normalizedLook))).normalize(); + float yaw = PortalGunTransformUtil.yawFromLook(normalizedLook); + float pitch = PortalGunTransformUtil.pitchFromLook(normalizedLook); + this.setPosition(position); + this.setRotation(yaw, pitch); + Vec3 currentUp = new Vec3(this.getUpVector()).normalize(); + if (currentUp.dot(normalizedUp) < 0.0D) { + this.setRotation(yaw + 180.0F, -pitch); + } + } + } + + private record RenderContext(Vec3 cameraPos, Vec3 look, Vec3 up, Matrix4f viewMatrix) { + } + + private record ScreenClip(int x, int y, int width, int height) { + private int area() { + return this.width * this.height; + } + } +} diff --git a/common-1.21.1/src/main/java/com/craisinlord/antarchy/content/client/renderer/PortalGunProjectileRenderer.java b/common-1.21.1/src/main/java/com/craisinlord/antarchy/content/client/renderer/PortalGunProjectileRenderer.java new file mode 100644 index 00000000..e7a6721f --- /dev/null +++ b/common-1.21.1/src/main/java/com/craisinlord/antarchy/content/client/renderer/PortalGunProjectileRenderer.java @@ -0,0 +1,80 @@ +package com.craisinlord.antarchy.content.client.renderer; + +import com.craisinlord.antarchy.Antarchy; +import com.craisinlord.antarchy.content.portalgun.PortalGunProjectileEntity; +import com.mojang.blaze3d.vertex.PoseStack; +import com.mojang.blaze3d.vertex.VertexConsumer; +import net.minecraft.client.renderer.MultiBufferSource; +import net.minecraft.client.renderer.RenderType; +import net.minecraft.client.renderer.entity.EntityRenderer; +import net.minecraft.client.renderer.entity.EntityRendererProvider; +import net.minecraft.client.renderer.texture.OverlayTexture; +import net.minecraft.core.BlockPos; +import net.minecraft.resources.ResourceLocation; +import org.joml.Matrix4f; + +public class PortalGunProjectileRenderer extends EntityRenderer { + private static final ResourceLocation BLUE_TEXTURE = ResourceLocation.fromNamespaceAndPath(Antarchy.MODID, "textures/vfx/portal_gun_portal_blue.png"); + private static final ResourceLocation ORANGE_TEXTURE = ResourceLocation.fromNamespaceAndPath(Antarchy.MODID, "textures/vfx/portal_gun_portal_orange.png"); + + public PortalGunProjectileRenderer(EntityRendererProvider.Context context) { + super(context); + } + + @Override + public void render(PortalGunProjectileEntity entity, float entityYaw, float partialTick, PoseStack poseStack, MultiBufferSource bufferSource, int packedLight) { + poseStack.pushPose(); + poseStack.mulPose(this.entityRenderDispatcher.cameraOrientation()); + float age = entity.tickCount + partialTick; + float pulse = 0.8F + 0.2F * (float) Math.sin(age * 0.9F); + float trailStretch = 1.1F + (float) Math.min(entity.getDeltaMovement().length() * 0.3D, 1.4D); + float baseScale = entity.getPortalSide() == com.craisinlord.antarchy.content.portalgun.PortalGunPortalEntity.PortalSide.BLUE ? 0.44F : 0.48F; + ResourceLocation texture = entity.getPortalSide() == com.craisinlord.antarchy.content.portalgun.PortalGunPortalEntity.PortalSide.BLUE ? BLUE_TEXTURE : ORANGE_TEXTURE; + float red = entity.getPortalSide() == com.craisinlord.antarchy.content.portalgun.PortalGunPortalEntity.PortalSide.BLUE ? 0.55F : 1.0F; + float green = entity.getPortalSide() == com.craisinlord.antarchy.content.portalgun.PortalGunPortalEntity.PortalSide.BLUE ? 0.82F : 0.56F; + float blue = entity.getPortalSide() == com.craisinlord.antarchy.content.portalgun.PortalGunPortalEntity.PortalSide.BLUE ? 1.0F : 0.18F; + + poseStack.scale(baseScale * trailStretch, baseScale, baseScale); + PoseStack.Pose pose = poseStack.last(); + Matrix4f matrix = pose.pose(); + VertexConsumer core = bufferSource.getBuffer(RenderType.entityTranslucent(texture)); + addQuad(core, pose, matrix, red, green, blue, 0.92F, packedLight, -0.9F, -0.5F, 0.9F, 0.5F); + VertexConsumer glow = bufferSource.getBuffer(RenderType.entityTranslucentEmissive(texture)); + addQuad(glow, pose, matrix, 1.0F, 1.0F, 1.0F, 0.8F * pulse, 0xF000F0, -1.15F, -0.7F, 1.15F, 0.7F); + + poseStack.mulPose(com.mojang.math.Axis.ZP.rotationDegrees(90.0F)); + pose = poseStack.last(); + matrix = pose.pose(); + core = bufferSource.getBuffer(RenderType.entityTranslucent(texture)); + addQuad(core, pose, matrix, red, green, blue, 0.74F, packedLight, -0.45F, -0.95F, 0.45F, 0.95F); + glow = bufferSource.getBuffer(RenderType.entityTranslucentEmissive(texture)); + addQuad(glow, pose, matrix, 1.0F, 1.0F, 1.0F, 0.52F * pulse, 0xF000F0, -0.62F, -1.15F, 0.62F, 1.15F); + poseStack.popPose(); + } + + @Override + protected int getBlockLightLevel(PortalGunProjectileEntity entity, BlockPos pos) { + return 15; + } + + @Override + public ResourceLocation getTextureLocation(PortalGunProjectileEntity entity) { + return entity.getPortalSide() == com.craisinlord.antarchy.content.portalgun.PortalGunPortalEntity.PortalSide.BLUE ? BLUE_TEXTURE : ORANGE_TEXTURE; + } + + private static void addQuad(VertexConsumer consumer, PoseStack.Pose pose, Matrix4f matrix, float red, float green, float blue, float alpha, int packedLight, float minX, float minY, float maxX, float maxY) { + addVertex(consumer, pose, matrix, minX, minY, 0.0F, 1.0F, red, green, blue, alpha, packedLight); + addVertex(consumer, pose, matrix, maxX, minY, 1.0F, 1.0F, red, green, blue, alpha, packedLight); + addVertex(consumer, pose, matrix, maxX, maxY, 1.0F, 0.0F, red, green, blue, alpha, packedLight); + addVertex(consumer, pose, matrix, minX, maxY, 0.0F, 0.0F, red, green, blue, alpha, packedLight); + } + + private static void addVertex(VertexConsumer consumer, PoseStack.Pose pose, Matrix4f matrix, float x, float y, float u, float v, float red, float green, float blue, float alpha, int packedLight) { + consumer.addVertex(matrix, x, y, 0.0F) + .setColor(red, green, blue, alpha) + .setUv(u, v) + .setOverlay(OverlayTexture.NO_OVERLAY) + .setLight(packedLight) + .setNormal(pose, 0.0F, 0.0F, 1.0F); + } +} diff --git a/common-1.21.1/src/main/java/com/craisinlord/antarchy/content/creative/CreativeTabContents.java b/common-1.21.1/src/main/java/com/craisinlord/antarchy/content/creative/CreativeTabContents.java index 3c999bd0..e57eccb9 100644 --- a/common-1.21.1/src/main/java/com/craisinlord/antarchy/content/creative/CreativeTabContents.java +++ b/common-1.21.1/src/main/java/com/craisinlord/antarchy/content/creative/CreativeTabContents.java @@ -72,6 +72,40 @@ public final class CreativeTabContents { entry("peach_button", "building_blocks"), entry("peach_sign", "building_blocks"), entry("peach_hanging_sign", "building_blocks"), + entry("truffalo_log", "building_blocks"), + entry("truffalo_wood", "building_blocks"), + entry("stripped_truffalo_log", "building_blocks"), + entry("stripped_truffalo_wood", "building_blocks"), + entry("truffalo_planks", "building_blocks"), + entry("truffalo_stairs", "building_blocks"), + entry("truffalo_slab", "building_blocks"), + entry("truffalo_fence", "building_blocks"), + entry("truffalo_fence_gate", "building_blocks"), + entry("truffalo_boat", "building_blocks"), + entry("truffalo_chest_boat", "building_blocks"), + entry("truffalo_door", "building_blocks"), + entry("truffalo_trapdoor", "building_blocks"), + entry("truffalo_pressure_plate", "building_blocks"), + entry("truffalo_button", "building_blocks"), + entry("truffalo_sign", "building_blocks"), + entry("truffalo_hanging_sign", "building_blocks"), + entry("royal_log", "building_blocks"), + entry("royal_wood", "building_blocks"), + entry("stripped_royal_log", "building_blocks"), + entry("stripped_royal_wood", "building_blocks"), + entry("royal_planks", "building_blocks"), + entry("royal_stairs", "building_blocks"), + entry("royal_slab", "building_blocks"), + entry("royal_fence", "building_blocks"), + entry("royal_fence_gate", "building_blocks"), + entry("royal_boat", "building_blocks"), + entry("royal_chest_boat", "building_blocks"), + entry("royal_door", "building_blocks"), + entry("royal_trapdoor", "building_blocks"), + entry("royal_pressure_plate", "building_blocks"), + entry("royal_button", "building_blocks"), + entry("royal_sign", "building_blocks"), + entry("royal_hanging_sign", "building_blocks"), entry("shellstone", "building_blocks"), entry("shellstone_stairs", "building_blocks"), entry("shellstone_slab", "building_blocks"), @@ -254,8 +288,28 @@ public final class CreativeTabContents { entry("ouranwood_acorn", "natural_blocks"), entry("peach_leaves", "natural_blocks"), entry("peach_sapling", "natural_blocks"), + entry("truffalo_sapling", "natural_blocks"), + entry("royal_leaves", "natural_blocks"), + entry("royal_flowering_leaves", "natural_blocks"), + entry("royal_sapling", "natural_blocks"), entry("nadir_veil", "natural_blocks"), entry("nadir_sapling", "natural_blocks"), + entry("white_truffalo_tuft", "natural_blocks"), + entry("orange_truffalo_tuft", "natural_blocks"), + entry("magenta_truffalo_tuft", "natural_blocks"), + entry("light_blue_truffalo_tuft", "natural_blocks"), + entry("yellow_truffalo_tuft", "natural_blocks"), + entry("lime_truffalo_tuft", "natural_blocks"), + entry("pink_truffalo_tuft", "natural_blocks"), + entry("gray_truffalo_tuft", "natural_blocks"), + entry("light_gray_truffalo_tuft", "natural_blocks"), + entry("cyan_truffalo_tuft", "natural_blocks"), + entry("purple_truffalo_tuft", "natural_blocks"), + entry("blue_truffalo_tuft", "natural_blocks"), + entry("brown_truffalo_tuft", "natural_blocks"), + entry("green_truffalo_tuft", "natural_blocks"), + entry("red_truffalo_tuft", "natural_blocks"), + entry("black_truffalo_tuft", "natural_blocks"), entry("duplicator_log", "natural_blocks"), entry("duplicator_sapling", "natural_blocks"), entry("orange_milkweed", "natural_blocks"), @@ -300,6 +354,7 @@ public final class CreativeTabContents { entry("dead_star_coral_fan", "natural_blocks"), entry("dead_star_coral_block", "natural_blocks"), entry("duct_tape", "tools_and_utilities", "shears"), + entry("music_disc_underside", "tools_and_utilities"), entry("diamond_minecart", "tools_and_utilities", "minecart"), entry("bile_bucket", "tools_and_utilities"), entry("ichor_bucket", "tools_and_utilities"), @@ -419,6 +474,23 @@ public final class CreativeTabContents { entry("big_bertha_blade", "ingredients"), entry("big_bertha_handle", "ingredients"), entry("big_bertha_hilt", "ingredients"), + entry("hoverboard", "building_blocks"), + entry("hoverboard_white", "building_blocks"), + entry("hoverboard_orange", "building_blocks"), + entry("hoverboard_magenta", "building_blocks"), + entry("hoverboard_light_blue", "building_blocks"), + entry("hoverboard_yellow", "building_blocks"), + entry("hoverboard_lime", "building_blocks"), + entry("hoverboard_pink", "building_blocks"), + entry("hoverboard_gray", "building_blocks"), + entry("hoverboard_light_gray", "building_blocks"), + entry("hoverboard_cyan", "building_blocks"), + entry("hoverboard_purple", "building_blocks"), + entry("hoverboard_blue", "building_blocks"), + entry("hoverboard_brown", "building_blocks"), + entry("hoverboard_green", "building_blocks"), + entry("hoverboard_red", "building_blocks"), + entry("hoverboard_black", "building_blocks"), entry("easter_bunny_spawn_egg", "spawn_eggs"), entry("flying_squirrel_spawn_egg", "spawn_eggs"), entry("caterpillar_spawn_egg", "spawn_eggs"), diff --git a/common-1.21.1/src/main/java/com/craisinlord/antarchy/content/entity/HoverboardEntity.java b/common-1.21.1/src/main/java/com/craisinlord/antarchy/content/entity/HoverboardEntity.java new file mode 100644 index 00000000..977ce215 --- /dev/null +++ b/common-1.21.1/src/main/java/com/craisinlord/antarchy/content/entity/HoverboardEntity.java @@ -0,0 +1,243 @@ +package com.craisinlord.antarchy.content.entity; + +import com.craisinlord.antarchy.Antarchy; +import com.craisinlord.antarchy.mixins.LivingEntityJumpingAccessor; +import net.minecraft.core.BlockPos; +import net.minecraft.core.Direction; +import net.minecraft.core.registries.BuiltInRegistries; +import net.minecraft.nbt.CompoundTag; +import net.minecraft.network.syncher.EntityDataAccessor; +import net.minecraft.network.syncher.EntityDataSerializers; +import net.minecraft.network.syncher.SynchedEntityData; +import net.minecraft.resources.ResourceLocation; +import net.minecraft.sounds.SoundEvents; +import net.minecraft.util.Mth; +import net.minecraft.world.InteractionHand; +import net.minecraft.world.InteractionResult; +import net.minecraft.world.damagesource.DamageSource; +import net.minecraft.world.entity.Entity; +import net.minecraft.world.entity.EntityType; +import net.minecraft.world.entity.LivingEntity; +import net.minecraft.world.entity.Mob; +import net.minecraft.world.entity.MoverType; +import net.minecraft.world.entity.PathfinderMob; +import net.minecraft.world.entity.ai.attributes.AttributeSupplier; +import net.minecraft.world.entity.ai.attributes.Attributes; +import net.minecraft.world.entity.player.Player; +import net.minecraft.world.item.DyeColor; +import net.minecraft.world.item.Item; +import net.minecraft.world.item.ItemStack; +import net.minecraft.world.level.Level; +import net.minecraft.world.phys.Vec3; +import org.jetbrains.annotations.Nullable; +import software.bernie.geckolib.animatable.GeoEntity; +import software.bernie.geckolib.animatable.instance.AnimatableInstanceCache; +import software.bernie.geckolib.animation.AnimatableManager; +import software.bernie.geckolib.animation.AnimationController; +import software.bernie.geckolib.animation.AnimationState; +import software.bernie.geckolib.animation.PlayState; +import software.bernie.geckolib.animation.RawAnimation; +import software.bernie.geckolib.util.GeckoLibUtil; + +public class HoverboardEntity extends PathfinderMob implements GeoEntity { + private static final EntityDataAccessor COLOR = SynchedEntityData.defineId(HoverboardEntity.class, EntityDataSerializers.INT); + + private static final RawAnimation IDLE_ANIM = RawAnimation.begin().thenLoop("idle"); + private static final RawAnimation MOVE_ANIM = RawAnimation.begin().thenLoop("move"); + + private static final double MAX_HOVER_HEIGHT = 5.0D; + private static final double ACCELERATION = 0.08D; + private static final double MAX_SPEED = 1.8D; + private static final double ASCEND_SPEED = 0.15D; + private static final double DAMPING = 0.955D; + private static final double RIDER_Y_OFFSET = 0.65D; + private static final float RIDER_FORWARD_HEAD_OFFSET = 90.0F; + + private final AnimatableInstanceCache geoCache = GeckoLibUtil.createInstanceCache(this); + + public HoverboardEntity(EntityType entityType, Level level) { + super(entityType, level); + this.setNoGravity(true); + this.setPersistenceRequired(); + } + + public static AttributeSupplier.Builder createAttributes() { + return Mob.createMobAttributes().add(Attributes.MAX_HEALTH, 6.0D); + } + + @Override + public boolean hurt(DamageSource source, float amount) { + if (this.level().isClientSide || !this.isAlive()) { + return false; + } + if (this.isInvulnerableTo(source)) { + return false; + } + this.ejectPassengers(); + this.playSound(SoundEvents.WOOD_BREAK, 1.0F, 1.0F); + this.spawnAtLocation(this.getDropStack()); + this.discard(); + return true; + } + + @Override + protected void registerGoals() { + } + + @Override + protected void defineSynchedData(SynchedEntityData.Builder builder) { + super.defineSynchedData(builder); + builder.define(COLOR, -1); + } + + @Nullable + public DyeColor getColor() { + int id = this.entityData.get(COLOR); + return id < 0 ? null : DyeColor.byId(id); + } + + public void setColor(@Nullable DyeColor color) { + this.entityData.set(COLOR, color == null ? -1 : color.getId()); + } + + @Override + public void addAdditionalSaveData(CompoundTag tag) { + super.addAdditionalSaveData(tag); + if (this.getColor() != null) { + tag.putString("Color", this.getColor().getName()); + } + } + + @Override + public void readAdditionalSaveData(CompoundTag tag) { + super.readAdditionalSaveData(tag); + this.setColor(tag.contains("Color") ? DyeColor.byName(tag.getString("Color"), null) : null); + } + + @Override + protected InteractionResult mobInteract(Player player, InteractionHand hand) { + if (!this.isVehicle() && !player.isSecondaryUseActive()) { + if (!this.level().isClientSide) { + player.startRiding(this); + } + return InteractionResult.sidedSuccess(this.level().isClientSide); + } + return super.mobInteract(player, hand); + } + + @Override + @Nullable + public LivingEntity getControllingPassenger() { + Entity passenger = this.getFirstPassenger(); + return passenger instanceof Player player ? player : null; + } + + @Override + public boolean canAddPassenger(Entity passenger) { + return this.getPassengers().isEmpty(); + } + + @Override + protected void positionRider(Entity passenger, MoveFunction moveFunction) { + if (!this.hasPassenger(passenger)) { + return; + } + moveFunction.accept(passenger, this.getX(), this.getY() + RIDER_Y_OFFSET, this.getZ()); + } + + @Override + public void travel(Vec3 travelVector) { + if (this.getControllingPassenger() instanceof Player rider) { + this.setYRot(rider.getYRot()); + this.yRotO = this.getYRot(); + this.yBodyRot = this.getYRot(); + this.yHeadRot = this.getYRot(); + this.setXRot(0.0F); + rider.setYHeadRot(rider.getYRot() + RIDER_FORWARD_HEAD_OFFSET); + + Vec3 look = Vec3.directionFromRotation(0.0F, this.getYRot()); + float forward = rider.zza; + boolean holdingJump = ((LivingEntityJumpingAccessor) rider).antarchy$isJumping(); + double ascend = holdingJump ? ASCEND_SPEED : (rider.isShiftKeyDown() ? -ASCEND_SPEED : 0.0D); + + double groundHeight = this.findGroundHeight(); + double maxY = groundHeight + MAX_HOVER_HEIGHT; + + Vec3 currentHorizontal = new Vec3(this.getDeltaMovement().x, 0.0D, this.getDeltaMovement().z); + Vec3 horizontalMotion = currentHorizontal.scale(DAMPING).add(look.scale(forward * ACCELERATION)); + + double horizontalSpeed = horizontalMotion.horizontalDistance(); + if (horizontalSpeed > MAX_SPEED) { + double scale = MAX_SPEED / horizontalSpeed; + horizontalMotion = new Vec3(horizontalMotion.x * scale, 0.0D, horizontalMotion.z * scale); + } + + double verticalMotion = ascend; + if (this.getY() >= maxY && verticalMotion > 0.0D) { + verticalMotion = 0.0D; + } + if (this.getY() <= groundHeight && verticalMotion < 0.0D) { + verticalMotion = 0.0D; + } + + this.setDeltaMovement(horizontalMotion.x, verticalMotion, horizontalMotion.z); + this.move(MoverType.SELF, this.getDeltaMovement()); + return; + } + + this.setDeltaMovement(this.getDeltaMovement().scale(DAMPING)); + this.move(MoverType.SELF, this.getDeltaMovement()); + } + + private double findGroundHeight() { + BlockPos.MutableBlockPos pos = new BlockPos.MutableBlockPos(Mth.floor(this.getX()), Mth.floor(this.getY()), Mth.floor(this.getZ())); + int minY = this.level().getMinBuildHeight(); + while (pos.getY() > minY && this.level().getBlockState(pos).isAir()) { + pos.move(Direction.DOWN); + } + return pos.getY() + 1.0D; + } + + @Override + public boolean causeFallDamage(float fallDistance, float multiplier, DamageSource source) { + return false; + } + + @Override + public boolean removeWhenFarAway(double distanceToClosestPlayer) { + return false; + } + + @Override + public void die(DamageSource damageSource) { + super.die(damageSource); + if (!this.level().isClientSide) { + this.spawnAtLocation(this.getDropStack()); + } + } + + public ItemStack getDropStack() { + String path = this.getColor() == null ? "hoverboard" : "hoverboard_" + this.getColor().getName(); + Item item = BuiltInRegistries.ITEM.get(ResourceLocation.fromNamespaceAndPath(Antarchy.MODID, path)); + return new ItemStack(item); + } + + @Override + public ItemStack getPickResult() { + return this.getDropStack(); + } + + @Override + public void registerControllers(AnimatableManager.ControllerRegistrar controllers) { + controllers.add(new AnimationController<>(this, "movement", 0, this::movementController)); + } + + private PlayState movementController(AnimationState state) { + return state.setAndContinue(this.getDeltaMovement().horizontalDistanceSqr() > 0.0025D ? MOVE_ANIM : IDLE_ANIM); + } + + @Override + public AnimatableInstanceCache getAnimatableInstanceCache() { + return this.geoCache; + } +} diff --git a/common-1.21.1/src/main/java/com/craisinlord/antarchy/content/entity/RoyalBoatEntity.java b/common-1.21.1/src/main/java/com/craisinlord/antarchy/content/entity/RoyalBoatEntity.java new file mode 100644 index 00000000..0e914e66 --- /dev/null +++ b/common-1.21.1/src/main/java/com/craisinlord/antarchy/content/entity/RoyalBoatEntity.java @@ -0,0 +1,21 @@ +package com.craisinlord.antarchy.content.entity; + +import com.craisinlord.antarchy.Antarchy; +import net.minecraft.core.registries.BuiltInRegistries; +import net.minecraft.resources.ResourceLocation; +import net.minecraft.world.entity.EntityType; +import net.minecraft.world.entity.vehicle.Boat; +import net.minecraft.world.item.Item; +import net.minecraft.world.level.Level; + +public class RoyalBoatEntity extends Boat { + public RoyalBoatEntity(EntityType entityType, Level level) { + super(entityType, level); + this.setVariant(Type.OAK); + } + + @Override + public Item getDropItem() { + return BuiltInRegistries.ITEM.get(ResourceLocation.fromNamespaceAndPath(Antarchy.MODID, "royal_boat")); + } +} diff --git a/common-1.21.1/src/main/java/com/craisinlord/antarchy/content/entity/RoyalChestBoatEntity.java b/common-1.21.1/src/main/java/com/craisinlord/antarchy/content/entity/RoyalChestBoatEntity.java new file mode 100644 index 00000000..ec5cb353 --- /dev/null +++ b/common-1.21.1/src/main/java/com/craisinlord/antarchy/content/entity/RoyalChestBoatEntity.java @@ -0,0 +1,22 @@ +package com.craisinlord.antarchy.content.entity; + +import com.craisinlord.antarchy.Antarchy; +import net.minecraft.core.registries.BuiltInRegistries; +import net.minecraft.resources.ResourceLocation; +import net.minecraft.world.entity.EntityType; +import net.minecraft.world.entity.vehicle.Boat; +import net.minecraft.world.entity.vehicle.ChestBoat; +import net.minecraft.world.item.Item; +import net.minecraft.world.level.Level; + +public class RoyalChestBoatEntity extends ChestBoat { + public RoyalChestBoatEntity(EntityType entityType, Level level) { + super(entityType, level); + this.setVariant(Type.OAK); + } + + @Override + public Item getDropItem() { + return BuiltInRegistries.ITEM.get(ResourceLocation.fromNamespaceAndPath(Antarchy.MODID, "royal_chest_boat")); + } +} diff --git a/common-1.21.1/src/main/java/com/craisinlord/antarchy/content/entity/TruffaloBoatEntity.java b/common-1.21.1/src/main/java/com/craisinlord/antarchy/content/entity/TruffaloBoatEntity.java new file mode 100644 index 00000000..4ad8d50c --- /dev/null +++ b/common-1.21.1/src/main/java/com/craisinlord/antarchy/content/entity/TruffaloBoatEntity.java @@ -0,0 +1,21 @@ +package com.craisinlord.antarchy.content.entity; + +import com.craisinlord.antarchy.Antarchy; +import net.minecraft.core.registries.BuiltInRegistries; +import net.minecraft.resources.ResourceLocation; +import net.minecraft.world.entity.EntityType; +import net.minecraft.world.entity.vehicle.Boat; +import net.minecraft.world.item.Item; +import net.minecraft.world.level.Level; + +public class TruffaloBoatEntity extends Boat { + public TruffaloBoatEntity(EntityType entityType, Level level) { + super(entityType, level); + this.setVariant(Type.OAK); + } + + @Override + public Item getDropItem() { + return BuiltInRegistries.ITEM.get(ResourceLocation.fromNamespaceAndPath(Antarchy.MODID, "truffalo_boat")); + } +} diff --git a/common-1.21.1/src/main/java/com/craisinlord/antarchy/content/entity/TruffaloChestBoatEntity.java b/common-1.21.1/src/main/java/com/craisinlord/antarchy/content/entity/TruffaloChestBoatEntity.java new file mode 100644 index 00000000..cfe361e3 --- /dev/null +++ b/common-1.21.1/src/main/java/com/craisinlord/antarchy/content/entity/TruffaloChestBoatEntity.java @@ -0,0 +1,22 @@ +package com.craisinlord.antarchy.content.entity; + +import com.craisinlord.antarchy.Antarchy; +import net.minecraft.core.registries.BuiltInRegistries; +import net.minecraft.resources.ResourceLocation; +import net.minecraft.world.entity.EntityType; +import net.minecraft.world.entity.vehicle.Boat; +import net.minecraft.world.entity.vehicle.ChestBoat; +import net.minecraft.world.item.Item; +import net.minecraft.world.level.Level; + +public class TruffaloChestBoatEntity extends ChestBoat { + public TruffaloChestBoatEntity(EntityType entityType, Level level) { + super(entityType, level); + this.setVariant(Type.OAK); + } + + @Override + public Item getDropItem() { + return BuiltInRegistries.ITEM.get(ResourceLocation.fromNamespaceAndPath(Antarchy.MODID, "truffalo_chest_boat")); + } +} diff --git a/common-1.21.1/src/main/java/com/craisinlord/antarchy/content/item/HoverboardItem.java b/common-1.21.1/src/main/java/com/craisinlord/antarchy/content/item/HoverboardItem.java new file mode 100644 index 00000000..5ac59576 --- /dev/null +++ b/common-1.21.1/src/main/java/com/craisinlord/antarchy/content/item/HoverboardItem.java @@ -0,0 +1,74 @@ +package com.craisinlord.antarchy.content.item; + +import com.craisinlord.antarchy.content.entity.HoverboardEntity; +import java.util.function.Predicate; +import net.minecraft.stats.Stats; +import net.minecraft.world.InteractionHand; +import net.minecraft.world.InteractionResultHolder; +import net.minecraft.world.entity.Entity; +import net.minecraft.world.entity.EntitySelector; +import net.minecraft.world.entity.EntityType; +import net.minecraft.world.entity.player.Player; +import net.minecraft.world.item.DyeColor; +import net.minecraft.world.item.Item; +import net.minecraft.world.item.ItemStack; +import net.minecraft.world.level.ClipContext; +import net.minecraft.world.level.Level; +import net.minecraft.world.level.gameevent.GameEvent; +import net.minecraft.world.phys.BlockHitResult; +import net.minecraft.world.phys.HitResult; +import net.minecraft.world.phys.Vec3; +import org.jetbrains.annotations.Nullable; + +public class HoverboardItem extends Item { + private static final Predicate ENTITY_PREDICATE = EntitySelector.NO_SPECTATORS.and(Entity::isPickable); + + private final EntityType entityType; + @Nullable + private final DyeColor color; + + public HoverboardItem(EntityType entityType, @Nullable DyeColor color, Properties properties) { + super(properties); + this.entityType = entityType; + this.color = color; + } + + @Override + public InteractionResultHolder use(Level level, Player player, InteractionHand hand) { + ItemStack stack = player.getItemInHand(hand); + BlockHitResult hitResult = getPlayerPOVHitResult(level, player, ClipContext.Fluid.ANY); + if (hitResult.getType() == HitResult.Type.MISS) { + return InteractionResultHolder.pass(stack); + } + + Vec3 viewVector = player.getViewVector(1.0F); + for (Entity entity : level.getEntities(player, player.getBoundingBox().expandTowards(viewVector.scale(5.0D)).inflate(1.0D), ENTITY_PREDICATE)) { + if (entity.getBoundingBox().inflate(entity.getPickRadius()).contains(player.getEyePosition())) { + return InteractionResultHolder.pass(stack); + } + } + + if (hitResult.getType() != HitResult.Type.BLOCK) { + return InteractionResultHolder.pass(stack); + } + + HoverboardEntity hoverboard = new HoverboardEntity(this.entityType, level); + Vec3 spawnPos = hitResult.getLocation(); + hoverboard.moveTo(spawnPos.x, spawnPos.y, spawnPos.z, player.getYRot(), 0.0F); + hoverboard.setColor(this.color); + if (!level.noCollision(hoverboard, hoverboard.getBoundingBox())) { + return InteractionResultHolder.fail(stack); + } + + if (!level.isClientSide) { + level.addFreshEntity(hoverboard); + level.gameEvent(player, GameEvent.ENTITY_PLACE, hitResult.getLocation()); + if (!player.getAbilities().instabuild) { + stack.consume(1, player); + } + } + + player.awardStat(Stats.ITEM_USED.get(this)); + return InteractionResultHolder.sidedSuccess(stack, level.isClientSide()); + } +} diff --git a/common-1.21.1/src/main/java/com/craisinlord/antarchy/content/item/PortalGunItem.java b/common-1.21.1/src/main/java/com/craisinlord/antarchy/content/item/PortalGunItem.java index d583ddd6..24386848 100644 --- a/common-1.21.1/src/main/java/com/craisinlord/antarchy/content/item/PortalGunItem.java +++ b/common-1.21.1/src/main/java/com/craisinlord/antarchy/content/item/PortalGunItem.java @@ -1,14 +1,20 @@ package com.craisinlord.antarchy.content.item; import com.craisinlord.antarchy.Antarchy; +import com.craisinlord.antarchy.content.block.entity.PortalGunPortalBaseBlockEntity; +import com.craisinlord.antarchy.content.block.entity.PortalGunPortalMasterBlockEntity; import com.craisinlord.antarchy.content.client.model.ResourceBackedGeoItemModel; import com.craisinlord.antarchy.content.client.renderer.AnimatedHeldItemRenderer; import com.craisinlord.antarchy.content.network.PortalGunPrimaryPayload; import com.craisinlord.antarchy.content.portalgun.PortalGunBlackHoleEntity; +import com.craisinlord.antarchy.content.portalgun.PortalGunPlacement; import com.craisinlord.antarchy.content.portalgun.PortalGunPortalEntity; +import com.craisinlord.antarchy.content.portalgun.PortalGunProjectileEntity; import com.craisinlord.antarchy.content.portalgun.PortalGunSavedData; +import java.util.HashSet; import java.util.List; import java.util.Optional; +import java.util.Set; import java.util.UUID; import java.util.function.Consumer; import java.util.function.Supplier; @@ -38,6 +44,9 @@ import net.minecraft.world.item.TooltipFlag; import net.minecraft.world.item.UseAnim; import net.minecraft.world.level.ClipContext; import net.minecraft.world.level.Level; +import net.minecraft.world.level.block.Block; +import net.minecraft.world.level.block.Blocks; +import net.minecraft.world.level.block.entity.BlockEntity; import net.minecraft.world.level.block.state.BlockState; import net.minecraft.world.level.material.FluidState; import net.minecraft.world.phys.BlockHitResult; @@ -58,17 +67,32 @@ public class PortalGunItem extends Item implements GeoItem { private static final String LED_CONTROLLER = "led_controller"; private static final String FIRE_CONTROLLER = "fire_controller"; private static final String LAST_SIDE_TAG = "antarchy.portal_gun_last_side"; + private static final String MOON_SIDE_TAG = "antarchy.portal_gun_moon_side"; + public static final String GUN_ID_TAG = "antarchy.portal_gun_id"; private static final ResourceLocation MODEL_LOCATION = ResourceLocation.fromNamespaceAndPath(Antarchy.MODID, "geo/portal_gun.geo.json"); private static final ResourceLocation TEXTURE_LOCATION = ResourceLocation.fromNamespaceAndPath(Antarchy.MODID, "textures/models/item/portal_gun.png"); private static final ResourceLocation ANIMATION_LOCATION = ResourceLocation.fromNamespaceAndPath(Antarchy.MODID, "animations/portal_gun.animation.json"); private final Supplier> portalType; private final Supplier> blackHoleType; + private final Supplier> projectileType; + private final Supplier portalMasterBlock; + private final Supplier portalBaseBlock; private final AnimatableInstanceCache geoCache = GeckoLibUtil.createInstanceCache(this); - public PortalGunItem(Item.Properties properties, Supplier> portalType, Supplier> blackHoleType) { + public PortalGunItem( + Item.Properties properties, + Supplier> portalType, + Supplier> blackHoleType, + Supplier> projectileType, + Supplier portalMasterBlock, + Supplier portalBaseBlock + ) { super(properties); this.portalType = portalType; this.blackHoleType = blackHoleType; + this.projectileType = projectileType; + this.portalMasterBlock = portalMasterBlock; + this.portalBaseBlock = portalBaseBlock; GeoItem.registerSyncedAnimatable(this); } @@ -82,6 +106,7 @@ public class PortalGunItem extends Item implements GeoItem { if (player.isShiftKeyDown()) { PortalGunSavedData.clearAllPortals(serverLevel.getServer(), player.getUUID()); this.setLastSide(stack, null); + this.setMoonSide(stack, null); level.playSound(null, player.getX(), player.getY(), player.getZ(), PortalGunPortalEntity.sound("portal_fizzle", SoundEvents.ENDER_CHEST_CLOSE), SoundSource.PLAYERS, 0.6F, 1.0F); return InteractionResultHolder.consume(stack); } @@ -94,66 +119,105 @@ public class PortalGunItem extends Item implements GeoItem { } private boolean firePortal(ServerLevel level, Player player, ItemStack stack, PortalGunPortalEntity.PortalSide side) { - BlockHitResult hitResult = this.raycast(level, player); - if (hitResult.getType() == HitResult.Type.MISS) { - if (this.tryShootMoon(level, player, stack, side)) { + if (this.raycast(level, player).getType() == HitResult.Type.MISS) { + if (this.tryArmMoonShot(level, player, stack, side)) { return true; } level.playSound(null, player.getX(), player.getY(), player.getZ(), PortalGunPortalEntity.sound("portal_gun_invalid_surface", SoundEvents.DISPENSER_FAIL), SoundSource.PLAYERS, 0.55F, 1.0F); return false; } - this.spawnShotTrail(level, player, hitResult.getLocation(), side); - Placement placement = this.findPlacement(level, player, hitResult); - if (placement == null) { - level.playSound(null, player.getX(), player.getY(), player.getZ(), PortalGunPortalEntity.sound("portal_gun_invalid_surface", SoundEvents.DISPENSER_FAIL), SoundSource.PLAYERS, 0.55F, 1.0F); - return false; - } + this.triggerFireAnimation(level, player, stack); + this.setLastSide(stack, side); + stack.hurtAndBreak(1, player, EquipmentSlot.MAINHAND); + player.awardStat(Stats.ITEM_USED.get(this)); + player.getCooldowns().addCooldown(this, 6); + String firePath = side == PortalGunPortalEntity.PortalSide.BLUE ? "portal_gun_fire_blue" : "portal_gun_fire_orange"; + level.playSound(null, player.getX(), player.getY(), player.getZ(), PortalGunPortalEntity.sound(firePath, SoundEvents.BEACON_ACTIVATE), SoundSource.PLAYERS, 0.65F, side == PortalGunPortalEntity.PortalSide.BLUE ? 1.15F : 0.88F); + this.spawnProjectile(level, player, stack, side); + return true; + } + public void handlePortalImpact(ServerLevel level, Player player, ItemStack stack, PortalGunPortalEntity.PortalSide side, BlockHitResult hitResult, Vec3 impactPos) { + PortalGunPortalEntity existing = this.findPlacedPortal(level, player.getUUID(), side); + PortalGunPlacement placement = this.findPlacement(level, player, side, hitResult, existing); + if (placement == null) { + level.playSound(null, impactPos.x, impactPos.y, impactPos.z, PortalGunPortalEntity.sound("portal_gun_invalid_surface", SoundEvents.DISPENSER_FAIL), SoundSource.PLAYERS, 0.55F, 1.0F); + return; + } + if (existing != null) { + existing.discard(); + } + if (this.isMoonSideArmed(stack, side)) { + this.setMoonSide(stack, null); + } + if (this.isMoonSideArmed(stack, this.otherSide(side))) { + this.spawnBlackHole(level, player, stack, side, placement.center()); + return; + } PortalGunPortalEntity portal = new PortalGunPortalEntity(this.portalType.get(), level); - portal.configure(player.getUUID(), side, placement.facing(), placement.upAxis(), placement.supportOrigin()); + portal.configure(player.getUUID(), side, placement); portal.moveTo(placement.center().x, placement.center().y, placement.center().z, placement.yaw(), 0.0F); + if (!this.placePortalBlocks(level, player.getUUID(), side, portal, placement)) { + level.playSound(null, impactPos.x, impactPos.y, impactPos.z, PortalGunPortalEntity.sound("portal_gun_invalid_surface", SoundEvents.DISPENSER_FAIL), SoundSource.PLAYERS, 0.55F, 1.0F); + return; + } level.addFreshEntity(portal); PortalGunSavedData.setPortal(level.getServer(), player.getUUID(), side, portal.getUUID()); PortalGunPortalEntity other = this.findCounterpart(level, player.getUUID(), side); if (other != null) { portal.linkTo(other); other.linkTo(portal); + this.syncPortalBlocks(level, portal); + this.syncPortalBlocks(level, other); } + String openPath = side == PortalGunPortalEntity.PortalSide.BLUE ? "portal_open_blue" : "portal_open_orange"; + level.playSound(null, portal.getX(), portal.getY(), portal.getZ(), PortalGunPortalEntity.sound(openPath, SoundEvents.END_PORTAL_SPAWN), SoundSource.PLAYERS, 0.45F, side == PortalGunPortalEntity.PortalSide.BLUE ? 1.05F : 0.92F); + } + + public ItemStack findMatchingGunStack(Player player, UUID gunId) { + ItemStack mainHand = player.getMainHandItem(); + if (this.matchesGunId(mainHand, gunId)) { + return mainHand; + } + ItemStack offhand = player.getOffhandItem(); + if (this.matchesGunId(offhand, gunId)) { + return offhand; + } + for (int slot = 0; slot < player.getInventory().getContainerSize(); slot++) { + ItemStack stack = player.getInventory().getItem(slot); + if (this.matchesGunId(stack, gunId)) { + return stack; + } + } + return ItemStack.EMPTY; + } + + private boolean tryArmMoonShot(ServerLevel level, Player player, ItemStack stack, PortalGunPortalEntity.PortalSide side) { + if (!level.dimensionType().hasSkyLight() || !level.isNight() || player.getXRot() > -40.0F) { + return false; + } + PortalGunPortalEntity existing = this.findPlacedPortal(level, player.getUUID(), side); + if (existing != null) { + existing.discard(); + } + this.setMoonSide(stack, side); this.setLastSide(stack, side); this.triggerFireAnimation(level, player, stack); stack.hurtAndBreak(1, player, EquipmentSlot.MAINHAND); player.awardStat(Stats.ITEM_USED.get(this)); player.getCooldowns().addCooldown(this, 6); - String firePath = side == PortalGunPortalEntity.PortalSide.BLUE ? "portal_gun_fire_blue" : "portal_gun_fire_orange"; - String openPath = side == PortalGunPortalEntity.PortalSide.BLUE ? "portal_open_blue" : "portal_open_orange"; - level.playSound(null, player.getX(), player.getY(), player.getZ(), PortalGunPortalEntity.sound(firePath, SoundEvents.BEACON_ACTIVATE), SoundSource.PLAYERS, 0.65F, side == PortalGunPortalEntity.PortalSide.BLUE ? 1.15F : 0.88F); - level.playSound(null, portal.getX(), portal.getY(), portal.getZ(), PortalGunPortalEntity.sound(openPath, SoundEvents.END_PORTAL_SPAWN), SoundSource.PLAYERS, 0.45F, side == PortalGunPortalEntity.PortalSide.BLUE ? 1.05F : 0.92F); + level.playSound(null, player.getX(), player.getY(), player.getZ(), PortalGunPortalEntity.sound(side == PortalGunPortalEntity.PortalSide.BLUE ? "portal_gun_fire_blue" : "portal_gun_fire_orange", SoundEvents.BEACON_ACTIVATE), SoundSource.PLAYERS, 0.65F, side == PortalGunPortalEntity.PortalSide.BLUE ? 1.15F : 0.88F); + this.spawnShotTrail(level, player, player.getEyePosition().add(player.getLookAngle().scale(64.0D)), side); return true; } - private boolean tryShootMoon(ServerLevel level, Player player, ItemStack stack, PortalGunPortalEntity.PortalSide side) { - if (!level.dimensionType().hasSkyLight() || !level.isNight() || player.getXRot() > -40.0F) { - return false; - } - PortalGunPortalEntity counterpart = this.findCounterpart(level, player.getUUID(), side); - Vec3 spawnPos; - if (counterpart != null) { - spawnPos = counterpart.position(); - counterpart.discard(); - } else { - spawnPos = player.getEyePosition().add(player.getLookAngle().scale(20.0D)); - } + private boolean spawnBlackHole(ServerLevel level, Player player, ItemStack stack, PortalGunPortalEntity.PortalSide side, Vec3 spawnPos) { + this.setMoonSide(stack, null); PortalGunBlackHoleEntity blackHole = new PortalGunBlackHoleEntity(this.blackHoleType.get(), level); blackHole.configure(player.getUUID()); blackHole.moveTo(spawnPos.x, spawnPos.y, spawnPos.z, 0.0F, 0.0F); level.addFreshEntity(blackHole); - this.setLastSide(stack, side); - this.triggerFireAnimation(level, player, stack); - stack.hurtAndBreak(1, player, EquipmentSlot.MAINHAND); - player.awardStat(Stats.ITEM_USED.get(this)); - player.getCooldowns().addCooldown(this, 6); level.playSound(null, spawnPos.x, spawnPos.y, spawnPos.z, PortalGunPortalEntity.sound("portal_gun_black_hole", SoundEvents.WARDEN_SONIC_BOOM), SoundSource.PLAYERS, 0.6F, 0.6F); - this.spawnShotTrail(level, player, spawnPos, side); return true; } @@ -170,6 +234,17 @@ public class PortalGunItem extends Item implements GeoItem { } } + private void spawnProjectile(ServerLevel level, Player player, ItemStack stack, PortalGunPortalEntity.PortalSide side) { + UUID gunId = this.ensureGunId(stack); + PortalGunProjectileEntity projectile = new PortalGunProjectileEntity(this.projectileType.get(), player, level); + projectile.configure(side, gunId, stack); + Vec3 look = player.getLookAngle(); + Vec3 start = player.getEyePosition().add(look.scale(0.4D)); + projectile.setPos(start.x, start.y, start.z); + projectile.setDeltaMovement(look.scale(2.5D)); + level.addFreshEntity(projectile); + } + private PortalGunPortalEntity findCounterpart(ServerLevel level, UUID owner, PortalGunPortalEntity.PortalSide side) { PortalGunPortalEntity.PortalSide otherSide = side == PortalGunPortalEntity.PortalSide.BLUE ? PortalGunPortalEntity.PortalSide.ORANGE : PortalGunPortalEntity.PortalSide.BLUE; Optional otherId = PortalGunSavedData.getPortalId(level.getServer(), owner, otherSide); @@ -180,37 +255,90 @@ public class PortalGunItem extends Item implements GeoItem { return entity instanceof PortalGunPortalEntity portal ? portal : null; } + private PortalGunPortalEntity findPlacedPortal(ServerLevel level, UUID owner, PortalGunPortalEntity.PortalSide side) { + Optional portalId = PortalGunSavedData.getPortalId(level.getServer(), owner, side); + if (portalId.isEmpty()) { + return null; + } + Entity entity = level.getEntity(portalId.get()); + return entity instanceof PortalGunPortalEntity portal ? portal : null; + } + + private PortalGunPortalEntity.PortalSide otherSide(PortalGunPortalEntity.PortalSide side) { + return side == PortalGunPortalEntity.PortalSide.BLUE ? PortalGunPortalEntity.PortalSide.ORANGE : PortalGunPortalEntity.PortalSide.BLUE; + } + private BlockHitResult raycast(Level level, Player player) { Vec3 start = player.getEyePosition(); Vec3 end = start.add(player.getLookAngle().scale(64.0D)); return level.clip(new ClipContext(start, end, ClipContext.Block.COLLIDER, ClipContext.Fluid.NONE, player)); } - private Placement findPlacement(Level level, Player player, BlockHitResult hitResult) { + private PortalGunPlacement findPlacement(Level level, Player player, PortalGunPortalEntity.PortalSide side, BlockHitResult hitResult, PortalGunPortalEntity replacingPortal) { Direction facing = hitResult.getDirection(); - Direction heightAxis; - float yaw; - if (facing.getAxis() == Direction.Axis.Y) { - heightAxis = Direction.fromYRot(player.getYRot()); - yaw = heightAxis.toYRot(); - } else { - heightAxis = Direction.UP; - yaw = facing.toYRot(); - } + Direction heightAxis = this.resolveUpAxis(player, facing); + Direction widthAxis = PortalGunPlacement.widthAxis(facing, heightAxis); + float yaw = PortalGunPlacement.yawFor(facing, heightAxis); BlockPos hitPos = hitResult.getBlockPos(); - for (int offset = -1; offset <= 0; offset++) { - BlockPos supportOrigin = hitPos.relative(heightAxis, offset); - if (this.canPlaceAt(level, supportOrigin, facing, heightAxis)) { - Vec3 firstCellCenter = supportOrigin.relative(facing).getCenter(); - Vec3 halfStep = Vec3.atLowerCornerOf(heightAxis.getNormal()).scale(0.5D); - Vec3 center = firstCellCenter.add(halfStep); - return new Placement(center, facing, heightAxis, yaw, supportOrigin); + Vec3 hitLocation = hitResult.getLocation(); + UUID replacingPortalId = replacingPortal == null ? null : replacingPortal.getUUID(); + PortalGunPlacement bestPlacement = null; + double bestScore = Double.MAX_VALUE; + for (int widthOffset = -3; widthOffset <= 3; widthOffset++) { + for (int heightOffset = -4; heightOffset <= 3; heightOffset++) { + BlockPos supportOrigin = hitPos.relative(widthAxis, widthOffset).relative(heightAxis, heightOffset); + if (!this.canPlaceAt(level, player.getUUID(), side, supportOrigin, facing, heightAxis, replacingPortalId)) { + continue; + } + BlockPos masterPos = supportOrigin.relative(facing); + BlockPos basePos = masterPos.relative(heightAxis); + BlockPos[] portalSpots = new BlockPos[] {masterPos, basePos}; + Vec3 firstCellCenter = masterPos.getCenter(); + Vec3 center = firstCellCenter + .add(Vec3.atLowerCornerOf(heightAxis.getNormal()).scale(0.5D)) + .subtract(Vec3.atLowerCornerOf(facing.getNormal()).scale(0.5D)); + Vec3 local = hitLocation.subtract(center); + double widthLocal = local.dot(Vec3.atLowerCornerOf(widthAxis.getNormal())); + double heightLocal = local.dot(Vec3.atLowerCornerOf(heightAxis.getNormal())); + double depthLocal = local.dot(Vec3.atLowerCornerOf(facing.getNormal())); + double widthDistance = Math.max(0.0D, Math.abs(widthLocal) - 0.5D); + double heightDistance = Math.max(0.0D, Math.abs(heightLocal) - 1.0D); + double score = widthDistance * widthDistance + + heightDistance * heightDistance + + Math.abs(depthLocal) * 0.25D + + supportOrigin.distSqr(hitPos) * 0.12D + + Math.abs(widthOffset) * 0.04D + + Math.abs(heightOffset) * 0.025D + + (widthOffset != 0 || heightOffset != 0 ? 0.02D : 0.0D); + if (score < bestScore) { + bestScore = score; + Set compensatedSpots = new HashSet<>(); + if (widthOffset != 0 || heightOffset != 0) { + compensatedSpots.add(hitPos.relative(facing)); + compensatedSpots.add(masterPos); + compensatedSpots.add(basePos); + compensatedSpots.add(supportOrigin); + compensatedSpots.add(basePos.relative(facing.getOpposite())); + } + bestPlacement = new PortalGunPlacement(center, facing, heightAxis, widthAxis, yaw, supportOrigin, masterPos, basePos, portalSpots, compensatedSpots); + } } } - return null; + return bestPlacement; } - private boolean canPlaceAt(Level level, BlockPos supportOrigin, Direction facing, Direction heightAxis) { + private Direction resolveUpAxis(Player player, Direction facing) { + if (facing.getAxis() != Direction.Axis.Y) { + return Direction.UP; + } + Direction horizontal = player.getDirection(); + if (horizontal.getAxis() == Direction.Axis.Y) { + return Direction.NORTH; + } + return horizontal.getOpposite(); + } + + private boolean canPlaceAt(Level level, UUID ownerId, PortalGunPortalEntity.PortalSide side, BlockPos supportOrigin, Direction facing, Direction heightAxis, UUID replacingPortalId) { for (int h = 0; h < 2; h++) { BlockPos supportPos = supportOrigin.relative(heightAxis, h); BlockPos airPos = supportPos.relative(facing); @@ -220,7 +348,7 @@ public class PortalGunItem extends Item implements GeoItem { if (!supportState.isFaceSturdy(level, supportPos, facing)) { return false; } - if (!airState.isAir() && !airState.canBeReplaced()) { + if (!this.isPortalSpaceAvailable(level, airPos, airState, ownerId, side, replacingPortalId)) { return false; } if (!fluidState.isEmpty()) { @@ -230,6 +358,53 @@ public class PortalGunItem extends Item implements GeoItem { return true; } + private boolean isPortalSpaceAvailable(Level level, BlockPos pos, BlockState state, UUID ownerId, PortalGunPortalEntity.PortalSide side, UUID replacingPortalId) { + if (state.isAir() || state.canBeReplaced()) { + return true; + } + BlockEntity blockEntity = level.getBlockEntity(pos); + if (blockEntity instanceof PortalGunPortalMasterBlockEntity master) { + return ownerId != null + && ownerId.equals(master.getOwnerId()) + && master.getSide() == side + && (replacingPortalId == null || replacingPortalId.equals(master.getPortalId())); + } + if (blockEntity instanceof PortalGunPortalBaseBlockEntity base) { + return ownerId != null + && ownerId.equals(base.getOwnerId()) + && base.getSide() == side + && (replacingPortalId == null || replacingPortalId.equals(base.getPortalId())); + } + return false; + } + + private boolean placePortalBlocks(ServerLevel level, UUID ownerId, PortalGunPortalEntity.PortalSide side, PortalGunPortalEntity portal, PortalGunPlacement placement) { + if (!level.setBlock(placement.masterPos(), this.portalMasterBlock.get().defaultBlockState(), 3)) { + return false; + } + if (!level.setBlock(placement.basePos(), this.portalBaseBlock.get().defaultBlockState(), 3)) { + level.setBlock(placement.masterPos(), Blocks.AIR.defaultBlockState(), 3); + return false; + } + if (!(level.getBlockEntity(placement.masterPos()) instanceof PortalGunPortalMasterBlockEntity master) || !(level.getBlockEntity(placement.basePos()) instanceof PortalGunPortalBaseBlockEntity base)) { + level.setBlock(placement.masterPos(), Blocks.AIR.defaultBlockState(), 3); + level.setBlock(placement.basePos(), Blocks.AIR.defaultBlockState(), 3); + return false; + } + master.configure(ownerId, portal.getUUID(), side, placement.facing(), placement.upAxis(), placement.basePos(), placement.portalSpots(), placement.compensatedSpots(), level.getServer().getTickCount()); + base.configure(ownerId, portal.getUUID(), side, placement.masterPos()); + return true; + } + + private void syncPortalBlocks(ServerLevel level, PortalGunPortalEntity portal) { + if (level.getBlockEntity(portal.getMasterPos()) instanceof PortalGunPortalMasterBlockEntity master) { + master.updatePair(portal.getLinkedPortalId(), portal.getPairTime()); + } + if (level.getBlockEntity(portal.getBasePos()) instanceof PortalGunPortalBaseBlockEntity base) { + base.updatePair(portal.getLinkedPortalId(), portal.getPairTime()); + } + } + private void setLastSide(ItemStack stack, PortalGunPortalEntity.PortalSide side) { if (side == null) { net.minecraft.world.item.component.CustomData.update(DataComponents.CUSTOM_DATA, stack, tag -> tag.remove(LAST_SIDE_TAG)); @@ -238,6 +413,14 @@ public class PortalGunItem extends Item implements GeoItem { net.minecraft.world.item.component.CustomData.update(DataComponents.CUSTOM_DATA, stack, tag -> tag.putString(LAST_SIDE_TAG, side.name())); } + private void setMoonSide(ItemStack stack, PortalGunPortalEntity.PortalSide side) { + if (side == null) { + net.minecraft.world.item.component.CustomData.update(DataComponents.CUSTOM_DATA, stack, tag -> tag.remove(MOON_SIDE_TAG)); + return; + } + net.minecraft.world.item.component.CustomData.update(DataComponents.CUSTOM_DATA, stack, tag -> tag.putString(MOON_SIDE_TAG, side.name())); + } + private PortalGunPortalEntity.PortalSide getLastSide(ItemStack stack) { net.minecraft.world.item.component.CustomData customData = stack.get(DataComponents.CUSTOM_DATA); if (customData == null) { @@ -253,6 +436,33 @@ public class PortalGunItem extends Item implements GeoItem { return null; } + private boolean isMoonSideArmed(ItemStack stack, PortalGunPortalEntity.PortalSide side) { + net.minecraft.world.item.component.CustomData customData = stack.get(DataComponents.CUSTOM_DATA); + if (customData == null) { + return false; + } + String sideName = customData.copyTag().getString(MOON_SIDE_TAG); + return side.name().equals(sideName); + } + + private UUID ensureGunId(ItemStack stack) { + net.minecraft.world.item.component.CustomData customData = stack.get(DataComponents.CUSTOM_DATA); + if (customData != null && customData.copyTag().hasUUID(GUN_ID_TAG)) { + return customData.copyTag().getUUID(GUN_ID_TAG); + } + UUID gunId = UUID.randomUUID(); + net.minecraft.world.item.component.CustomData.update(DataComponents.CUSTOM_DATA, stack, tag -> tag.putUUID(GUN_ID_TAG, gunId)); + return gunId; + } + + private boolean matchesGunId(ItemStack stack, UUID gunId) { + if (stack.isEmpty() || stack.getItem() != this) { + return false; + } + net.minecraft.world.item.component.CustomData customData = stack.get(DataComponents.CUSTOM_DATA); + return customData != null && customData.copyTag().hasUUID(GUN_ID_TAG) && gunId.equals(customData.copyTag().getUUID(GUN_ID_TAG)); + } + private void triggerFireAnimation(ServerLevel level, LivingEntity livingEntity, ItemStack stack) { long animatableId = GeoItem.getOrAssignId(stack, level); triggerAnim(livingEntity, animatableId, FIRE_CONTROLLER, "fire"); @@ -302,6 +512,4 @@ public class PortalGunItem extends Item implements GeoItem { }); } - private record Placement(Vec3 center, Direction facing, Direction upAxis, float yaw, BlockPos supportOrigin) { - } } diff --git a/common-1.21.1/src/main/java/com/craisinlord/antarchy/content/item/RoyalBoatOnlyItem.java b/common-1.21.1/src/main/java/com/craisinlord/antarchy/content/item/RoyalBoatOnlyItem.java new file mode 100644 index 00000000..2ad9ae00 --- /dev/null +++ b/common-1.21.1/src/main/java/com/craisinlord/antarchy/content/item/RoyalBoatOnlyItem.java @@ -0,0 +1,31 @@ +package com.craisinlord.antarchy.content.item; + +import com.craisinlord.antarchy.content.entity.RoyalBoatEntity; +import net.minecraft.world.entity.EntityType; +import net.minecraft.world.entity.player.Player; +import net.minecraft.world.entity.vehicle.Boat; +import net.minecraft.world.item.ItemStack; +import net.minecraft.world.level.Level; +import net.minecraft.world.phys.HitResult; +import net.minecraft.world.phys.Vec3; + +public class RoyalBoatOnlyItem extends OuranwoodBoatItem { + private final EntityType entityType; + + public RoyalBoatOnlyItem(EntityType entityType, Properties properties) { + super(properties); + this.entityType = entityType; + } + + @Override + protected Boat createBoat(Level level, HitResult hitResult, ItemStack stack, Player player) { + Vec3 pos = hitResult.getLocation(); + RoyalBoatEntity boat = new RoyalBoatEntity(this.entityType, level); + boat.setPos(pos.x, pos.y, pos.z); + boat.xo = pos.x; + boat.yo = pos.y; + boat.zo = pos.z; + this.applyDefaultStackConfig(level, stack, player, boat); + return boat; + } +} diff --git a/common-1.21.1/src/main/java/com/craisinlord/antarchy/content/item/RoyalChestBoatItem.java b/common-1.21.1/src/main/java/com/craisinlord/antarchy/content/item/RoyalChestBoatItem.java new file mode 100644 index 00000000..e22aac82 --- /dev/null +++ b/common-1.21.1/src/main/java/com/craisinlord/antarchy/content/item/RoyalChestBoatItem.java @@ -0,0 +1,31 @@ +package com.craisinlord.antarchy.content.item; + +import com.craisinlord.antarchy.content.entity.RoyalChestBoatEntity; +import net.minecraft.world.entity.EntityType; +import net.minecraft.world.entity.player.Player; +import net.minecraft.world.entity.vehicle.Boat; +import net.minecraft.world.item.ItemStack; +import net.minecraft.world.level.Level; +import net.minecraft.world.phys.HitResult; +import net.minecraft.world.phys.Vec3; + +public class RoyalChestBoatItem extends OuranwoodBoatItem { + private final EntityType entityType; + + public RoyalChestBoatItem(EntityType entityType, Properties properties) { + super(properties); + this.entityType = entityType; + } + + @Override + protected Boat createBoat(Level level, HitResult hitResult, ItemStack stack, Player player) { + Vec3 pos = hitResult.getLocation(); + RoyalChestBoatEntity boat = new RoyalChestBoatEntity(this.entityType, level); + boat.setPos(pos.x, pos.y, pos.z); + boat.xo = pos.x; + boat.yo = pos.y; + boat.zo = pos.z; + this.applyDefaultStackConfig(level, stack, player, boat); + return boat; + } +} diff --git a/common-1.21.1/src/main/java/com/craisinlord/antarchy/content/item/TruffaloBoatOnlyItem.java b/common-1.21.1/src/main/java/com/craisinlord/antarchy/content/item/TruffaloBoatOnlyItem.java new file mode 100644 index 00000000..985a1b1b --- /dev/null +++ b/common-1.21.1/src/main/java/com/craisinlord/antarchy/content/item/TruffaloBoatOnlyItem.java @@ -0,0 +1,31 @@ +package com.craisinlord.antarchy.content.item; + +import com.craisinlord.antarchy.content.entity.TruffaloBoatEntity; +import net.minecraft.world.entity.EntityType; +import net.minecraft.world.entity.player.Player; +import net.minecraft.world.entity.vehicle.Boat; +import net.minecraft.world.item.ItemStack; +import net.minecraft.world.level.Level; +import net.minecraft.world.phys.HitResult; +import net.minecraft.world.phys.Vec3; + +public class TruffaloBoatOnlyItem extends OuranwoodBoatItem { + private final EntityType entityType; + + public TruffaloBoatOnlyItem(EntityType entityType, Properties properties) { + super(properties); + this.entityType = entityType; + } + + @Override + protected Boat createBoat(Level level, HitResult hitResult, ItemStack stack, Player player) { + Vec3 pos = hitResult.getLocation(); + TruffaloBoatEntity boat = new TruffaloBoatEntity(this.entityType, level); + boat.setPos(pos.x, pos.y, pos.z); + boat.xo = pos.x; + boat.yo = pos.y; + boat.zo = pos.z; + this.applyDefaultStackConfig(level, stack, player, boat); + return boat; + } +} diff --git a/common-1.21.1/src/main/java/com/craisinlord/antarchy/content/item/TruffaloChestBoatItem.java b/common-1.21.1/src/main/java/com/craisinlord/antarchy/content/item/TruffaloChestBoatItem.java new file mode 100644 index 00000000..6ddce3c4 --- /dev/null +++ b/common-1.21.1/src/main/java/com/craisinlord/antarchy/content/item/TruffaloChestBoatItem.java @@ -0,0 +1,31 @@ +package com.craisinlord.antarchy.content.item; + +import com.craisinlord.antarchy.content.entity.TruffaloChestBoatEntity; +import net.minecraft.world.entity.EntityType; +import net.minecraft.world.entity.player.Player; +import net.minecraft.world.entity.vehicle.Boat; +import net.minecraft.world.item.ItemStack; +import net.minecraft.world.level.Level; +import net.minecraft.world.phys.HitResult; +import net.minecraft.world.phys.Vec3; + +public class TruffaloChestBoatItem extends OuranwoodBoatItem { + private final EntityType entityType; + + public TruffaloChestBoatItem(EntityType entityType, Properties properties) { + super(properties); + this.entityType = entityType; + } + + @Override + protected Boat createBoat(Level level, HitResult hitResult, ItemStack stack, Player player) { + Vec3 pos = hitResult.getLocation(); + TruffaloChestBoatEntity boat = new TruffaloChestBoatEntity(this.entityType, level); + boat.setPos(pos.x, pos.y, pos.z); + boat.xo = pos.x; + boat.yo = pos.y; + boat.zo = pos.z; + this.applyDefaultStackConfig(level, stack, player, boat); + return boat; + } +} diff --git a/common-1.21.1/src/main/java/com/craisinlord/antarchy/content/item/WormHookItem.java b/common-1.21.1/src/main/java/com/craisinlord/antarchy/content/item/WormHookItem.java index ebae707b..11a7a66d 100644 --- a/common-1.21.1/src/main/java/com/craisinlord/antarchy/content/item/WormHookItem.java +++ b/common-1.21.1/src/main/java/com/craisinlord/antarchy/content/item/WormHookItem.java @@ -36,6 +36,7 @@ public final class WormHookItem extends Item { WormHookProjectileEntity hook = new WormHookProjectileEntity(AntarchyObjects.WORM_HOOK_PROJECTILE.get(), player, level); hook.shootFromRotation(player, player.getXRot(), player.getYRot(), 0.0F, 2.2F, 0.5F); level.addFreshEntity(hook); + WormHookTetherManager.launch(serverPlayer, hook); stack.hurtAndBreak(1, serverPlayer, LivingEntity.getSlotForHand(hand)); level.playSound(null, player.getX(), player.getY(), player.getZ(), SoundEvents.FISHING_BOBBER_THROW, SoundSource.PLAYERS, 0.7F, 0.9F); diff --git a/common-1.21.1/src/main/java/com/craisinlord/antarchy/content/item/WormHookTetherManager.java b/common-1.21.1/src/main/java/com/craisinlord/antarchy/content/item/WormHookTetherManager.java index c0bb2f67..a77a701d 100644 --- a/common-1.21.1/src/main/java/com/craisinlord/antarchy/content/item/WormHookTetherManager.java +++ b/common-1.21.1/src/main/java/com/craisinlord/antarchy/content/item/WormHookTetherManager.java @@ -17,12 +17,16 @@ import net.minecraft.world.phys.Vec3; * a rope anchored to a stuck {@link WormHookProjectileEntity}, wrapping the rope around block * corners via {@link WormHookRope} so the swing radius shortens realistically when the player * swings around an obstacle. + * + * A tether entry is created the moment the hook is thrown (so the rope can be rendered following + * the flying projectile) and only gains real swing physics once the hook sticks into a block. */ public final class WormHookTetherManager { - private static final double DEFAULT_MAX_LEN = 24.0D; private static final double MIN_LEN = 2.0D; private static final double REEL_SPEED = 0.12D; + private static final double REEL_PULL_STRENGTH = 0.16D; private static final double BREAK_RANGE_MULTIPLIER = 1.5D; + private static final double DEFAULT_BREAK_RANGE = 48.0D; private static final double SNAP_BUFFER = 4.0D; private static final double PULL_CORRECTION = 0.35D; @@ -44,18 +48,28 @@ public final class WormHookTetherManager { return hook instanceof WormHookProjectileEntity wormHook ? wormHook : null; } - public static boolean attach(ServerPlayer player, WormHookProjectileEntity hook) { + /** Registers the hook the moment it's thrown, purely so the rope can be rendered following it. */ + public static void launch(ServerPlayer player, WormHookProjectileEntity hook) { clear(player); + TETHERS.put(player.getUUID(), new TetherState(hook.getId())); + WormHookTetherSync.send(player, hook.getId()); + } - double dist = player.getEyePosition().distanceTo(hook.position()); - if (dist < MIN_LEN) { + /** Called once the hook sticks into a block; turns the cosmetic tether into real swing physics. */ + public static boolean attach(ServerPlayer player, WormHookProjectileEntity hook) { + TetherState state = TETHERS.get(player.getUUID()); + if (state == null || state.hookEntityId != hook.getId()) { return false; } - TetherState state = new TetherState(hook.getId(), Math.max(DEFAULT_MAX_LEN, dist)); + double dist = player.getEyePosition().distanceTo(hook.position()); + if (dist < MIN_LEN) { + clear(player); + return false; + } + + state.maxLen = Math.max(MIN_LEN, dist); state.rope = new WormHookRope(hook.position(), player.getEyePosition()); - TETHERS.put(player.getUUID(), state); - WormHookTetherSync.send(player, hook.getId()); return true; } @@ -90,7 +104,13 @@ public final class WormHookTetherManager { return; } - if (player.isShiftKeyDown()) { + if (state.rope == null) { + // Hook is still flying; nothing to simulate yet, just tracking it for the render sync. + return; + } + + boolean reeling = player.isShiftKeyDown(); + if (reeling) { state.maxLen = Math.max(MIN_LEN, state.maxLen - REEL_SPEED); } @@ -109,6 +129,19 @@ public final class WormHookTetherManager { return; } + Vec3 towardPivot = toPlayer.scale(1.0D / dist); + + // Sneaking actively winds the player in toward the anchor, not just shortening + // the max length (which alone has no effect until the rope goes taut). + if (reeling && dist > MIN_LEN) { + Vec3 pull = towardPivot.scale(-REEL_PULL_STRENGTH); + Vec3 reelMotion = player.getDeltaMovement().add(pull); + reelMotion = new Vec3(reelMotion.x, Mth.clamp(reelMotion.y, -0.6D, 0.6D), reelMotion.z); + player.setDeltaMovement(reelMotion); + player.hurtMarked = true; + player.fallDistance = 0; + } + if (dist <= remaining) { return; } @@ -121,14 +154,13 @@ public final class WormHookTetherManager { return; } - Vec3 direction = toPlayer.scale(1.0D / dist); Vec3 motion = player.getDeltaMovement(); - double outward = motion.dot(direction); + double outward = motion.dot(towardPivot); if (outward > 0) { - motion = motion.subtract(direction.scale(outward)); + motion = motion.subtract(towardPivot.scale(outward)); } - Vec3 correction = direction.scale(-overshoot * PULL_CORRECTION); + Vec3 correction = towardPivot.scale(-overshoot * PULL_CORRECTION); Vec3 newMotion = motion.add(correction); newMotion = new Vec3(newMotion.x, Mth.clamp(newMotion.y, -1.0D, 1.0D), newMotion.z); player.setDeltaMovement(newMotion); @@ -137,12 +169,11 @@ public final class WormHookTetherManager { } private static boolean isValid(ServerPlayer player, WormHookProjectileEntity hook, TetherState state) { - double breakRange = state.maxLen * BREAK_RANGE_MULTIPLIER; + double breakRange = (state.rope == null ? DEFAULT_BREAK_RANGE : state.maxLen) * BREAK_RANGE_MULTIPLIER; return player.isAlive() && hook != null && hook.isAlive() && !hook.isRemoved() - && hook.isStuck() && player.level() == hook.level() && isHoldingHook(player) && player.distanceToSqr(hook) <= breakRange * breakRange; @@ -158,9 +189,8 @@ public final class WormHookTetherManager { private double maxLen; private WormHookRope rope; - private TetherState(int hookEntityId, double maxLen) { + private TetherState(int hookEntityId) { this.hookEntityId = hookEntityId; - this.maxLen = maxLen; } } } diff --git a/common-1.21.1/src/main/java/com/craisinlord/antarchy/content/portalgun/PortalGunCollisionHelper.java b/common-1.21.1/src/main/java/com/craisinlord/antarchy/content/portalgun/PortalGunCollisionHelper.java new file mode 100644 index 00000000..b826c81f --- /dev/null +++ b/common-1.21.1/src/main/java/com/craisinlord/antarchy/content/portalgun/PortalGunCollisionHelper.java @@ -0,0 +1,203 @@ +package com.craisinlord.antarchy.content.portalgun; + +import java.util.List; +import net.minecraft.world.entity.Entity; +import net.minecraft.world.phys.AABB; +import net.minecraft.world.phys.Vec3; +import net.minecraft.world.phys.shapes.Shapes; +import net.minecraft.world.phys.shapes.VoxelShape; + +public final class PortalGunCollisionHelper { + private static final double SEARCH_PADDING = 1.5D; + private static final double PLANE_TOLERANCE = 0.06D; + private static final double EDGE_PADDING = 0.2D; + private static final double DEPTH_PADDING = 0.45D; + private static final double BORDER_TOLERANCE = 0.02D; + private static final double BORDER_THICKNESS = 0.0125D; + + private PortalGunCollisionHelper() { + } + + public static Vec3 resolveCollision(Entity entity, AABB startBox, Vec3 movement, Vec3 collided) { + if (movement.lengthSqr() <= 1.0E-7D) { + return collided; + } + AABB pathBox = startBox.expandTowards(movement).inflate(SEARCH_PADDING); + List nearby = entity.level().getEntities(entity, pathBox, candidate -> candidate instanceof PortalGunPortalEntity && candidate.isAlive()); + if (nearby.isEmpty()) { + return collided; + } + Vec3 adjusted = collided; + for (Entity candidate : nearby) { + PortalGunPortalEntity portal = (PortalGunPortalEntity) candidate; + Vec3 candidateAdjusted = resolveCollisionAgainstPortal(entity, startBox, movement, adjusted, portal); + if (candidateAdjusted.distanceToSqr(movement) < adjusted.distanceToSqr(movement)) { + adjusted = candidateAdjusted; + } + } + return adjusted; + } + + private static Vec3 resolveCollisionAgainstPortal(Entity entity, AABB startBox, Vec3 movement, Vec3 collided, PortalGunPortalEntity portal) { + PortalGunWorldPortalShape shape = portal.getWorldPortalShape(); + Vec3 normal = portal.getNormalVec().normalize(); + double desiredNormal = movement.dot(normal); + double collidedNormal = collided.dot(normal); + if (desiredNormal >= -1.0E-5D || desiredNormal >= collidedNormal - 1.0E-5D) { + return collided; + } + if (!canUsePortalPassThrough(entity, startBox, movement, portal, shape)) { + return collided; + } + double restoreAmount = desiredNormal - collidedNormal; + Vec3 adjusted = collided.add(normal.scale(restoreAmount)); + return applyBorderCollision(entity, startBox, adjusted, portal); + } + + private static boolean canUsePortalPassThrough(Entity entity, AABB startBox, Vec3 movement, PortalGunPortalEntity portal, PortalGunWorldPortalShape shape) { + AABB endBox = startBox.move(movement); + if (!portal.getPortalInsides(entity).intersects(startBox) + && !portal.getPortalInsides(entity).intersects(endBox) + && !intersectsPortalWindow(startBox, shape) + && !intersectsPortalWindow(endBox, shape) + && !segmentIntersectsPortalWindow(shape, startBox, endBox)) { + return false; + } + if (crossesPortal(shape, entity, startBox, movement)) { + return true; + } + Vec3 startCenter = startBox.getCenter(); + Vec3 endCenter = endBox.getCenter(); + PortalGunWorldPortalShape.PortalLocalCoords startCoords = shape.localCoords(startCenter); + PortalGunWorldPortalShape.PortalLocalCoords endCoords = shape.localCoords(endCenter); + return startCoords.depth() < 0.0D + && endCoords.depth() <= PLANE_TOLERANCE + && Math.abs(endCoords.horizontal()) <= shape.halfWidth() + EDGE_PADDING + && Math.abs(endCoords.vertical()) <= shape.halfHeight() + EDGE_PADDING + && projectedWindowOverlap(shape, startBox, endBox); + } + + private static boolean intersectsPortalWindow(AABB box, PortalGunWorldPortalShape shape) { + for (Vec3 corner : corners(box)) { + PortalGunWorldPortalShape.PortalLocalCoords coords = shape.localCoords(corner); + if (Math.abs(coords.horizontal()) <= shape.halfWidth() + EDGE_PADDING + && Math.abs(coords.vertical()) <= shape.halfHeight() + EDGE_PADDING + && coords.depth() >= -DEPTH_PADDING + && coords.depth() <= PLANE_TOLERANCE) { + return true; + } + } + return false; + } + + private static boolean segmentIntersectsPortalWindow(PortalGunWorldPortalShape shape, AABB startBox, AABB endBox) { + for (Vec3 startCorner : corners(startBox)) { + Vec3 endCorner = matchSample(startCorner, startBox, endBox); + if (shape.crosses(startCorner, endCorner)) { + return true; + } + } + return false; + } + + private static boolean projectedWindowOverlap(PortalGunWorldPortalShape shape, AABB startBox, AABB endBox) { + double minHorizontal = Double.POSITIVE_INFINITY; + double maxHorizontal = Double.NEGATIVE_INFINITY; + double minVertical = Double.POSITIVE_INFINITY; + double maxVertical = Double.NEGATIVE_INFINITY; + for (Vec3 corner : corners(startBox)) { + PortalGunWorldPortalShape.PortalLocalCoords coords = shape.localCoords(corner); + minHorizontal = Math.min(minHorizontal, coords.horizontal()); + maxHorizontal = Math.max(maxHorizontal, coords.horizontal()); + minVertical = Math.min(minVertical, coords.vertical()); + maxVertical = Math.max(maxVertical, coords.vertical()); + } + for (Vec3 corner : corners(endBox)) { + PortalGunWorldPortalShape.PortalLocalCoords coords = shape.localCoords(corner); + minHorizontal = Math.min(minHorizontal, coords.horizontal()); + maxHorizontal = Math.max(maxHorizontal, coords.horizontal()); + minVertical = Math.min(minVertical, coords.vertical()); + maxVertical = Math.max(maxVertical, coords.vertical()); + } + return maxHorizontal >= -shape.halfWidth() - BORDER_TOLERANCE + && minHorizontal <= shape.halfWidth() + BORDER_TOLERANCE + && maxVertical >= -shape.halfHeight() - BORDER_TOLERANCE + && minVertical <= shape.halfHeight() + BORDER_TOLERANCE; + } + + private static Vec3 applyBorderCollision(Entity entity, AABB startBox, Vec3 movement, PortalGunPortalEntity portal) { + if (movement.lengthSqr() <= 1.0E-7D) { + return movement; + } + AABB endBox = startBox.move(movement); + if (!portal.getPortalInsides(entity).intersects(startBox) + && !portal.getPortalInsides(entity).intersects(endBox) + && !intersectsPortalWindow(startBox, portal.getWorldPortalShape()) + && !intersectsPortalWindow(endBox, portal.getWorldPortalShape())) { + return movement; + } + List shapes = portal.getWorldPortalShape().getCollisionBoundaries(BORDER_THICKNESS).stream() + .map(Shapes::create) + .toList(); + Vec3 collided = Entity.collideBoundingBox(entity, movement, startBox, entity.level(), shapes); + return collided.distanceToSqr(movement) < 1.0E-7D ? movement : collided; + } + + private static boolean crossesPortal(PortalGunWorldPortalShape shape, Entity entity, AABB startBox, Vec3 movement) { + AABB endBox = startBox.move(movement); + for (Vec3 startSample : portalSamples(entity, startBox, true)) { + Vec3 endSample = matchSample(startSample, startBox, endBox); + if (shape.crosses(startSample, endSample)) { + return true; + } + } + return false; + } + + private static List portalSamples(Entity entity, AABB box, boolean includeEye) { + Vec3 center = new Vec3((box.minX + box.maxX) * 0.5D, (box.minY + box.maxY) * 0.5D, (box.minZ + box.maxZ) * 0.5D); + Vec3 topCenter = new Vec3(center.x, box.maxY, center.z); + Vec3 bottomCenter = new Vec3(center.x, box.minY, center.z); + if (includeEye) { + Vec3 eye = new Vec3(entity.getX(), entity.getY() + entity.getEyeHeight(), entity.getZ()); + return List.of(center, eye, topCenter, bottomCenter); + } + return List.of(center, topCenter, bottomCenter); + } + + private static Vec3 matchSample(Vec3 startSample, AABB startBox, AABB endBox) { + double xLerp = axisRatio(startSample.x, startBox.minX, startBox.maxX); + double yLerp = axisRatio(startSample.y, startBox.minY, startBox.maxY); + double zLerp = axisRatio(startSample.z, startBox.minZ, startBox.maxZ); + return new Vec3( + lerp(endBox.minX, endBox.maxX, xLerp), + lerp(endBox.minY, endBox.maxY, yLerp), + lerp(endBox.minZ, endBox.maxZ, zLerp) + ); + } + + private static double axisRatio(double value, double min, double max) { + double size = max - min; + if (Math.abs(size) < 1.0E-6D) { + return 0.5D; + } + return (value - min) / size; + } + + private static double lerp(double min, double max, double delta) { + return min + (max - min) * delta; + } + + private static Vec3[] corners(AABB box) { + return new Vec3[] { + new Vec3(box.minX, box.minY, box.minZ), + new Vec3(box.minX, box.minY, box.maxZ), + new Vec3(box.minX, box.maxY, box.minZ), + new Vec3(box.minX, box.maxY, box.maxZ), + new Vec3(box.maxX, box.minY, box.minZ), + new Vec3(box.maxX, box.minY, box.maxZ), + new Vec3(box.maxX, box.maxY, box.minZ), + new Vec3(box.maxX, box.maxY, box.maxZ) + }; + } +} diff --git a/common-1.21.1/src/main/java/com/craisinlord/antarchy/content/portalgun/PortalGunPlacement.java b/common-1.21.1/src/main/java/com/craisinlord/antarchy/content/portalgun/PortalGunPlacement.java new file mode 100644 index 00000000..944f4291 --- /dev/null +++ b/common-1.21.1/src/main/java/com/craisinlord/antarchy/content/portalgun/PortalGunPlacement.java @@ -0,0 +1,50 @@ +package com.craisinlord.antarchy.content.portalgun; + +import java.util.Set; +import net.minecraft.core.BlockPos; +import net.minecraft.core.Direction; +import net.minecraft.world.phys.Vec3; + +public record PortalGunPlacement( + Vec3 center, + Direction facing, + Direction upAxis, + Direction widthAxis, + float yaw, + BlockPos supportOrigin, + BlockPos masterPos, + BlockPos basePos, + BlockPos[] portalSpots, + Set compensatedSpots +) { + public static PortalGunPlacement fromStored(Direction facing, Direction upAxis, BlockPos masterPos, BlockPos basePos, Set compensatedSpots) { + Direction widthAxis = widthAxis(facing, upAxis); + BlockPos supportOrigin = masterPos.relative(facing.getOpposite()); + Vec3 center = masterPos.getCenter() + .add(Vec3.atLowerCornerOf(upAxis.getNormal()).scale(0.5D)) + .subtract(Vec3.atLowerCornerOf(facing.getNormal()).scale(0.5D)); + return new PortalGunPlacement( + center, + facing, + upAxis, + widthAxis, + yawFor(facing, upAxis), + supportOrigin, + masterPos, + basePos, + new BlockPos[] {masterPos, basePos}, + compensatedSpots + ); + } + + public static Direction widthAxis(Direction facing, Direction upAxis) { + Vec3 normal = Vec3.atLowerCornerOf(facing.getNormal()); + Vec3 up = Vec3.atLowerCornerOf(upAxis.getNormal()); + Vec3 width = normal.cross(up); + return Direction.getNearest(width.x, width.y, width.z); + } + + public static float yawFor(Direction facing, Direction upAxis) { + return facing.getAxis() == Direction.Axis.Y ? upAxis.toYRot() : facing.toYRot(); + } +} diff --git a/common-1.21.1/src/main/java/com/craisinlord/antarchy/content/portalgun/PortalGunPortalEntity.java b/common-1.21.1/src/main/java/com/craisinlord/antarchy/content/portalgun/PortalGunPortalEntity.java index 785004a9..655693f9 100644 --- a/common-1.21.1/src/main/java/com/craisinlord/antarchy/content/portalgun/PortalGunPortalEntity.java +++ b/common-1.21.1/src/main/java/com/craisinlord/antarchy/content/portalgun/PortalGunPortalEntity.java @@ -1,12 +1,22 @@ package com.craisinlord.antarchy.content.portalgun; import com.craisinlord.antarchy.Antarchy; +import com.craisinlord.antarchy.content.block.entity.PortalGunPortalBaseBlockEntity; +import com.craisinlord.antarchy.content.block.entity.PortalGunPortalMasterBlockEntity; +import com.craisinlord.antarchy.mixins.AbstractArrowAccessor; +import java.util.HashMap; +import java.util.HashSet; +import java.util.Iterator; import java.util.List; +import java.util.Map; +import java.util.Set; import java.util.UUID; import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; import net.minecraft.core.registries.BuiltInRegistries; import net.minecraft.nbt.CompoundTag; +import net.minecraft.nbt.ListTag; +import net.minecraft.nbt.Tag; import net.minecraft.network.syncher.EntityDataAccessor; import net.minecraft.network.syncher.EntityDataSerializers; import net.minecraft.network.syncher.SynchedEntityData; @@ -15,16 +25,18 @@ import net.minecraft.server.level.ServerLevel; import net.minecraft.server.level.ServerPlayer; import net.minecraft.sounds.SoundEvent; import net.minecraft.sounds.SoundEvents; -import net.minecraft.sounds.SoundSource; import net.minecraft.world.damagesource.DamageSource; import net.minecraft.world.entity.Entity; import net.minecraft.world.entity.EntityType; import net.minecraft.world.entity.LivingEntity; +import net.minecraft.world.entity.player.Player; +import net.minecraft.world.entity.projectile.AbstractArrow; import net.minecraft.world.level.Level; import net.minecraft.world.level.block.state.BlockState; -import net.minecraft.world.level.material.FluidState; +import net.minecraft.world.level.block.entity.BlockEntity; import net.minecraft.world.phys.AABB; import net.minecraft.world.phys.Vec3; +import org.joml.Quaternionf; import software.bernie.geckolib.animatable.GeoEntity; import software.bernie.geckolib.animatable.instance.AnimatableInstanceCache; import software.bernie.geckolib.animation.AnimatableManager; @@ -51,15 +63,21 @@ public class PortalGunPortalEntity extends Entity implements GeoEntity { private static final int CLOSE_TICKS = 10; private static final int MAX_LIFETIME_TICKS = 20 * 60 * 20; private static final int TELEPORT_COOLDOWN_TICKS = 15; + private static final double PLAYER_PORTAL_INSIDE_SHIFT = 0.05D; private static final double HALF_WIDTH = 0.5D; private static final double HALF_HEIGHT = 1.0D; private static final double HALF_DEPTH = 0.35D; private final AnimatableInstanceCache geoCache = GeckoLibUtil.createInstanceCache(this); + private final Map teleportCooldowns = new HashMap<>(); private UUID ownerId; private UUID linkedPortalId; private int ageTicks; + private int pairTime; private BlockPos supportOrigin = BlockPos.ZERO; - private static final java.util.Map TELEPORT_COOLDOWNS = new java.util.HashMap<>(); + private BlockPos masterPos = BlockPos.ZERO; + private BlockPos basePos = BlockPos.ZERO; + private BlockPos[] portalSpots = new BlockPos[] {BlockPos.ZERO, BlockPos.ZERO}; + private Set compensatedSpots = Set.of(); public PortalGunPortalEntity(EntityType entityType, Level level) { super(entityType, level); @@ -76,16 +94,26 @@ public class PortalGunPortalEntity extends Entity implements GeoEntity { builder.define(CLOSING, false); } - public void configure(UUID ownerId, PortalSide side, Direction facing, Direction upAxis, BlockPos supportOrigin) { + public void configure(UUID ownerId, PortalSide side, PortalGunPlacement placement) { this.ownerId = ownerId; this.entityData.set(SIDE, side.ordinal()); - this.entityData.set(FACING, facing.get3DDataValue()); - this.entityData.set(UP_AXIS, upAxis.get3DDataValue()); - this.supportOrigin = supportOrigin.immutable(); + this.entityData.set(FACING, placement.facing().get3DDataValue()); + this.entityData.set(UP_AXIS, placement.upAxis().get3DDataValue()); + this.supportOrigin = placement.supportOrigin().immutable(); + this.masterPos = placement.masterPos().immutable(); + this.basePos = placement.basePos().immutable(); + this.portalSpots = new BlockPos[] {placement.portalSpots()[0].immutable(), placement.portalSpots()[1].immutable()}; + this.compensatedSpots = Set.copyOf(placement.compensatedSpots()); } public void linkTo(PortalGunPortalEntity other) { this.linkedPortalId = other.getUUID(); + this.pairTime = (int) this.level().getGameTime(); + } + + public void restorePair(UUID linkedPortalId, int pairTime) { + this.linkedPortalId = linkedPortalId; + this.pairTime = pairTime; } public PortalSide getPortalSide() { @@ -101,6 +129,46 @@ public class PortalGunPortalEntity extends Entity implements GeoEntity { return Direction.from3DDataValue(this.entityData.get(UP_AXIS)); } + public UUID getLinkedPortalId() { + return this.linkedPortalId; + } + + public BlockPos getMasterPos() { + return this.masterPos; + } + + public UUID getOwnerId() { + return this.ownerId; + } + + public BlockPos getBasePos() { + return this.basePos; + } + + public BlockPos[] getPortalSpots() { + return new BlockPos[] {this.portalSpots[0], this.portalSpots[1]}; + } + + public Set getCompensatedSpots() { + return Set.copyOf(this.compensatedSpots); + } + + public int getPairTime() { + return this.pairTime; + } + + public PortalGunPortalEntity getLinkedPortal() { + if (this.linkedPortalId == null) { + return null; + } + List entities = this.level().getEntities(this, new AABB(-3.0E7D, -3.0E7D, -3.0E7D, 3.0E7D, 3.0E7D, 3.0E7D), entity -> this.linkedPortalId.equals(entity.getUUID())); + if (entities.isEmpty()) { + return null; + } + Entity entity = entities.getFirst(); + return entity instanceof PortalGunPortalEntity portal ? portal : null; + } + public Vec3 getNormalVec() { return Vec3.atLowerCornerOf(this.getFacingDirection().getNormal()); } @@ -113,16 +181,125 @@ public class PortalGunPortalEntity extends Entity implements GeoEntity { return this.getNormalVec().cross(this.getUpVec()).normalize(); } + public PortalGunWorldPortalShape getWorldPortalShape() { + return new PortalGunWorldPortalShape(this.position(), this.getNormalVec().normalize(), this.getUpVec().normalize(), this.getWidthVec().normalize(), HALF_WIDTH, HALF_HEIGHT, HALF_DEPTH); + } + + public AABB getPlane() { + return this.getWorldPortalShape().getPlane(); + } + + public AABB getFlatPlane() { + return this.getWorldPortalShape().getFlatPlane(); + } + + public AABB getScanRange() { + return this.getWorldPortalShape().getScanRange(); + } + + public AABB getPortalInsides() { + return this.getWorldPortalShape().getPortalInsides(); + } + + public AABB getPortalInsides(Entity entity) { + if (!(entity instanceof Player)) { + return this.getPortalInsides(); + } + double shiftAmount = Math.min(PLAYER_PORTAL_INSIDE_SHIFT, Math.abs(this.getWorldPortalShape().localCoords(entity.position()).depth())); + return this.getPortalInsides().move(this.getNormalVec().normalize().scale(shiftAmount)); + } + + public AABB getTeleportPlane(double offset) { + return this.getWorldPortalShape().getTeleportPlane(offset); + } + + public AABB getCollisionRemovalAabbForEntity(Entity entity) { + double speed = entity.getDeltaMovement().length(); + double extent = Math.max(1.0D, Math.max(entity.getBbWidth(), entity.getBbHeight()) + speed); + return this.getFlatPlane().expandTowards(this.getNormalVec().normalize().scale(-extent)); + } + + public Vec3 teleportProbePosition(Entity entity) { + if (entity instanceof Player player) { + return player.getEyePosition(); + } + if (entity instanceof LivingEntity living) { + return entity.position().add(0.0D, living.getBbHeight() * 0.5D, 0.0D); + } + return entity.position(); + } + + public Vec3 previousTeleportProbePosition(Entity entity) { + double prevX = entity.xo; + double prevY = entity.yo; + double prevZ = entity.zo; + if (entity instanceof Player player) { + return new Vec3(prevX, prevY + player.getEyeHeight(player.getPose()), prevZ); + } + if (entity instanceof LivingEntity living) { + return new Vec3(prevX, prevY + living.getBbHeight() * 0.5D, prevZ); + } + return new Vec3(prevX, prevY, prevZ); + } + + public Vec3 resolveCrossingProbe(Entity entity) { + AABB currentBox = entity.getBoundingBox(); + AABB previousBox = currentBox.move(entity.xo - entity.getX(), entity.yo - entity.getY(), entity.zo - entity.getZ()); + for (Vec3 currentSample : portalSamples(entity, currentBox, false)) { + Vec3 previousSample = matchPreviousSample(currentSample, currentBox, previousBox); + if (this.crossesPortal(previousSample, currentSample)) { + return currentSample; + } + } + Vec3 previousProbe = this.previousTeleportProbePosition(entity); + Vec3 currentProbe = this.teleportProbePosition(entity); + return this.crossesPortal(previousProbe, currentProbe) ? currentProbe : null; + } + + public boolean containsPoint(Vec3 position) { + return this.getWorldPortalShape().contains(position, 0.0D); + } + + public boolean intersectsEntityBounds(Entity entity) { + AABB bounds = entity.getBoundingBox(); + for (Vec3 corner : new Vec3[] { + new Vec3(bounds.minX, bounds.minY, bounds.minZ), + new Vec3(bounds.minX, bounds.minY, bounds.maxZ), + new Vec3(bounds.minX, bounds.maxY, bounds.minZ), + new Vec3(bounds.minX, bounds.maxY, bounds.maxZ), + new Vec3(bounds.maxX, bounds.minY, bounds.minZ), + new Vec3(bounds.maxX, bounds.minY, bounds.maxZ), + new Vec3(bounds.maxX, bounds.maxY, bounds.minZ), + new Vec3(bounds.maxX, bounds.maxY, bounds.maxZ) + }) { + if (this.getWorldPortalShape().contains(corner, 0.08D)) { + return true; + } + } + return this.getPortalInsides(entity).intersects(bounds); + } + + public boolean crossesPortal(Vec3 previousProbePosition, Vec3 currentProbePosition) { + return this.getWorldPortalShape().crosses(previousProbePosition, currentProbePosition); + } + + public boolean shouldRenderFront(Vec3 cameraPos) { + return this.getWorldPortalShape().shouldRenderFront(cameraPos); + } + @Override public void tick() { super.tick(); this.ageTicks++; + this.yRotO = this.getYRot(); + this.xRotO = this.getXRot(); if (this.level().isClientSide) { return; } if (!(this.level() instanceof ServerLevel serverLevel)) { return; } + this.tickTeleportCooldowns(); if (this.ownerId == null || !this.isStillRegistered(serverLevel)) { this.discard(); return; @@ -151,32 +328,35 @@ public class PortalGunPortalEntity extends Entity implements GeoEntity { private boolean hasValidSurface() { Direction facing = this.getFacingDirection(); - Direction heightAxis = this.getUpAxis(); - for (int h = 0; h < 2; h++) { - BlockPos supportPos = this.supportOrigin.relative(heightAxis, h); - BlockPos airPos = supportPos.relative(facing); + for (int i = 0; i < this.portalSpots.length; i++) { + BlockPos portalSpot = this.portalSpots[i]; + BlockPos supportPos = portalSpot.relative(facing.getOpposite()); BlockState supportState = this.level().getBlockState(supportPos); - BlockState airState = this.level().getBlockState(airPos); - FluidState fluidState = this.level().getFluidState(airPos); if (!supportState.isFaceSturdy(this.level(), supportPos, facing)) { return false; } - if (!airState.isAir() && !airState.canBeReplaced()) { - return false; - } - if (!fluidState.isEmpty()) { - return false; + BlockEntity blockEntity = this.level().getBlockEntity(portalSpot); + if (i == 0) { + if (!(blockEntity instanceof PortalGunPortalMasterBlockEntity master) || !master.matches(this.ownerId, this.getUUID(), this.getPortalSide())) { + return false; + } + } else { + if (!(blockEntity instanceof PortalGunPortalBaseBlockEntity base) || !base.matches(this.ownerId, this.getUUID(), this.getPortalSide())) { + return false; + } } } return true; } private void tickTeleport(PortalGunPortalEntity linked) { - List entities = this.level().getEntities(this, this.getBoundingBox().inflate(0.75D), this::canTeleportEntity); + List entities = this.level().getEntities(this, this.getScanRange(), this::canTeleportEntity); for (Entity entity : entities) { - if (this.isInsidePortal(entity.position())) { - this.teleportEntity(entity, linked); + Vec3 crossingProbe = this.resolveCrossingProbe(entity); + if (crossingProbe == null) { + continue; } + this.teleportEntity(entity, linked, crossingProbe); } } @@ -184,45 +364,109 @@ public class PortalGunPortalEntity extends Entity implements GeoEntity { if (!entity.isAlive() || entity instanceof PortalGunPortalEntity || entity.isPassenger() || entity.isVehicle()) { return false; } - long gameTime = this.level().getGameTime(); - long cooldownUntil = TELEPORT_COOLDOWNS.getOrDefault(entity.getUUID(), 0L); - if (cooldownUntil <= gameTime) { - TELEPORT_COOLDOWNS.remove(entity.getUUID()); - return true; - } - return false; + return !this.teleportCooldowns.containsKey(entity.getUUID()); } private boolean isInsidePortal(Vec3 position) { - Vec3 relative = position.subtract(this.position()); - double horizontal = relative.dot(this.getWidthVec()); - double vertical = relative.dot(this.getUpVec()); - double depth = Math.abs(relative.dot(this.getNormalVec())); - return Math.abs(horizontal) <= HALF_WIDTH && Math.abs(vertical) <= HALF_HEIGHT && depth <= HALF_DEPTH; + return this.getWorldPortalShape().contains(position, 0.0D); } - private void teleportEntity(Entity entity, PortalGunPortalEntity destination) { - Vec3 sourceNormal = this.getNormalVec(); - Vec3 sourceUp = this.getUpVec(); - Vec3 sourceWidth = this.getWidthVec(); - Vec3 destinationNormal = destination.getNormalVec(); - Vec3 destinationUp = destination.getUpVec(); - Vec3 destinationWidth = destination.getWidthVec(); - Vec3 motion = entity.getDeltaMovement(); - double widthComponent = motion.dot(sourceWidth); - double upComponent = motion.dot(sourceUp); - double forward = -motion.dot(sourceNormal); - Vec3 transformedMotion = destinationWidth.scale(widthComponent).add(destinationUp.scale(upComponent)).add(destinationNormal.scale(forward)); - Vec3 exitPos = destination.position().add(destinationNormal.scale(1.0D)); - TELEPORT_COOLDOWNS.put(entity.getUUID(), this.level().getGameTime() + TELEPORT_COOLDOWN_TICKS); + private PortalLocalCoords localCoords(Vec3 position) { + PortalGunWorldPortalShape.PortalLocalCoords coords = this.getWorldPortalShape().localCoords(position); + return new PortalLocalCoords(coords.horizontal(), coords.vertical(), coords.depth()); + } + + private List portalSamples(Entity entity, AABB box, boolean previous) { + Vec3 center = new Vec3((box.minX + box.maxX) * 0.5D, (box.minY + box.maxY) * 0.5D, (box.minZ + box.maxZ) * 0.5D); + Vec3 topCenter = new Vec3(center.x, box.maxY, center.z); + Vec3 bottomCenter = new Vec3(center.x, box.minY, center.z); + if (entity instanceof Player player) { + Vec3 eye = previous ? this.previousTeleportProbePosition(player) : this.teleportProbePosition(player); + return List.of(center, eye, topCenter, bottomCenter); + } + if (entity instanceof LivingEntity) { + return List.of(center, topCenter, bottomCenter); + } + return List.of(center); + } + + private Vec3 matchPreviousSample(Vec3 currentSample, AABB currentBox, AABB previousBox) { + double xLerp = axisRatio(currentSample.x, currentBox.minX, currentBox.maxX); + double yLerp = axisRatio(currentSample.y, currentBox.minY, currentBox.maxY); + double zLerp = axisRatio(currentSample.z, currentBox.minZ, currentBox.maxZ); + return new Vec3( + lerp(previousBox.minX, previousBox.maxX, xLerp), + lerp(previousBox.minY, previousBox.maxY, yLerp), + lerp(previousBox.minZ, previousBox.maxZ, zLerp) + ); + } + + private static double axisRatio(double value, double min, double max) { + double size = max - min; + if (Math.abs(size) < 1.0E-6D) { + return 0.5D; + } + return (value - min) / size; + } + + private static double lerp(double min, double max, double delta) { + return min + (max - min) * delta; + } + + private void teleportEntity(Entity entity, PortalGunPortalEntity destination, Vec3 currentProbe) { + Quaternionf transform = PortalGunTransformUtil.createTransform(this, destination); + Vec3 relativeProbe = currentProbe.subtract(this.position()); + Vec3 transformedProbe = PortalGunTransformUtil.transform(relativeProbe, transform); + Vec3 entityOffsetFromProbe = entity.position().subtract(currentProbe); + Vec3 transformedEntityOffset = PortalGunTransformUtil.transform(entityOffsetFromProbe, transform); + Vec3 transformedLook = PortalGunTransformUtil.transform(entity.getLookAngle(), transform).normalize(); + Vec3 transformedMotion = PortalGunTransformUtil.transform(entity.getDeltaMovement(), transform); + Vec3 exitProbe = destination.position().add(transformedProbe).add(destination.getNormalVec().normalize().scale(0.08D - transformedProbe.dot(destination.getNormalVec().normalize()))); + Vec3 exitPos = exitProbe.add(transformedEntityOffset); + float yaw = PortalGunTransformUtil.yawFromLook(transformedLook); + float pitch = PortalGunTransformUtil.pitchFromLook(transformedLook); + this.applyTeleportCooldown(entity, destination); if (entity instanceof ServerPlayer player && destination.level() instanceof ServerLevel destinationLevel) { - player.teleportTo(destinationLevel, exitPos.x, exitPos.y, exitPos.z, player.getYRot(), player.getXRot()); + player.teleportTo(destinationLevel, exitPos.x, exitPos.y, exitPos.z, yaw, pitch); } else { entity.teleportTo(exitPos.x, exitPos.y, exitPos.z); + entity.setYRot(yaw); + entity.setXRot(pitch); + entity.setYHeadRot(yaw); + entity.setYBodyRot(yaw); } entity.setDeltaMovement(transformedMotion); entity.hasImpulse = true; entity.fallDistance = 0.0F; + this.handleSpecialEntityPostTeleport(entity); + } + + private void tickTeleportCooldowns() { + Iterator> iterator = this.teleportCooldowns.entrySet().iterator(); + while (iterator.hasNext()) { + Map.Entry entry = iterator.next(); + int cooldown = entry.getValue() - 1; + if (cooldown < 0) { + iterator.remove(); + } else { + entry.setValue(cooldown); + } + } + } + + private void applyTeleportCooldown(Entity entity, PortalGunPortalEntity destination) { + UUID entityId = entity.getUUID(); + this.teleportCooldowns.put(entityId, TELEPORT_COOLDOWN_TICKS); + destination.teleportCooldowns.put(entityId, TELEPORT_COOLDOWN_TICKS); + } + + private void handleSpecialEntityPostTeleport(Entity entity) { + if (entity instanceof AbstractArrow arrow) { + ((AbstractArrowAccessor) arrow).antarchy$setInGround(false); + ((AbstractArrowAccessor) arrow).antarchy$setInGroundTime(0); + ((AbstractArrowAccessor) arrow).antarchy$setShakeTime(0); + arrow.setNoPhysics(false); + } } private PortalGunPortalEntity findLinkedPortal(ServerLevel level) { @@ -235,18 +479,12 @@ public class PortalGunPortalEntity extends Entity implements GeoEntity { @Override public AABB getBoundingBoxForCulling() { - return this.getBoundingBox().inflate(1.5D); + return this.getWorldPortalShape().getBoundsForCulling(); } @Override protected AABB makeBoundingBox() { - Vec3 widthVec = this.getWidthVec(); - Vec3 upVec = this.getUpVec(); - Vec3 normalVec = this.getNormalVec(); - double halfX = HALF_WIDTH * Math.abs(widthVec.x) + HALF_HEIGHT * Math.abs(upVec.x) + HALF_DEPTH * Math.abs(normalVec.x); - double halfY = HALF_WIDTH * Math.abs(widthVec.y) + HALF_HEIGHT * Math.abs(upVec.y) + HALF_DEPTH * Math.abs(normalVec.y); - double halfZ = HALF_WIDTH * Math.abs(widthVec.z) + HALF_HEIGHT * Math.abs(upVec.z) + HALF_DEPTH * Math.abs(normalVec.z); - return new AABB(this.getX() - halfX, this.getY() - halfY, this.getZ() - halfZ, this.getX() + halfX, this.getY() + halfY, this.getZ() + halfZ); + return this.getPortalInsides(); } @Override @@ -258,11 +496,37 @@ public class PortalGunPortalEntity extends Entity implements GeoEntity { tag.putUUID("LinkedPortalId", this.linkedPortalId); } tag.putInt("AgeTicks", this.ageTicks); + tag.putInt("PairTime", this.pairTime); tag.putInt("Side", this.getPortalSide().ordinal()); tag.putInt("Facing", this.getFacingDirection().get3DDataValue()); + tag.putInt("UpAxis", this.getUpAxis().get3DDataValue()); tag.putInt("SupportX", this.supportOrigin.getX()); tag.putInt("SupportY", this.supportOrigin.getY()); tag.putInt("SupportZ", this.supportOrigin.getZ()); + tag.putInt("MasterX", this.masterPos.getX()); + tag.putInt("MasterY", this.masterPos.getY()); + tag.putInt("MasterZ", this.masterPos.getZ()); + tag.putInt("BaseX", this.basePos.getX()); + tag.putInt("BaseY", this.basePos.getY()); + tag.putInt("BaseZ", this.basePos.getZ()); + ListTag spots = new ListTag(); + for (BlockPos portalSpot : this.portalSpots) { + CompoundTag spot = new CompoundTag(); + spot.putInt("X", portalSpot.getX()); + spot.putInt("Y", portalSpot.getY()); + spot.putInt("Z", portalSpot.getZ()); + spots.add(spot); + } + tag.put("PortalSpots", spots); + ListTag compensated = new ListTag(); + for (BlockPos compensatedSpot : this.compensatedSpots) { + CompoundTag spot = new CompoundTag(); + spot.putInt("X", compensatedSpot.getX()); + spot.putInt("Y", compensatedSpot.getY()); + spot.putInt("Z", compensatedSpot.getZ()); + compensated.add(spot); + } + tag.put("CompensatedSpots", compensated); } @Override @@ -274,17 +538,48 @@ public class PortalGunPortalEntity extends Entity implements GeoEntity { this.linkedPortalId = tag.getUUID("LinkedPortalId"); } this.ageTicks = tag.getInt("AgeTicks"); + this.pairTime = tag.getInt("PairTime"); this.entityData.set(SIDE, tag.getInt("Side")); this.entityData.set(FACING, tag.getInt("Facing")); + this.entityData.set(UP_AXIS, tag.getInt("UpAxis")); this.supportOrigin = new BlockPos(tag.getInt("SupportX"), tag.getInt("SupportY"), tag.getInt("SupportZ")); + this.masterPos = new BlockPos(tag.getInt("MasterX"), tag.getInt("MasterY"), tag.getInt("MasterZ")); + this.basePos = new BlockPos(tag.getInt("BaseX"), tag.getInt("BaseY"), tag.getInt("BaseZ")); + ListTag spots = tag.getList("PortalSpots", Tag.TAG_COMPOUND); + for (int i = 0; i < Math.min(2, spots.size()); i++) { + CompoundTag spot = spots.getCompound(i); + this.portalSpots[i] = new BlockPos(spot.getInt("X"), spot.getInt("Y"), spot.getInt("Z")); + } + ListTag compensated = tag.getList("CompensatedSpots", Tag.TAG_COMPOUND); + Set compensatedSpots = new HashSet<>(); + for (int i = 0; i < compensated.size(); i++) { + CompoundTag spot = compensated.getCompound(i); + compensatedSpots.add(new BlockPos(spot.getInt("X"), spot.getInt("Y"), spot.getInt("Z"))); + } + this.compensatedSpots = compensatedSpots; } @Override public void remove(Entity.RemovalReason reason) { - if (!this.level().isClientSide && this.ownerId != null && this.level() instanceof ServerLevel serverLevel) { - PortalGunSavedData.clearPortal(serverLevel.getServer(), this.ownerId, this.getPortalSide(), this.getUUID()); - } + Level level = this.level(); + UUID ownerId = this.ownerId; super.remove(reason); + if (!level.isClientSide && ownerId != null && level instanceof ServerLevel serverLevel) { + PortalGunSavedData.clearPortal(serverLevel.getServer(), ownerId, this.getPortalSide(), this.getUUID()); + this.clearPortalBlocks(serverLevel); + } + } + + private void clearPortalBlocks(ServerLevel level) { + for (BlockPos portalSpot : this.portalSpots) { + if (level.getBlockEntity(portalSpot) instanceof PortalGunPortalMasterBlockEntity master && this.getUUID().equals(master.getPortalId())) { + level.removeBlock(portalSpot, false); + continue; + } + if (level.getBlockEntity(portalSpot) instanceof PortalGunPortalBaseBlockEntity base && this.getUUID().equals(base.getPortalId())) { + level.removeBlock(portalSpot, false); + } + } } @Override @@ -340,4 +635,7 @@ public class PortalGunPortalEntity extends Entity implements GeoEntity { public static SoundEvent sound(String path, SoundEvent fallback) { return BuiltInRegistries.SOUND_EVENT.getOptional(ResourceLocation.fromNamespaceAndPath(Antarchy.MODID, path)).orElse(fallback); } + + private record PortalLocalCoords(double horizontal, double vertical, double depth) { + } } diff --git a/common-1.21.1/src/main/java/com/craisinlord/antarchy/content/portalgun/PortalGunProjectileEntity.java b/common-1.21.1/src/main/java/com/craisinlord/antarchy/content/portalgun/PortalGunProjectileEntity.java new file mode 100644 index 00000000..0f4c0a44 --- /dev/null +++ b/common-1.21.1/src/main/java/com/craisinlord/antarchy/content/portalgun/PortalGunProjectileEntity.java @@ -0,0 +1,166 @@ +package com.craisinlord.antarchy.content.portalgun; + +import com.craisinlord.antarchy.content.item.PortalGunItem; +import java.util.UUID; +import net.minecraft.core.component.DataComponents; +import net.minecraft.nbt.CompoundTag; +import net.minecraft.network.syncher.EntityDataAccessor; +import net.minecraft.network.syncher.EntityDataSerializers; +import net.minecraft.network.syncher.SynchedEntityData; +import net.minecraft.server.level.ServerLevel; +import net.minecraft.world.entity.Entity; +import net.minecraft.world.entity.EntityType; +import net.minecraft.world.entity.LivingEntity; +import net.minecraft.world.entity.player.Player; +import net.minecraft.world.entity.projectile.ThrowableItemProjectile; +import net.minecraft.world.item.Item; +import net.minecraft.world.item.ItemStack; +import net.minecraft.world.item.Items; +import net.minecraft.world.level.Level; +import net.minecraft.world.phys.BlockHitResult; +import net.minecraft.world.phys.EntityHitResult; +import net.minecraft.world.phys.Vec3; + +public class PortalGunProjectileEntity extends ThrowableItemProjectile { + private static final EntityDataAccessor SIDE = SynchedEntityData.defineId(PortalGunProjectileEntity.class, EntityDataSerializers.INT); + private static final int MAX_FLIGHT_TICKS = 80; + private UUID gunId; + + public PortalGunProjectileEntity(EntityType entityType, Level level) { + super(entityType, level); + this.configureProjectile(); + } + + public PortalGunProjectileEntity(EntityType entityType, LivingEntity owner, Level level) { + super(entityType, owner, level); + this.configureProjectile(); + } + + private void configureProjectile() { + this.setNoGravity(true); + this.noCulling = true; + } + + @Override + protected void defineSynchedData(SynchedEntityData.Builder builder) { + super.defineSynchedData(builder); + builder.define(SIDE, PortalGunPortalEntity.PortalSide.BLUE.ordinal()); + } + + public void configure(PortalGunPortalEntity.PortalSide side, UUID gunId, ItemStack gunStack) { + this.entityData.set(SIDE, side.ordinal()); + this.gunId = gunId; + this.setItem(gunStack.copyWithCount(1)); + } + + public PortalGunPortalEntity.PortalSide getPortalSide() { + return this.entityData.get(SIDE) == PortalGunPortalEntity.PortalSide.ORANGE.ordinal() ? PortalGunPortalEntity.PortalSide.ORANGE : PortalGunPortalEntity.PortalSide.BLUE; + } + + @Override + protected Item getDefaultItem() { + return Items.AIR; + } + + @Override + protected double getDefaultGravity() { + return 0.0D; + } + + @Override + protected boolean canHitEntity(Entity target) { + return false; + } + + @Override + public boolean canBeCollidedWith() { + return false; + } + + @Override + public boolean isAttackable() { + return false; + } + + @Override + public void tick() { + super.tick(); + if (this.tickCount > MAX_FLIGHT_TICKS) { + this.discard(); + return; + } + Vec3 motion = this.getDeltaMovement(); + if (motion.lengthSqr() > 1.0E-6D) { + double horizontal = Math.sqrt(motion.x * motion.x + motion.z * motion.z); + this.setYRot((float) (net.minecraft.util.Mth.atan2(motion.z, motion.x) * (180.0D / Math.PI)) - 90.0F); + this.setXRot((float) (-(net.minecraft.util.Mth.atan2(motion.y, horizontal) * (180.0D / Math.PI)))); + } + if (this.level().isClientSide) { + Vec3 point = this.position(); + if (this.getPortalSide() == PortalGunPortalEntity.PortalSide.BLUE) { + this.level().addParticle(net.minecraft.core.particles.ParticleTypes.SOUL_FIRE_FLAME, point.x, point.y, point.z, 0.0D, 0.0D, 0.0D); + this.level().addParticle(net.minecraft.core.particles.ParticleTypes.END_ROD, point.x, point.y, point.z, 0.0D, 0.0D, 0.0D); + } else { + this.level().addParticle(net.minecraft.core.particles.ParticleTypes.FLAME, point.x, point.y, point.z, 0.0D, 0.0D, 0.0D); + this.level().addParticle(net.minecraft.core.particles.ParticleTypes.CRIT, point.x, point.y, point.z, 0.0D, 0.0D, 0.0D); + } + } + } + + @Override + protected void onHitEntity(EntityHitResult result) { + } + + @Override + protected void onHitBlock(BlockHitResult result) { + if (!this.level().isClientSide && this.level() instanceof ServerLevel serverLevel) { + this.spawnImpactParticles(serverLevel, result.getLocation()); + ItemStack sourceStack = this.resolveSourceStack(); + if (this.getOwner() instanceof Player player && sourceStack.getItem() instanceof PortalGunItem portalGunItem) { + portalGunItem.handlePortalImpact(serverLevel, player, sourceStack, this.getPortalSide(), result, this.position()); + } + } + this.discard(); + } + + private void spawnImpactParticles(ServerLevel level, Vec3 impactPos) { + if (this.getPortalSide() == PortalGunPortalEntity.PortalSide.BLUE) { + level.sendParticles(net.minecraft.core.particles.ParticleTypes.SOUL_FIRE_FLAME, impactPos.x, impactPos.y, impactPos.z, 10, 0.08D, 0.08D, 0.08D, 0.01D); + level.sendParticles(net.minecraft.core.particles.ParticleTypes.END_ROD, impactPos.x, impactPos.y, impactPos.z, 6, 0.04D, 0.04D, 0.04D, 0.01D); + return; + } + level.sendParticles(net.minecraft.core.particles.ParticleTypes.FLAME, impactPos.x, impactPos.y, impactPos.z, 10, 0.08D, 0.08D, 0.08D, 0.01D); + level.sendParticles(net.minecraft.core.particles.ParticleTypes.CRIT, impactPos.x, impactPos.y, impactPos.z, 6, 0.04D, 0.04D, 0.04D, 0.01D); + } + + private ItemStack resolveSourceStack() { + ItemStack projectileStack = this.getItem(); + if (!(this.getOwner() instanceof Player player) || !(projectileStack.getItem() instanceof PortalGunItem portalGunItem) || this.gunId == null) { + return projectileStack; + } + ItemStack matching = portalGunItem.findMatchingGunStack(player, this.gunId); + return matching.isEmpty() ? projectileStack : matching; + } + + @Override + public void addAdditionalSaveData(CompoundTag tag) { + super.addAdditionalSaveData(tag); + tag.putInt("Side", this.entityData.get(SIDE)); + if (this.gunId != null) { + tag.putUUID("GunId", this.gunId); + } + } + + @Override + public void readAdditionalSaveData(CompoundTag tag) { + super.readAdditionalSaveData(tag); + this.entityData.set(SIDE, tag.getInt("Side")); + if (tag.hasUUID("GunId")) { + this.gunId = tag.getUUID("GunId"); + } + ItemStack itemStack = this.getItem(); + if (this.gunId != null && !itemStack.isEmpty()) { + net.minecraft.world.item.component.CustomData.update(DataComponents.CUSTOM_DATA, itemStack, customData -> customData.putUUID(PortalGunItem.GUN_ID_TAG, this.gunId)); + } + } +} diff --git a/common-1.21.1/src/main/java/com/craisinlord/antarchy/content/portalgun/PortalGunSavedData.java b/common-1.21.1/src/main/java/com/craisinlord/antarchy/content/portalgun/PortalGunSavedData.java index 5f06a112..f636bb99 100644 --- a/common-1.21.1/src/main/java/com/craisinlord/antarchy/content/portalgun/PortalGunSavedData.java +++ b/common-1.21.1/src/main/java/com/craisinlord/antarchy/content/portalgun/PortalGunSavedData.java @@ -9,6 +9,7 @@ import net.minecraft.nbt.CompoundTag; import net.minecraft.nbt.ListTag; import net.minecraft.server.MinecraftServer; import net.minecraft.server.level.ServerLevel; +import net.minecraft.world.entity.Entity; import net.minecraft.world.level.saveddata.SavedData; public final class PortalGunSavedData extends SavedData { @@ -119,6 +120,20 @@ public final class PortalGunSavedData extends SavedData { discardIfLoaded(server, current.orangePortalId()); } + public static PortalGunPortalEntity findLoadedPortal(MinecraftServer server, UUID owner, PortalGunPortalEntity.PortalSide side) { + Optional portalId = getPortalId(server, owner, side); + if (portalId.isEmpty()) { + return null; + } + for (ServerLevel level : server.getAllLevels()) { + Entity entity = level.getEntity(portalId.get()); + if (entity instanceof PortalGunPortalEntity portal && !portal.isRemoved()) { + return portal; + } + } + return null; + } + private static void discardIfLoaded(MinecraftServer server, UUID portalId) { if (portalId == null) { return; diff --git a/common-1.21.1/src/main/java/com/craisinlord/antarchy/content/portalgun/PortalGunTransformUtil.java b/common-1.21.1/src/main/java/com/craisinlord/antarchy/content/portalgun/PortalGunTransformUtil.java new file mode 100644 index 00000000..8a0c802d --- /dev/null +++ b/common-1.21.1/src/main/java/com/craisinlord/antarchy/content/portalgun/PortalGunTransformUtil.java @@ -0,0 +1,93 @@ +package com.craisinlord.antarchy.content.portalgun; + +import net.minecraft.util.Mth; +import net.minecraft.world.phys.Vec3; +import org.joml.Matrix3f; +import org.joml.Quaternionf; +import org.joml.Vector3f; + +public final class PortalGunTransformUtil { + private static final Vec3 WORLD_UP = new Vec3(0.0D, 1.0D, 0.0D); + private static final Vec3 WORLD_FORWARD_FALLBACK = new Vec3(0.0D, 0.0D, 1.0D); + + private PortalGunTransformUtil() { + } + + public static Quaternionf createTransform(PortalGunPortalEntity sourcePortal, PortalGunPortalEntity destinationPortal) { + return createTransform(sourcePortal.getWidthVec(), sourcePortal.getUpVec(), sourcePortal.getNormalVec().scale(-1.0D), destinationPortal.getWidthVec(), destinationPortal.getUpVec(), destinationPortal.getNormalVec()); + } + + public static Quaternionf createTransform(Vec3 sourceWidth, Vec3 sourceUp, Vec3 sourceForward, Vec3 destinationWidth, Vec3 destinationUp, Vec3 destinationForward) { + Matrix3f sourceBasis = new Matrix3f( + (float) sourceWidth.x, (float) sourceUp.x, (float) sourceForward.x, + (float) sourceWidth.y, (float) sourceUp.y, (float) sourceForward.y, + (float) sourceWidth.z, (float) sourceUp.z, (float) sourceForward.z + ); + Matrix3f destinationBasis = new Matrix3f( + (float) destinationWidth.x, (float) destinationUp.x, (float) destinationForward.x, + (float) destinationWidth.y, (float) destinationUp.y, (float) destinationForward.y, + (float) destinationWidth.z, (float) destinationUp.z, (float) destinationForward.z + ); + Matrix3f transform = destinationBasis.mul(sourceBasis.transpose(new Matrix3f()), new Matrix3f()); + return transform.getNormalizedRotation(new Quaternionf()); + } + + public static Vec3 transform(Vec3 vector, Quaternionf quaternion) { + Vector3f rotated = new Vector3f((float) vector.x, (float) vector.y, (float) vector.z).rotate(quaternion); + return new Vec3(rotated.x(), rotated.y(), rotated.z()); + } + + public static Vec3 transformRelativePosition(PortalGunPortalEntity sourcePortal, PortalGunPortalEntity destinationPortal, Vec3 relativePosition) { + return transform(relativePosition, createTransform(sourcePortal, destinationPortal)); + } + + public static float yawFromLook(Vec3 look) { + return (float) Math.toDegrees(Math.atan2(-look.x, look.z)); + } + + public static float pitchFromLook(Vec3 look) { + return (float) Math.toDegrees(-Math.asin(Mth.clamp(look.y, -1.0D, 1.0D))); + } + + public static Vec3 upVectorFromLookAndRoll(Vec3 look, float rollDegrees) { + Vec3 normalizedLook = look.normalize(); + Vec3 referenceUp = Math.abs(normalizedLook.dot(WORLD_UP)) > 0.999D ? WORLD_FORWARD_FALLBACK : WORLD_UP; + Vec3 right = referenceUp.cross(normalizedLook).normalize(); + Vec3 up = normalizedLook.cross(right).normalize(); + if (Math.abs(rollDegrees) <= 1.0E-4F) { + return up; + } + Quaternionf roll = new Quaternionf().fromAxisAngleDeg((float) normalizedLook.x, (float) normalizedLook.y, (float) normalizedLook.z, rollDegrees); + return transform(up, roll).normalize(); + } + + public static float rollFromOrientation(Vec3 look, Vec3 up) { + Vec3 normalizedLook = look.normalize(); + Vec3 normalizedUp = up.normalize(); + Vec3 baseUp = upVectorFromLookAndRoll(normalizedLook, 0.0F); + Vec3 projectedUp = normalizedUp.subtract(normalizedLook.scale(normalizedUp.dot(normalizedLook))); + if (projectedUp.lengthSqr() < 1.0E-8D) { + return 0.0F; + } + projectedUp = projectedUp.normalize(); + double sin = normalizedLook.dot(baseUp.cross(projectedUp)); + double cos = Mth.clamp(baseUp.dot(projectedUp), -1.0D, 1.0D); + return normalizeDegrees((float) Math.toDegrees(Math.atan2(sin, cos))); + } + + public static Quaternionf orientationQuaternion(Vec3 look, Vec3 up) { + Vec3 forward = look.normalize(); + Vec3 correctedUp = up.subtract(forward.scale(up.dot(forward))).normalize(); + Vec3 right = correctedUp.cross(forward).normalize(); + Matrix3f basis = new Matrix3f( + (float) right.x, (float) correctedUp.x, (float) (-forward.x), + (float) right.y, (float) correctedUp.y, (float) (-forward.y), + (float) right.z, (float) correctedUp.z, (float) (-forward.z) + ); + return basis.getNormalizedRotation(new Quaternionf()); + } + + public static float normalizeDegrees(float degrees) { + return Mth.wrapDegrees(degrees); + } +} diff --git a/common-1.21.1/src/main/java/com/craisinlord/antarchy/content/portalgun/PortalGunWorldPortalShape.java b/common-1.21.1/src/main/java/com/craisinlord/antarchy/content/portalgun/PortalGunWorldPortalShape.java new file mode 100644 index 00000000..8fd85cfb --- /dev/null +++ b/common-1.21.1/src/main/java/com/craisinlord/antarchy/content/portalgun/PortalGunWorldPortalShape.java @@ -0,0 +1,165 @@ +package com.craisinlord.antarchy.content.portalgun; + +import net.minecraft.world.phys.AABB; +import net.minecraft.world.phys.Vec3; +import java.util.List; + +public record PortalGunWorldPortalShape( + Vec3 center, + Vec3 normal, + Vec3 up, + Vec3 right, + double halfWidth, + double halfHeight, + double halfDepth +) { + public static final double DEFAULT_SCAN_DISTANCE = 3.0D; + + public AABB getPlane() { + return this.createPlaneAround(0.0D, 0.0125D); + } + + public AABB getFlatPlane() { + return this.createPlaneAround(0.0D, 0.0D); + } + + public AABB getScanRange() { + return this.getFlatPlane().expandTowards(this.normal.scale(-DEFAULT_SCAN_DISTANCE)); + } + + public AABB getPortalInsides() { + return this.createPlaneAround(0.0D, this.halfDepth); + } + + public AABB getTeleportPlane(double offset) { + return this.createPlaneAround(offset, this.halfDepth); + } + + public Vec3[] getCorners(double normalOffset) { + Vec3 center = this.center.add(this.normal.scale(normalOffset)); + Vec3 width = this.right.scale(this.halfWidth); + Vec3 height = this.up.scale(this.halfHeight); + return new Vec3[] { + center.subtract(width).subtract(height), + center.subtract(width).add(height), + center.add(width).add(height), + center.add(width).subtract(height) + }; + } + + public PortalLocalCoords localCoords(Vec3 position) { + Vec3 relative = position.subtract(this.center); + return new PortalLocalCoords(relative.dot(this.right), relative.dot(this.up), relative.dot(this.normal)); + } + + public boolean contains(Vec3 position, double depthPadding) { + PortalLocalCoords coords = this.localCoords(position); + return Math.abs(coords.horizontal()) <= this.halfWidth + && Math.abs(coords.vertical()) <= this.halfHeight + && Math.abs(coords.depth()) <= this.halfDepth + depthPadding; + } + + public boolean crosses(Vec3 previousPosition, Vec3 currentPosition) { + PortalLocalCoords previous = this.localCoords(previousPosition); + PortalLocalCoords current = this.localCoords(currentPosition); + double depthDelta = current.depth() - previous.depth(); + if (depthDelta > -1.0E-6D || previous.depth() <= 0.0D || current.depth() > 0.0D) { + return false; + } + double t = -previous.depth() / depthDelta; + if (t < 0.0D || t > 1.0D) { + return false; + } + double horizontal = previous.horizontal() + (current.horizontal() - previous.horizontal()) * t; + double vertical = previous.vertical() + (current.vertical() - previous.vertical()) * t; + return Math.abs(horizontal) <= this.halfWidth && Math.abs(vertical) <= this.halfHeight; + } + + public boolean shouldRenderFront(Vec3 cameraPos) { + PortalLocalCoords coords = this.localCoords(cameraPos); + if (coords.depth() <= 0.0D) { + return false; + } + double depthScale = Math.min(DEFAULT_SCAN_DISTANCE, Math.max(0.0D, coords.depth())); + return Math.abs(coords.horizontal()) <= this.halfWidth + depthScale + && Math.abs(coords.vertical()) <= this.halfHeight + depthScale; + } + + public boolean intersectsFront(AABB box, double tolerance) { + double maxDepth = Double.NEGATIVE_INFINITY; + for (Vec3 corner : corners(box)) { + maxDepth = Math.max(maxDepth, this.localCoords(corner).depth()); + if (maxDepth >= -tolerance) { + return true; + } + } + return false; + } + + public AABB getBoundsForCulling() { + return this.createPlaneAround(0.0D, this.halfDepth).inflate(1.5D); + } + + public List getCollisionBoundaries(double borderThickness) { + double horizontalOuter = this.halfWidth + borderThickness; + double verticalOuter = this.halfHeight + borderThickness; + return List.of( + this.createLocalBox(-horizontalOuter, this.halfWidth, -verticalOuter, verticalOuter, -this.halfDepth, this.halfDepth), + this.createLocalBox(-this.halfWidth, horizontalOuter, -verticalOuter, verticalOuter, -this.halfDepth, this.halfDepth), + this.createLocalBox(-this.halfWidth, this.halfWidth, -verticalOuter, -this.halfHeight, -this.halfDepth, this.halfDepth), + this.createLocalBox(-this.halfWidth, this.halfWidth, this.halfHeight, verticalOuter, -this.halfDepth, this.halfDepth) + ); + } + + private AABB createPlaneAround(double planeOffset, double thickness) { + Vec3 boxCenter = this.center.add(this.normal.scale(planeOffset)); + double halfX = this.halfWidth * Math.abs(this.right.x) + this.halfHeight * Math.abs(this.up.x) + thickness * Math.abs(this.normal.x); + double halfY = this.halfWidth * Math.abs(this.right.y) + this.halfHeight * Math.abs(this.up.y) + thickness * Math.abs(this.normal.y); + double halfZ = this.halfWidth * Math.abs(this.right.z) + this.halfHeight * Math.abs(this.up.z) + thickness * Math.abs(this.normal.z); + return new AABB(boxCenter.x - halfX, boxCenter.y - halfY, boxCenter.z - halfZ, boxCenter.x + halfX, boxCenter.y + halfY, boxCenter.z + halfZ); + } + + private AABB createLocalBox(double minHorizontal, double maxHorizontal, double minVertical, double maxVertical, double minDepth, double maxDepth) { + Vec3[] corners = new Vec3[] { + this.center.add(this.right.scale(minHorizontal)).add(this.up.scale(minVertical)).add(this.normal.scale(minDepth)), + this.center.add(this.right.scale(minHorizontal)).add(this.up.scale(minVertical)).add(this.normal.scale(maxDepth)), + this.center.add(this.right.scale(minHorizontal)).add(this.up.scale(maxVertical)).add(this.normal.scale(minDepth)), + this.center.add(this.right.scale(minHorizontal)).add(this.up.scale(maxVertical)).add(this.normal.scale(maxDepth)), + this.center.add(this.right.scale(maxHorizontal)).add(this.up.scale(minVertical)).add(this.normal.scale(minDepth)), + this.center.add(this.right.scale(maxHorizontal)).add(this.up.scale(minVertical)).add(this.normal.scale(maxDepth)), + this.center.add(this.right.scale(maxHorizontal)).add(this.up.scale(maxVertical)).add(this.normal.scale(minDepth)), + this.center.add(this.right.scale(maxHorizontal)).add(this.up.scale(maxVertical)).add(this.normal.scale(maxDepth)) + }; + double minX = Double.POSITIVE_INFINITY; + double minY = Double.POSITIVE_INFINITY; + double minZ = Double.POSITIVE_INFINITY; + double maxX = Double.NEGATIVE_INFINITY; + double maxY = Double.NEGATIVE_INFINITY; + double maxZ = Double.NEGATIVE_INFINITY; + for (Vec3 corner : corners) { + minX = Math.min(minX, corner.x); + minY = Math.min(minY, corner.y); + minZ = Math.min(minZ, corner.z); + maxX = Math.max(maxX, corner.x); + maxY = Math.max(maxY, corner.y); + maxZ = Math.max(maxZ, corner.z); + } + return new AABB(minX, minY, minZ, maxX, maxY, maxZ); + } + + private static Vec3[] corners(AABB box) { + return new Vec3[] { + new Vec3(box.minX, box.minY, box.minZ), + new Vec3(box.minX, box.minY, box.maxZ), + new Vec3(box.minX, box.maxY, box.minZ), + new Vec3(box.minX, box.maxY, box.maxZ), + new Vec3(box.maxX, box.minY, box.minZ), + new Vec3(box.maxX, box.minY, box.maxZ), + new Vec3(box.maxX, box.maxY, box.minZ), + new Vec3(box.maxX, box.maxY, box.maxZ) + }; + } + + public record PortalLocalCoords(double horizontal, double vertical, double depth) { + } +} diff --git a/common-1.21.1/src/main/java/com/craisinlord/antarchy/content/worldgen/truffalo/TruffaloTreeConfiguration.java b/common-1.21.1/src/main/java/com/craisinlord/antarchy/content/worldgen/truffalo/TruffaloTreeConfiguration.java new file mode 100644 index 00000000..e0654ec1 --- /dev/null +++ b/common-1.21.1/src/main/java/com/craisinlord/antarchy/content/worldgen/truffalo/TruffaloTreeConfiguration.java @@ -0,0 +1,17 @@ +package com.craisinlord.antarchy.content.worldgen.truffalo; + +import com.mojang.serialization.Codec; +import com.mojang.serialization.codecs.RecordCodecBuilder; +import net.minecraft.util.valueproviders.IntProvider; +import net.minecraft.world.level.levelgen.feature.configurations.FeatureConfiguration; +import net.minecraft.world.level.levelgen.feature.stateproviders.BlockStateProvider; + +public record TruffaloTreeConfiguration( + BlockStateProvider trunkProvider, + IntProvider height +) implements FeatureConfiguration { + public static final Codec CODEC = RecordCodecBuilder.create(instance -> instance.group( + BlockStateProvider.CODEC.fieldOf("trunk_provider").forGetter(TruffaloTreeConfiguration::trunkProvider), + IntProvider.codec(4, 9).fieldOf("height").forGetter(TruffaloTreeConfiguration::height) + ).apply(instance, TruffaloTreeConfiguration::new)); +} diff --git a/common-1.21.1/src/main/java/com/craisinlord/antarchy/content/worldgen/truffalo/TruffaloTreeFeature.java b/common-1.21.1/src/main/java/com/craisinlord/antarchy/content/worldgen/truffalo/TruffaloTreeFeature.java new file mode 100644 index 00000000..e741835f --- /dev/null +++ b/common-1.21.1/src/main/java/com/craisinlord/antarchy/content/worldgen/truffalo/TruffaloTreeFeature.java @@ -0,0 +1,88 @@ +package com.craisinlord.antarchy.content.worldgen.truffalo; + +import com.craisinlord.antarchy.Antarchy; +import com.mojang.serialization.Codec; +import net.minecraft.core.BlockPos; +import net.minecraft.core.Direction; +import net.minecraft.core.registries.BuiltInRegistries; +import net.minecraft.resources.ResourceLocation; +import net.minecraft.util.RandomSource; +import net.minecraft.world.item.DyeColor; +import net.minecraft.world.level.WorldGenLevel; +import net.minecraft.world.level.block.Block; +import net.minecraft.world.level.block.state.BlockState; +import net.minecraft.world.level.levelgen.feature.Feature; +import net.minecraft.world.level.levelgen.feature.FeaturePlaceContext; + +public class TruffaloTreeFeature extends Feature { + private static final DyeColor[] TUFT_COLORS = { + DyeColor.MAGENTA, + DyeColor.ORANGE, + DyeColor.RED, + DyeColor.YELLOW, + DyeColor.LIME, + DyeColor.GREEN, + DyeColor.BLUE, + DyeColor.CYAN, + DyeColor.LIGHT_BLUE, + DyeColor.PINK, + DyeColor.PURPLE + }; + + public TruffaloTreeFeature(Codec codec) { + super(codec); + } + + @Override + public boolean place(FeaturePlaceContext context) { + WorldGenLevel level = context.level(); + BlockPos origin = context.origin(); + BlockPos supportPos = origin.below(); + if (!level.getBlockState(supportPos).isFaceSturdy(level, supportPos, Direction.UP)) { + return false; + } + + RandomSource random = context.random(); + TruffaloTreeConfiguration config = context.config(); + int height = config.height().sample(random); + DyeColor color = TUFT_COLORS[random.nextInt(TUFT_COLORS.length)]; + + BlockPos[] trunk = new BlockPos[height]; + for (int i = 0; i < height; i++) { + trunk[i] = origin.above(i); + } + BlockPos capCenter = trunk[height - 1].above(); + + for (BlockPos pos : trunk) { + if (!canReplace(level, pos)) { + return false; + } + } + for (int dx = -1; dx <= 1; dx++) { + for (int dz = -1; dz <= 1; dz++) { + if (!canReplace(level, capCenter.offset(dx, 0, dz))) { + return false; + } + } + } + + for (BlockPos pos : trunk) { + setBlock(level, pos, config.trunkProvider().getState(random, pos)); + } + + Block tuft = BuiltInRegistries.BLOCK.get(ResourceLocation.fromNamespaceAndPath(Antarchy.MODID, color.getName() + "_truffalo_tuft")); + BlockState tuftState = tuft.defaultBlockState(); + for (int dx = -1; dx <= 1; dx++) { + for (int dz = -1; dz <= 1; dz++) { + setBlock(level, capCenter.offset(dx, 0, dz), tuftState); + } + } + + return true; + } + + private static boolean canReplace(WorldGenLevel level, BlockPos pos) { + BlockState state = level.getBlockState(pos); + return state.isAir() || state.canBeReplaced(); + } +} diff --git a/common-1.21.1/src/main/java/com/craisinlord/antarchy/content/worldgen/truffalo/TruffaloTreeGrowers.java b/common-1.21.1/src/main/java/com/craisinlord/antarchy/content/worldgen/truffalo/TruffaloTreeGrowers.java new file mode 100644 index 00000000..ff6879a8 --- /dev/null +++ b/common-1.21.1/src/main/java/com/craisinlord/antarchy/content/worldgen/truffalo/TruffaloTreeGrowers.java @@ -0,0 +1,18 @@ +package com.craisinlord.antarchy.content.worldgen.truffalo; + +import com.craisinlord.antarchy.Antarchy; +import net.minecraft.core.registries.Registries; +import net.minecraft.resources.ResourceKey; +import net.minecraft.resources.ResourceLocation; +import net.minecraft.world.level.levelgen.feature.ConfiguredFeature; + +public final class TruffaloTreeGrowers { + public static final ResourceKey> TRUFFALO_TREE = featureKey("truffalo_tree"); + + private TruffaloTreeGrowers() { + } + + private static ResourceKey> featureKey(String path) { + return ResourceKey.create(Registries.CONFIGURED_FEATURE, ResourceLocation.fromNamespaceAndPath(Antarchy.MODID, path)); + } +} diff --git a/common-1.21.1/src/main/java/com/craisinlord/antarchy/mixins/AbstractArrowAccessor.java b/common-1.21.1/src/main/java/com/craisinlord/antarchy/mixins/AbstractArrowAccessor.java new file mode 100644 index 00000000..e5afd28f --- /dev/null +++ b/common-1.21.1/src/main/java/com/craisinlord/antarchy/mixins/AbstractArrowAccessor.java @@ -0,0 +1,17 @@ +package com.craisinlord.antarchy.mixins; + +import net.minecraft.world.entity.projectile.AbstractArrow; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.gen.Accessor; + +@Mixin(AbstractArrow.class) +public interface AbstractArrowAccessor { + @Accessor("inGround") + void antarchy$setInGround(boolean inGround); + + @Accessor("inGroundTime") + void antarchy$setInGroundTime(int inGroundTime); + + @Accessor("shakeTime") + void antarchy$setShakeTime(int shakeTime); +} diff --git a/common-1.21.1/src/main/java/com/craisinlord/antarchy/mixins/BlockEntityTypeSignMixin.java b/common-1.21.1/src/main/java/com/craisinlord/antarchy/mixins/BlockEntityTypeSignMixin.java index 9a08aa71..a1c3f06a 100644 --- a/common-1.21.1/src/main/java/com/craisinlord/antarchy/mixins/BlockEntityTypeSignMixin.java +++ b/common-1.21.1/src/main/java/com/craisinlord/antarchy/mixins/BlockEntityTypeSignMixin.java @@ -38,6 +38,22 @@ public abstract class BlockEntityTypeSignMixin { private static Block antarchy$nadirHangingSign; @Unique private static Block antarchy$nadirWallHangingSign; + @Unique + private static Block antarchy$royalSign; + @Unique + private static Block antarchy$royalWallSign; + @Unique + private static Block antarchy$royalHangingSign; + @Unique + private static Block antarchy$royalWallHangingSign; + @Unique + private static Block antarchy$truffaloSign; + @Unique + private static Block antarchy$truffaloWallSign; + @Unique + private static Block antarchy$truffaloHangingSign; + @Unique + private static Block antarchy$truffaloWallHangingSign; @Inject(method = "isValid", at = @At("HEAD"), cancellable = true) private void antarchy$allowOuranwoodSigns(BlockState state, CallbackInfoReturnable cir) { @@ -45,13 +61,17 @@ public abstract class BlockEntityTypeSignMixin { if (self == BlockEntityType.SIGN) { if (state.is(antarchy$sign()) || state.is(antarchy$wallSign()) || state.is(antarchy$peachSign()) || state.is(antarchy$peachWallSign()) - || state.is(antarchy$nadirSign()) || state.is(antarchy$nadirWallSign())) { + || state.is(antarchy$nadirSign()) || state.is(antarchy$nadirWallSign()) + || state.is(antarchy$royalSign()) || state.is(antarchy$royalWallSign()) + || state.is(antarchy$truffaloSign()) || state.is(antarchy$truffaloWallSign())) { cir.setReturnValue(true); } } else if (self == BlockEntityType.HANGING_SIGN) { if (state.is(antarchy$hangingSign()) || state.is(antarchy$wallHangingSign()) || state.is(antarchy$peachHangingSign()) || state.is(antarchy$peachWallHangingSign()) - || state.is(antarchy$nadirHangingSign()) || state.is(antarchy$nadirWallHangingSign())) { + || state.is(antarchy$nadirHangingSign()) || state.is(antarchy$nadirWallHangingSign()) + || state.is(antarchy$royalHangingSign()) || state.is(antarchy$royalWallHangingSign()) + || state.is(antarchy$truffaloHangingSign()) || state.is(antarchy$truffaloWallHangingSign())) { cir.setReturnValue(true); } } @@ -153,6 +173,70 @@ public abstract class BlockEntityTypeSignMixin { return antarchy$nadirWallHangingSign; } + @Unique + private static Block antarchy$royalSign() { + if (antarchy$royalSign == null) { + antarchy$royalSign = antarchy$resolve("royal_sign"); + } + return antarchy$royalSign; + } + + @Unique + private static Block antarchy$royalWallSign() { + if (antarchy$royalWallSign == null) { + antarchy$royalWallSign = antarchy$resolve("royal_wall_sign"); + } + return antarchy$royalWallSign; + } + + @Unique + private static Block antarchy$royalHangingSign() { + if (antarchy$royalHangingSign == null) { + antarchy$royalHangingSign = antarchy$resolve("royal_hanging_sign"); + } + return antarchy$royalHangingSign; + } + + @Unique + private static Block antarchy$royalWallHangingSign() { + if (antarchy$royalWallHangingSign == null) { + antarchy$royalWallHangingSign = antarchy$resolve("royal_wall_hanging_sign"); + } + return antarchy$royalWallHangingSign; + } + + @Unique + private static Block antarchy$truffaloSign() { + if (antarchy$truffaloSign == null) { + antarchy$truffaloSign = antarchy$resolve("truffalo_sign"); + } + return antarchy$truffaloSign; + } + + @Unique + private static Block antarchy$truffaloWallSign() { + if (antarchy$truffaloWallSign == null) { + antarchy$truffaloWallSign = antarchy$resolve("truffalo_wall_sign"); + } + return antarchy$truffaloWallSign; + } + + @Unique + private static Block antarchy$truffaloHangingSign() { + if (antarchy$truffaloHangingSign == null) { + antarchy$truffaloHangingSign = antarchy$resolve("truffalo_hanging_sign"); + } + return antarchy$truffaloHangingSign; + } + + @Unique + private static Block antarchy$truffaloWallHangingSign() { + if (antarchy$truffaloWallHangingSign == null) { + antarchy$truffaloWallHangingSign = antarchy$resolve("truffalo_wall_hanging_sign"); + } + return antarchy$truffaloWallHangingSign; + } + @Unique private static Block antarchy$resolve(String path) { return BuiltInRegistries.BLOCK.get(ResourceLocation.fromNamespaceAndPath(Antarchy.MODID, path)); diff --git a/common-1.21.1/src/main/java/com/craisinlord/antarchy/mixins/LivingEntityJumpingAccessor.java b/common-1.21.1/src/main/java/com/craisinlord/antarchy/mixins/LivingEntityJumpingAccessor.java new file mode 100644 index 00000000..b6535d74 --- /dev/null +++ b/common-1.21.1/src/main/java/com/craisinlord/antarchy/mixins/LivingEntityJumpingAccessor.java @@ -0,0 +1,11 @@ +package com.craisinlord.antarchy.mixins; + +import net.minecraft.world.entity.LivingEntity; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.gen.Accessor; + +@Mixin(LivingEntity.class) +public interface LivingEntityJumpingAccessor { + @Accessor("jumping") + boolean antarchy$isJumping(); +} diff --git a/common-1.21.1/src/main/java/com/craisinlord/antarchy/mixins/PortalGunEntityCollisionMixin.java b/common-1.21.1/src/main/java/com/craisinlord/antarchy/mixins/PortalGunEntityCollisionMixin.java new file mode 100644 index 00000000..f5fa8a2e --- /dev/null +++ b/common-1.21.1/src/main/java/com/craisinlord/antarchy/mixins/PortalGunEntityCollisionMixin.java @@ -0,0 +1,33 @@ +package com.craisinlord.antarchy.mixins; + +import com.craisinlord.antarchy.content.gravity.AntarchyGravityApi; +import com.craisinlord.antarchy.content.portalgun.PortalGunCollisionHelper; +import net.minecraft.world.entity.Entity; +import net.minecraft.world.phys.AABB; +import net.minecraft.world.phys.Vec3; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.Unique; +import org.spongepowered.asm.mixin.injection.At; +import org.spongepowered.asm.mixin.injection.Inject; +import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable; + +@Mixin(Entity.class) +public abstract class PortalGunEntityCollisionMixin { + @Unique + private AABB antarchy$portalGunStartBox; + + @Inject(method = "collide", at = @At("HEAD")) + private void antarchy$capturePortalGunStartBox(Vec3 movement, CallbackInfoReturnable cir) { + this.antarchy$portalGunStartBox = ((Entity) (Object) this).getBoundingBox(); + } + + @Inject(method = "collide", at = @At("RETURN"), cancellable = true) + private void antarchy$restorePortalCrossingMotion(Vec3 movement, CallbackInfoReturnable cir) { + Entity entity = (Entity) (Object) this; + if (this.antarchy$portalGunStartBox == null || AntarchyGravityApi.isGravityInverted(entity)) { + return; + } + Vec3 adjusted = PortalGunCollisionHelper.resolveCollision(entity, this.antarchy$portalGunStartBox, movement, cir.getReturnValue()); + cir.setReturnValue(adjusted); + } +} diff --git a/common-1.21.1/src/main/java/com/craisinlord/antarchy/mixins/PortalGunEntityInWallMixin.java b/common-1.21.1/src/main/java/com/craisinlord/antarchy/mixins/PortalGunEntityInWallMixin.java new file mode 100644 index 00000000..1d0db749 --- /dev/null +++ b/common-1.21.1/src/main/java/com/craisinlord/antarchy/mixins/PortalGunEntityInWallMixin.java @@ -0,0 +1,25 @@ +package com.craisinlord.antarchy.mixins; + +import com.craisinlord.antarchy.content.portalgun.PortalGunPortalEntity; +import net.minecraft.world.entity.Entity; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.injection.At; +import org.spongepowered.asm.mixin.injection.Inject; +import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable; + +@Mixin(Entity.class) +public abstract class PortalGunEntityInWallMixin { + @Inject(method = "isInWall", at = @At("HEAD"), cancellable = true) + private void antarchy$ignorePortalInWall(CallbackInfoReturnable cir) { + Entity entity = (Entity) (Object) this; + if (entity.level() == null) { + return; + } + for (PortalGunPortalEntity portal : entity.level().getEntitiesOfClass(PortalGunPortalEntity.class, entity.getBoundingBox().inflate(2.0D), PortalGunPortalEntity::isAlive)) { + if (portal.intersectsEntityBounds(entity) || portal.getCollisionRemovalAabbForEntity(entity).intersects(entity.getBoundingBox())) { + cir.setReturnValue(false); + return; + } + } + } +} diff --git a/common-1.21.1/src/main/java/com/craisinlord/antarchy/mixins/client/BlockEntityRenderDispatcherPortalMixin.java b/common-1.21.1/src/main/java/com/craisinlord/antarchy/mixins/client/BlockEntityRenderDispatcherPortalMixin.java new file mode 100644 index 00000000..ee695901 --- /dev/null +++ b/common-1.21.1/src/main/java/com/craisinlord/antarchy/mixins/client/BlockEntityRenderDispatcherPortalMixin.java @@ -0,0 +1,39 @@ +package com.craisinlord.antarchy.mixins.client; + +import com.craisinlord.antarchy.content.client.PortalGunPortalRenderState; +import com.craisinlord.antarchy.content.portalgun.PortalGunWorldPortalShape; +import com.mojang.blaze3d.vertex.PoseStack; +import net.minecraft.client.renderer.blockentity.BlockEntityRenderDispatcher; +import net.minecraft.client.renderer.MultiBufferSource; +import net.minecraft.core.BlockPos; +import net.minecraft.world.level.block.entity.BlockEntity; +import net.minecraft.world.phys.AABB; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.injection.At; +import org.spongepowered.asm.mixin.injection.Inject; +import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; +import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable; + +@Mixin(BlockEntityRenderDispatcher.class) +public abstract class BlockEntityRenderDispatcherPortalMixin { + @Inject(method = "render(Lnet/minecraft/world/level/block/entity/BlockEntity;FLcom/mojang/blaze3d/vertex/PoseStack;Lnet/minecraft/client/renderer/MultiBufferSource;)V", at = @At("HEAD"), cancellable = true) + private void antarchy$clipPortalViewBlockEntities(E blockEntity, float partialTick, PoseStack poseStack, MultiBufferSource bufferSource, CallbackInfo ci) { + if (PortalGunPortalRenderState.renderAll() || blockEntity == null || blockEntity.isRemoved()) { + return; + } + PortalGunWorldPortalShape destinationShape = PortalGunPortalRenderState.getDestinationShape(); + PortalGunWorldPortalShape sourceShape = PortalGunPortalRenderState.getSourceShape(); + if (destinationShape == null) { + return; + } + BlockPos pos = blockEntity.getBlockPos(); + AABB bounds = new AABB(pos); + if (!destinationShape.intersectsFront(bounds, 0.1D)) { + ci.cancel(); + return; + } + if (sourceShape != null && sourceShape.intersectsFront(bounds, -0.02D)) { + ci.cancel(); + } + } +} diff --git a/common-1.21.1/src/main/java/com/craisinlord/antarchy/mixins/client/EntityRenderDispatcherPortalMixin.java b/common-1.21.1/src/main/java/com/craisinlord/antarchy/mixins/client/EntityRenderDispatcherPortalMixin.java new file mode 100644 index 00000000..c94aeef5 --- /dev/null +++ b/common-1.21.1/src/main/java/com/craisinlord/antarchy/mixins/client/EntityRenderDispatcherPortalMixin.java @@ -0,0 +1,34 @@ +package com.craisinlord.antarchy.mixins.client; + +import com.craisinlord.antarchy.content.client.PortalGunPortalRenderState; +import com.craisinlord.antarchy.content.portalgun.PortalGunPortalEntity; +import com.craisinlord.antarchy.content.portalgun.PortalGunWorldPortalShape; +import net.minecraft.client.renderer.culling.Frustum; +import net.minecraft.client.renderer.entity.EntityRenderDispatcher; +import net.minecraft.world.entity.Entity; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.injection.At; +import org.spongepowered.asm.mixin.injection.Inject; +import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable; + +@Mixin(EntityRenderDispatcher.class) +public abstract class EntityRenderDispatcherPortalMixin { + @Inject(method = "shouldRender", at = @At("HEAD"), cancellable = true) + private void antarchy$clipPortalViewEntities(E entity, Frustum frustum, double x, double y, double z, CallbackInfoReturnable cir) { + if (PortalGunPortalRenderState.renderAll() || entity instanceof PortalGunPortalEntity) { + return; + } + PortalGunWorldPortalShape destinationShape = PortalGunPortalRenderState.getDestinationShape(); + PortalGunWorldPortalShape sourceShape = PortalGunPortalRenderState.getSourceShape(); + if (destinationShape == null) { + return; + } + if (!destinationShape.intersectsFront(entity.getBoundingBox(), 0.1D)) { + cir.setReturnValue(false); + return; + } + if (sourceShape != null && sourceShape.intersectsFront(entity.getBoundingBox(), -0.02D)) { + cir.setReturnValue(false); + } + } +} diff --git a/common-1.21.1/src/main/java/com/craisinlord/antarchy/mixins/client/HoverboardRiderPoseMixin.java b/common-1.21.1/src/main/java/com/craisinlord/antarchy/mixins/client/HoverboardRiderPoseMixin.java new file mode 100644 index 00000000..bda60ba5 --- /dev/null +++ b/common-1.21.1/src/main/java/com/craisinlord/antarchy/mixins/client/HoverboardRiderPoseMixin.java @@ -0,0 +1,48 @@ +package com.craisinlord.antarchy.mixins.client; + +import com.craisinlord.antarchy.content.entity.HoverboardEntity; +import com.mojang.blaze3d.vertex.PoseStack; +import net.minecraft.client.model.EntityModel; +import net.minecraft.client.renderer.MultiBufferSource; +import net.minecraft.client.renderer.entity.LivingEntityRenderer; +import net.minecraft.world.entity.LivingEntity; +import com.mojang.math.Axis; +import org.objectweb.asm.Opcodes; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.Shadow; +import org.spongepowered.asm.mixin.injection.At; +import org.spongepowered.asm.mixin.injection.Inject; +import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; + +@Mixin(LivingEntityRenderer.class) +public abstract class HoverboardRiderPoseMixin> { + private static final float HOVERBOARD_RIDER_RENDER_YAW = -90.0F; + + @Shadow + public abstract M getModel(); + + @Inject( + method = "setupRotations(Lnet/minecraft/world/entity/LivingEntity;Lcom/mojang/blaze3d/vertex/PoseStack;FFFF)V", + at = @At("TAIL") + ) + private void antarchy$rotateHoverboardRider(T entity, PoseStack poseStack, float ageInTicks, float rotationYaw, float partialTick, float scale, CallbackInfo ci) { + if (entity.getVehicle() instanceof HoverboardEntity) { + poseStack.mulPose(Axis.YP.rotationDegrees(HOVERBOARD_RIDER_RENDER_YAW)); + } + } + + @Inject( + method = "render(Lnet/minecraft/world/entity/LivingEntity;FFLcom/mojang/blaze3d/vertex/PoseStack;Lnet/minecraft/client/renderer/MultiBufferSource;I)V", + at = @At( + value = "FIELD", + target = "Lnet/minecraft/client/model/EntityModel;riding:Z", + opcode = Opcodes.PUTFIELD, + shift = At.Shift.AFTER + ) + ) + private void antarchy$standOnHoverboard(T entity, float entityYaw, float partialTick, PoseStack poseStack, MultiBufferSource bufferSource, int packedLight, CallbackInfo ci) { + if (entity.getVehicle() instanceof HoverboardEntity) { + this.getModel().riding = false; + } + } +} diff --git a/common-1.21.1/src/main/java/com/craisinlord/antarchy/mixins/client/LocalPlayerPortalMixin.java b/common-1.21.1/src/main/java/com/craisinlord/antarchy/mixins/client/LocalPlayerPortalMixin.java new file mode 100644 index 00000000..ec680db5 --- /dev/null +++ b/common-1.21.1/src/main/java/com/craisinlord/antarchy/mixins/client/LocalPlayerPortalMixin.java @@ -0,0 +1,30 @@ +package com.craisinlord.antarchy.mixins.client; + +import com.craisinlord.antarchy.content.client.PortalGunRollClientState; +import net.minecraft.client.Minecraft; +import net.minecraft.client.player.LocalPlayer; +import net.minecraft.core.BlockPos; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.injection.At; +import org.spongepowered.asm.mixin.injection.Inject; +import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; +import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable; + +@Mixin(LocalPlayer.class) +public abstract class LocalPlayerPortalMixin { + @Inject(method = "suffocatesAt", at = @At("HEAD"), cancellable = true) + private void antarchy$ignorePortalSuffocation(BlockPos pos, CallbackInfoReturnable cir) { + Minecraft minecraft = Minecraft.getInstance(); + if (minecraft.player != null && PortalGunRollClientState.isEntityInsidePortal(minecraft, minecraft.player)) { + cir.setReturnValue(false); + } + } + + @Inject(method = "moveTowardsClosestSpace", at = @At("HEAD"), cancellable = true) + private void antarchy$cancelPortalPushOut(double x, double z, CallbackInfo ci) { + Minecraft minecraft = Minecraft.getInstance(); + if (minecraft.player != null && PortalGunRollClientState.isEntityInsidePortal(minecraft, minecraft.player)) { + ci.cancel(); + } + } +} diff --git a/common-1.21.1/src/main/java/com/craisinlord/antarchy/mixins/client/ScreenEffectRendererPortalMixin.java b/common-1.21.1/src/main/java/com/craisinlord/antarchy/mixins/client/ScreenEffectRendererPortalMixin.java new file mode 100644 index 00000000..49327550 --- /dev/null +++ b/common-1.21.1/src/main/java/com/craisinlord/antarchy/mixins/client/ScreenEffectRendererPortalMixin.java @@ -0,0 +1,22 @@ +package com.craisinlord.antarchy.mixins.client; + +import com.craisinlord.antarchy.content.client.PortalGunRollClientState; +import net.minecraft.client.Minecraft; +import net.minecraft.client.renderer.ScreenEffectRenderer; +import net.minecraft.world.entity.player.Player; +import net.minecraft.world.level.block.Blocks; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.injection.At; +import org.spongepowered.asm.mixin.injection.Inject; +import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable; + +@Mixin(ScreenEffectRenderer.class) +public abstract class ScreenEffectRendererPortalMixin { + @Inject(method = "getViewBlockingState", at = @At("HEAD"), cancellable = true) + private static void antarchy$ignorePortalViewBlock(Player player, CallbackInfoReturnable cir) { + Minecraft minecraft = Minecraft.getInstance(); + if (player != null && PortalGunRollClientState.isEntityInsidePortal(minecraft, player)) { + cir.setReturnValue(Blocks.AIR.defaultBlockState()); + } + } +} diff --git a/common-1.21.1/src/main/java/com/craisinlord/antarchy/mixins/gravity/EntityMoveMixin.java b/common-1.21.1/src/main/java/com/craisinlord/antarchy/mixins/gravity/EntityMoveMixin.java index e187d93b..752911cb 100644 --- a/common-1.21.1/src/main/java/com/craisinlord/antarchy/mixins/gravity/EntityMoveMixin.java +++ b/common-1.21.1/src/main/java/com/craisinlord/antarchy/mixins/gravity/EntityMoveMixin.java @@ -4,6 +4,7 @@ import com.craisinlord.antarchy.content.fluid.AntarchyFluidChecks; import com.craisinlord.antarchy.content.gravity.AntarchyGravityApi; import com.craisinlord.antarchy.content.gravity.AntarchyGravityDirection; import com.craisinlord.antarchy.content.gravity.AntarchyGravityRotationUtil; +import com.craisinlord.antarchy.content.portalgun.PortalGunCollisionHelper; import java.util.ArrayList; import java.util.List; import java.util.TreeSet; @@ -174,7 +175,7 @@ public abstract class EntityMoveMixin { float maxUpStep = entity.maxUpStep(); if (!(maxUpStep > 0.0F) || !(pressingIntoCeiling || entity.onGround()) || !(movedX || movedZ)) { - cir.setReturnValue(collided); + cir.setReturnValue(PortalGunCollisionHelper.resolveCollision(entity, aabb, movement, collided)); return; } @@ -193,12 +194,12 @@ public abstract class EntityMoveMixin { Vec3 stepped = Entity.collideBoundingBox(entity, new Vec3(movement.x, -(double) candidate, movement.z), steppedBox, entity.level(), stepShapes); if (stepped.horizontalDistanceSqr() > collided.horizontalDistanceSqr()) { double offset = steppedBox.maxY - aabb.maxY; - cir.setReturnValue(stepped.add(0.0, offset, 0.0)); + cir.setReturnValue(PortalGunCollisionHelper.resolveCollision(entity, aabb, movement, stepped.add(0.0, offset, 0.0))); return; } } - cir.setReturnValue(collided); + cir.setReturnValue(PortalGunCollisionHelper.resolveCollision(entity, aabb, movement, collided)); } @Unique diff --git a/common-1.21.1/src/main/java/com/craisinlord/antarchy/mixins/gravity/client/CameraGravityMixin.java b/common-1.21.1/src/main/java/com/craisinlord/antarchy/mixins/gravity/client/CameraGravityMixin.java index be9f4f46..3481cb58 100644 --- a/common-1.21.1/src/main/java/com/craisinlord/antarchy/mixins/gravity/client/CameraGravityMixin.java +++ b/common-1.21.1/src/main/java/com/craisinlord/antarchy/mixins/gravity/client/CameraGravityMixin.java @@ -1,5 +1,6 @@ package com.craisinlord.antarchy.mixins.gravity.client; +import com.craisinlord.antarchy.content.client.PortalGunRollClientState; import com.craisinlord.antarchy.content.gravity.AntarchyGravityApi; import com.craisinlord.antarchy.content.gravity.AntarchyGravityRotationUtil; import net.minecraft.client.Camera; @@ -128,9 +129,12 @@ public abstract class CameraGravityMixin { return; } if (!AntarchyGravityApi.isGravityInverted(this.entity) && AntarchyGravityApi.getGravityFlipProgress(this.entity, this.antarchy$storedTickDelta) <= 0.0F) { + this.rotation.premul(new Quaternionf().fromAxisAngleDeg(0.0F, 0.0F, -1.0F, PortalGunRollClientState.getRollDegrees(this.antarchy$storedTickDelta))); + this.antarchy$gravityApplied = true; return; } this.rotation.premul(AntarchyGravityRotationUtil.getCameraRotationQuaternion(this.entity, this.antarchy$storedTickDelta)); + this.rotation.premul(new Quaternionf().fromAxisAngleDeg(0.0F, 0.0F, -1.0F, PortalGunRollClientState.getRollDegrees(this.antarchy$storedTickDelta))); this.antarchy$gravityApplied = true; } } diff --git a/common-1.21.1/src/main/resources/antarchy-common.mixins.json b/common-1.21.1/src/main/resources/antarchy-common.mixins.json index 948c2d00..743fd7db 100644 --- a/common-1.21.1/src/main/resources/antarchy-common.mixins.json +++ b/common-1.21.1/src/main/resources/antarchy-common.mixins.json @@ -5,6 +5,7 @@ "compatibilityLevel": "JAVA_21", "mixins": [ "AbstractMinecartMixin", + "AbstractArrowAccessor", "AccessorFireBlock", "AccessorRangedAttribute", "AmericanFoodConsumeMixin", @@ -27,6 +28,7 @@ "GlowSquidLumenSpawnMixin", "GlowVinesUnderLeavesMixin", "GrindstoneMenuMixin", + "LivingEntityJumpingAccessor", "MantisClawWallClimbMixin", "MilkBucketSizeResetMixin", "MinecartItemMixin", @@ -35,6 +37,8 @@ "NightmareSwordDamageMixin", "NightmareArmorEffectImmunityMixin", "PotionBrewingMixin", + "PortalGunEntityCollisionMixin", + "PortalGunEntityInWallMixin", "RedStoneWireBlockMixin", "StinkyCrouchMixin", "VillagerTradesMixin", @@ -78,9 +82,11 @@ ], "client": [ "client.AbstractMinecartRendererMixin", + "client.BlockEntityRenderDispatcherPortalMixin", "client.EntityLightProbeMixin", "client.CustomBossBarMixin", "client.DimensionMusicMixin", + "client.EntityRenderDispatcherPortalMixin", "client.CavarynSkyMixin", "client.CavarynHordeFogMixin", "client.CavarynHordeLightTextureMixin", @@ -93,8 +99,11 @@ "client.LightningBoltRendererMixin", "client.MountedVehicleCameraMixin", "client.ParalyzedMouseTurnMixin", + "client.LocalPlayerPortalMixin", + "client.ScreenEffectRendererPortalMixin", "client.ScreenEffectRendererFireVisualMixin", "client.GlimmeringTranslucencyMixin", + "client.HoverboardRiderPoseMixin", "client.SplashManagerMixin", "client.ThoraxisFogMixin", "client.TigerEyeArmorHideMixin", diff --git a/common-1.21.1/src/main/resources/assets/antarchy/animations/hoverboard.animation.json b/common-1.21.1/src/main/resources/assets/antarchy/animations/hoverboard.animation.json new file mode 100644 index 00000000..0bf85f4c --- /dev/null +++ b/common-1.21.1/src/main/resources/assets/antarchy/animations/hoverboard.animation.json @@ -0,0 +1,361 @@ +{ + "format_version": "1.8.0", + "animations": { + "idle": { + "loop": true, + "animation_length": 1, + "bones": { + "hoverboard": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.25": { + "post": { + "vector": [0, 0, -9.85] + }, + "lerp_mode": "catmullrom" + }, + "0.7083": { + "post": { + "vector": [0, 0, 7.5] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + } + }, + "position": { + "0.0": { + "post": { + "vector": [0, 2, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [0, 3, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [0, 2, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "disk_front": { + "position": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.6667": { + "post": { + "vector": [0.35282, -2.97918, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "disk_back": { + "position": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [-0.00833, -1.99998, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "motor_right": { + "scale": { + "0.0": { + "post": { + "vector": [1, 1, 1] + }, + "lerp_mode": "catmullrom" + }, + "0.25": { + "post": { + "vector": [1.1, 1, 1.1] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [1, 1, 1] + }, + "lerp_mode": "catmullrom" + }, + "0.75": { + "post": { + "vector": [1.1, 1, 1.1] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [1, 1, 1] + }, + "lerp_mode": "catmullrom" + } + } + }, + "motor_left": { + "scale": { + "0.0": { + "post": { + "vector": [1, 1, 1] + }, + "lerp_mode": "catmullrom" + }, + "0.25": { + "post": { + "vector": [1.1, 1, 1.1] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [1, 1, 1] + }, + "lerp_mode": "catmullrom" + }, + "0.75": { + "post": { + "vector": [1.1, 1, 1.1] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [1, 1, 1] + }, + "lerp_mode": "catmullrom" + } + } + } + } + }, + "move": { + "loop": true, + "animation_length": 1, + "bones": { + "hoverboard": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.25": { + "post": { + "vector": [0, 0, -9.85] + }, + "lerp_mode": "catmullrom" + }, + "0.7083": { + "post": { + "vector": [0, 0, 7.5] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + } + }, + "position": { + "0.0": { + "post": { + "vector": [0, 2, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.125": { + "post": { + "vector": [0, 3.16, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.3333": { + "post": { + "vector": [0, 2.2, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [0, 4, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.7083": { + "post": { + "vector": [0, 2.28, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.875": { + "post": { + "vector": [0, 2.94, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [0, 2, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "disk_front": { + "position": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.6667": { + "post": { + "vector": [0.35282, -2.97918, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "disk_back": { + "position": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [-0.00833, -1.99998, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "motor_right": { + "scale": { + "0.0": { + "post": { + "vector": [1, 1, 1] + }, + "lerp_mode": "catmullrom" + }, + "0.25": { + "post": { + "vector": [1.1, 1, 1.4] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [1, 1, 1] + }, + "lerp_mode": "catmullrom" + }, + "0.75": { + "post": { + "vector": [1.1, 1, 1.4] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [1, 1, 1] + }, + "lerp_mode": "catmullrom" + } + } + }, + "motor_left": { + "scale": { + "0.0": { + "post": { + "vector": [1, 1, 1] + }, + "lerp_mode": "catmullrom" + }, + "0.25": { + "post": { + "vector": [1.1, 1, 1.4] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [1, 1, 1] + }, + "lerp_mode": "catmullrom" + }, + "0.75": { + "post": { + "vector": [1.1, 1, 1.4] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [1, 1, 1] + }, + "lerp_mode": "catmullrom" + } + } + } + } + } + } +} \ No newline at end of file diff --git a/common-1.21.1/src/main/resources/assets/antarchy/animations/portal_gun_portal.animation.json b/common-1.21.1/src/main/resources/assets/antarchy/animations/portal_gun_portal.animation.json index ee9796f3..02c2cc9f 100644 --- a/common-1.21.1/src/main/resources/assets/antarchy/animations/portal_gun_portal.animation.json +++ b/common-1.21.1/src/main/resources/assets/antarchy/animations/portal_gun_portal.animation.json @@ -4,20 +4,7 @@ "idle": { "loop": true, "animation_length": 4.0, - "bones": { - "Portal_Layer": { - "rotation": { - "0.0": {"vector": [0, 0, 0]}, - "4.0": {"vector": [0, 0, 360]} - } - }, - "Portal_Layer2": { - "rotation": { - "0.0": {"vector": [0, 0, 0]}, - "4.0": {"vector": [0, 0, -360]} - } - } - } + "bones": {} }, "open": { "loop": false, diff --git a/common-1.21.1/src/main/resources/assets/antarchy/blockstates/black_truffalo_tuft.json b/common-1.21.1/src/main/resources/assets/antarchy/blockstates/black_truffalo_tuft.json new file mode 100644 index 00000000..e605dcdc --- /dev/null +++ b/common-1.21.1/src/main/resources/assets/antarchy/blockstates/black_truffalo_tuft.json @@ -0,0 +1,7 @@ +{ + "variants": { + "": { + "model": "antarchy:block/truffalo_tuft_black" + } + } +} diff --git a/common-1.21.1/src/main/resources/assets/antarchy/blockstates/blue_truffalo_tuft.json b/common-1.21.1/src/main/resources/assets/antarchy/blockstates/blue_truffalo_tuft.json new file mode 100644 index 00000000..a52b32f3 --- /dev/null +++ b/common-1.21.1/src/main/resources/assets/antarchy/blockstates/blue_truffalo_tuft.json @@ -0,0 +1,7 @@ +{ + "variants": { + "": { + "model": "antarchy:block/truffalo_tuft_blue" + } + } +} diff --git a/common-1.21.1/src/main/resources/assets/antarchy/blockstates/brown_truffalo_tuft.json b/common-1.21.1/src/main/resources/assets/antarchy/blockstates/brown_truffalo_tuft.json new file mode 100644 index 00000000..41cc6cb5 --- /dev/null +++ b/common-1.21.1/src/main/resources/assets/antarchy/blockstates/brown_truffalo_tuft.json @@ -0,0 +1,7 @@ +{ + "variants": { + "": { + "model": "antarchy:block/truffalo_tuft_brown" + } + } +} diff --git a/common-1.21.1/src/main/resources/assets/antarchy/blockstates/cyan_truffalo_tuft.json b/common-1.21.1/src/main/resources/assets/antarchy/blockstates/cyan_truffalo_tuft.json new file mode 100644 index 00000000..7ebbddd6 --- /dev/null +++ b/common-1.21.1/src/main/resources/assets/antarchy/blockstates/cyan_truffalo_tuft.json @@ -0,0 +1,7 @@ +{ + "variants": { + "": { + "model": "antarchy:block/truffalo_tuft_cyan" + } + } +} diff --git a/common-1.21.1/src/main/resources/assets/antarchy/blockstates/gray_truffalo_tuft.json b/common-1.21.1/src/main/resources/assets/antarchy/blockstates/gray_truffalo_tuft.json new file mode 100644 index 00000000..851f95b7 --- /dev/null +++ b/common-1.21.1/src/main/resources/assets/antarchy/blockstates/gray_truffalo_tuft.json @@ -0,0 +1,7 @@ +{ + "variants": { + "": { + "model": "antarchy:block/truffalo_tuft_gray" + } + } +} diff --git a/common-1.21.1/src/main/resources/assets/antarchy/blockstates/green_truffalo_tuft.json b/common-1.21.1/src/main/resources/assets/antarchy/blockstates/green_truffalo_tuft.json new file mode 100644 index 00000000..933f9bb4 --- /dev/null +++ b/common-1.21.1/src/main/resources/assets/antarchy/blockstates/green_truffalo_tuft.json @@ -0,0 +1,7 @@ +{ + "variants": { + "": { + "model": "antarchy:block/truffalo_tuft_green" + } + } +} diff --git a/common-1.21.1/src/main/resources/assets/antarchy/blockstates/light_blue_truffalo_tuft.json b/common-1.21.1/src/main/resources/assets/antarchy/blockstates/light_blue_truffalo_tuft.json new file mode 100644 index 00000000..c6f61e04 --- /dev/null +++ b/common-1.21.1/src/main/resources/assets/antarchy/blockstates/light_blue_truffalo_tuft.json @@ -0,0 +1,7 @@ +{ + "variants": { + "": { + "model": "antarchy:block/truffalo_tuft_light_blue" + } + } +} diff --git a/common-1.21.1/src/main/resources/assets/antarchy/blockstates/light_gray_truffalo_tuft.json b/common-1.21.1/src/main/resources/assets/antarchy/blockstates/light_gray_truffalo_tuft.json new file mode 100644 index 00000000..c577cbd0 --- /dev/null +++ b/common-1.21.1/src/main/resources/assets/antarchy/blockstates/light_gray_truffalo_tuft.json @@ -0,0 +1,7 @@ +{ + "variants": { + "": { + "model": "antarchy:block/truffalo_tuft_light_gray" + } + } +} diff --git a/common-1.21.1/src/main/resources/assets/antarchy/blockstates/lime_truffalo_tuft.json b/common-1.21.1/src/main/resources/assets/antarchy/blockstates/lime_truffalo_tuft.json new file mode 100644 index 00000000..aa33a6ad --- /dev/null +++ b/common-1.21.1/src/main/resources/assets/antarchy/blockstates/lime_truffalo_tuft.json @@ -0,0 +1,7 @@ +{ + "variants": { + "": { + "model": "antarchy:block/truffalo_tuft_lime" + } + } +} diff --git a/common-1.21.1/src/main/resources/assets/antarchy/blockstates/magenta_truffalo_tuft.json b/common-1.21.1/src/main/resources/assets/antarchy/blockstates/magenta_truffalo_tuft.json new file mode 100644 index 00000000..69a63007 --- /dev/null +++ b/common-1.21.1/src/main/resources/assets/antarchy/blockstates/magenta_truffalo_tuft.json @@ -0,0 +1,7 @@ +{ + "variants": { + "": { + "model": "antarchy:block/truffalo_tuft_magenta" + } + } +} diff --git a/common-1.21.1/src/main/resources/assets/antarchy/blockstates/orange_truffalo_tuft.json b/common-1.21.1/src/main/resources/assets/antarchy/blockstates/orange_truffalo_tuft.json new file mode 100644 index 00000000..7c7a51ea --- /dev/null +++ b/common-1.21.1/src/main/resources/assets/antarchy/blockstates/orange_truffalo_tuft.json @@ -0,0 +1,7 @@ +{ + "variants": { + "": { + "model": "antarchy:block/truffalo_tuft_orange" + } + } +} diff --git a/common-1.21.1/src/main/resources/assets/antarchy/blockstates/pink_truffalo_tuft.json b/common-1.21.1/src/main/resources/assets/antarchy/blockstates/pink_truffalo_tuft.json new file mode 100644 index 00000000..5ab5db31 --- /dev/null +++ b/common-1.21.1/src/main/resources/assets/antarchy/blockstates/pink_truffalo_tuft.json @@ -0,0 +1,7 @@ +{ + "variants": { + "": { + "model": "antarchy:block/truffalo_tuft_pink" + } + } +} diff --git a/common-1.21.1/src/main/resources/assets/antarchy/blockstates/potted_royal_sapling.json b/common-1.21.1/src/main/resources/assets/antarchy/blockstates/potted_royal_sapling.json new file mode 100644 index 00000000..7ebf3af3 --- /dev/null +++ b/common-1.21.1/src/main/resources/assets/antarchy/blockstates/potted_royal_sapling.json @@ -0,0 +1,7 @@ +{ + "variants": { + "": { + "model": "antarchy:block/potted_royal_sapling" + } + } +} diff --git a/common-1.21.1/src/main/resources/assets/antarchy/blockstates/potted_truffalo_sapling.json b/common-1.21.1/src/main/resources/assets/antarchy/blockstates/potted_truffalo_sapling.json new file mode 100644 index 00000000..c713772a --- /dev/null +++ b/common-1.21.1/src/main/resources/assets/antarchy/blockstates/potted_truffalo_sapling.json @@ -0,0 +1,7 @@ +{ + "variants": { + "": { + "model": "antarchy:block/potted_truffalo_sapling" + } + } +} diff --git a/common-1.21.1/src/main/resources/assets/antarchy/blockstates/purple_truffalo_tuft.json b/common-1.21.1/src/main/resources/assets/antarchy/blockstates/purple_truffalo_tuft.json new file mode 100644 index 00000000..d6a20a04 --- /dev/null +++ b/common-1.21.1/src/main/resources/assets/antarchy/blockstates/purple_truffalo_tuft.json @@ -0,0 +1,7 @@ +{ + "variants": { + "": { + "model": "antarchy:block/truffalo_tuft_purple" + } + } +} diff --git a/common-1.21.1/src/main/resources/assets/antarchy/blockstates/red_truffalo_tuft.json b/common-1.21.1/src/main/resources/assets/antarchy/blockstates/red_truffalo_tuft.json new file mode 100644 index 00000000..e2e927df --- /dev/null +++ b/common-1.21.1/src/main/resources/assets/antarchy/blockstates/red_truffalo_tuft.json @@ -0,0 +1,7 @@ +{ + "variants": { + "": { + "model": "antarchy:block/truffalo_tuft_red" + } + } +} diff --git a/common-1.21.1/src/main/resources/assets/antarchy/blockstates/royal_button.json b/common-1.21.1/src/main/resources/assets/antarchy/blockstates/royal_button.json new file mode 100644 index 00000000..22d07a2c --- /dev/null +++ b/common-1.21.1/src/main/resources/assets/antarchy/blockstates/royal_button.json @@ -0,0 +1,119 @@ +{ + "variants": { + "face=ceiling,facing=east,powered=false": { + "model": "antarchy:block/royal_button", + "x": 180, + "y": 270 + }, + "face=ceiling,facing=east,powered=true": { + "model": "antarchy:block/royal_button_pressed", + "x": 180, + "y": 270 + }, + "face=ceiling,facing=north,powered=false": { + "model": "antarchy:block/royal_button", + "x": 180, + "y": 180 + }, + "face=ceiling,facing=north,powered=true": { + "model": "antarchy:block/royal_button_pressed", + "x": 180, + "y": 180 + }, + "face=ceiling,facing=south,powered=false": { + "model": "antarchy:block/royal_button", + "x": 180 + }, + "face=ceiling,facing=south,powered=true": { + "model": "antarchy:block/royal_button_pressed", + "x": 180 + }, + "face=ceiling,facing=west,powered=false": { + "model": "antarchy:block/royal_button", + "x": 180, + "y": 90 + }, + "face=ceiling,facing=west,powered=true": { + "model": "antarchy:block/royal_button_pressed", + "x": 180, + "y": 90 + }, + "face=floor,facing=east,powered=false": { + "model": "antarchy:block/royal_button", + "y": 90 + }, + "face=floor,facing=east,powered=true": { + "model": "antarchy:block/royal_button_pressed", + "y": 90 + }, + "face=floor,facing=north,powered=false": { + "model": "antarchy:block/royal_button" + }, + "face=floor,facing=north,powered=true": { + "model": "antarchy:block/royal_button_pressed" + }, + "face=floor,facing=south,powered=false": { + "model": "antarchy:block/royal_button", + "y": 180 + }, + "face=floor,facing=south,powered=true": { + "model": "antarchy:block/royal_button_pressed", + "y": 180 + }, + "face=floor,facing=west,powered=false": { + "model": "antarchy:block/royal_button", + "y": 270 + }, + "face=floor,facing=west,powered=true": { + "model": "antarchy:block/royal_button_pressed", + "y": 270 + }, + "face=wall,facing=east,powered=false": { + "model": "antarchy:block/royal_button", + "uvlock": true, + "x": 90, + "y": 90 + }, + "face=wall,facing=east,powered=true": { + "model": "antarchy:block/royal_button_pressed", + "uvlock": true, + "x": 90, + "y": 90 + }, + "face=wall,facing=north,powered=false": { + "model": "antarchy:block/royal_button", + "uvlock": true, + "x": 90 + }, + "face=wall,facing=north,powered=true": { + "model": "antarchy:block/royal_button_pressed", + "uvlock": true, + "x": 90 + }, + "face=wall,facing=south,powered=false": { + "model": "antarchy:block/royal_button", + "uvlock": true, + "x": 90, + "y": 180 + }, + "face=wall,facing=south,powered=true": { + "model": "antarchy:block/royal_button_pressed", + "uvlock": true, + "x": 90, + "y": 180 + }, + "face=wall,facing=west,powered=false": { + "model": "antarchy:block/royal_button", + "uvlock": true, + "x": 90, + "y": 270 + }, + "face=wall,facing=west,powered=true": { + "model": "antarchy:block/royal_button_pressed", + "uvlock": true, + "x": 90, + "y": 270 + } + } +} + diff --git a/common-1.21.1/src/main/resources/assets/antarchy/blockstates/royal_door.json b/common-1.21.1/src/main/resources/assets/antarchy/blockstates/royal_door.json new file mode 100644 index 00000000..01888cdb --- /dev/null +++ b/common-1.21.1/src/main/resources/assets/antarchy/blockstates/royal_door.json @@ -0,0 +1,125 @@ +{ + "variants": { + "facing=east,half=lower,hinge=left,open=false": { + "model": "antarchy:block/royal_door_bottom_left" + }, + "facing=east,half=lower,hinge=left,open=true": { + "model": "antarchy:block/royal_door_bottom_left_open", + "y": 90 + }, + "facing=east,half=lower,hinge=right,open=false": { + "model": "antarchy:block/royal_door_bottom_right" + }, + "facing=east,half=lower,hinge=right,open=true": { + "model": "antarchy:block/royal_door_bottom_right_open", + "y": 270 + }, + "facing=east,half=upper,hinge=left,open=false": { + "model": "antarchy:block/royal_door_top_left" + }, + "facing=east,half=upper,hinge=left,open=true": { + "model": "antarchy:block/royal_door_top_left_open", + "y": 90 + }, + "facing=east,half=upper,hinge=right,open=false": { + "model": "antarchy:block/royal_door_top_right" + }, + "facing=east,half=upper,hinge=right,open=true": { + "model": "antarchy:block/royal_door_top_right_open", + "y": 270 + }, + "facing=north,half=lower,hinge=left,open=false": { + "model": "antarchy:block/royal_door_bottom_left", + "y": 270 + }, + "facing=north,half=lower,hinge=left,open=true": { + "model": "antarchy:block/royal_door_bottom_left_open" + }, + "facing=north,half=lower,hinge=right,open=false": { + "model": "antarchy:block/royal_door_bottom_right", + "y": 270 + }, + "facing=north,half=lower,hinge=right,open=true": { + "model": "antarchy:block/royal_door_bottom_right_open", + "y": 180 + }, + "facing=north,half=upper,hinge=left,open=false": { + "model": "antarchy:block/royal_door_top_left", + "y": 270 + }, + "facing=north,half=upper,hinge=left,open=true": { + "model": "antarchy:block/royal_door_top_left_open" + }, + "facing=north,half=upper,hinge=right,open=false": { + "model": "antarchy:block/royal_door_top_right", + "y": 270 + }, + "facing=north,half=upper,hinge=right,open=true": { + "model": "antarchy:block/royal_door_top_right_open", + "y": 180 + }, + "facing=south,half=lower,hinge=left,open=false": { + "model": "antarchy:block/royal_door_bottom_left", + "y": 90 + }, + "facing=south,half=lower,hinge=left,open=true": { + "model": "antarchy:block/royal_door_bottom_left_open", + "y": 180 + }, + "facing=south,half=lower,hinge=right,open=false": { + "model": "antarchy:block/royal_door_bottom_right", + "y": 90 + }, + "facing=south,half=lower,hinge=right,open=true": { + "model": "antarchy:block/royal_door_bottom_right_open" + }, + "facing=south,half=upper,hinge=left,open=false": { + "model": "antarchy:block/royal_door_top_left", + "y": 90 + }, + "facing=south,half=upper,hinge=left,open=true": { + "model": "antarchy:block/royal_door_top_left_open", + "y": 180 + }, + "facing=south,half=upper,hinge=right,open=false": { + "model": "antarchy:block/royal_door_top_right", + "y": 90 + }, + "facing=south,half=upper,hinge=right,open=true": { + "model": "antarchy:block/royal_door_top_right_open" + }, + "facing=west,half=lower,hinge=left,open=false": { + "model": "antarchy:block/royal_door_bottom_left", + "y": 180 + }, + "facing=west,half=lower,hinge=left,open=true": { + "model": "antarchy:block/royal_door_bottom_left_open", + "y": 270 + }, + "facing=west,half=lower,hinge=right,open=false": { + "model": "antarchy:block/royal_door_bottom_right", + "y": 180 + }, + "facing=west,half=lower,hinge=right,open=true": { + "model": "antarchy:block/royal_door_bottom_right_open", + "y": 90 + }, + "facing=west,half=upper,hinge=left,open=false": { + "model": "antarchy:block/royal_door_top_left", + "y": 180 + }, + "facing=west,half=upper,hinge=left,open=true": { + "model": "antarchy:block/royal_door_top_left_open", + "y": 270 + }, + "facing=west,half=upper,hinge=right,open=false": { + "model": "antarchy:block/royal_door_top_right", + "y": 180 + }, + "facing=west,half=upper,hinge=right,open=true": { + "model": "antarchy:block/royal_door_top_right_open", + "y": 90 + } + } +} + diff --git a/common-1.21.1/src/main/resources/assets/antarchy/blockstates/royal_fence.json b/common-1.21.1/src/main/resources/assets/antarchy/blockstates/royal_fence.json new file mode 100644 index 00000000..944fe8b0 --- /dev/null +++ b/common-1.21.1/src/main/resources/assets/antarchy/blockstates/royal_fence.json @@ -0,0 +1,49 @@ +{ + "multipart": [ + { + "apply": { + "model": "antarchy:block/royal_fence_post" + } + }, + { + "apply": { + "model": "antarchy:block/royal_fence_side", + "uvlock": true + }, + "when": { + "north": "true" + } + }, + { + "apply": { + "model": "antarchy:block/royal_fence_side", + "uvlock": true, + "y": 90 + }, + "when": { + "east": "true" + } + }, + { + "apply": { + "model": "antarchy:block/royal_fence_side", + "uvlock": true, + "y": 180 + }, + "when": { + "south": "true" + } + }, + { + "apply": { + "model": "antarchy:block/royal_fence_side", + "uvlock": true, + "y": 270 + }, + "when": { + "west": "true" + } + } + ] +} + diff --git a/common-1.21.1/src/main/resources/assets/antarchy/blockstates/royal_fence_gate.json b/common-1.21.1/src/main/resources/assets/antarchy/blockstates/royal_fence_gate.json new file mode 100644 index 00000000..98a8dc44 --- /dev/null +++ b/common-1.21.1/src/main/resources/assets/antarchy/blockstates/royal_fence_gate.json @@ -0,0 +1,81 @@ +{ + "variants": { + "facing=east,in_wall=false,open=false": { + "model": "antarchy:block/royal_fence_gate", + "uvlock": true, + "y": 270 + }, + "facing=east,in_wall=false,open=true": { + "model": "antarchy:block/royal_fence_gate_open", + "uvlock": true, + "y": 270 + }, + "facing=east,in_wall=true,open=false": { + "model": "antarchy:block/royal_fence_gate_wall", + "uvlock": true, + "y": 270 + }, + "facing=east,in_wall=true,open=true": { + "model": "antarchy:block/royal_fence_gate_wall_open", + "uvlock": true, + "y": 270 + }, + "facing=north,in_wall=false,open=false": { + "model": "antarchy:block/royal_fence_gate", + "uvlock": true, + "y": 180 + }, + "facing=north,in_wall=false,open=true": { + "model": "antarchy:block/royal_fence_gate_open", + "uvlock": true, + "y": 180 + }, + "facing=north,in_wall=true,open=false": { + "model": "antarchy:block/royal_fence_gate_wall", + "uvlock": true, + "y": 180 + }, + "facing=north,in_wall=true,open=true": { + "model": "antarchy:block/royal_fence_gate_wall_open", + "uvlock": true, + "y": 180 + }, + "facing=south,in_wall=false,open=false": { + "model": "antarchy:block/royal_fence_gate", + "uvlock": true + }, + "facing=south,in_wall=false,open=true": { + "model": "antarchy:block/royal_fence_gate_open", + "uvlock": true + }, + "facing=south,in_wall=true,open=false": { + "model": "antarchy:block/royal_fence_gate_wall", + "uvlock": true + }, + "facing=south,in_wall=true,open=true": { + "model": "antarchy:block/royal_fence_gate_wall_open", + "uvlock": true + }, + "facing=west,in_wall=false,open=false": { + "model": "antarchy:block/royal_fence_gate", + "uvlock": true, + "y": 90 + }, + "facing=west,in_wall=false,open=true": { + "model": "antarchy:block/royal_fence_gate_open", + "uvlock": true, + "y": 90 + }, + "facing=west,in_wall=true,open=false": { + "model": "antarchy:block/royal_fence_gate_wall", + "uvlock": true, + "y": 90 + }, + "facing=west,in_wall=true,open=true": { + "model": "antarchy:block/royal_fence_gate_wall_open", + "uvlock": true, + "y": 90 + } + } +} + diff --git a/common-1.21.1/src/main/resources/assets/antarchy/blockstates/royal_flowering_leaves.json b/common-1.21.1/src/main/resources/assets/antarchy/blockstates/royal_flowering_leaves.json new file mode 100644 index 00000000..1fee65ca --- /dev/null +++ b/common-1.21.1/src/main/resources/assets/antarchy/blockstates/royal_flowering_leaves.json @@ -0,0 +1,5 @@ +{ + "variants": { + "": { "model": "antarchy:block/royal_flowering_leaves" } + } +} diff --git a/common-1.21.1/src/main/resources/assets/antarchy/blockstates/royal_hanging_sign.json b/common-1.21.1/src/main/resources/assets/antarchy/blockstates/royal_hanging_sign.json new file mode 100644 index 00000000..dac9b579 --- /dev/null +++ b/common-1.21.1/src/main/resources/assets/antarchy/blockstates/royal_hanging_sign.json @@ -0,0 +1,7 @@ +{ + "variants": { + "": { + "model": "antarchy:block/royal_hanging_sign" + } + } +} diff --git a/common-1.21.1/src/main/resources/assets/antarchy/blockstates/royal_leaves.json b/common-1.21.1/src/main/resources/assets/antarchy/blockstates/royal_leaves.json new file mode 100644 index 00000000..1fa0e4ca --- /dev/null +++ b/common-1.21.1/src/main/resources/assets/antarchy/blockstates/royal_leaves.json @@ -0,0 +1,5 @@ +{ + "variants": { + "": { "model": "antarchy:block/royal_leaves" } + } +} diff --git a/common-1.21.1/src/main/resources/assets/antarchy/blockstates/royal_log.json b/common-1.21.1/src/main/resources/assets/antarchy/blockstates/royal_log.json new file mode 100644 index 00000000..081bfac7 --- /dev/null +++ b/common-1.21.1/src/main/resources/assets/antarchy/blockstates/royal_log.json @@ -0,0 +1,16 @@ +{ + "variants": { + "axis=x": { + "model": "antarchy:block/royal_log_horizontal", + "x": 90, + "y": 90 + }, + "axis=y": { + "model": "antarchy:block/royal_log" + }, + "axis=z": { + "model": "antarchy:block/royal_log_horizontal", + "x": 90 + } + } +} diff --git a/common-1.21.1/src/main/resources/assets/antarchy/blockstates/royal_planks.json b/common-1.21.1/src/main/resources/assets/antarchy/blockstates/royal_planks.json new file mode 100644 index 00000000..7019354a --- /dev/null +++ b/common-1.21.1/src/main/resources/assets/antarchy/blockstates/royal_planks.json @@ -0,0 +1,7 @@ +{ + "variants": { + "": { + "model": "antarchy:block/royal_planks" + } + } +} diff --git a/common-1.21.1/src/main/resources/assets/antarchy/blockstates/royal_pressure_plate.json b/common-1.21.1/src/main/resources/assets/antarchy/blockstates/royal_pressure_plate.json new file mode 100644 index 00000000..33378daa --- /dev/null +++ b/common-1.21.1/src/main/resources/assets/antarchy/blockstates/royal_pressure_plate.json @@ -0,0 +1,10 @@ +{ + "variants": { + "powered=false": { + "model": "antarchy:block/royal_pressure_plate" + }, + "powered=true": { + "model": "antarchy:block/royal_pressure_plate_down" + } + } +} diff --git a/common-1.21.1/src/main/resources/assets/antarchy/blockstates/royal_sapling.json b/common-1.21.1/src/main/resources/assets/antarchy/blockstates/royal_sapling.json new file mode 100644 index 00000000..022f1ec9 --- /dev/null +++ b/common-1.21.1/src/main/resources/assets/antarchy/blockstates/royal_sapling.json @@ -0,0 +1,7 @@ +{ + "variants": { + "": { + "model": "antarchy:block/royal_sapling" + } + } +} diff --git a/common-1.21.1/src/main/resources/assets/antarchy/blockstates/royal_sign.json b/common-1.21.1/src/main/resources/assets/antarchy/blockstates/royal_sign.json new file mode 100644 index 00000000..dce6c6ab --- /dev/null +++ b/common-1.21.1/src/main/resources/assets/antarchy/blockstates/royal_sign.json @@ -0,0 +1,7 @@ +{ + "variants": { + "": { + "model": "antarchy:block/royal_sign" + } + } +} diff --git a/common-1.21.1/src/main/resources/assets/antarchy/blockstates/royal_slab.json b/common-1.21.1/src/main/resources/assets/antarchy/blockstates/royal_slab.json new file mode 100644 index 00000000..4cbd3f3e --- /dev/null +++ b/common-1.21.1/src/main/resources/assets/antarchy/blockstates/royal_slab.json @@ -0,0 +1,13 @@ +{ + "variants": { + "type=bottom": { + "model": "antarchy:block/royal_slab" + }, + "type=double": { + "model": "antarchy:block/royal_planks" + }, + "type=top": { + "model": "antarchy:block/royal_slab_top" + } + } +} diff --git a/common-1.21.1/src/main/resources/assets/antarchy/blockstates/royal_stairs.json b/common-1.21.1/src/main/resources/assets/antarchy/blockstates/royal_stairs.json new file mode 100644 index 00000000..fb10d2e3 --- /dev/null +++ b/common-1.21.1/src/main/resources/assets/antarchy/blockstates/royal_stairs.json @@ -0,0 +1,210 @@ +{ + "variants": { + "facing=east,half=bottom,shape=inner_left": { + "model": "antarchy:block/royal_stairs_inner", + "uvlock": true, + "y": 270 + }, + "facing=east,half=bottom,shape=inner_right": { + "model": "antarchy:block/royal_stairs_inner" + }, + "facing=east,half=bottom,shape=outer_left": { + "model": "antarchy:block/royal_stairs_outer", + "uvlock": true, + "y": 270 + }, + "facing=east,half=bottom,shape=outer_right": { + "model": "antarchy:block/royal_stairs_outer" + }, + "facing=east,half=bottom,shape=straight": { + "model": "antarchy:block/royal_stairs" + }, + "facing=east,half=top,shape=inner_left": { + "model": "antarchy:block/royal_stairs_inner", + "uvlock": true, + "x": 180 + }, + "facing=east,half=top,shape=inner_right": { + "model": "antarchy:block/royal_stairs_inner", + "uvlock": true, + "x": 180, + "y": 90 + }, + "facing=east,half=top,shape=outer_left": { + "model": "antarchy:block/royal_stairs_outer", + "uvlock": true, + "x": 180 + }, + "facing=east,half=top,shape=outer_right": { + "model": "antarchy:block/royal_stairs_outer", + "uvlock": true, + "x": 180, + "y": 90 + }, + "facing=east,half=top,shape=straight": { + "model": "antarchy:block/royal_stairs", + "uvlock": true, + "x": 180 + }, + "facing=north,half=bottom,shape=inner_left": { + "model": "antarchy:block/royal_stairs_inner", + "uvlock": true, + "y": 180 + }, + "facing=north,half=bottom,shape=inner_right": { + "model": "antarchy:block/royal_stairs_inner", + "uvlock": true, + "y": 270 + }, + "facing=north,half=bottom,shape=outer_left": { + "model": "antarchy:block/royal_stairs_outer", + "uvlock": true, + "y": 180 + }, + "facing=north,half=bottom,shape=outer_right": { + "model": "antarchy:block/royal_stairs_outer", + "uvlock": true, + "y": 270 + }, + "facing=north,half=bottom,shape=straight": { + "model": "antarchy:block/royal_stairs", + "uvlock": true, + "y": 270 + }, + "facing=north,half=top,shape=inner_left": { + "model": "antarchy:block/royal_stairs_inner", + "uvlock": true, + "x": 180, + "y": 270 + }, + "facing=north,half=top,shape=inner_right": { + "model": "antarchy:block/royal_stairs_inner", + "uvlock": true, + "x": 180 + }, + "facing=north,half=top,shape=outer_left": { + "model": "antarchy:block/royal_stairs_outer", + "uvlock": true, + "x": 180, + "y": 270 + }, + "facing=north,half=top,shape=outer_right": { + "model": "antarchy:block/royal_stairs_outer", + "uvlock": true, + "x": 180 + }, + "facing=north,half=top,shape=straight": { + "model": "antarchy:block/royal_stairs", + "uvlock": true, + "x": 180, + "y": 270 + }, + "facing=south,half=bottom,shape=inner_left": { + "model": "antarchy:block/royal_stairs_inner" + }, + "facing=south,half=bottom,shape=inner_right": { + "model": "antarchy:block/royal_stairs_inner", + "uvlock": true, + "y": 90 + }, + "facing=south,half=bottom,shape=outer_left": { + "model": "antarchy:block/royal_stairs_outer" + }, + "facing=south,half=bottom,shape=outer_right": { + "model": "antarchy:block/royal_stairs_outer", + "uvlock": true, + "y": 90 + }, + "facing=south,half=bottom,shape=straight": { + "model": "antarchy:block/royal_stairs", + "uvlock": true, + "y": 90 + }, + "facing=south,half=top,shape=inner_left": { + "model": "antarchy:block/royal_stairs_inner", + "uvlock": true, + "x": 180, + "y": 90 + }, + "facing=south,half=top,shape=inner_right": { + "model": "antarchy:block/royal_stairs_inner", + "uvlock": true, + "x": 180, + "y": 180 + }, + "facing=south,half=top,shape=outer_left": { + "model": "antarchy:block/royal_stairs_outer", + "uvlock": true, + "x": 180, + "y": 90 + }, + "facing=south,half=top,shape=outer_right": { + "model": "antarchy:block/royal_stairs_outer", + "uvlock": true, + "x": 180, + "y": 180 + }, + "facing=south,half=top,shape=straight": { + "model": "antarchy:block/royal_stairs", + "uvlock": true, + "x": 180, + "y": 90 + }, + "facing=west,half=bottom,shape=inner_left": { + "model": "antarchy:block/royal_stairs_inner", + "uvlock": true, + "y": 90 + }, + "facing=west,half=bottom,shape=inner_right": { + "model": "antarchy:block/royal_stairs_inner", + "uvlock": true, + "y": 180 + }, + "facing=west,half=bottom,shape=outer_left": { + "model": "antarchy:block/royal_stairs_outer", + "uvlock": true, + "y": 90 + }, + "facing=west,half=bottom,shape=outer_right": { + "model": "antarchy:block/royal_stairs_outer", + "uvlock": true, + "y": 180 + }, + "facing=west,half=bottom,shape=straight": { + "model": "antarchy:block/royal_stairs", + "uvlock": true, + "y": 180 + }, + "facing=west,half=top,shape=inner_left": { + "model": "antarchy:block/royal_stairs_inner", + "uvlock": true, + "x": 180, + "y": 180 + }, + "facing=west,half=top,shape=inner_right": { + "model": "antarchy:block/royal_stairs_inner", + "uvlock": true, + "x": 180, + "y": 270 + }, + "facing=west,half=top,shape=outer_left": { + "model": "antarchy:block/royal_stairs_outer", + "uvlock": true, + "x": 180, + "y": 180 + }, + "facing=west,half=top,shape=outer_right": { + "model": "antarchy:block/royal_stairs_outer", + "uvlock": true, + "x": 180, + "y": 270 + }, + "facing=west,half=top,shape=straight": { + "model": "antarchy:block/royal_stairs", + "uvlock": true, + "x": 180, + "y": 180 + } + } +} + diff --git a/common-1.21.1/src/main/resources/assets/antarchy/blockstates/royal_trapdoor.json b/common-1.21.1/src/main/resources/assets/antarchy/blockstates/royal_trapdoor.json new file mode 100644 index 00000000..3029c0cb --- /dev/null +++ b/common-1.21.1/src/main/resources/assets/antarchy/blockstates/royal_trapdoor.json @@ -0,0 +1,70 @@ +{ + "variants": { + "facing=east,half=bottom,open=false": { + "model": "antarchy:block/royal_trapdoor_bottom", + "y": 90 + }, + "facing=east,half=bottom,open=true": { + "model": "antarchy:block/royal_trapdoor_open", + "y": 90 + }, + "facing=east,half=top,open=false": { + "model": "antarchy:block/royal_trapdoor_top", + "y": 90 + }, + "facing=east,half=top,open=true": { + "model": "antarchy:block/royal_trapdoor_open", + "x": 180, + "y": 270 + }, + "facing=north,half=bottom,open=false": { + "model": "antarchy:block/royal_trapdoor_bottom" + }, + "facing=north,half=bottom,open=true": { + "model": "antarchy:block/royal_trapdoor_open" + }, + "facing=north,half=top,open=false": { + "model": "antarchy:block/royal_trapdoor_top" + }, + "facing=north,half=top,open=true": { + "model": "antarchy:block/royal_trapdoor_open", + "x": 180, + "y": 180 + }, + "facing=south,half=bottom,open=false": { + "model": "antarchy:block/royal_trapdoor_bottom", + "y": 180 + }, + "facing=south,half=bottom,open=true": { + "model": "antarchy:block/royal_trapdoor_open", + "y": 180 + }, + "facing=south,half=top,open=false": { + "model": "antarchy:block/royal_trapdoor_top", + "y": 180 + }, + "facing=south,half=top,open=true": { + "model": "antarchy:block/royal_trapdoor_open", + "x": 180, + "y": 0 + }, + "facing=west,half=bottom,open=false": { + "model": "antarchy:block/royal_trapdoor_bottom", + "y": 270 + }, + "facing=west,half=bottom,open=true": { + "model": "antarchy:block/royal_trapdoor_open", + "y": 270 + }, + "facing=west,half=top,open=false": { + "model": "antarchy:block/royal_trapdoor_top", + "y": 270 + }, + "facing=west,half=top,open=true": { + "model": "antarchy:block/royal_trapdoor_open", + "x": 180, + "y": 90 + } + } +} + diff --git a/common-1.21.1/src/main/resources/assets/antarchy/blockstates/royal_wall_hanging_sign.json b/common-1.21.1/src/main/resources/assets/antarchy/blockstates/royal_wall_hanging_sign.json new file mode 100644 index 00000000..d47ca965 --- /dev/null +++ b/common-1.21.1/src/main/resources/assets/antarchy/blockstates/royal_wall_hanging_sign.json @@ -0,0 +1,7 @@ +{ + "variants": { + "": { + "model": "antarchy:block/royal_wall_hanging_sign" + } + } +} diff --git a/common-1.21.1/src/main/resources/assets/antarchy/blockstates/royal_wall_sign.json b/common-1.21.1/src/main/resources/assets/antarchy/blockstates/royal_wall_sign.json new file mode 100644 index 00000000..1bd469d0 --- /dev/null +++ b/common-1.21.1/src/main/resources/assets/antarchy/blockstates/royal_wall_sign.json @@ -0,0 +1,7 @@ +{ + "variants": { + "": { + "model": "antarchy:block/royal_wall_sign" + } + } +} diff --git a/common-1.21.1/src/main/resources/assets/antarchy/blockstates/royal_wood.json b/common-1.21.1/src/main/resources/assets/antarchy/blockstates/royal_wood.json new file mode 100644 index 00000000..8c8fbf23 --- /dev/null +++ b/common-1.21.1/src/main/resources/assets/antarchy/blockstates/royal_wood.json @@ -0,0 +1,16 @@ +{ + "variants": { + "axis=x": { + "model": "antarchy:block/royal_wood", + "x": 90, + "y": 90 + }, + "axis=y": { + "model": "antarchy:block/royal_wood" + }, + "axis=z": { + "model": "antarchy:block/royal_wood", + "x": 90 + } + } +} diff --git a/common-1.21.1/src/main/resources/assets/antarchy/blockstates/stripped_royal_log.json b/common-1.21.1/src/main/resources/assets/antarchy/blockstates/stripped_royal_log.json new file mode 100644 index 00000000..cdc9230d --- /dev/null +++ b/common-1.21.1/src/main/resources/assets/antarchy/blockstates/stripped_royal_log.json @@ -0,0 +1,16 @@ +{ + "variants": { + "axis=x": { + "model": "antarchy:block/stripped_royal_log_horizontal", + "x": 90, + "y": 90 + }, + "axis=y": { + "model": "antarchy:block/stripped_royal_log" + }, + "axis=z": { + "model": "antarchy:block/stripped_royal_log_horizontal", + "x": 90 + } + } +} diff --git a/common-1.21.1/src/main/resources/assets/antarchy/blockstates/stripped_royal_wood.json b/common-1.21.1/src/main/resources/assets/antarchy/blockstates/stripped_royal_wood.json new file mode 100644 index 00000000..356657d4 --- /dev/null +++ b/common-1.21.1/src/main/resources/assets/antarchy/blockstates/stripped_royal_wood.json @@ -0,0 +1,7 @@ +{ + "variants": { + "": { + "model": "antarchy:block/stripped_royal_wood" + } + } +} diff --git a/common-1.21.1/src/main/resources/assets/antarchy/blockstates/stripped_truffalo_log.json b/common-1.21.1/src/main/resources/assets/antarchy/blockstates/stripped_truffalo_log.json new file mode 100644 index 00000000..8b18eecb --- /dev/null +++ b/common-1.21.1/src/main/resources/assets/antarchy/blockstates/stripped_truffalo_log.json @@ -0,0 +1,14 @@ +{ + "variants": { + "axis=x": { + "model": "antarchy:block/stripped_truffalo_log_horizontal" + }, + "axis=y": { + "model": "antarchy:block/stripped_truffalo_log" + }, + "axis=z": { + "model": "antarchy:block/stripped_truffalo_log_horizontal", + "y": 90 + } + } +} diff --git a/common-1.21.1/src/main/resources/assets/antarchy/blockstates/stripped_truffalo_wood.json b/common-1.21.1/src/main/resources/assets/antarchy/blockstates/stripped_truffalo_wood.json new file mode 100644 index 00000000..08001920 --- /dev/null +++ b/common-1.21.1/src/main/resources/assets/antarchy/blockstates/stripped_truffalo_wood.json @@ -0,0 +1,7 @@ +{ + "variants": { + "": { + "model": "antarchy:block/stripped_truffalo_wood" + } + } +} diff --git a/common-1.21.1/src/main/resources/assets/antarchy/blockstates/truffalo_button.json b/common-1.21.1/src/main/resources/assets/antarchy/blockstates/truffalo_button.json new file mode 100644 index 00000000..1e026ad1 --- /dev/null +++ b/common-1.21.1/src/main/resources/assets/antarchy/blockstates/truffalo_button.json @@ -0,0 +1,119 @@ +{ + "variants": { + "face=ceiling,facing=east,powered=false": { + "model": "antarchy:block/truffalo_button", + "x": 180, + "y": 270 + }, + "face=ceiling,facing=east,powered=true": { + "model": "antarchy:block/truffalo_button_pressed", + "x": 180, + "y": 270 + }, + "face=ceiling,facing=north,powered=false": { + "model": "antarchy:block/truffalo_button", + "x": 180, + "y": 180 + }, + "face=ceiling,facing=north,powered=true": { + "model": "antarchy:block/truffalo_button_pressed", + "x": 180, + "y": 180 + }, + "face=ceiling,facing=south,powered=false": { + "model": "antarchy:block/truffalo_button", + "x": 180 + }, + "face=ceiling,facing=south,powered=true": { + "model": "antarchy:block/truffalo_button_pressed", + "x": 180 + }, + "face=ceiling,facing=west,powered=false": { + "model": "antarchy:block/truffalo_button", + "x": 180, + "y": 90 + }, + "face=ceiling,facing=west,powered=true": { + "model": "antarchy:block/truffalo_button_pressed", + "x": 180, + "y": 90 + }, + "face=floor,facing=east,powered=false": { + "model": "antarchy:block/truffalo_button", + "y": 90 + }, + "face=floor,facing=east,powered=true": { + "model": "antarchy:block/truffalo_button_pressed", + "y": 90 + }, + "face=floor,facing=north,powered=false": { + "model": "antarchy:block/truffalo_button" + }, + "face=floor,facing=north,powered=true": { + "model": "antarchy:block/truffalo_button_pressed" + }, + "face=floor,facing=south,powered=false": { + "model": "antarchy:block/truffalo_button", + "y": 180 + }, + "face=floor,facing=south,powered=true": { + "model": "antarchy:block/truffalo_button_pressed", + "y": 180 + }, + "face=floor,facing=west,powered=false": { + "model": "antarchy:block/truffalo_button", + "y": 270 + }, + "face=floor,facing=west,powered=true": { + "model": "antarchy:block/truffalo_button_pressed", + "y": 270 + }, + "face=wall,facing=east,powered=false": { + "model": "antarchy:block/truffalo_button", + "uvlock": true, + "x": 90, + "y": 90 + }, + "face=wall,facing=east,powered=true": { + "model": "antarchy:block/truffalo_button_pressed", + "uvlock": true, + "x": 90, + "y": 90 + }, + "face=wall,facing=north,powered=false": { + "model": "antarchy:block/truffalo_button", + "uvlock": true, + "x": 90 + }, + "face=wall,facing=north,powered=true": { + "model": "antarchy:block/truffalo_button_pressed", + "uvlock": true, + "x": 90 + }, + "face=wall,facing=south,powered=false": { + "model": "antarchy:block/truffalo_button", + "uvlock": true, + "x": 90, + "y": 180 + }, + "face=wall,facing=south,powered=true": { + "model": "antarchy:block/truffalo_button_pressed", + "uvlock": true, + "x": 90, + "y": 180 + }, + "face=wall,facing=west,powered=false": { + "model": "antarchy:block/truffalo_button", + "uvlock": true, + "x": 90, + "y": 270 + }, + "face=wall,facing=west,powered=true": { + "model": "antarchy:block/truffalo_button_pressed", + "uvlock": true, + "x": 90, + "y": 270 + } + } +} + diff --git a/common-1.21.1/src/main/resources/assets/antarchy/blockstates/truffalo_door.json b/common-1.21.1/src/main/resources/assets/antarchy/blockstates/truffalo_door.json new file mode 100644 index 00000000..5b247211 --- /dev/null +++ b/common-1.21.1/src/main/resources/assets/antarchy/blockstates/truffalo_door.json @@ -0,0 +1,125 @@ +{ + "variants": { + "facing=east,half=lower,hinge=left,open=false": { + "model": "antarchy:block/truffalo_door_bottom_left" + }, + "facing=east,half=lower,hinge=left,open=true": { + "model": "antarchy:block/truffalo_door_bottom_left_open", + "y": 90 + }, + "facing=east,half=lower,hinge=right,open=false": { + "model": "antarchy:block/truffalo_door_bottom_right" + }, + "facing=east,half=lower,hinge=right,open=true": { + "model": "antarchy:block/truffalo_door_bottom_right_open", + "y": 270 + }, + "facing=east,half=upper,hinge=left,open=false": { + "model": "antarchy:block/truffalo_door_top_left" + }, + "facing=east,half=upper,hinge=left,open=true": { + "model": "antarchy:block/truffalo_door_top_left_open", + "y": 90 + }, + "facing=east,half=upper,hinge=right,open=false": { + "model": "antarchy:block/truffalo_door_top_right" + }, + "facing=east,half=upper,hinge=right,open=true": { + "model": "antarchy:block/truffalo_door_top_right_open", + "y": 270 + }, + "facing=north,half=lower,hinge=left,open=false": { + "model": "antarchy:block/truffalo_door_bottom_left", + "y": 270 + }, + "facing=north,half=lower,hinge=left,open=true": { + "model": "antarchy:block/truffalo_door_bottom_left_open" + }, + "facing=north,half=lower,hinge=right,open=false": { + "model": "antarchy:block/truffalo_door_bottom_right", + "y": 270 + }, + "facing=north,half=lower,hinge=right,open=true": { + "model": "antarchy:block/truffalo_door_bottom_right_open", + "y": 180 + }, + "facing=north,half=upper,hinge=left,open=false": { + "model": "antarchy:block/truffalo_door_top_left", + "y": 270 + }, + "facing=north,half=upper,hinge=left,open=true": { + "model": "antarchy:block/truffalo_door_top_left_open" + }, + "facing=north,half=upper,hinge=right,open=false": { + "model": "antarchy:block/truffalo_door_top_right", + "y": 270 + }, + "facing=north,half=upper,hinge=right,open=true": { + "model": "antarchy:block/truffalo_door_top_right_open", + "y": 180 + }, + "facing=south,half=lower,hinge=left,open=false": { + "model": "antarchy:block/truffalo_door_bottom_left", + "y": 90 + }, + "facing=south,half=lower,hinge=left,open=true": { + "model": "antarchy:block/truffalo_door_bottom_left_open", + "y": 180 + }, + "facing=south,half=lower,hinge=right,open=false": { + "model": "antarchy:block/truffalo_door_bottom_right", + "y": 90 + }, + "facing=south,half=lower,hinge=right,open=true": { + "model": "antarchy:block/truffalo_door_bottom_right_open" + }, + "facing=south,half=upper,hinge=left,open=false": { + "model": "antarchy:block/truffalo_door_top_left", + "y": 90 + }, + "facing=south,half=upper,hinge=left,open=true": { + "model": "antarchy:block/truffalo_door_top_left_open", + "y": 180 + }, + "facing=south,half=upper,hinge=right,open=false": { + "model": "antarchy:block/truffalo_door_top_right", + "y": 90 + }, + "facing=south,half=upper,hinge=right,open=true": { + "model": "antarchy:block/truffalo_door_top_right_open" + }, + "facing=west,half=lower,hinge=left,open=false": { + "model": "antarchy:block/truffalo_door_bottom_left", + "y": 180 + }, + "facing=west,half=lower,hinge=left,open=true": { + "model": "antarchy:block/truffalo_door_bottom_left_open", + "y": 270 + }, + "facing=west,half=lower,hinge=right,open=false": { + "model": "antarchy:block/truffalo_door_bottom_right", + "y": 180 + }, + "facing=west,half=lower,hinge=right,open=true": { + "model": "antarchy:block/truffalo_door_bottom_right_open", + "y": 90 + }, + "facing=west,half=upper,hinge=left,open=false": { + "model": "antarchy:block/truffalo_door_top_left", + "y": 180 + }, + "facing=west,half=upper,hinge=left,open=true": { + "model": "antarchy:block/truffalo_door_top_left_open", + "y": 270 + }, + "facing=west,half=upper,hinge=right,open=false": { + "model": "antarchy:block/truffalo_door_top_right", + "y": 180 + }, + "facing=west,half=upper,hinge=right,open=true": { + "model": "antarchy:block/truffalo_door_top_right_open", + "y": 90 + } + } +} + diff --git a/common-1.21.1/src/main/resources/assets/antarchy/blockstates/truffalo_fence.json b/common-1.21.1/src/main/resources/assets/antarchy/blockstates/truffalo_fence.json new file mode 100644 index 00000000..f6e05b9b --- /dev/null +++ b/common-1.21.1/src/main/resources/assets/antarchy/blockstates/truffalo_fence.json @@ -0,0 +1,49 @@ +{ + "multipart": [ + { + "apply": { + "model": "antarchy:block/truffalo_fence_post" + } + }, + { + "apply": { + "model": "antarchy:block/truffalo_fence_side", + "uvlock": true + }, + "when": { + "north": "true" + } + }, + { + "apply": { + "model": "antarchy:block/truffalo_fence_side", + "uvlock": true, + "y": 90 + }, + "when": { + "east": "true" + } + }, + { + "apply": { + "model": "antarchy:block/truffalo_fence_side", + "uvlock": true, + "y": 180 + }, + "when": { + "south": "true" + } + }, + { + "apply": { + "model": "antarchy:block/truffalo_fence_side", + "uvlock": true, + "y": 270 + }, + "when": { + "west": "true" + } + } + ] +} + diff --git a/common-1.21.1/src/main/resources/assets/antarchy/blockstates/truffalo_fence_gate.json b/common-1.21.1/src/main/resources/assets/antarchy/blockstates/truffalo_fence_gate.json new file mode 100644 index 00000000..af596f37 --- /dev/null +++ b/common-1.21.1/src/main/resources/assets/antarchy/blockstates/truffalo_fence_gate.json @@ -0,0 +1,81 @@ +{ + "variants": { + "facing=east,in_wall=false,open=false": { + "model": "antarchy:block/truffalo_fence_gate", + "uvlock": true, + "y": 270 + }, + "facing=east,in_wall=false,open=true": { + "model": "antarchy:block/truffalo_fence_gate_open", + "uvlock": true, + "y": 270 + }, + "facing=east,in_wall=true,open=false": { + "model": "antarchy:block/truffalo_fence_gate_wall", + "uvlock": true, + "y": 270 + }, + "facing=east,in_wall=true,open=true": { + "model": "antarchy:block/truffalo_fence_gate_wall_open", + "uvlock": true, + "y": 270 + }, + "facing=north,in_wall=false,open=false": { + "model": "antarchy:block/truffalo_fence_gate", + "uvlock": true, + "y": 180 + }, + "facing=north,in_wall=false,open=true": { + "model": "antarchy:block/truffalo_fence_gate_open", + "uvlock": true, + "y": 180 + }, + "facing=north,in_wall=true,open=false": { + "model": "antarchy:block/truffalo_fence_gate_wall", + "uvlock": true, + "y": 180 + }, + "facing=north,in_wall=true,open=true": { + "model": "antarchy:block/truffalo_fence_gate_wall_open", + "uvlock": true, + "y": 180 + }, + "facing=south,in_wall=false,open=false": { + "model": "antarchy:block/truffalo_fence_gate", + "uvlock": true + }, + "facing=south,in_wall=false,open=true": { + "model": "antarchy:block/truffalo_fence_gate_open", + "uvlock": true + }, + "facing=south,in_wall=true,open=false": { + "model": "antarchy:block/truffalo_fence_gate_wall", + "uvlock": true + }, + "facing=south,in_wall=true,open=true": { + "model": "antarchy:block/truffalo_fence_gate_wall_open", + "uvlock": true + }, + "facing=west,in_wall=false,open=false": { + "model": "antarchy:block/truffalo_fence_gate", + "uvlock": true, + "y": 90 + }, + "facing=west,in_wall=false,open=true": { + "model": "antarchy:block/truffalo_fence_gate_open", + "uvlock": true, + "y": 90 + }, + "facing=west,in_wall=true,open=false": { + "model": "antarchy:block/truffalo_fence_gate_wall", + "uvlock": true, + "y": 90 + }, + "facing=west,in_wall=true,open=true": { + "model": "antarchy:block/truffalo_fence_gate_wall_open", + "uvlock": true, + "y": 90 + } + } +} + diff --git a/common-1.21.1/src/main/resources/assets/antarchy/blockstates/truffalo_hanging_sign.json b/common-1.21.1/src/main/resources/assets/antarchy/blockstates/truffalo_hanging_sign.json new file mode 100644 index 00000000..ca9077ec --- /dev/null +++ b/common-1.21.1/src/main/resources/assets/antarchy/blockstates/truffalo_hanging_sign.json @@ -0,0 +1,7 @@ +{ + "variants": { + "": { + "model": "antarchy:block/truffalo_hanging_sign" + } + } +} diff --git a/common-1.21.1/src/main/resources/assets/antarchy/blockstates/truffalo_log.json b/common-1.21.1/src/main/resources/assets/antarchy/blockstates/truffalo_log.json new file mode 100644 index 00000000..1369d404 --- /dev/null +++ b/common-1.21.1/src/main/resources/assets/antarchy/blockstates/truffalo_log.json @@ -0,0 +1,14 @@ +{ + "variants": { + "axis=x": { + "model": "antarchy:block/truffalo_log_horizontal" + }, + "axis=y": { + "model": "antarchy:block/truffalo_log" + }, + "axis=z": { + "model": "antarchy:block/truffalo_log_horizontal", + "y": 90 + } + } +} diff --git a/common-1.21.1/src/main/resources/assets/antarchy/blockstates/truffalo_planks.json b/common-1.21.1/src/main/resources/assets/antarchy/blockstates/truffalo_planks.json new file mode 100644 index 00000000..725a3452 --- /dev/null +++ b/common-1.21.1/src/main/resources/assets/antarchy/blockstates/truffalo_planks.json @@ -0,0 +1,7 @@ +{ + "variants": { + "": { + "model": "antarchy:block/truffalo_planks" + } + } +} diff --git a/common-1.21.1/src/main/resources/assets/antarchy/blockstates/truffalo_pressure_plate.json b/common-1.21.1/src/main/resources/assets/antarchy/blockstates/truffalo_pressure_plate.json new file mode 100644 index 00000000..bced016f --- /dev/null +++ b/common-1.21.1/src/main/resources/assets/antarchy/blockstates/truffalo_pressure_plate.json @@ -0,0 +1,10 @@ +{ + "variants": { + "powered=false": { + "model": "antarchy:block/truffalo_pressure_plate" + }, + "powered=true": { + "model": "antarchy:block/truffalo_pressure_plate_down" + } + } +} diff --git a/common-1.21.1/src/main/resources/assets/antarchy/blockstates/truffalo_sapling.json b/common-1.21.1/src/main/resources/assets/antarchy/blockstates/truffalo_sapling.json new file mode 100644 index 00000000..e35deabc --- /dev/null +++ b/common-1.21.1/src/main/resources/assets/antarchy/blockstates/truffalo_sapling.json @@ -0,0 +1,7 @@ +{ + "variants": { + "": { + "model": "antarchy:block/truffalo_sapling" + } + } +} diff --git a/common-1.21.1/src/main/resources/assets/antarchy/blockstates/truffalo_sign.json b/common-1.21.1/src/main/resources/assets/antarchy/blockstates/truffalo_sign.json new file mode 100644 index 00000000..cc22d4e5 --- /dev/null +++ b/common-1.21.1/src/main/resources/assets/antarchy/blockstates/truffalo_sign.json @@ -0,0 +1,7 @@ +{ + "variants": { + "": { + "model": "antarchy:block/truffalo_sign" + } + } +} diff --git a/common-1.21.1/src/main/resources/assets/antarchy/blockstates/truffalo_slab.json b/common-1.21.1/src/main/resources/assets/antarchy/blockstates/truffalo_slab.json new file mode 100644 index 00000000..2ca5b864 --- /dev/null +++ b/common-1.21.1/src/main/resources/assets/antarchy/blockstates/truffalo_slab.json @@ -0,0 +1,13 @@ +{ + "variants": { + "type=bottom": { + "model": "antarchy:block/truffalo_slab" + }, + "type=double": { + "model": "antarchy:block/truffalo_planks" + }, + "type=top": { + "model": "antarchy:block/truffalo_slab_top" + } + } +} diff --git a/common-1.21.1/src/main/resources/assets/antarchy/blockstates/truffalo_stairs.json b/common-1.21.1/src/main/resources/assets/antarchy/blockstates/truffalo_stairs.json new file mode 100644 index 00000000..9fa999b5 --- /dev/null +++ b/common-1.21.1/src/main/resources/assets/antarchy/blockstates/truffalo_stairs.json @@ -0,0 +1,210 @@ +{ + "variants": { + "facing=east,half=bottom,shape=inner_left": { + "model": "antarchy:block/truffalo_stairs_inner", + "uvlock": true, + "y": 270 + }, + "facing=east,half=bottom,shape=inner_right": { + "model": "antarchy:block/truffalo_stairs_inner" + }, + "facing=east,half=bottom,shape=outer_left": { + "model": "antarchy:block/truffalo_stairs_outer", + "uvlock": true, + "y": 270 + }, + "facing=east,half=bottom,shape=outer_right": { + "model": "antarchy:block/truffalo_stairs_outer" + }, + "facing=east,half=bottom,shape=straight": { + "model": "antarchy:block/truffalo_stairs" + }, + "facing=east,half=top,shape=inner_left": { + "model": "antarchy:block/truffalo_stairs_inner", + "uvlock": true, + "x": 180 + }, + "facing=east,half=top,shape=inner_right": { + "model": "antarchy:block/truffalo_stairs_inner", + "uvlock": true, + "x": 180, + "y": 90 + }, + "facing=east,half=top,shape=outer_left": { + "model": "antarchy:block/truffalo_stairs_outer", + "uvlock": true, + "x": 180 + }, + "facing=east,half=top,shape=outer_right": { + "model": "antarchy:block/truffalo_stairs_outer", + "uvlock": true, + "x": 180, + "y": 90 + }, + "facing=east,half=top,shape=straight": { + "model": "antarchy:block/truffalo_stairs", + "uvlock": true, + "x": 180 + }, + "facing=north,half=bottom,shape=inner_left": { + "model": "antarchy:block/truffalo_stairs_inner", + "uvlock": true, + "y": 180 + }, + "facing=north,half=bottom,shape=inner_right": { + "model": "antarchy:block/truffalo_stairs_inner", + "uvlock": true, + "y": 270 + }, + "facing=north,half=bottom,shape=outer_left": { + "model": "antarchy:block/truffalo_stairs_outer", + "uvlock": true, + "y": 180 + }, + "facing=north,half=bottom,shape=outer_right": { + "model": "antarchy:block/truffalo_stairs_outer", + "uvlock": true, + "y": 270 + }, + "facing=north,half=bottom,shape=straight": { + "model": "antarchy:block/truffalo_stairs", + "uvlock": true, + "y": 270 + }, + "facing=north,half=top,shape=inner_left": { + "model": "antarchy:block/truffalo_stairs_inner", + "uvlock": true, + "x": 180, + "y": 270 + }, + "facing=north,half=top,shape=inner_right": { + "model": "antarchy:block/truffalo_stairs_inner", + "uvlock": true, + "x": 180 + }, + "facing=north,half=top,shape=outer_left": { + "model": "antarchy:block/truffalo_stairs_outer", + "uvlock": true, + "x": 180, + "y": 270 + }, + "facing=north,half=top,shape=outer_right": { + "model": "antarchy:block/truffalo_stairs_outer", + "uvlock": true, + "x": 180 + }, + "facing=north,half=top,shape=straight": { + "model": "antarchy:block/truffalo_stairs", + "uvlock": true, + "x": 180, + "y": 270 + }, + "facing=south,half=bottom,shape=inner_left": { + "model": "antarchy:block/truffalo_stairs_inner" + }, + "facing=south,half=bottom,shape=inner_right": { + "model": "antarchy:block/truffalo_stairs_inner", + "uvlock": true, + "y": 90 + }, + "facing=south,half=bottom,shape=outer_left": { + "model": "antarchy:block/truffalo_stairs_outer" + }, + "facing=south,half=bottom,shape=outer_right": { + "model": "antarchy:block/truffalo_stairs_outer", + "uvlock": true, + "y": 90 + }, + "facing=south,half=bottom,shape=straight": { + "model": "antarchy:block/truffalo_stairs", + "uvlock": true, + "y": 90 + }, + "facing=south,half=top,shape=inner_left": { + "model": "antarchy:block/truffalo_stairs_inner", + "uvlock": true, + "x": 180, + "y": 90 + }, + "facing=south,half=top,shape=inner_right": { + "model": "antarchy:block/truffalo_stairs_inner", + "uvlock": true, + "x": 180, + "y": 180 + }, + "facing=south,half=top,shape=outer_left": { + "model": "antarchy:block/truffalo_stairs_outer", + "uvlock": true, + "x": 180, + "y": 90 + }, + "facing=south,half=top,shape=outer_right": { + "model": "antarchy:block/truffalo_stairs_outer", + "uvlock": true, + "x": 180, + "y": 180 + }, + "facing=south,half=top,shape=straight": { + "model": "antarchy:block/truffalo_stairs", + "uvlock": true, + "x": 180, + "y": 90 + }, + "facing=west,half=bottom,shape=inner_left": { + "model": "antarchy:block/truffalo_stairs_inner", + "uvlock": true, + "y": 90 + }, + "facing=west,half=bottom,shape=inner_right": { + "model": "antarchy:block/truffalo_stairs_inner", + "uvlock": true, + "y": 180 + }, + "facing=west,half=bottom,shape=outer_left": { + "model": "antarchy:block/truffalo_stairs_outer", + "uvlock": true, + "y": 90 + }, + "facing=west,half=bottom,shape=outer_right": { + "model": "antarchy:block/truffalo_stairs_outer", + "uvlock": true, + "y": 180 + }, + "facing=west,half=bottom,shape=straight": { + "model": "antarchy:block/truffalo_stairs", + "uvlock": true, + "y": 180 + }, + "facing=west,half=top,shape=inner_left": { + "model": "antarchy:block/truffalo_stairs_inner", + "uvlock": true, + "x": 180, + "y": 180 + }, + "facing=west,half=top,shape=inner_right": { + "model": "antarchy:block/truffalo_stairs_inner", + "uvlock": true, + "x": 180, + "y": 270 + }, + "facing=west,half=top,shape=outer_left": { + "model": "antarchy:block/truffalo_stairs_outer", + "uvlock": true, + "x": 180, + "y": 180 + }, + "facing=west,half=top,shape=outer_right": { + "model": "antarchy:block/truffalo_stairs_outer", + "uvlock": true, + "x": 180, + "y": 270 + }, + "facing=west,half=top,shape=straight": { + "model": "antarchy:block/truffalo_stairs", + "uvlock": true, + "x": 180, + "y": 180 + } + } +} + diff --git a/common-1.21.1/src/main/resources/assets/antarchy/blockstates/truffalo_trapdoor.json b/common-1.21.1/src/main/resources/assets/antarchy/blockstates/truffalo_trapdoor.json new file mode 100644 index 00000000..b96f1c2c --- /dev/null +++ b/common-1.21.1/src/main/resources/assets/antarchy/blockstates/truffalo_trapdoor.json @@ -0,0 +1,70 @@ +{ + "variants": { + "facing=east,half=bottom,open=false": { + "model": "antarchy:block/truffalo_trapdoor_bottom", + "y": 90 + }, + "facing=east,half=bottom,open=true": { + "model": "antarchy:block/truffalo_trapdoor_open", + "y": 90 + }, + "facing=east,half=top,open=false": { + "model": "antarchy:block/truffalo_trapdoor_top", + "y": 90 + }, + "facing=east,half=top,open=true": { + "model": "antarchy:block/truffalo_trapdoor_open", + "x": 180, + "y": 270 + }, + "facing=north,half=bottom,open=false": { + "model": "antarchy:block/truffalo_trapdoor_bottom" + }, + "facing=north,half=bottom,open=true": { + "model": "antarchy:block/truffalo_trapdoor_open" + }, + "facing=north,half=top,open=false": { + "model": "antarchy:block/truffalo_trapdoor_top" + }, + "facing=north,half=top,open=true": { + "model": "antarchy:block/truffalo_trapdoor_open", + "x": 180, + "y": 180 + }, + "facing=south,half=bottom,open=false": { + "model": "antarchy:block/truffalo_trapdoor_bottom", + "y": 180 + }, + "facing=south,half=bottom,open=true": { + "model": "antarchy:block/truffalo_trapdoor_open", + "y": 180 + }, + "facing=south,half=top,open=false": { + "model": "antarchy:block/truffalo_trapdoor_top", + "y": 180 + }, + "facing=south,half=top,open=true": { + "model": "antarchy:block/truffalo_trapdoor_open", + "x": 180, + "y": 0 + }, + "facing=west,half=bottom,open=false": { + "model": "antarchy:block/truffalo_trapdoor_bottom", + "y": 270 + }, + "facing=west,half=bottom,open=true": { + "model": "antarchy:block/truffalo_trapdoor_open", + "y": 270 + }, + "facing=west,half=top,open=false": { + "model": "antarchy:block/truffalo_trapdoor_top", + "y": 270 + }, + "facing=west,half=top,open=true": { + "model": "antarchy:block/truffalo_trapdoor_open", + "x": 180, + "y": 90 + } + } +} + diff --git a/common-1.21.1/src/main/resources/assets/antarchy/blockstates/truffalo_wall_hanging_sign.json b/common-1.21.1/src/main/resources/assets/antarchy/blockstates/truffalo_wall_hanging_sign.json new file mode 100644 index 00000000..bd349912 --- /dev/null +++ b/common-1.21.1/src/main/resources/assets/antarchy/blockstates/truffalo_wall_hanging_sign.json @@ -0,0 +1,7 @@ +{ + "variants": { + "": { + "model": "antarchy:block/truffalo_wall_hanging_sign" + } + } +} diff --git a/common-1.21.1/src/main/resources/assets/antarchy/blockstates/truffalo_wall_sign.json b/common-1.21.1/src/main/resources/assets/antarchy/blockstates/truffalo_wall_sign.json new file mode 100644 index 00000000..7968d0ee --- /dev/null +++ b/common-1.21.1/src/main/resources/assets/antarchy/blockstates/truffalo_wall_sign.json @@ -0,0 +1,7 @@ +{ + "variants": { + "": { + "model": "antarchy:block/truffalo_wall_sign" + } + } +} diff --git a/common-1.21.1/src/main/resources/assets/antarchy/blockstates/truffalo_wood.json b/common-1.21.1/src/main/resources/assets/antarchy/blockstates/truffalo_wood.json new file mode 100644 index 00000000..16eb8297 --- /dev/null +++ b/common-1.21.1/src/main/resources/assets/antarchy/blockstates/truffalo_wood.json @@ -0,0 +1,16 @@ +{ + "variants": { + "axis=x": { + "model": "antarchy:block/truffalo_wood", + "x": 90, + "y": 90 + }, + "axis=y": { + "model": "antarchy:block/truffalo_wood" + }, + "axis=z": { + "model": "antarchy:block/truffalo_wood", + "x": 90 + } + } +} diff --git a/common-1.21.1/src/main/resources/assets/antarchy/blockstates/white_truffalo_tuft.json b/common-1.21.1/src/main/resources/assets/antarchy/blockstates/white_truffalo_tuft.json new file mode 100644 index 00000000..ae692741 --- /dev/null +++ b/common-1.21.1/src/main/resources/assets/antarchy/blockstates/white_truffalo_tuft.json @@ -0,0 +1,7 @@ +{ + "variants": { + "": { + "model": "antarchy:block/truffalo_tuft_white" + } + } +} diff --git a/common-1.21.1/src/main/resources/assets/antarchy/blockstates/yellow_truffalo_tuft.json b/common-1.21.1/src/main/resources/assets/antarchy/blockstates/yellow_truffalo_tuft.json new file mode 100644 index 00000000..c552abcc --- /dev/null +++ b/common-1.21.1/src/main/resources/assets/antarchy/blockstates/yellow_truffalo_tuft.json @@ -0,0 +1,7 @@ +{ + "variants": { + "": { + "model": "antarchy:block/truffalo_tuft_yellow" + } + } +} diff --git a/common-1.21.1/src/main/resources/assets/antarchy/geo/hoverboard.geo.json b/common-1.21.1/src/main/resources/assets/antarchy/geo/hoverboard.geo.json new file mode 100644 index 00000000..0a140e50 --- /dev/null +++ b/common-1.21.1/src/main/resources/assets/antarchy/geo/hoverboard.geo.json @@ -0,0 +1,75 @@ +{ + "format_version": "1.12.0", + "minecraft:geometry": [ + { + "description": { + "identifier": "geometry.unknown", + "texture_width": 64, + "texture_height": 64, + "visible_bounds_width": 4, + "visible_bounds_height": 2.5, + "visible_bounds_offset": [0, 0.75, 0] + }, + "bones": [ + { + "name": "hoverboard", + "pivot": [0, 5.54167, -1.56398], + "cubes": [ + {"origin": [-4.5, 5, -11], "size": [9, 1, 8], "uv": [0, 0]}, + {"origin": [-2.5, 5, -2], "size": [5, 1, 5], "uv": [34, 12]}, + {"origin": [-9, 5, -15], "size": [3, 1, 8], "pivot": [-9.5, 5.5, -9], "rotation": [0, -22.5, 0], "uv": [0, 35]}, + {"origin": [-10, 5, -13], "size": [1, 1, 2], "pivot": [-9.5, 5.5, -9], "rotation": [0, -22.5, 0], "uv": [44, 21]}, + {"origin": [-9, 6, -18], "size": [3, 0, 3], "pivot": [-9.5, 5.5, -9], "rotation": [0, -22.5, 0], "uv": [18, 44]}, + {"origin": [9, 5, -13], "size": [1, 1, 2], "pivot": [9.5, 5.5, -9], "rotation": [0, 22.5, 0], "uv": [44, 24]}, + {"origin": [6, 6, -18], "size": [3, 0, 3], "pivot": [9.5, 5.5, -9], "rotation": [0, 22.5, 0], "uv": [44, 18]}, + {"origin": [6, 5, -15], "size": [3, 1, 8], "pivot": [9.5, 5.5, -9], "rotation": [0, 22.5, 0], "uv": [22, 35]}, + {"origin": [-3.5, 6, -15], "size": [7, 0, 4], "uv": [-1, 44]}, + {"origin": [-4.5, 5, 4], "size": [9, 1, 8], "uv": [0, 9]}, + {"origin": [-1.5, 9, 13], "size": [3, 1, 5], "uv": [0, 55]}, + {"origin": [-4.5, 5, 13], "size": [9, 4, 3], "uv": [0, 48]}, + {"origin": [-8.5, 5, -6], "size": [2, 4, 4], "uv": [46, 27]}, + {"origin": [6.5, 5, -6], "size": [2, 4, 4], "uv": [46, 27], "mirror": true}, + {"origin": [-5, 4, -6], "size": [0, 4, 4], "pivot": [-5, 6, -4], "rotation": [45, 0, 0], "uv": [36, 31]}, + {"origin": [5, 4, -6], "size": [0, 4, 4], "pivot": [5, 6, -4], "rotation": [45, 0, 0], "uv": [36, 31], "mirror": true} + ] + }, + { + "name": "disk_front", + "parent": "hoverboard", + "pivot": [0, 2, -7], + "cubes": [ + {"origin": [-3.5, 3, -10], "size": [7, 0, 6], "uv": [26, 29]}, + {"origin": [-3.5, 1, -10], "size": [7, 0, 6], "uv": [0, 29]} + ] + }, + { + "name": "disk_back", + "parent": "hoverboard", + "pivot": [0, 2, 8], + "cubes": [ + {"origin": [-3.5, 3, 5], "size": [7, 0, 6], "uv": [34, 6]}, + {"origin": [-3.5, 1, 5], "size": [7, 0, 6], "uv": [34, 0]} + ] + }, + { + "name": "motor_right", + "parent": "hoverboard", + "pivot": [-9.06066, 6.5, 8], + "cubes": [ + {"origin": [-8.5, 5, 4], "size": [3, 3, 8], "pivot": [-7, 6.5, 8], "rotation": [0, 0, -45], "uv": [0, 18], "mirror": true}, + {"origin": [-13.12132, 6.5, 4], "size": [4, 0, 8], "uv": [6, 18], "mirror": true} + ] + }, + { + "name": "motor_left", + "parent": "hoverboard", + "pivot": [9.06066, 6.5, 8], + "cubes": [ + {"origin": [5.5, 5, 4], "size": [3, 3, 8], "pivot": [7, 6.5, 8], "rotation": [0, 0, 45], "uv": [0, 18]}, + {"origin": [9.12132, 6.5, 4], "size": [4, 0, 8], "uv": [6, 18]} + ] + } + ] + } + ] +} \ No newline at end of file diff --git a/common-1.21.1/src/main/resources/assets/antarchy/lang/en_us.json b/common-1.21.1/src/main/resources/assets/antarchy/lang/en_us.json index b731f31c..9d27355f 100644 --- a/common-1.21.1/src/main/resources/assets/antarchy/lang/en_us.json +++ b/common-1.21.1/src/main/resources/assets/antarchy/lang/en_us.json @@ -54,6 +54,56 @@ "block.antarchy.nadir_sapling": "Nadir Sapling", "block.antarchy.nadir_sign": "Nadir Sign", "block.antarchy.nadir_hanging_sign": "Nadir Hanging Sign", + "block.antarchy.royal_log": "Royal Log", + "block.antarchy.royal_wood": "Royal Wood", + "block.antarchy.stripped_royal_log": "Stripped Royal Log", + "block.antarchy.stripped_royal_wood": "Stripped Royal Wood", + "block.antarchy.royal_planks": "Royal Planks", + "block.antarchy.royal_stairs": "Royal Stairs", + "block.antarchy.royal_slab": "Royal Slab", + "block.antarchy.royal_fence": "Royal Fence", + "block.antarchy.royal_fence_gate": "Royal Fence Gate", + "block.antarchy.royal_door": "Royal Door", + "block.antarchy.royal_trapdoor": "Royal Trapdoor", + "block.antarchy.royal_pressure_plate": "Royal Pressure Plate", + "block.antarchy.royal_button": "Royal Button", + "block.antarchy.royal_leaves": "Royal Leaves", + "block.antarchy.royal_flowering_leaves": "Flowering Royal Leaves", + "block.antarchy.royal_sapling": "Royal Sapling", + "block.antarchy.royal_sign": "Royal Sign", + "block.antarchy.royal_hanging_sign": "Royal Hanging Sign", + "block.antarchy.truffalo_log": "Truffalo Log", + "block.antarchy.truffalo_wood": "Truffalo Wood", + "block.antarchy.stripped_truffalo_log": "Stripped Truffalo Log", + "block.antarchy.stripped_truffalo_wood": "Stripped Truffalo Wood", + "block.antarchy.truffalo_planks": "Truffalo Planks", + "block.antarchy.truffalo_stairs": "Truffalo Stairs", + "block.antarchy.truffalo_slab": "Truffalo Slab", + "block.antarchy.truffalo_fence": "Truffalo Fence", + "block.antarchy.truffalo_fence_gate": "Truffalo Fence Gate", + "block.antarchy.truffalo_door": "Truffalo Door", + "block.antarchy.truffalo_trapdoor": "Truffalo Trapdoor", + "block.antarchy.truffalo_pressure_plate": "Truffalo Pressure Plate", + "block.antarchy.truffalo_button": "Truffalo Button", + "block.antarchy.truffalo_sapling": "Truffalo Sapling", + "block.antarchy.truffalo_sign": "Truffalo Sign", + "block.antarchy.truffalo_hanging_sign": "Truffalo Hanging Sign", + "block.antarchy.white_truffalo_tuft": "White Truffalo Tuft", + "block.antarchy.orange_truffalo_tuft": "Orange Truffalo Tuft", + "block.antarchy.magenta_truffalo_tuft": "Magenta Truffalo Tuft", + "block.antarchy.light_blue_truffalo_tuft": "Light Blue Truffalo Tuft", + "block.antarchy.yellow_truffalo_tuft": "Yellow Truffalo Tuft", + "block.antarchy.lime_truffalo_tuft": "Lime Truffalo Tuft", + "block.antarchy.pink_truffalo_tuft": "Pink Truffalo Tuft", + "block.antarchy.gray_truffalo_tuft": "Gray Truffalo Tuft", + "block.antarchy.light_gray_truffalo_tuft": "Light Gray Truffalo Tuft", + "block.antarchy.cyan_truffalo_tuft": "Cyan Truffalo Tuft", + "block.antarchy.purple_truffalo_tuft": "Purple Truffalo Tuft", + "block.antarchy.blue_truffalo_tuft": "Blue Truffalo Tuft", + "block.antarchy.brown_truffalo_tuft": "Brown Truffalo Tuft", + "block.antarchy.green_truffalo_tuft": "Green Truffalo Tuft", + "block.antarchy.red_truffalo_tuft": "Red Truffalo Tuft", + "block.antarchy.black_truffalo_tuft": "Black Truffalo Tuft", "block.antarchy.orange_milkweed": "Orange Milkweed", "block.antarchy.pink_milkweed": "Pink Milkweed", "block.antarchy.camellia": "Camellia", @@ -293,6 +343,8 @@ "item.antarchy.giant_lily_pad": "Giant Lily Pad", "item.antarchy.seashell": "Seashell", "item.antarchy.nightmare_scale": "Nightmare Scale", + "item.antarchy.music_disc_underside": "Music Disc", + "jukebox_song.antarchy.underside": "docshrekbot - Underside", "item.antarchy.nightmare_helmet": "Nightmare Helmet", "item.antarchy.nightmare_chestplate": "Nightmare Chestplate", "item.antarchy.nightmare_leggings": "Nightmare Leggings", @@ -358,6 +410,23 @@ "item.antarchy.ouranwood_acorn": "Ouranwood Acorn", "item.antarchy.ouranwood_boat": "Ouranwood Boat", "item.antarchy.ouranwood_chest_boat": "Ouranwood Chest Boat", + "item.antarchy.hoverboard": "Hoverboard", + "item.antarchy.hoverboard_white": "White Hoverboard", + "item.antarchy.hoverboard_orange": "Orange Hoverboard", + "item.antarchy.hoverboard_magenta": "Magenta Hoverboard", + "item.antarchy.hoverboard_light_blue": "Light Blue Hoverboard", + "item.antarchy.hoverboard_yellow": "Yellow Hoverboard", + "item.antarchy.hoverboard_lime": "Lime Hoverboard", + "item.antarchy.hoverboard_pink": "Pink Hoverboard", + "item.antarchy.hoverboard_gray": "Gray Hoverboard", + "item.antarchy.hoverboard_light_gray": "Light Gray Hoverboard", + "item.antarchy.hoverboard_cyan": "Cyan Hoverboard", + "item.antarchy.hoverboard_purple": "Purple Hoverboard", + "item.antarchy.hoverboard_blue": "Blue Hoverboard", + "item.antarchy.hoverboard_brown": "Brown Hoverboard", + "item.antarchy.hoverboard_green": "Green Hoverboard", + "item.antarchy.hoverboard_red": "Red Hoverboard", + "item.antarchy.hoverboard_black": "Black Hoverboard", "item.antarchy.raw_venison": "Raw Venison", "item.antarchy.cooked_venison": "Cooked Venison", "item.antarchy.peach_sapling": "Peach Sapling", @@ -375,6 +444,18 @@ "item.antarchy.nadir_chest_boat": "Nadir Chest Boat", "entity.antarchy.nadir_boat": "Nadir Boat", "entity.antarchy.nadir_chest_boat": "Nadir Chest Boat", + "item.antarchy.royal_sign": "Royal Sign", + "item.antarchy.royal_hanging_sign": "Royal Hanging Sign", + "item.antarchy.royal_boat": "Royal Boat", + "item.antarchy.royal_chest_boat": "Royal Chest Boat", + "entity.antarchy.royal_boat": "Royal Boat", + "entity.antarchy.royal_chest_boat": "Royal Chest Boat", + "item.antarchy.truffalo_sign": "Truffalo Sign", + "item.antarchy.truffalo_hanging_sign": "Truffalo Hanging Sign", + "item.antarchy.truffalo_boat": "Truffalo Boat", + "item.antarchy.truffalo_chest_boat": "Truffalo Chest Boat", + "entity.antarchy.truffalo_boat": "Truffalo Boat", + "entity.antarchy.truffalo_chest_boat": "Truffalo Chest Boat", "item.antarchy.orange_milkweed": "Orange Milkweed", "item.antarchy.pink_milkweed": "Pink Milkweed", "item.antarchy.camellia": "Camellia", diff --git a/common-1.21.1/src/main/resources/assets/antarchy/models/block/magenta_truffalo_tuft.json b/common-1.21.1/src/main/resources/assets/antarchy/models/block/magenta_truffalo_tuft.json new file mode 100644 index 00000000..3ef874db --- /dev/null +++ b/common-1.21.1/src/main/resources/assets/antarchy/models/block/magenta_truffalo_tuft.json @@ -0,0 +1,576 @@ +{ + "parent": "block/block", + "textures": { + "particle": "antarchy:block/truffalo/magenta_truffalo_tuft" + }, + "elements": [ + { + "name": "block", + "from": [0, 0, 0], + "to": [16, 16, 16], + "faces": { + "north": {"uv": [0, 0, 16, 16], "texture": "#all", "cullface": "north", "tintindex": 0}, + "east": {"uv": [0, 0, 16, 16], "texture": "#all", "cullface": "east", "tintindex": 0}, + "south": {"uv": [0, 0, 16, 16], "texture": "#all", "cullface": "south", "tintindex": 0}, + "west": {"uv": [0, 0, 16, 16], "texture": "#all", "cullface": "west", "tintindex": 0}, + "up": {"uv": [0, 0, 16, 16], "texture": "#all", "cullface": "up", "tintindex": 0}, + "down": {"uv": [0, 0, 16, 16], "texture": "#all", "cullface": "down", "tintindex": 0} + } + }, + { + "name": "top", + "from": [8, 20, 3.3], + "to": [8, 21, 13.3], + "rotation": {"angle": 45, "axis": "y", "origin": [8, 18.25, 8.3]}, + "faces": { + "east": {"uv": [3, 2, 13, 1], "rotation": 180, "texture": "#all", "cullface": "up", "tintindex": 0}, + "west": {"uv": [3, 2, 13, 1], "rotation": 180, "texture": "#all", "cullface": "up", "tintindex": 0} + } + }, + { + "name": "top", + "from": [8, 18, 1.3], + "to": [8, 20, 15.3], + "rotation": {"angle": 45, "axis": "y", "origin": [8, 18.25, 8.3]}, + "faces": { + "east": {"uv": [1, 4, 15, 2], "rotation": 180, "texture": "#all", "cullface": "up", "tintindex": 0}, + "west": {"uv": [1, 4, 15, 2], "rotation": 180, "texture": "#all", "cullface": "up", "tintindex": 0} + } + }, + { + "name": "top", + "from": [8, 16, 8.3], + "to": [8, 18, 17.3], + "rotation": {"angle": 45, "axis": "y", "origin": [8, 18.25, 8.3]}, + "faces": { + "east": {"uv": [7, 6, 16, 4], "rotation": 180, "texture": "#all", "cullface": "up", "tintindex": 0}, + "west": {"uv": [7, 6, 16, 4], "rotation": 180, "texture": "#all", "cullface": "up", "tintindex": 0} + } + }, + { + "name": "top", + "from": [8, 16, -0.7], + "to": [8, 18, 8.3], + "rotation": {"angle": 45, "axis": "y", "origin": [8, 18.25, 8.3]}, + "faces": { + "east": {"uv": [0, 6, 9, 4], "rotation": 180, "texture": "#all", "cullface": "up", "tintindex": 0}, + "west": {"uv": [0, 6, 9, 4], "rotation": 180, "texture": "#all", "cullface": "up", "tintindex": 0} + } + }, + { + "name": "top", + "from": [-1, 16, 8.3], + "to": [8, 18, 8.3], + "rotation": {"angle": 45, "axis": "y", "origin": [8, 18.25, 8.3]}, + "faces": { + "north": {"uv": [0, 7, 9, 5], "rotation": 180, "texture": "#all", "cullface": "up", "tintindex": 0}, + "south": {"uv": [0, 7, 9, 5], "rotation": 180, "texture": "#all", "cullface": "up", "tintindex": 0} + } + }, + { + "name": "top", + "from": [3, 20, 8.3], + "to": [13, 21, 8.3], + "rotation": {"angle": 45, "axis": "y", "origin": [8, 18.25, 8.3]}, + "faces": { + "north": {"uv": [4, 3, 14, 2], "rotation": 180, "texture": "#all", "cullface": "up", "tintindex": 0}, + "south": {"uv": [4, 3, 14, 2], "rotation": 180, "texture": "#all", "cullface": "up", "tintindex": 0} + } + }, + { + "name": "top", + "from": [1, 18, 8.3], + "to": [15, 20, 8.3], + "rotation": {"angle": 45, "axis": "y", "origin": [8, 18.25, 8.3]}, + "faces": { + "north": {"uv": [2, 5, 16, 3], "rotation": 180, "texture": "#all", "cullface": "up", "tintindex": 0}, + "south": {"uv": [2, 5, 16, 3], "rotation": 180, "texture": "#all", "cullface": "up", "tintindex": 0} + } + }, + { + "name": "top", + "from": [8, 16, 8.3], + "to": [17, 18, 8.3], + "rotation": {"angle": 45, "axis": "y", "origin": [8, 18.25, 8.3]}, + "faces": { + "north": {"uv": [7, 7, 16, 5], "rotation": 180, "texture": "#all", "cullface": "up", "tintindex": 0}, + "south": {"uv": [7, 7, 16, 5], "rotation": 180, "texture": "#all", "cullface": "up", "tintindex": 0} + } + }, + { + "name": "down", + "from": [8, -5, 3.3], + "to": [8, -4, 13.3], + "rotation": {"angle": -45, "axis": "y", "origin": [8, -2.25, 8.3]}, + "faces": { + "east": {"uv": [4, 15, 14, 14], "texture": "#all", "cullface": "down", "tintindex": 0}, + "west": {"uv": [3, 14, 13, 13], "texture": "#all", "cullface": "down", "tintindex": 0} + } + }, + { + "name": "down", + "from": [8, -4, 1.3], + "to": [8, -2, 15.3], + "rotation": {"angle": -45, "axis": "y", "origin": [8, -2.25, 8.3]}, + "faces": { + "east": {"uv": [1, 14, 15, 12], "texture": "#all", "cullface": "down", "tintindex": 0}, + "west": {"uv": [1, 14, 15, 12], "texture": "#all", "cullface": "down", "tintindex": 0} + } + }, + { + "name": "down", + "from": [8, -2, 8.3], + "to": [8, 0, 17.3], + "rotation": {"angle": -45, "axis": "y", "origin": [8, -2.25, 8.3]}, + "faces": { + "east": {"uv": [7, 6, 16, 4], "texture": "#all", "cullface": "down", "tintindex": 0}, + "west": {"uv": [7, 12, 16, 10], "texture": "#all", "cullface": "down", "tintindex": 0} + } + }, + { + "name": "down", + "from": [8, -2, -0.7], + "to": [8, 0, 8.3], + "rotation": {"angle": -45, "axis": "y", "origin": [8, -2.25, 8.3]}, + "faces": { + "east": {"uv": [0, 6, 9, 4], "texture": "#all", "cullface": "down", "tintindex": 0}, + "west": {"uv": [0, 12, 9, 10], "texture": "#all", "cullface": "down", "tintindex": 0} + } + }, + { + "name": "down", + "from": [8, -2, 8.3], + "to": [17, 0, 8.3], + "rotation": {"angle": -45, "axis": "y", "origin": [8, -2.25, 8.3]}, + "faces": { + "north": {"uv": [0, 13, 9, 11], "texture": "#all", "cullface": "down", "tintindex": 0}, + "south": {"uv": [0, 13, 9, 11], "texture": "#all", "cullface": "down", "tintindex": 0} + } + }, + { + "name": "down", + "from": [3, -5, 8.3], + "to": [13, -4, 8.3], + "rotation": {"angle": -45, "axis": "y", "origin": [8, -2.25, 8.3]}, + "faces": { + "north": {"uv": [4, 3, 14, 2], "texture": "#all", "cullface": "down", "tintindex": 0}, + "south": {"uv": [4, 15, 14, 14], "texture": "#all", "cullface": "down", "tintindex": 0} + } + }, + { + "name": "down", + "from": [1, -4, 8.3], + "to": [15, -2, 8.3], + "rotation": {"angle": -45, "axis": "y", "origin": [8, -2.25, 8.3]}, + "faces": { + "north": {"uv": [2, 5, 16, 3], "texture": "#all", "cullface": "down", "tintindex": 0}, + "south": {"uv": [2, 15, 16, 13], "texture": "#all", "cullface": "down", "tintindex": 0} + } + }, + { + "name": "down", + "from": [-1, -2, 8.3], + "to": [8, 0, 8.3], + "rotation": {"angle": -45, "axis": "y", "origin": [8, -2.25, 8.3]}, + "faces": { + "north": {"uv": [7, 13, 16, 11], "texture": "#all", "cullface": "down", "tintindex": 0}, + "south": {"uv": [7, 13, 16, 11], "texture": "#all", "cullface": "down", "tintindex": 0} + } + }, + { + "name": "west", + "from": [20.25, 7.75, 3.3], + "to": [21.25, 7.75, 13.3], + "rotation": {"angle": 45, "axis": "x", "origin": [18.5, 7.75, 8.3]}, + "faces": { + "up": {"uv": [3, 6, 13, 5], "rotation": 270, "texture": "#all", "cullface": "east", "tintindex": 0}, + "down": {"uv": [3, 6, 13, 5], "rotation": 270, "texture": "#all", "cullface": "east", "tintindex": 0} + } + }, + { + "name": "west", + "from": [18.25, 7.75, 1.3], + "to": [20.25, 7.75, 15.3], + "rotation": {"angle": 45, "axis": "x", "origin": [18.5, 7.75, 8.3]}, + "faces": { + "up": {"uv": [1, 8, 15, 6], "rotation": 270, "texture": "#all", "cullface": "east", "tintindex": 0}, + "down": {"uv": [1, 8, 15, 6], "rotation": 270, "texture": "#all", "cullface": "east", "tintindex": 0} + } + }, + { + "name": "west", + "from": [16.25, 7.75, 8.3], + "to": [18.25, 7.75, 17.3], + "rotation": {"angle": 45, "axis": "x", "origin": [18.5, 7.75, 8.3]}, + "faces": { + "up": {"uv": [7, 10, 16, 8], "rotation": 270, "texture": "#all", "cullface": "east", "tintindex": 0}, + "down": {"uv": [7, 10, 16, 8], "rotation": 270, "texture": "#all", "cullface": "east", "tintindex": 0} + } + }, + { + "name": "west", + "from": [16.25, 7.75, -0.7], + "to": [18.25, 7.75, 8.3], + "rotation": {"angle": 45, "axis": "x", "origin": [18.5, 7.75, 8.3]}, + "faces": { + "up": {"uv": [0, 10, 9, 8], "rotation": 270, "texture": "#all", "cullface": "east", "tintindex": 0}, + "down": {"uv": [0, 10, 9, 8], "rotation": 270, "texture": "#all", "cullface": "east", "tintindex": 0} + } + }, + { + "name": "west", + "from": [16.25, 7.75, 8.3], + "to": [18.25, 16.75, 8.3], + "rotation": {"angle": 45, "axis": "x", "origin": [18.5, 7.75, 8.3]}, + "faces": { + "north": {"uv": [0, 13, 9, 11], "rotation": 90, "texture": "#all", "cullface": "east", "tintindex": 0}, + "south": {"uv": [0, 13, 9, 11], "rotation": 270, "texture": "#all", "cullface": "east", "tintindex": 0} + } + }, + { + "name": "west", + "from": [20.25, 2.75, 8.3], + "to": [21.25, 12.75, 8.3], + "rotation": {"angle": 45, "axis": "x", "origin": [18.5, 7.75, 8.3]}, + "faces": { + "north": {"uv": [1, 9, 11, 8], "rotation": 90, "texture": "#all", "cullface": "east", "tintindex": 0}, + "south": {"uv": [1, 9, 11, 8], "rotation": 270, "texture": "#all", "cullface": "east", "tintindex": 0} + } + }, + { + "name": "west", + "from": [18.25, 0.75, 8.3], + "to": [20.25, 14.75, 8.3], + "rotation": {"angle": 45, "axis": "x", "origin": [18.5, 7.75, 8.3]}, + "faces": { + "north": {"uv": [0, 11, 14, 9], "rotation": 90, "texture": "#all", "cullface": "east", "tintindex": 0}, + "south": {"uv": [0, 11, 14, 9], "rotation": 270, "texture": "#all", "cullface": "east", "tintindex": 0} + } + }, + { + "name": "west", + "from": [16.25, -1.25, 8.3], + "to": [18.25, 7.75, 8.3], + "rotation": {"angle": 45, "axis": "x", "origin": [18.5, 7.75, 8.3]}, + "faces": { + "north": {"uv": [7, 13, 16, 11], "rotation": 90, "texture": "#all", "cullface": "east", "tintindex": 0}, + "south": {"uv": [7, 13, 16, 11], "rotation": 270, "texture": "#all", "cullface": "east", "tintindex": 0} + } + }, + { + "name": "east", + "from": [-5.05, 7.75, 3.3], + "to": [-4.05, 7.75, 13.3], + "rotation": {"angle": -45, "axis": "x", "origin": [-2.8, 7.75, 8.3]}, + "faces": { + "up": {"uv": [3, 6, 13, 5], "rotation": 90, "texture": "#all", "cullface": "west", "tintindex": 0}, + "down": {"uv": [3, 6, 13, 5], "rotation": 90, "texture": "#all", "cullface": "west", "tintindex": 0} + } + }, + { + "name": "east", + "from": [-4.05, 7.75, 1.3], + "to": [-2.05, 7.75, 15.3], + "rotation": {"angle": -45, "axis": "x", "origin": [-2.8, 7.75, 8.3]}, + "faces": { + "up": {"uv": [1, 8, 15, 6], "rotation": 90, "texture": "#all", "cullface": "west", "tintindex": 0}, + "down": {"uv": [1, 8, 15, 6], "rotation": 90, "texture": "#all", "cullface": "west", "tintindex": 0} + } + }, + { + "name": "east", + "from": [-2.05, 7.75, 8.3], + "to": [-0.05, 7.75, 17.3], + "rotation": {"angle": -45, "axis": "x", "origin": [-2.8, 7.75, 8.3]}, + "faces": { + "up": {"uv": [7, 10, 16, 8], "rotation": 90, "texture": "#all", "cullface": "west", "tintindex": 0}, + "down": {"uv": [7, 10, 16, 8], "rotation": 90, "texture": "#all", "cullface": "west", "tintindex": 0} + } + }, + { + "name": "east", + "from": [-2.05, 7.75, -0.7], + "to": [-0.05, 7.75, 8.3], + "rotation": {"angle": -45, "axis": "x", "origin": [-2.8, 7.75, 8.3]}, + "faces": { + "up": {"uv": [0, 10, 9, 8], "rotation": 90, "texture": "#all", "cullface": "west", "tintindex": 0}, + "down": {"uv": [0, 10, 9, 8], "rotation": 90, "texture": "#all", "cullface": "west", "tintindex": 0} + } + }, + { + "name": "east", + "from": [-2.05, -1.25, 8.3], + "to": [-0.05, 7.75, 8.3], + "rotation": {"angle": -45, "axis": "x", "origin": [-2.8, 7.75, 8.3]}, + "faces": { + "north": {"uv": [0, 13, 9, 11], "rotation": 270, "texture": "#all", "cullface": "west", "tintindex": 0}, + "south": {"uv": [0, 13, 9, 11], "rotation": 90, "texture": "#all", "cullface": "west", "tintindex": 0} + } + }, + { + "name": "east", + "from": [-5.05, 2.75, 8.3], + "to": [-4.05, 12.75, 8.3], + "rotation": {"angle": -45, "axis": "x", "origin": [-2.8, 7.75, 8.3]}, + "faces": { + "north": {"uv": [1, 9, 11, 8], "rotation": 270, "texture": "#all", "cullface": "west", "tintindex": 0}, + "south": {"uv": [1, 9, 11, 8], "rotation": 90, "texture": "#all", "cullface": "west", "tintindex": 0} + } + }, + { + "name": "east", + "from": [-4.05, 0.75, 8.3], + "to": [-2.05, 14.75, 8.3], + "rotation": {"angle": -45, "axis": "x", "origin": [-2.8, 7.75, 8.3]}, + "faces": { + "north": {"uv": [0, 11, 14, 9], "rotation": 270, "texture": "#all", "cullface": "west", "tintindex": 0}, + "south": {"uv": [0, 11, 14, 9], "rotation": 90, "texture": "#all", "cullface": "west", "tintindex": 0} + } + }, + { + "name": "east", + "from": [-2.05, 7.75, 8.3], + "to": [-0.05, 16.75, 8.3], + "rotation": {"angle": -45, "axis": "x", "origin": [-2.8, 7.75, 8.3]}, + "faces": { + "north": {"uv": [7, 13, 16, 11], "rotation": 270, "texture": "#all", "cullface": "west", "tintindex": 0}, + "south": {"uv": [7, 13, 16, 11], "rotation": 90, "texture": "#all", "cullface": "west", "tintindex": 0} + } + }, + { + "name": "north", + "from": [8.2, 2.75, -5.05], + "to": [8.2, 12.75, -4.05], + "rotation": {"angle": 45, "axis": "z", "origin": [8.2, 7.75, -2.8]}, + "faces": { + "east": {"uv": [3, 6, 13, 5], "rotation": 270, "texture": "#all", "cullface": "north", "tintindex": 0}, + "west": {"uv": [3, 6, 13, 5], "rotation": 90, "texture": "#all", "cullface": "north", "tintindex": 0} + } + }, + { + "name": "north", + "from": [8.2, 0.75, -4.05], + "to": [8.2, 14.75, -2.05], + "rotation": {"angle": 45, "axis": "z", "origin": [8.2, 7.75, -2.8]}, + "faces": { + "east": {"uv": [1, 8, 15, 6], "rotation": 270, "texture": "#all", "cullface": "north", "tintindex": 0}, + "west": {"uv": [1, 8, 15, 6], "rotation": 90, "texture": "#all", "cullface": "north", "tintindex": 0} + } + }, + { + "name": "north", + "from": [8.2, 7.75, -2.05], + "to": [8.2, 16.75, -0.05], + "rotation": {"angle": 45, "axis": "z", "origin": [8.2, 7.75, -2.8]}, + "faces": { + "east": {"uv": [7, 10, 16, 8], "rotation": 270, "texture": "#all", "cullface": "north", "tintindex": 0}, + "west": {"uv": [7, 10, 16, 8], "rotation": 90, "texture": "#all", "cullface": "north", "tintindex": 0} + } + }, + { + "name": "north", + "from": [8.2, -1.25, -2.05], + "to": [8.2, 7.75, -0.05], + "rotation": {"angle": 45, "axis": "z", "origin": [8.2, 7.75, -2.8]}, + "faces": { + "east": {"uv": [0, 10, 9, 8], "rotation": 270, "texture": "#all", "cullface": "north", "tintindex": 0}, + "west": {"uv": [0, 10, 9, 8], "rotation": 90, "texture": "#all", "cullface": "north", "tintindex": 0} + } + }, + { + "name": "north", + "from": [-0.8, 7.75, -2.05], + "to": [8.2, 7.75, -0.05], + "rotation": {"angle": 45, "axis": "z", "origin": [8.2, 7.75, -2.8]}, + "faces": { + "up": {"uv": [0, 13, 9, 11], "rotation": 180, "texture": "#all", "cullface": "north", "tintindex": 0}, + "down": {"uv": [0, 13, 9, 11], "texture": "#all", "cullface": "north", "tintindex": 0} + } + }, + { + "name": "north", + "from": [3.2, 7.75, -5.05], + "to": [13.2, 7.75, -4.05], + "rotation": {"angle": 45, "axis": "z", "origin": [8.2, 7.75, -2.8]}, + "faces": { + "up": {"uv": [1, 9, 11, 8], "rotation": 180, "texture": "#all", "cullface": "north", "tintindex": 0}, + "down": {"uv": [1, 9, 11, 8], "texture": "#all", "cullface": "north", "tintindex": 0} + } + }, + { + "name": "north", + "from": [1.2, 7.75, -4.05], + "to": [15.2, 7.75, -2.05], + "rotation": {"angle": 45, "axis": "z", "origin": [8.2, 7.75, -2.8]}, + "faces": { + "up": {"uv": [0, 11, 14, 9], "rotation": 180, "texture": "#all", "cullface": "north", "tintindex": 0}, + "down": {"uv": [0, 11, 14, 9], "texture": "#all", "cullface": "north", "tintindex": 0} + } + }, + { + "name": "north", + "from": [8.2, 7.75, -2.05], + "to": [17.2, 7.75, -0.05], + "rotation": {"angle": 45, "axis": "z", "origin": [8.2, 7.75, -2.8]}, + "faces": { + "up": {"uv": [7, 13, 16, 11], "rotation": 180, "texture": "#all", "cullface": "north", "tintindex": 0}, + "down": {"uv": [7, 13, 16, 11], "texture": "#all", "cullface": "north", "tintindex": 0} + } + }, + { + "name": "south", + "from": [8.2, 2.75, 19.95], + "to": [8.2, 12.75, 20.95], + "rotation": {"angle": -45, "axis": "z", "origin": [8.2, 7.75, 18.7]}, + "faces": { + "east": {"uv": [3, 6, 13, 5], "rotation": 90, "texture": "#all", "cullface": "south", "tintindex": 0}, + "west": {"uv": [3, 6, 13, 5], "rotation": 270, "texture": "#all", "cullface": "south", "tintindex": 0} + } + }, + { + "name": "south", + "from": [8.2, 0.75, 17.95], + "to": [8.2, 14.75, 19.95], + "rotation": {"angle": -45, "axis": "z", "origin": [8.2, 7.75, 18.7]}, + "faces": { + "east": {"uv": [1, 8, 15, 6], "rotation": 90, "texture": "#all", "cullface": "south", "tintindex": 0}, + "west": {"uv": [1, 8, 15, 6], "rotation": 270, "texture": "#all", "cullface": "south", "tintindex": 0} + } + }, + { + "name": "south", + "from": [8.2, 7.75, 15.95], + "to": [8.2, 16.75, 17.95], + "rotation": {"angle": -45, "axis": "z", "origin": [8.2, 7.75, 18.7]}, + "faces": { + "east": {"uv": [7, 10, 16, 8], "rotation": 90, "texture": "#all", "cullface": "south", "tintindex": 0}, + "west": {"uv": [7, 10, 16, 8], "rotation": 270, "texture": "#all", "cullface": "south", "tintindex": 0} + } + }, + { + "name": "south", + "from": [8.2, -1.25, 15.95], + "to": [8.2, 7.75, 17.95], + "rotation": {"angle": -45, "axis": "z", "origin": [8.2, 7.75, 18.7]}, + "faces": { + "east": {"uv": [0, 10, 9, 8], "rotation": 90, "texture": "#all", "cullface": "south", "tintindex": 0}, + "west": {"uv": [0, 10, 9, 8], "rotation": 270, "texture": "#all", "cullface": "south", "tintindex": 0} + } + }, + { + "name": "south", + "from": [8.2, 7.75, 15.95], + "to": [17.2, 7.75, 17.95], + "rotation": {"angle": -45, "axis": "z", "origin": [8.2, 7.75, 18.7]}, + "faces": { + "up": {"uv": [0, 13, 9, 11], "texture": "#all", "cullface": "south", "tintindex": 0}, + "down": {"uv": [0, 13, 9, 11], "rotation": 180, "texture": "#all", "cullface": "south", "tintindex": 0} + } + }, + { + "name": "south", + "from": [3.2, 7.75, 19.95], + "to": [13.2, 7.75, 20.95], + "rotation": {"angle": -45, "axis": "z", "origin": [8.2, 7.75, 18.7]}, + "faces": { + "up": {"uv": [1, 9, 11, 8], "texture": "#all", "cullface": "south", "tintindex": 0}, + "down": {"uv": [1, 9, 11, 8], "rotation": 180, "texture": "#all", "cullface": "south", "tintindex": 0} + } + }, + { + "name": "south", + "from": [1.2, 7.75, 17.95], + "to": [15.2, 7.75, 19.95], + "rotation": {"angle": -45, "axis": "z", "origin": [8.2, 7.75, 18.7]}, + "faces": { + "up": {"uv": [0, 11, 14, 9], "texture": "#all", "cullface": "south", "tintindex": 0}, + "down": {"uv": [0, 11, 14, 9], "rotation": 180, "texture": "#all", "cullface": "south", "tintindex": 0} + } + }, + { + "name": "south", + "from": [-0.8, 7.75, 15.95], + "to": [8.2, 7.75, 17.95], + "rotation": {"angle": -45, "axis": "z", "origin": [8.2, 7.75, 18.7]}, + "faces": { + "up": {"uv": [7, 13, 16, 11], "texture": "#all", "cullface": "south", "tintindex": 0}, + "down": {"uv": [7, 13, 16, 11], "rotation": 180, "texture": "#all", "cullface": "south", "tintindex": 0} + } + } + ], + "groups": [ + 0, + { + "name": "top1", + "origin": [8, 18.25, 8], + "color": 0, + "children": [1, 2, 3, 4] + }, + { + "name": "top2", + "origin": [8, 18.25, 8], + "color": 0, + "children": [5, 6, 7, 8] + }, + { + "name": "down1", + "origin": [8, 18.25, 8], + "color": 0, + "children": [9, 10, 11, 12] + }, + { + "name": "down2", + "origin": [8, 18.25, 8], + "color": 0, + "children": [13, 14, 15, 16] + }, + { + "name": "west1", + "origin": [8, 18.25, 8], + "color": 0, + "children": [17, 18, 19, 20] + }, + { + "name": "west2", + "origin": [8, 18.25, 8], + "color": 0, + "children": [21, 22, 23, 24] + }, + { + "name": "east1", + "origin": [8, 18.25, 8], + "color": 0, + "children": [25, 26, 27, 28] + }, + { + "name": "east2", + "origin": [8, 18.25, 8], + "color": 0, + "children": [29, 30, 31, 32] + }, + { + "name": "north", + "origin": [8, 18.25, 8], + "color": 0, + "children": [33, 34, 35, 36] + }, + { + "name": "north2", + "origin": [8, 18.25, 8], + "color": 0, + "children": [37, 38, 39, 40] + }, + { + "name": "south", + "origin": [8, 18.25, 8], + "color": 0, + "children": [41, 42, 43, 44] + }, + { + "name": "south2", + "origin": [8, 18.25, 8], + "color": 0, + "children": [45, 46, 47, 48] + } + ] +} \ No newline at end of file diff --git a/common-1.21.1/src/main/resources/assets/antarchy/models/block/potted_royal_sapling.json b/common-1.21.1/src/main/resources/assets/antarchy/models/block/potted_royal_sapling.json new file mode 100644 index 00000000..3005fa99 --- /dev/null +++ b/common-1.21.1/src/main/resources/assets/antarchy/models/block/potted_royal_sapling.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:block/flower_pot_cross", + "textures": { + "plant": "antarchy:block/royal/royal_sapling" + } +} diff --git a/common-1.21.1/src/main/resources/assets/antarchy/models/block/potted_truffalo_sapling.json b/common-1.21.1/src/main/resources/assets/antarchy/models/block/potted_truffalo_sapling.json new file mode 100644 index 00000000..588cbb79 --- /dev/null +++ b/common-1.21.1/src/main/resources/assets/antarchy/models/block/potted_truffalo_sapling.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:block/flower_pot_cross", + "textures": { + "plant": "antarchy:block/truffalo/truffalo_sapling" + } +} diff --git a/common-1.21.1/src/main/resources/assets/antarchy/models/block/royal_button.json b/common-1.21.1/src/main/resources/assets/antarchy/models/block/royal_button.json new file mode 100644 index 00000000..36e030a1 --- /dev/null +++ b/common-1.21.1/src/main/resources/assets/antarchy/models/block/royal_button.json @@ -0,0 +1,7 @@ +{ + "parent": "minecraft:block/jungle_button", + "textures": { + "texture": "antarchy:block/royal/royal_planks" + } +} + diff --git a/common-1.21.1/src/main/resources/assets/antarchy/models/block/royal_button_inventory.json b/common-1.21.1/src/main/resources/assets/antarchy/models/block/royal_button_inventory.json new file mode 100644 index 00000000..ceffb84e --- /dev/null +++ b/common-1.21.1/src/main/resources/assets/antarchy/models/block/royal_button_inventory.json @@ -0,0 +1,7 @@ +{ + "parent": "minecraft:block/jungle_button_inventory", + "textures": { + "texture": "antarchy:block/royal/royal_planks" + } +} + diff --git a/common-1.21.1/src/main/resources/assets/antarchy/models/block/royal_button_pressed.json b/common-1.21.1/src/main/resources/assets/antarchy/models/block/royal_button_pressed.json new file mode 100644 index 00000000..79c0b4f2 --- /dev/null +++ b/common-1.21.1/src/main/resources/assets/antarchy/models/block/royal_button_pressed.json @@ -0,0 +1,7 @@ +{ + "parent": "minecraft:block/jungle_button_pressed", + "textures": { + "texture": "antarchy:block/royal/royal_planks" + } +} + diff --git a/common-1.21.1/src/main/resources/assets/antarchy/models/block/royal_door_bottom_left.json b/common-1.21.1/src/main/resources/assets/antarchy/models/block/royal_door_bottom_left.json new file mode 100644 index 00000000..09343280 --- /dev/null +++ b/common-1.21.1/src/main/resources/assets/antarchy/models/block/royal_door_bottom_left.json @@ -0,0 +1,8 @@ +{ + "parent": "minecraft:block/jungle_door_bottom_left", + "textures": { + "bottom": "antarchy:block/royal/royal_door_bottom", + "top": "antarchy:block/royal/royal_door_top" + } +} + diff --git a/common-1.21.1/src/main/resources/assets/antarchy/models/block/royal_door_bottom_left_open.json b/common-1.21.1/src/main/resources/assets/antarchy/models/block/royal_door_bottom_left_open.json new file mode 100644 index 00000000..c80e4635 --- /dev/null +++ b/common-1.21.1/src/main/resources/assets/antarchy/models/block/royal_door_bottom_left_open.json @@ -0,0 +1,8 @@ +{ + "parent": "minecraft:block/jungle_door_bottom_left_open", + "textures": { + "bottom": "antarchy:block/royal/royal_door_bottom", + "top": "antarchy:block/royal/royal_door_top" + } +} + diff --git a/common-1.21.1/src/main/resources/assets/antarchy/models/block/royal_door_bottom_right.json b/common-1.21.1/src/main/resources/assets/antarchy/models/block/royal_door_bottom_right.json new file mode 100644 index 00000000..61ad1a23 --- /dev/null +++ b/common-1.21.1/src/main/resources/assets/antarchy/models/block/royal_door_bottom_right.json @@ -0,0 +1,8 @@ +{ + "parent": "minecraft:block/jungle_door_bottom_right", + "textures": { + "bottom": "antarchy:block/royal/royal_door_bottom", + "top": "antarchy:block/royal/royal_door_top" + } +} + diff --git a/common-1.21.1/src/main/resources/assets/antarchy/models/block/royal_door_bottom_right_open.json b/common-1.21.1/src/main/resources/assets/antarchy/models/block/royal_door_bottom_right_open.json new file mode 100644 index 00000000..ae549f13 --- /dev/null +++ b/common-1.21.1/src/main/resources/assets/antarchy/models/block/royal_door_bottom_right_open.json @@ -0,0 +1,8 @@ +{ + "parent": "minecraft:block/jungle_door_bottom_right_open", + "textures": { + "bottom": "antarchy:block/royal/royal_door_bottom", + "top": "antarchy:block/royal/royal_door_top" + } +} + diff --git a/common-1.21.1/src/main/resources/assets/antarchy/models/block/royal_door_top_left.json b/common-1.21.1/src/main/resources/assets/antarchy/models/block/royal_door_top_left.json new file mode 100644 index 00000000..293f2820 --- /dev/null +++ b/common-1.21.1/src/main/resources/assets/antarchy/models/block/royal_door_top_left.json @@ -0,0 +1,8 @@ +{ + "parent": "minecraft:block/jungle_door_top_left", + "textures": { + "bottom": "antarchy:block/royal/royal_door_bottom", + "top": "antarchy:block/royal/royal_door_top" + } +} + diff --git a/common-1.21.1/src/main/resources/assets/antarchy/models/block/royal_door_top_left_open.json b/common-1.21.1/src/main/resources/assets/antarchy/models/block/royal_door_top_left_open.json new file mode 100644 index 00000000..b368a9ce --- /dev/null +++ b/common-1.21.1/src/main/resources/assets/antarchy/models/block/royal_door_top_left_open.json @@ -0,0 +1,8 @@ +{ + "parent": "minecraft:block/jungle_door_top_left_open", + "textures": { + "bottom": "antarchy:block/royal/royal_door_bottom", + "top": "antarchy:block/royal/royal_door_top" + } +} + diff --git a/common-1.21.1/src/main/resources/assets/antarchy/models/block/royal_door_top_right.json b/common-1.21.1/src/main/resources/assets/antarchy/models/block/royal_door_top_right.json new file mode 100644 index 00000000..ea6f79f9 --- /dev/null +++ b/common-1.21.1/src/main/resources/assets/antarchy/models/block/royal_door_top_right.json @@ -0,0 +1,8 @@ +{ + "parent": "minecraft:block/jungle_door_top_right", + "textures": { + "bottom": "antarchy:block/royal/royal_door_bottom", + "top": "antarchy:block/royal/royal_door_top" + } +} + diff --git a/common-1.21.1/src/main/resources/assets/antarchy/models/block/royal_door_top_right_open.json b/common-1.21.1/src/main/resources/assets/antarchy/models/block/royal_door_top_right_open.json new file mode 100644 index 00000000..3931cc09 --- /dev/null +++ b/common-1.21.1/src/main/resources/assets/antarchy/models/block/royal_door_top_right_open.json @@ -0,0 +1,8 @@ +{ + "parent": "minecraft:block/jungle_door_top_right_open", + "textures": { + "bottom": "antarchy:block/royal/royal_door_bottom", + "top": "antarchy:block/royal/royal_door_top" + } +} + diff --git a/common-1.21.1/src/main/resources/assets/antarchy/models/block/royal_fence_gate.json b/common-1.21.1/src/main/resources/assets/antarchy/models/block/royal_fence_gate.json new file mode 100644 index 00000000..11b31689 --- /dev/null +++ b/common-1.21.1/src/main/resources/assets/antarchy/models/block/royal_fence_gate.json @@ -0,0 +1,7 @@ +{ + "parent": "minecraft:block/jungle_fence_gate", + "textures": { + "texture": "antarchy:block/royal/royal_planks" + } +} + diff --git a/common-1.21.1/src/main/resources/assets/antarchy/models/block/royal_fence_gate_open.json b/common-1.21.1/src/main/resources/assets/antarchy/models/block/royal_fence_gate_open.json new file mode 100644 index 00000000..f3d12ece --- /dev/null +++ b/common-1.21.1/src/main/resources/assets/antarchy/models/block/royal_fence_gate_open.json @@ -0,0 +1,7 @@ +{ + "parent": "minecraft:block/jungle_fence_gate_open", + "textures": { + "texture": "antarchy:block/royal/royal_planks" + } +} + diff --git a/common-1.21.1/src/main/resources/assets/antarchy/models/block/royal_fence_gate_wall.json b/common-1.21.1/src/main/resources/assets/antarchy/models/block/royal_fence_gate_wall.json new file mode 100644 index 00000000..b9f32fa1 --- /dev/null +++ b/common-1.21.1/src/main/resources/assets/antarchy/models/block/royal_fence_gate_wall.json @@ -0,0 +1,7 @@ +{ + "parent": "minecraft:block/jungle_fence_gate_wall", + "textures": { + "texture": "antarchy:block/royal/royal_planks" + } +} + diff --git a/common-1.21.1/src/main/resources/assets/antarchy/models/block/royal_fence_gate_wall_open.json b/common-1.21.1/src/main/resources/assets/antarchy/models/block/royal_fence_gate_wall_open.json new file mode 100644 index 00000000..db7fd6fd --- /dev/null +++ b/common-1.21.1/src/main/resources/assets/antarchy/models/block/royal_fence_gate_wall_open.json @@ -0,0 +1,7 @@ +{ + "parent": "minecraft:block/jungle_fence_gate_wall_open", + "textures": { + "texture": "antarchy:block/royal/royal_planks" + } +} + diff --git a/common-1.21.1/src/main/resources/assets/antarchy/models/block/royal_fence_inventory.json b/common-1.21.1/src/main/resources/assets/antarchy/models/block/royal_fence_inventory.json new file mode 100644 index 00000000..fa9f309e --- /dev/null +++ b/common-1.21.1/src/main/resources/assets/antarchy/models/block/royal_fence_inventory.json @@ -0,0 +1,7 @@ +{ + "parent": "minecraft:block/jungle_fence_inventory", + "textures": { + "texture": "antarchy:block/royal/royal_planks" + } +} + diff --git a/common-1.21.1/src/main/resources/assets/antarchy/models/block/royal_fence_post.json b/common-1.21.1/src/main/resources/assets/antarchy/models/block/royal_fence_post.json new file mode 100644 index 00000000..01224b40 --- /dev/null +++ b/common-1.21.1/src/main/resources/assets/antarchy/models/block/royal_fence_post.json @@ -0,0 +1,7 @@ +{ + "parent": "minecraft:block/jungle_fence_post", + "textures": { + "texture": "antarchy:block/royal/royal_planks" + } +} + diff --git a/common-1.21.1/src/main/resources/assets/antarchy/models/block/royal_fence_side.json b/common-1.21.1/src/main/resources/assets/antarchy/models/block/royal_fence_side.json new file mode 100644 index 00000000..3c84fe64 --- /dev/null +++ b/common-1.21.1/src/main/resources/assets/antarchy/models/block/royal_fence_side.json @@ -0,0 +1,7 @@ +{ + "parent": "minecraft:block/jungle_fence_side", + "textures": { + "texture": "antarchy:block/royal/royal_planks" + } +} + diff --git a/common-1.21.1/src/main/resources/assets/antarchy/models/block/royal_flowering_leaves.json b/common-1.21.1/src/main/resources/assets/antarchy/models/block/royal_flowering_leaves.json new file mode 100644 index 00000000..6a43deb3 --- /dev/null +++ b/common-1.21.1/src/main/resources/assets/antarchy/models/block/royal_flowering_leaves.json @@ -0,0 +1,7 @@ +{ + "parent": "minecraft:block/leaves", + "ambientocclusion": false, + "textures": { + "all": "antarchy:block/royal/flowering_royal_leaves" + } +} diff --git a/common-1.21.1/src/main/resources/assets/antarchy/models/block/royal_hanging_sign.json b/common-1.21.1/src/main/resources/assets/antarchy/models/block/royal_hanging_sign.json new file mode 100644 index 00000000..2361c164 --- /dev/null +++ b/common-1.21.1/src/main/resources/assets/antarchy/models/block/royal_hanging_sign.json @@ -0,0 +1,5 @@ +{ + "textures": { + "particle": "antarchy:block/royal/royal_planks" + } +} diff --git a/common-1.21.1/src/main/resources/assets/antarchy/models/block/royal_leaves.json b/common-1.21.1/src/main/resources/assets/antarchy/models/block/royal_leaves.json new file mode 100644 index 00000000..86719f8a --- /dev/null +++ b/common-1.21.1/src/main/resources/assets/antarchy/models/block/royal_leaves.json @@ -0,0 +1,7 @@ +{ + "parent": "minecraft:block/leaves", + "ambientocclusion": false, + "textures": { + "all": "antarchy:block/royal/royal_leaves" + } +} diff --git a/common-1.21.1/src/main/resources/assets/antarchy/models/block/royal_log.json b/common-1.21.1/src/main/resources/assets/antarchy/models/block/royal_log.json new file mode 100644 index 00000000..dbca3e81 --- /dev/null +++ b/common-1.21.1/src/main/resources/assets/antarchy/models/block/royal_log.json @@ -0,0 +1,7 @@ +{ + "parent": "minecraft:block/jungle_log", + "textures": { + "end": "antarchy:block/royal/royal_log_top", + "side": "antarchy:block/royal/royal_log" + } +} diff --git a/common-1.21.1/src/main/resources/assets/antarchy/models/block/royal_log_horizontal.json b/common-1.21.1/src/main/resources/assets/antarchy/models/block/royal_log_horizontal.json new file mode 100644 index 00000000..f82cdd90 --- /dev/null +++ b/common-1.21.1/src/main/resources/assets/antarchy/models/block/royal_log_horizontal.json @@ -0,0 +1,7 @@ +{ + "parent": "minecraft:block/jungle_log_horizontal", + "textures": { + "end": "antarchy:block/royal/royal_log_top", + "side": "antarchy:block/royal/royal_log" + } +} diff --git a/common-1.21.1/src/main/resources/assets/antarchy/models/block/royal_planks.json b/common-1.21.1/src/main/resources/assets/antarchy/models/block/royal_planks.json new file mode 100644 index 00000000..f8e251e2 --- /dev/null +++ b/common-1.21.1/src/main/resources/assets/antarchy/models/block/royal_planks.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:block/cube_all", + "textures": { + "all": "antarchy:block/royal/royal_planks" + } +} diff --git a/common-1.21.1/src/main/resources/assets/antarchy/models/block/royal_pressure_plate.json b/common-1.21.1/src/main/resources/assets/antarchy/models/block/royal_pressure_plate.json new file mode 100644 index 00000000..7a81d495 --- /dev/null +++ b/common-1.21.1/src/main/resources/assets/antarchy/models/block/royal_pressure_plate.json @@ -0,0 +1,7 @@ +{ + "parent": "minecraft:block/jungle_pressure_plate", + "textures": { + "texture": "antarchy:block/royal/royal_planks" + } +} + diff --git a/common-1.21.1/src/main/resources/assets/antarchy/models/block/royal_pressure_plate_down.json b/common-1.21.1/src/main/resources/assets/antarchy/models/block/royal_pressure_plate_down.json new file mode 100644 index 00000000..daffbc5b --- /dev/null +++ b/common-1.21.1/src/main/resources/assets/antarchy/models/block/royal_pressure_plate_down.json @@ -0,0 +1,7 @@ +{ + "parent": "minecraft:block/jungle_pressure_plate_down", + "textures": { + "texture": "antarchy:block/royal/royal_planks" + } +} + diff --git a/common-1.21.1/src/main/resources/assets/antarchy/models/block/royal_sapling.json b/common-1.21.1/src/main/resources/assets/antarchy/models/block/royal_sapling.json new file mode 100644 index 00000000..2b894332 --- /dev/null +++ b/common-1.21.1/src/main/resources/assets/antarchy/models/block/royal_sapling.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:block/cross", + "textures": { + "cross": "antarchy:block/royal/royal_sapling" + } +} diff --git a/common-1.21.1/src/main/resources/assets/antarchy/models/block/royal_sign.json b/common-1.21.1/src/main/resources/assets/antarchy/models/block/royal_sign.json new file mode 100644 index 00000000..8fe4b43a --- /dev/null +++ b/common-1.21.1/src/main/resources/assets/antarchy/models/block/royal_sign.json @@ -0,0 +1,5 @@ +{ + "textures": { + "particle": "antarchy:item/royal_sign" + } +} diff --git a/common-1.21.1/src/main/resources/assets/antarchy/models/block/royal_slab.json b/common-1.21.1/src/main/resources/assets/antarchy/models/block/royal_slab.json new file mode 100644 index 00000000..5ec959ed --- /dev/null +++ b/common-1.21.1/src/main/resources/assets/antarchy/models/block/royal_slab.json @@ -0,0 +1,9 @@ +{ + "parent": "minecraft:block/jungle_slab", + "textures": { + "bottom": "antarchy:block/royal/royal_planks", + "side": "antarchy:block/royal/royal_planks", + "top": "antarchy:block/royal/royal_planks" + } +} + diff --git a/common-1.21.1/src/main/resources/assets/antarchy/models/block/royal_slab_top.json b/common-1.21.1/src/main/resources/assets/antarchy/models/block/royal_slab_top.json new file mode 100644 index 00000000..29c1dc4c --- /dev/null +++ b/common-1.21.1/src/main/resources/assets/antarchy/models/block/royal_slab_top.json @@ -0,0 +1,9 @@ +{ + "parent": "minecraft:block/jungle_slab_top", + "textures": { + "bottom": "antarchy:block/royal/royal_planks", + "side": "antarchy:block/royal/royal_planks", + "top": "antarchy:block/royal/royal_planks" + } +} + diff --git a/common-1.21.1/src/main/resources/assets/antarchy/models/block/royal_stairs.json b/common-1.21.1/src/main/resources/assets/antarchy/models/block/royal_stairs.json new file mode 100644 index 00000000..ee5be360 --- /dev/null +++ b/common-1.21.1/src/main/resources/assets/antarchy/models/block/royal_stairs.json @@ -0,0 +1,9 @@ +{ + "parent": "minecraft:block/jungle_stairs", + "textures": { + "bottom": "antarchy:block/royal/royal_planks", + "side": "antarchy:block/royal/royal_planks", + "top": "antarchy:block/royal/royal_planks" + } +} + diff --git a/common-1.21.1/src/main/resources/assets/antarchy/models/block/royal_stairs_inner.json b/common-1.21.1/src/main/resources/assets/antarchy/models/block/royal_stairs_inner.json new file mode 100644 index 00000000..e7f09bb9 --- /dev/null +++ b/common-1.21.1/src/main/resources/assets/antarchy/models/block/royal_stairs_inner.json @@ -0,0 +1,9 @@ +{ + "parent": "minecraft:block/jungle_stairs_inner", + "textures": { + "bottom": "antarchy:block/royal/royal_planks", + "side": "antarchy:block/royal/royal_planks", + "top": "antarchy:block/royal/royal_planks" + } +} + diff --git a/common-1.21.1/src/main/resources/assets/antarchy/models/block/royal_stairs_outer.json b/common-1.21.1/src/main/resources/assets/antarchy/models/block/royal_stairs_outer.json new file mode 100644 index 00000000..4a1952ab --- /dev/null +++ b/common-1.21.1/src/main/resources/assets/antarchy/models/block/royal_stairs_outer.json @@ -0,0 +1,9 @@ +{ + "parent": "minecraft:block/jungle_stairs_outer", + "textures": { + "bottom": "antarchy:block/royal/royal_planks", + "side": "antarchy:block/royal/royal_planks", + "top": "antarchy:block/royal/royal_planks" + } +} + diff --git a/common-1.21.1/src/main/resources/assets/antarchy/models/block/royal_trapdoor_bottom.json b/common-1.21.1/src/main/resources/assets/antarchy/models/block/royal_trapdoor_bottom.json new file mode 100644 index 00000000..df801129 --- /dev/null +++ b/common-1.21.1/src/main/resources/assets/antarchy/models/block/royal_trapdoor_bottom.json @@ -0,0 +1,7 @@ +{ + "parent": "minecraft:block/jungle_trapdoor_bottom", + "textures": { + "texture": "antarchy:block/royal/royal_trapdoor" + } +} + diff --git a/common-1.21.1/src/main/resources/assets/antarchy/models/block/royal_trapdoor_open.json b/common-1.21.1/src/main/resources/assets/antarchy/models/block/royal_trapdoor_open.json new file mode 100644 index 00000000..b02ecc2c --- /dev/null +++ b/common-1.21.1/src/main/resources/assets/antarchy/models/block/royal_trapdoor_open.json @@ -0,0 +1,7 @@ +{ + "parent": "minecraft:block/jungle_trapdoor_open", + "textures": { + "texture": "antarchy:block/royal/royal_trapdoor" + } +} + diff --git a/common-1.21.1/src/main/resources/assets/antarchy/models/block/royal_trapdoor_top.json b/common-1.21.1/src/main/resources/assets/antarchy/models/block/royal_trapdoor_top.json new file mode 100644 index 00000000..22f65c69 --- /dev/null +++ b/common-1.21.1/src/main/resources/assets/antarchy/models/block/royal_trapdoor_top.json @@ -0,0 +1,7 @@ +{ + "parent": "minecraft:block/jungle_trapdoor_top", + "textures": { + "texture": "antarchy:block/royal/royal_trapdoor" + } +} + diff --git a/common-1.21.1/src/main/resources/assets/antarchy/models/block/royal_wall_hanging_sign.json b/common-1.21.1/src/main/resources/assets/antarchy/models/block/royal_wall_hanging_sign.json new file mode 100644 index 00000000..2361c164 --- /dev/null +++ b/common-1.21.1/src/main/resources/assets/antarchy/models/block/royal_wall_hanging_sign.json @@ -0,0 +1,5 @@ +{ + "textures": { + "particle": "antarchy:block/royal/royal_planks" + } +} diff --git a/common-1.21.1/src/main/resources/assets/antarchy/models/block/royal_wall_sign.json b/common-1.21.1/src/main/resources/assets/antarchy/models/block/royal_wall_sign.json new file mode 100644 index 00000000..8fe4b43a --- /dev/null +++ b/common-1.21.1/src/main/resources/assets/antarchy/models/block/royal_wall_sign.json @@ -0,0 +1,5 @@ +{ + "textures": { + "particle": "antarchy:item/royal_sign" + } +} diff --git a/common-1.21.1/src/main/resources/assets/antarchy/models/block/royal_wood.json b/common-1.21.1/src/main/resources/assets/antarchy/models/block/royal_wood.json new file mode 100644 index 00000000..a11d1ac2 --- /dev/null +++ b/common-1.21.1/src/main/resources/assets/antarchy/models/block/royal_wood.json @@ -0,0 +1,7 @@ +{ + "parent": "minecraft:block/jungle_wood", + "textures": { + "end": "antarchy:block/royal/royal_log", + "side": "antarchy:block/royal/royal_log" + } +} diff --git a/common-1.21.1/src/main/resources/assets/antarchy/models/block/stripped_royal_log.json b/common-1.21.1/src/main/resources/assets/antarchy/models/block/stripped_royal_log.json new file mode 100644 index 00000000..a322e498 --- /dev/null +++ b/common-1.21.1/src/main/resources/assets/antarchy/models/block/stripped_royal_log.json @@ -0,0 +1,7 @@ +{ + "parent": "minecraft:block/stripped_jungle_log", + "textures": { + "end": "antarchy:block/royal/stripped_royal_log_top", + "side": "antarchy:block/royal/stripped_royal_log" + } +} diff --git a/common-1.21.1/src/main/resources/assets/antarchy/models/block/stripped_royal_log_horizontal.json b/common-1.21.1/src/main/resources/assets/antarchy/models/block/stripped_royal_log_horizontal.json new file mode 100644 index 00000000..d5ca1dc7 --- /dev/null +++ b/common-1.21.1/src/main/resources/assets/antarchy/models/block/stripped_royal_log_horizontal.json @@ -0,0 +1,7 @@ +{ + "parent": "minecraft:block/stripped_jungle_log_horizontal", + "textures": { + "end": "antarchy:block/royal/stripped_royal_log_top", + "side": "antarchy:block/royal/stripped_royal_log" + } +} diff --git a/common-1.21.1/src/main/resources/assets/antarchy/models/block/stripped_royal_wood.json b/common-1.21.1/src/main/resources/assets/antarchy/models/block/stripped_royal_wood.json new file mode 100644 index 00000000..aff9c269 --- /dev/null +++ b/common-1.21.1/src/main/resources/assets/antarchy/models/block/stripped_royal_wood.json @@ -0,0 +1,7 @@ +{ + "parent": "minecraft:block/stripped_jungle_wood", + "textures": { + "end": "antarchy:block/royal/stripped_royal_log", + "side": "antarchy:block/royal/stripped_royal_log" + } +} diff --git a/common-1.21.1/src/main/resources/assets/antarchy/models/block/stripped_truffalo_log.json b/common-1.21.1/src/main/resources/assets/antarchy/models/block/stripped_truffalo_log.json new file mode 100644 index 00000000..f68503ff --- /dev/null +++ b/common-1.21.1/src/main/resources/assets/antarchy/models/block/stripped_truffalo_log.json @@ -0,0 +1,22 @@ +{ + "parent": "block/block", + "textures": { + "particle": "#side", + "end": "antarchy:block/truffalo/truffalo_stripped_log_top", + "side": "antarchy:block/truffalo/truffalo_log_stripped" + }, + "elements": [ + { + "from": [4, 0, 4], + "to": [12, 16, 12], + "faces": { + "north": {"uv": [4, 0, 12, 16], "texture": "#side"}, + "south": {"uv": [4, 0, 12, 16], "texture": "#side"}, + "east": {"uv": [4, 0, 12, 16], "texture": "#side"}, + "west": {"uv": [4, 0, 12, 16], "texture": "#side"}, + "up": {"uv": [4, 4, 12, 12], "texture": "#end"}, + "down": {"uv": [4, 4, 12, 12], "texture": "#end"} + } + } + ] +} diff --git a/common-1.21.1/src/main/resources/assets/antarchy/models/block/stripped_truffalo_log_horizontal.json b/common-1.21.1/src/main/resources/assets/antarchy/models/block/stripped_truffalo_log_horizontal.json new file mode 100644 index 00000000..e1e2c109 --- /dev/null +++ b/common-1.21.1/src/main/resources/assets/antarchy/models/block/stripped_truffalo_log_horizontal.json @@ -0,0 +1,22 @@ +{ + "parent": "block/block", + "textures": { + "particle": "#side", + "end": "antarchy:block/truffalo/truffalo_stripped_log_top", + "side": "antarchy:block/truffalo/truffalo_log_stripped" + }, + "elements": [ + { + "from": [0, 4, 4], + "to": [16, 12, 12], + "faces": { + "north": {"uv": [0, 4, 16, 12], "texture": "#side"}, + "south": {"uv": [0, 4, 16, 12], "texture": "#side"}, + "up": {"uv": [0, 4, 16, 12], "texture": "#side"}, + "down": {"uv": [0, 4, 16, 12], "texture": "#side"}, + "east": {"uv": [4, 4, 12, 12], "texture": "#end"}, + "west": {"uv": [4, 4, 12, 12], "texture": "#end"} + } + } + ] +} diff --git a/common-1.21.1/src/main/resources/assets/antarchy/models/block/stripped_truffalo_wood.json b/common-1.21.1/src/main/resources/assets/antarchy/models/block/stripped_truffalo_wood.json new file mode 100644 index 00000000..8e9862c5 --- /dev/null +++ b/common-1.21.1/src/main/resources/assets/antarchy/models/block/stripped_truffalo_wood.json @@ -0,0 +1,7 @@ +{ + "parent": "minecraft:block/stripped_jungle_wood", + "textures": { + "end": "antarchy:block/truffalo/truffalo_log_stripped", + "side": "antarchy:block/truffalo/truffalo_log_stripped" + } +} diff --git a/common-1.21.1/src/main/resources/assets/antarchy/models/block/truffalo_button.json b/common-1.21.1/src/main/resources/assets/antarchy/models/block/truffalo_button.json new file mode 100644 index 00000000..843aa16e --- /dev/null +++ b/common-1.21.1/src/main/resources/assets/antarchy/models/block/truffalo_button.json @@ -0,0 +1,7 @@ +{ + "parent": "minecraft:block/jungle_button", + "textures": { + "texture": "antarchy:block/truffalo/truffalo_planks" + } +} + diff --git a/common-1.21.1/src/main/resources/assets/antarchy/models/block/truffalo_button_inventory.json b/common-1.21.1/src/main/resources/assets/antarchy/models/block/truffalo_button_inventory.json new file mode 100644 index 00000000..50a4be40 --- /dev/null +++ b/common-1.21.1/src/main/resources/assets/antarchy/models/block/truffalo_button_inventory.json @@ -0,0 +1,7 @@ +{ + "parent": "minecraft:block/jungle_button_inventory", + "textures": { + "texture": "antarchy:block/truffalo/truffalo_planks" + } +} + diff --git a/common-1.21.1/src/main/resources/assets/antarchy/models/block/truffalo_button_pressed.json b/common-1.21.1/src/main/resources/assets/antarchy/models/block/truffalo_button_pressed.json new file mode 100644 index 00000000..0c3582ff --- /dev/null +++ b/common-1.21.1/src/main/resources/assets/antarchy/models/block/truffalo_button_pressed.json @@ -0,0 +1,7 @@ +{ + "parent": "minecraft:block/jungle_button_pressed", + "textures": { + "texture": "antarchy:block/truffalo/truffalo_planks" + } +} + diff --git a/common-1.21.1/src/main/resources/assets/antarchy/models/block/truffalo_door_bottom_left.json b/common-1.21.1/src/main/resources/assets/antarchy/models/block/truffalo_door_bottom_left.json new file mode 100644 index 00000000..e41b0925 --- /dev/null +++ b/common-1.21.1/src/main/resources/assets/antarchy/models/block/truffalo_door_bottom_left.json @@ -0,0 +1,8 @@ +{ + "parent": "minecraft:block/jungle_door_bottom_left", + "textures": { + "bottom": "antarchy:block/truffalo/truffalo_door_bottom", + "top": "antarchy:block/truffalo/truffalo_door_top" + } +} + diff --git a/common-1.21.1/src/main/resources/assets/antarchy/models/block/truffalo_door_bottom_left_open.json b/common-1.21.1/src/main/resources/assets/antarchy/models/block/truffalo_door_bottom_left_open.json new file mode 100644 index 00000000..c6962b38 --- /dev/null +++ b/common-1.21.1/src/main/resources/assets/antarchy/models/block/truffalo_door_bottom_left_open.json @@ -0,0 +1,8 @@ +{ + "parent": "minecraft:block/jungle_door_bottom_left_open", + "textures": { + "bottom": "antarchy:block/truffalo/truffalo_door_bottom", + "top": "antarchy:block/truffalo/truffalo_door_top" + } +} + diff --git a/common-1.21.1/src/main/resources/assets/antarchy/models/block/truffalo_door_bottom_right.json b/common-1.21.1/src/main/resources/assets/antarchy/models/block/truffalo_door_bottom_right.json new file mode 100644 index 00000000..0979ae2c --- /dev/null +++ b/common-1.21.1/src/main/resources/assets/antarchy/models/block/truffalo_door_bottom_right.json @@ -0,0 +1,8 @@ +{ + "parent": "minecraft:block/jungle_door_bottom_right", + "textures": { + "bottom": "antarchy:block/truffalo/truffalo_door_bottom", + "top": "antarchy:block/truffalo/truffalo_door_top" + } +} + diff --git a/common-1.21.1/src/main/resources/assets/antarchy/models/block/truffalo_door_bottom_right_open.json b/common-1.21.1/src/main/resources/assets/antarchy/models/block/truffalo_door_bottom_right_open.json new file mode 100644 index 00000000..af35d714 --- /dev/null +++ b/common-1.21.1/src/main/resources/assets/antarchy/models/block/truffalo_door_bottom_right_open.json @@ -0,0 +1,8 @@ +{ + "parent": "minecraft:block/jungle_door_bottom_right_open", + "textures": { + "bottom": "antarchy:block/truffalo/truffalo_door_bottom", + "top": "antarchy:block/truffalo/truffalo_door_top" + } +} + diff --git a/common-1.21.1/src/main/resources/assets/antarchy/models/block/truffalo_door_top_left.json b/common-1.21.1/src/main/resources/assets/antarchy/models/block/truffalo_door_top_left.json new file mode 100644 index 00000000..2a492b22 --- /dev/null +++ b/common-1.21.1/src/main/resources/assets/antarchy/models/block/truffalo_door_top_left.json @@ -0,0 +1,8 @@ +{ + "parent": "minecraft:block/jungle_door_top_left", + "textures": { + "bottom": "antarchy:block/truffalo/truffalo_door_bottom", + "top": "antarchy:block/truffalo/truffalo_door_top" + } +} + diff --git a/common-1.21.1/src/main/resources/assets/antarchy/models/block/truffalo_door_top_left_open.json b/common-1.21.1/src/main/resources/assets/antarchy/models/block/truffalo_door_top_left_open.json new file mode 100644 index 00000000..2e21673b --- /dev/null +++ b/common-1.21.1/src/main/resources/assets/antarchy/models/block/truffalo_door_top_left_open.json @@ -0,0 +1,8 @@ +{ + "parent": "minecraft:block/jungle_door_top_left_open", + "textures": { + "bottom": "antarchy:block/truffalo/truffalo_door_bottom", + "top": "antarchy:block/truffalo/truffalo_door_top" + } +} + diff --git a/common-1.21.1/src/main/resources/assets/antarchy/models/block/truffalo_door_top_right.json b/common-1.21.1/src/main/resources/assets/antarchy/models/block/truffalo_door_top_right.json new file mode 100644 index 00000000..95279c03 --- /dev/null +++ b/common-1.21.1/src/main/resources/assets/antarchy/models/block/truffalo_door_top_right.json @@ -0,0 +1,8 @@ +{ + "parent": "minecraft:block/jungle_door_top_right", + "textures": { + "bottom": "antarchy:block/truffalo/truffalo_door_bottom", + "top": "antarchy:block/truffalo/truffalo_door_top" + } +} + diff --git a/common-1.21.1/src/main/resources/assets/antarchy/models/block/truffalo_door_top_right_open.json b/common-1.21.1/src/main/resources/assets/antarchy/models/block/truffalo_door_top_right_open.json new file mode 100644 index 00000000..a949ce80 --- /dev/null +++ b/common-1.21.1/src/main/resources/assets/antarchy/models/block/truffalo_door_top_right_open.json @@ -0,0 +1,8 @@ +{ + "parent": "minecraft:block/jungle_door_top_right_open", + "textures": { + "bottom": "antarchy:block/truffalo/truffalo_door_bottom", + "top": "antarchy:block/truffalo/truffalo_door_top" + } +} + diff --git a/common-1.21.1/src/main/resources/assets/antarchy/models/block/truffalo_fence_gate.json b/common-1.21.1/src/main/resources/assets/antarchy/models/block/truffalo_fence_gate.json new file mode 100644 index 00000000..b396e727 --- /dev/null +++ b/common-1.21.1/src/main/resources/assets/antarchy/models/block/truffalo_fence_gate.json @@ -0,0 +1,7 @@ +{ + "parent": "minecraft:block/jungle_fence_gate", + "textures": { + "texture": "antarchy:block/truffalo/truffalo_planks" + } +} + diff --git a/common-1.21.1/src/main/resources/assets/antarchy/models/block/truffalo_fence_gate_open.json b/common-1.21.1/src/main/resources/assets/antarchy/models/block/truffalo_fence_gate_open.json new file mode 100644 index 00000000..f6c1ed03 --- /dev/null +++ b/common-1.21.1/src/main/resources/assets/antarchy/models/block/truffalo_fence_gate_open.json @@ -0,0 +1,7 @@ +{ + "parent": "minecraft:block/jungle_fence_gate_open", + "textures": { + "texture": "antarchy:block/truffalo/truffalo_planks" + } +} + diff --git a/common-1.21.1/src/main/resources/assets/antarchy/models/block/truffalo_fence_gate_wall.json b/common-1.21.1/src/main/resources/assets/antarchy/models/block/truffalo_fence_gate_wall.json new file mode 100644 index 00000000..6db550ea --- /dev/null +++ b/common-1.21.1/src/main/resources/assets/antarchy/models/block/truffalo_fence_gate_wall.json @@ -0,0 +1,7 @@ +{ + "parent": "minecraft:block/jungle_fence_gate_wall", + "textures": { + "texture": "antarchy:block/truffalo/truffalo_planks" + } +} + diff --git a/common-1.21.1/src/main/resources/assets/antarchy/models/block/truffalo_fence_gate_wall_open.json b/common-1.21.1/src/main/resources/assets/antarchy/models/block/truffalo_fence_gate_wall_open.json new file mode 100644 index 00000000..9772ded0 --- /dev/null +++ b/common-1.21.1/src/main/resources/assets/antarchy/models/block/truffalo_fence_gate_wall_open.json @@ -0,0 +1,7 @@ +{ + "parent": "minecraft:block/jungle_fence_gate_wall_open", + "textures": { + "texture": "antarchy:block/truffalo/truffalo_planks" + } +} + diff --git a/common-1.21.1/src/main/resources/assets/antarchy/models/block/truffalo_fence_inventory.json b/common-1.21.1/src/main/resources/assets/antarchy/models/block/truffalo_fence_inventory.json new file mode 100644 index 00000000..fd4486f3 --- /dev/null +++ b/common-1.21.1/src/main/resources/assets/antarchy/models/block/truffalo_fence_inventory.json @@ -0,0 +1,7 @@ +{ + "parent": "minecraft:block/jungle_fence_inventory", + "textures": { + "texture": "antarchy:block/truffalo/truffalo_planks" + } +} + diff --git a/common-1.21.1/src/main/resources/assets/antarchy/models/block/truffalo_fence_post.json b/common-1.21.1/src/main/resources/assets/antarchy/models/block/truffalo_fence_post.json new file mode 100644 index 00000000..5850ae3f --- /dev/null +++ b/common-1.21.1/src/main/resources/assets/antarchy/models/block/truffalo_fence_post.json @@ -0,0 +1,7 @@ +{ + "parent": "minecraft:block/jungle_fence_post", + "textures": { + "texture": "antarchy:block/truffalo/truffalo_planks" + } +} + diff --git a/common-1.21.1/src/main/resources/assets/antarchy/models/block/truffalo_fence_side.json b/common-1.21.1/src/main/resources/assets/antarchy/models/block/truffalo_fence_side.json new file mode 100644 index 00000000..74b43126 --- /dev/null +++ b/common-1.21.1/src/main/resources/assets/antarchy/models/block/truffalo_fence_side.json @@ -0,0 +1,7 @@ +{ + "parent": "minecraft:block/jungle_fence_side", + "textures": { + "texture": "antarchy:block/truffalo/truffalo_planks" + } +} + diff --git a/common-1.21.1/src/main/resources/assets/antarchy/models/block/truffalo_hanging_sign.json b/common-1.21.1/src/main/resources/assets/antarchy/models/block/truffalo_hanging_sign.json new file mode 100644 index 00000000..7bce3536 --- /dev/null +++ b/common-1.21.1/src/main/resources/assets/antarchy/models/block/truffalo_hanging_sign.json @@ -0,0 +1,5 @@ +{ + "textures": { + "particle": "antarchy:block/truffalo/truffalo_planks" + } +} diff --git a/common-1.21.1/src/main/resources/assets/antarchy/models/block/truffalo_log.json b/common-1.21.1/src/main/resources/assets/antarchy/models/block/truffalo_log.json new file mode 100644 index 00000000..5c167672 --- /dev/null +++ b/common-1.21.1/src/main/resources/assets/antarchy/models/block/truffalo_log.json @@ -0,0 +1,22 @@ +{ + "parent": "block/block", + "textures": { + "particle": "#side", + "end": "antarchy:block/truffalo/truffalo_log_top", + "side": "antarchy:block/truffalo/truffalo_log" + }, + "elements": [ + { + "from": [4, 0, 4], + "to": [12, 16, 12], + "faces": { + "north": {"uv": [4, 0, 12, 16], "texture": "#side"}, + "south": {"uv": [4, 0, 12, 16], "texture": "#side"}, + "east": {"uv": [4, 0, 12, 16], "texture": "#side"}, + "west": {"uv": [4, 0, 12, 16], "texture": "#side"}, + "up": {"uv": [4, 4, 12, 12], "texture": "#end"}, + "down": {"uv": [4, 4, 12, 12], "texture": "#end"} + } + } + ] +} diff --git a/common-1.21.1/src/main/resources/assets/antarchy/models/block/truffalo_log_horizontal.json b/common-1.21.1/src/main/resources/assets/antarchy/models/block/truffalo_log_horizontal.json new file mode 100644 index 00000000..48abda41 --- /dev/null +++ b/common-1.21.1/src/main/resources/assets/antarchy/models/block/truffalo_log_horizontal.json @@ -0,0 +1,22 @@ +{ + "parent": "block/block", + "textures": { + "particle": "#side", + "end": "antarchy:block/truffalo/truffalo_log_top", + "side": "antarchy:block/truffalo/truffalo_log" + }, + "elements": [ + { + "from": [0, 4, 4], + "to": [16, 12, 12], + "faces": { + "north": {"uv": [0, 4, 16, 12], "texture": "#side"}, + "south": {"uv": [0, 4, 16, 12], "texture": "#side"}, + "up": {"uv": [0, 4, 16, 12], "texture": "#side"}, + "down": {"uv": [0, 4, 16, 12], "texture": "#side"}, + "east": {"uv": [4, 4, 12, 12], "texture": "#end"}, + "west": {"uv": [4, 4, 12, 12], "texture": "#end"} + } + } + ] +} diff --git a/common-1.21.1/src/main/resources/assets/antarchy/models/block/truffalo_planks.json b/common-1.21.1/src/main/resources/assets/antarchy/models/block/truffalo_planks.json new file mode 100644 index 00000000..e539b1a7 --- /dev/null +++ b/common-1.21.1/src/main/resources/assets/antarchy/models/block/truffalo_planks.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:block/cube_all", + "textures": { + "all": "antarchy:block/truffalo/truffalo_planks" + } +} diff --git a/common-1.21.1/src/main/resources/assets/antarchy/models/block/truffalo_pressure_plate.json b/common-1.21.1/src/main/resources/assets/antarchy/models/block/truffalo_pressure_plate.json new file mode 100644 index 00000000..d1c22644 --- /dev/null +++ b/common-1.21.1/src/main/resources/assets/antarchy/models/block/truffalo_pressure_plate.json @@ -0,0 +1,7 @@ +{ + "parent": "minecraft:block/jungle_pressure_plate", + "textures": { + "texture": "antarchy:block/truffalo/truffalo_planks" + } +} + diff --git a/common-1.21.1/src/main/resources/assets/antarchy/models/block/truffalo_pressure_plate_down.json b/common-1.21.1/src/main/resources/assets/antarchy/models/block/truffalo_pressure_plate_down.json new file mode 100644 index 00000000..ac9d101f --- /dev/null +++ b/common-1.21.1/src/main/resources/assets/antarchy/models/block/truffalo_pressure_plate_down.json @@ -0,0 +1,7 @@ +{ + "parent": "minecraft:block/jungle_pressure_plate_down", + "textures": { + "texture": "antarchy:block/truffalo/truffalo_planks" + } +} + diff --git a/common-1.21.1/src/main/resources/assets/antarchy/models/block/truffalo_sapling.json b/common-1.21.1/src/main/resources/assets/antarchy/models/block/truffalo_sapling.json new file mode 100644 index 00000000..47883c27 --- /dev/null +++ b/common-1.21.1/src/main/resources/assets/antarchy/models/block/truffalo_sapling.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:block/cross", + "textures": { + "cross": "antarchy:block/truffalo/truffalo_sapling" + } +} diff --git a/common-1.21.1/src/main/resources/assets/antarchy/models/block/truffalo_sign.json b/common-1.21.1/src/main/resources/assets/antarchy/models/block/truffalo_sign.json new file mode 100644 index 00000000..4be93de3 --- /dev/null +++ b/common-1.21.1/src/main/resources/assets/antarchy/models/block/truffalo_sign.json @@ -0,0 +1,5 @@ +{ + "textures": { + "particle": "antarchy:item/truffalo_sign" + } +} diff --git a/common-1.21.1/src/main/resources/assets/antarchy/models/block/truffalo_slab.json b/common-1.21.1/src/main/resources/assets/antarchy/models/block/truffalo_slab.json new file mode 100644 index 00000000..cba4d3f9 --- /dev/null +++ b/common-1.21.1/src/main/resources/assets/antarchy/models/block/truffalo_slab.json @@ -0,0 +1,9 @@ +{ + "parent": "minecraft:block/jungle_slab", + "textures": { + "bottom": "antarchy:block/truffalo/truffalo_planks", + "side": "antarchy:block/truffalo/truffalo_planks", + "top": "antarchy:block/truffalo/truffalo_planks" + } +} + diff --git a/common-1.21.1/src/main/resources/assets/antarchy/models/block/truffalo_slab_top.json b/common-1.21.1/src/main/resources/assets/antarchy/models/block/truffalo_slab_top.json new file mode 100644 index 00000000..f8642fc2 --- /dev/null +++ b/common-1.21.1/src/main/resources/assets/antarchy/models/block/truffalo_slab_top.json @@ -0,0 +1,9 @@ +{ + "parent": "minecraft:block/jungle_slab_top", + "textures": { + "bottom": "antarchy:block/truffalo/truffalo_planks", + "side": "antarchy:block/truffalo/truffalo_planks", + "top": "antarchy:block/truffalo/truffalo_planks" + } +} + diff --git a/common-1.21.1/src/main/resources/assets/antarchy/models/block/truffalo_stairs.json b/common-1.21.1/src/main/resources/assets/antarchy/models/block/truffalo_stairs.json new file mode 100644 index 00000000..885d55dd --- /dev/null +++ b/common-1.21.1/src/main/resources/assets/antarchy/models/block/truffalo_stairs.json @@ -0,0 +1,9 @@ +{ + "parent": "minecraft:block/jungle_stairs", + "textures": { + "bottom": "antarchy:block/truffalo/truffalo_planks", + "side": "antarchy:block/truffalo/truffalo_planks", + "top": "antarchy:block/truffalo/truffalo_planks" + } +} + diff --git a/common-1.21.1/src/main/resources/assets/antarchy/models/block/truffalo_stairs_inner.json b/common-1.21.1/src/main/resources/assets/antarchy/models/block/truffalo_stairs_inner.json new file mode 100644 index 00000000..99a194ca --- /dev/null +++ b/common-1.21.1/src/main/resources/assets/antarchy/models/block/truffalo_stairs_inner.json @@ -0,0 +1,9 @@ +{ + "parent": "minecraft:block/jungle_stairs_inner", + "textures": { + "bottom": "antarchy:block/truffalo/truffalo_planks", + "side": "antarchy:block/truffalo/truffalo_planks", + "top": "antarchy:block/truffalo/truffalo_planks" + } +} + diff --git a/common-1.21.1/src/main/resources/assets/antarchy/models/block/truffalo_stairs_outer.json b/common-1.21.1/src/main/resources/assets/antarchy/models/block/truffalo_stairs_outer.json new file mode 100644 index 00000000..4f09e29a --- /dev/null +++ b/common-1.21.1/src/main/resources/assets/antarchy/models/block/truffalo_stairs_outer.json @@ -0,0 +1,9 @@ +{ + "parent": "minecraft:block/jungle_stairs_outer", + "textures": { + "bottom": "antarchy:block/truffalo/truffalo_planks", + "side": "antarchy:block/truffalo/truffalo_planks", + "top": "antarchy:block/truffalo/truffalo_planks" + } +} + diff --git a/common-1.21.1/src/main/resources/assets/antarchy/models/block/truffalo_trapdoor_bottom.json b/common-1.21.1/src/main/resources/assets/antarchy/models/block/truffalo_trapdoor_bottom.json new file mode 100644 index 00000000..297268dd --- /dev/null +++ b/common-1.21.1/src/main/resources/assets/antarchy/models/block/truffalo_trapdoor_bottom.json @@ -0,0 +1,7 @@ +{ + "parent": "minecraft:block/jungle_trapdoor_bottom", + "textures": { + "texture": "antarchy:block/truffalo/truffalo_trapdoor" + } +} + diff --git a/common-1.21.1/src/main/resources/assets/antarchy/models/block/truffalo_trapdoor_open.json b/common-1.21.1/src/main/resources/assets/antarchy/models/block/truffalo_trapdoor_open.json new file mode 100644 index 00000000..d1d02cbb --- /dev/null +++ b/common-1.21.1/src/main/resources/assets/antarchy/models/block/truffalo_trapdoor_open.json @@ -0,0 +1,7 @@ +{ + "parent": "minecraft:block/jungle_trapdoor_open", + "textures": { + "texture": "antarchy:block/truffalo/truffalo_trapdoor" + } +} + diff --git a/common-1.21.1/src/main/resources/assets/antarchy/models/block/truffalo_trapdoor_top.json b/common-1.21.1/src/main/resources/assets/antarchy/models/block/truffalo_trapdoor_top.json new file mode 100644 index 00000000..fe3304e6 --- /dev/null +++ b/common-1.21.1/src/main/resources/assets/antarchy/models/block/truffalo_trapdoor_top.json @@ -0,0 +1,7 @@ +{ + "parent": "minecraft:block/jungle_trapdoor_top", + "textures": { + "texture": "antarchy:block/truffalo/truffalo_trapdoor" + } +} + diff --git a/common-1.21.1/src/main/resources/assets/antarchy/models/block/truffalo_tuft_black.json b/common-1.21.1/src/main/resources/assets/antarchy/models/block/truffalo_tuft_black.json new file mode 100644 index 00000000..c280c5fa --- /dev/null +++ b/common-1.21.1/src/main/resources/assets/antarchy/models/block/truffalo_tuft_black.json @@ -0,0 +1,6 @@ +{ + "parent": "antarchy:block/truffalo_tuft_template", + "textures": { + "all": "antarchy:block/truffalo/black_truffalo_tuft" + } +} diff --git a/common-1.21.1/src/main/resources/assets/antarchy/models/block/truffalo_tuft_blue.json b/common-1.21.1/src/main/resources/assets/antarchy/models/block/truffalo_tuft_blue.json new file mode 100644 index 00000000..b83e93f3 --- /dev/null +++ b/common-1.21.1/src/main/resources/assets/antarchy/models/block/truffalo_tuft_blue.json @@ -0,0 +1,6 @@ +{ + "parent": "antarchy:block/truffalo_tuft_template", + "textures": { + "all": "antarchy:block/truffalo/blue_truffalo_tuft" + } +} diff --git a/common-1.21.1/src/main/resources/assets/antarchy/models/block/truffalo_tuft_brown.json b/common-1.21.1/src/main/resources/assets/antarchy/models/block/truffalo_tuft_brown.json new file mode 100644 index 00000000..8ff127f8 --- /dev/null +++ b/common-1.21.1/src/main/resources/assets/antarchy/models/block/truffalo_tuft_brown.json @@ -0,0 +1,6 @@ +{ + "parent": "antarchy:block/truffalo_tuft_template", + "textures": { + "all": "antarchy:block/truffalo/brown_truffalo_tuft" + } +} diff --git a/common-1.21.1/src/main/resources/assets/antarchy/models/block/truffalo_tuft_cyan.json b/common-1.21.1/src/main/resources/assets/antarchy/models/block/truffalo_tuft_cyan.json new file mode 100644 index 00000000..d073d3ef --- /dev/null +++ b/common-1.21.1/src/main/resources/assets/antarchy/models/block/truffalo_tuft_cyan.json @@ -0,0 +1,6 @@ +{ + "parent": "antarchy:block/truffalo_tuft_template", + "textures": { + "all": "antarchy:block/truffalo/cyan_truffalo_tuft" + } +} diff --git a/common-1.21.1/src/main/resources/assets/antarchy/models/block/truffalo_tuft_gray.json b/common-1.21.1/src/main/resources/assets/antarchy/models/block/truffalo_tuft_gray.json new file mode 100644 index 00000000..e904d084 --- /dev/null +++ b/common-1.21.1/src/main/resources/assets/antarchy/models/block/truffalo_tuft_gray.json @@ -0,0 +1,6 @@ +{ + "parent": "antarchy:block/truffalo_tuft_template", + "textures": { + "all": "antarchy:block/truffalo/gray_truffalo_tuft" + } +} diff --git a/common-1.21.1/src/main/resources/assets/antarchy/models/block/truffalo_tuft_green.json b/common-1.21.1/src/main/resources/assets/antarchy/models/block/truffalo_tuft_green.json new file mode 100644 index 00000000..d68de396 --- /dev/null +++ b/common-1.21.1/src/main/resources/assets/antarchy/models/block/truffalo_tuft_green.json @@ -0,0 +1,6 @@ +{ + "parent": "antarchy:block/truffalo_tuft_template", + "textures": { + "all": "antarchy:block/truffalo/green_truffalo_tuft" + } +} diff --git a/common-1.21.1/src/main/resources/assets/antarchy/models/block/truffalo_tuft_light_blue.json b/common-1.21.1/src/main/resources/assets/antarchy/models/block/truffalo_tuft_light_blue.json new file mode 100644 index 00000000..05591ee1 --- /dev/null +++ b/common-1.21.1/src/main/resources/assets/antarchy/models/block/truffalo_tuft_light_blue.json @@ -0,0 +1,6 @@ +{ + "parent": "antarchy:block/truffalo_tuft_template", + "textures": { + "all": "antarchy:block/truffalo/light_blue_truffalo_tuft" + } +} diff --git a/common-1.21.1/src/main/resources/assets/antarchy/models/block/truffalo_tuft_light_gray.json b/common-1.21.1/src/main/resources/assets/antarchy/models/block/truffalo_tuft_light_gray.json new file mode 100644 index 00000000..a3acbb35 --- /dev/null +++ b/common-1.21.1/src/main/resources/assets/antarchy/models/block/truffalo_tuft_light_gray.json @@ -0,0 +1,6 @@ +{ + "parent": "antarchy:block/truffalo_tuft_template", + "textures": { + "all": "antarchy:block/truffalo/light_gray_truffalo_tuft" + } +} diff --git a/common-1.21.1/src/main/resources/assets/antarchy/models/block/truffalo_tuft_lime.json b/common-1.21.1/src/main/resources/assets/antarchy/models/block/truffalo_tuft_lime.json new file mode 100644 index 00000000..04c2d91c --- /dev/null +++ b/common-1.21.1/src/main/resources/assets/antarchy/models/block/truffalo_tuft_lime.json @@ -0,0 +1,6 @@ +{ + "parent": "antarchy:block/truffalo_tuft_template", + "textures": { + "all": "antarchy:block/truffalo/lime_truffalo_tuft" + } +} diff --git a/common-1.21.1/src/main/resources/assets/antarchy/models/block/truffalo_tuft_magenta.json b/common-1.21.1/src/main/resources/assets/antarchy/models/block/truffalo_tuft_magenta.json new file mode 100644 index 00000000..e65a5269 --- /dev/null +++ b/common-1.21.1/src/main/resources/assets/antarchy/models/block/truffalo_tuft_magenta.json @@ -0,0 +1,6 @@ +{ + "parent": "antarchy:block/truffalo_tuft_template", + "textures": { + "all": "antarchy:block/truffalo/magenta_truffalo_tuft" + } +} diff --git a/common-1.21.1/src/main/resources/assets/antarchy/models/block/truffalo_tuft_orange.json b/common-1.21.1/src/main/resources/assets/antarchy/models/block/truffalo_tuft_orange.json new file mode 100644 index 00000000..5a8806ab --- /dev/null +++ b/common-1.21.1/src/main/resources/assets/antarchy/models/block/truffalo_tuft_orange.json @@ -0,0 +1,6 @@ +{ + "parent": "antarchy:block/truffalo_tuft_template", + "textures": { + "all": "antarchy:block/truffalo/orange_truffalo_tuft" + } +} diff --git a/common-1.21.1/src/main/resources/assets/antarchy/models/block/truffalo_tuft_pink.json b/common-1.21.1/src/main/resources/assets/antarchy/models/block/truffalo_tuft_pink.json new file mode 100644 index 00000000..9e7ade11 --- /dev/null +++ b/common-1.21.1/src/main/resources/assets/antarchy/models/block/truffalo_tuft_pink.json @@ -0,0 +1,6 @@ +{ + "parent": "antarchy:block/truffalo_tuft_template", + "textures": { + "all": "antarchy:block/truffalo/pink_truffalo_tuft" + } +} diff --git a/common-1.21.1/src/main/resources/assets/antarchy/models/block/truffalo_tuft_purple.json b/common-1.21.1/src/main/resources/assets/antarchy/models/block/truffalo_tuft_purple.json new file mode 100644 index 00000000..738191ba --- /dev/null +++ b/common-1.21.1/src/main/resources/assets/antarchy/models/block/truffalo_tuft_purple.json @@ -0,0 +1,6 @@ +{ + "parent": "antarchy:block/truffalo_tuft_template", + "textures": { + "all": "antarchy:block/truffalo/purple_truffalo_tuft" + } +} diff --git a/common-1.21.1/src/main/resources/assets/antarchy/models/block/truffalo_tuft_red.json b/common-1.21.1/src/main/resources/assets/antarchy/models/block/truffalo_tuft_red.json new file mode 100644 index 00000000..f95dacdc --- /dev/null +++ b/common-1.21.1/src/main/resources/assets/antarchy/models/block/truffalo_tuft_red.json @@ -0,0 +1,6 @@ +{ + "parent": "antarchy:block/truffalo_tuft_template", + "textures": { + "all": "antarchy:block/truffalo/red_truffalo_tuft" + } +} diff --git a/common-1.21.1/src/main/resources/assets/antarchy/models/block/truffalo_tuft_template.json b/common-1.21.1/src/main/resources/assets/antarchy/models/block/truffalo_tuft_template.json new file mode 100644 index 00000000..a6c7c377 --- /dev/null +++ b/common-1.21.1/src/main/resources/assets/antarchy/models/block/truffalo_tuft_template.json @@ -0,0 +1,2552 @@ +{ + "parent": "block/block", + "textures": { + "particle": "#all" + }, + "elements": [ + { + "name": "block", + "from": [ + 0, + 0, + 0 + ], + "to": [ + 16, + 16, + 16 + ], + "faces": { + "north": { + "uv": [ + 0, + 0, + 16, + 16 + ], + "texture": "#all", + "cullface": "north", + "tintindex": 0 + }, + "east": { + "uv": [ + 0, + 0, + 16, + 16 + ], + "texture": "#all", + "cullface": "east", + "tintindex": 0 + }, + "south": { + "uv": [ + 0, + 0, + 16, + 16 + ], + "texture": "#all", + "cullface": "south", + "tintindex": 0 + }, + "west": { + "uv": [ + 0, + 0, + 16, + 16 + ], + "texture": "#all", + "cullface": "west", + "tintindex": 0 + }, + "up": { + "uv": [ + 0, + 0, + 16, + 16 + ], + "texture": "#all", + "cullface": "up", + "tintindex": 0 + }, + "down": { + "uv": [ + 0, + 0, + 16, + 16 + ], + "texture": "#all", + "cullface": "down", + "tintindex": 0 + } + } + }, + { + "name": "top", + "from": [ + 8, + 20, + 3.3 + ], + "to": [ + 8, + 21, + 13.3 + ], + "rotation": { + "angle": 45, + "axis": "y", + "origin": [ + 8, + 18.25, + 8.3 + ] + }, + "faces": { + "east": { + "uv": [ + 3, + 2, + 13, + 1 + ], + "rotation": 180, + "texture": "#all", + "cullface": "up", + "tintindex": 0 + }, + "west": { + "uv": [ + 3, + 2, + 13, + 1 + ], + "rotation": 180, + "texture": "#all", + "cullface": "up", + "tintindex": 0 + } + } + }, + { + "name": "top", + "from": [ + 8, + 18, + 1.3 + ], + "to": [ + 8, + 20, + 15.3 + ], + "rotation": { + "angle": 45, + "axis": "y", + "origin": [ + 8, + 18.25, + 8.3 + ] + }, + "faces": { + "east": { + "uv": [ + 1, + 4, + 15, + 2 + ], + "rotation": 180, + "texture": "#all", + "cullface": "up", + "tintindex": 0 + }, + "west": { + "uv": [ + 1, + 4, + 15, + 2 + ], + "rotation": 180, + "texture": "#all", + "cullface": "up", + "tintindex": 0 + } + } + }, + { + "name": "top", + "from": [ + 8, + 16, + 8.3 + ], + "to": [ + 8, + 18, + 17.3 + ], + "rotation": { + "angle": 45, + "axis": "y", + "origin": [ + 8, + 18.25, + 8.3 + ] + }, + "faces": { + "east": { + "uv": [ + 7, + 6, + 16, + 4 + ], + "rotation": 180, + "texture": "#all", + "cullface": "up", + "tintindex": 0 + }, + "west": { + "uv": [ + 7, + 6, + 16, + 4 + ], + "rotation": 180, + "texture": "#all", + "cullface": "up", + "tintindex": 0 + } + } + }, + { + "name": "top", + "from": [ + 8, + 16, + -0.7 + ], + "to": [ + 8, + 18, + 8.3 + ], + "rotation": { + "angle": 45, + "axis": "y", + "origin": [ + 8, + 18.25, + 8.3 + ] + }, + "faces": { + "east": { + "uv": [ + 0, + 6, + 9, + 4 + ], + "rotation": 180, + "texture": "#all", + "cullface": "up", + "tintindex": 0 + }, + "west": { + "uv": [ + 0, + 6, + 9, + 4 + ], + "rotation": 180, + "texture": "#all", + "cullface": "up", + "tintindex": 0 + } + } + }, + { + "name": "top", + "from": [ + -1, + 16, + 8.3 + ], + "to": [ + 8, + 18, + 8.3 + ], + "rotation": { + "angle": 45, + "axis": "y", + "origin": [ + 8, + 18.25, + 8.3 + ] + }, + "faces": { + "north": { + "uv": [ + 0, + 7, + 9, + 5 + ], + "rotation": 180, + "texture": "#all", + "cullface": "up", + "tintindex": 0 + }, + "south": { + "uv": [ + 0, + 7, + 9, + 5 + ], + "rotation": 180, + "texture": "#all", + "cullface": "up", + "tintindex": 0 + } + } + }, + { + "name": "top", + "from": [ + 3, + 20, + 8.3 + ], + "to": [ + 13, + 21, + 8.3 + ], + "rotation": { + "angle": 45, + "axis": "y", + "origin": [ + 8, + 18.25, + 8.3 + ] + }, + "faces": { + "north": { + "uv": [ + 4, + 3, + 14, + 2 + ], + "rotation": 180, + "texture": "#all", + "cullface": "up", + "tintindex": 0 + }, + "south": { + "uv": [ + 4, + 3, + 14, + 2 + ], + "rotation": 180, + "texture": "#all", + "cullface": "up", + "tintindex": 0 + } + } + }, + { + "name": "top", + "from": [ + 1, + 18, + 8.3 + ], + "to": [ + 15, + 20, + 8.3 + ], + "rotation": { + "angle": 45, + "axis": "y", + "origin": [ + 8, + 18.25, + 8.3 + ] + }, + "faces": { + "north": { + "uv": [ + 2, + 5, + 16, + 3 + ], + "rotation": 180, + "texture": "#all", + "cullface": "up", + "tintindex": 0 + }, + "south": { + "uv": [ + 2, + 5, + 16, + 3 + ], + "rotation": 180, + "texture": "#all", + "cullface": "up", + "tintindex": 0 + } + } + }, + { + "name": "top", + "from": [ + 8, + 16, + 8.3 + ], + "to": [ + 17, + 18, + 8.3 + ], + "rotation": { + "angle": 45, + "axis": "y", + "origin": [ + 8, + 18.25, + 8.3 + ] + }, + "faces": { + "north": { + "uv": [ + 7, + 7, + 16, + 5 + ], + "rotation": 180, + "texture": "#all", + "cullface": "up", + "tintindex": 0 + }, + "south": { + "uv": [ + 7, + 7, + 16, + 5 + ], + "rotation": 180, + "texture": "#all", + "cullface": "up", + "tintindex": 0 + } + } + }, + { + "name": "down", + "from": [ + 8, + -5, + 3.3 + ], + "to": [ + 8, + -4, + 13.3 + ], + "rotation": { + "angle": -45, + "axis": "y", + "origin": [ + 8, + -2.25, + 8.3 + ] + }, + "faces": { + "east": { + "uv": [ + 4, + 15, + 14, + 14 + ], + "texture": "#all", + "cullface": "down", + "tintindex": 0 + }, + "west": { + "uv": [ + 3, + 14, + 13, + 13 + ], + "texture": "#all", + "cullface": "down", + "tintindex": 0 + } + } + }, + { + "name": "down", + "from": [ + 8, + -4, + 1.3 + ], + "to": [ + 8, + -2, + 15.3 + ], + "rotation": { + "angle": -45, + "axis": "y", + "origin": [ + 8, + -2.25, + 8.3 + ] + }, + "faces": { + "east": { + "uv": [ + 1, + 14, + 15, + 12 + ], + "texture": "#all", + "cullface": "down", + "tintindex": 0 + }, + "west": { + "uv": [ + 1, + 14, + 15, + 12 + ], + "texture": "#all", + "cullface": "down", + "tintindex": 0 + } + } + }, + { + "name": "down", + "from": [ + 8, + -2, + 8.3 + ], + "to": [ + 8, + 0, + 17.3 + ], + "rotation": { + "angle": -45, + "axis": "y", + "origin": [ + 8, + -2.25, + 8.3 + ] + }, + "faces": { + "east": { + "uv": [ + 7, + 6, + 16, + 4 + ], + "texture": "#all", + "cullface": "down", + "tintindex": 0 + }, + "west": { + "uv": [ + 7, + 12, + 16, + 10 + ], + "texture": "#all", + "cullface": "down", + "tintindex": 0 + } + } + }, + { + "name": "down", + "from": [ + 8, + -2, + -0.7 + ], + "to": [ + 8, + 0, + 8.3 + ], + "rotation": { + "angle": -45, + "axis": "y", + "origin": [ + 8, + -2.25, + 8.3 + ] + }, + "faces": { + "east": { + "uv": [ + 0, + 6, + 9, + 4 + ], + "texture": "#all", + "cullface": "down", + "tintindex": 0 + }, + "west": { + "uv": [ + 0, + 12, + 9, + 10 + ], + "texture": "#all", + "cullface": "down", + "tintindex": 0 + } + } + }, + { + "name": "down", + "from": [ + 8, + -2, + 8.3 + ], + "to": [ + 17, + 0, + 8.3 + ], + "rotation": { + "angle": -45, + "axis": "y", + "origin": [ + 8, + -2.25, + 8.3 + ] + }, + "faces": { + "north": { + "uv": [ + 0, + 13, + 9, + 11 + ], + "texture": "#all", + "cullface": "down", + "tintindex": 0 + }, + "south": { + "uv": [ + 0, + 13, + 9, + 11 + ], + "texture": "#all", + "cullface": "down", + "tintindex": 0 + } + } + }, + { + "name": "down", + "from": [ + 3, + -5, + 8.3 + ], + "to": [ + 13, + -4, + 8.3 + ], + "rotation": { + "angle": -45, + "axis": "y", + "origin": [ + 8, + -2.25, + 8.3 + ] + }, + "faces": { + "north": { + "uv": [ + 4, + 3, + 14, + 2 + ], + "texture": "#all", + "cullface": "down", + "tintindex": 0 + }, + "south": { + "uv": [ + 4, + 15, + 14, + 14 + ], + "texture": "#all", + "cullface": "down", + "tintindex": 0 + } + } + }, + { + "name": "down", + "from": [ + 1, + -4, + 8.3 + ], + "to": [ + 15, + -2, + 8.3 + ], + "rotation": { + "angle": -45, + "axis": "y", + "origin": [ + 8, + -2.25, + 8.3 + ] + }, + "faces": { + "north": { + "uv": [ + 2, + 5, + 16, + 3 + ], + "texture": "#all", + "cullface": "down", + "tintindex": 0 + }, + "south": { + "uv": [ + 2, + 15, + 16, + 13 + ], + "texture": "#all", + "cullface": "down", + "tintindex": 0 + } + } + }, + { + "name": "down", + "from": [ + -1, + -2, + 8.3 + ], + "to": [ + 8, + 0, + 8.3 + ], + "rotation": { + "angle": -45, + "axis": "y", + "origin": [ + 8, + -2.25, + 8.3 + ] + }, + "faces": { + "north": { + "uv": [ + 7, + 13, + 16, + 11 + ], + "texture": "#all", + "cullface": "down", + "tintindex": 0 + }, + "south": { + "uv": [ + 7, + 13, + 16, + 11 + ], + "texture": "#all", + "cullface": "down", + "tintindex": 0 + } + } + }, + { + "name": "west", + "from": [ + 20.25, + 7.75, + 3.3 + ], + "to": [ + 21.25, + 7.75, + 13.3 + ], + "rotation": { + "angle": 45, + "axis": "x", + "origin": [ + 18.5, + 7.75, + 8.3 + ] + }, + "faces": { + "east": { + "uv": [ + 3, + 6, + 13, + 5 + ], + "rotation": 270, + "texture": "#all", + "cullface": "east", + "tintindex": 0 + }, + "west": { + "uv": [ + 3, + 6, + 13, + 5 + ], + "rotation": 270, + "texture": "#all", + "cullface": "east", + "tintindex": 0 + } + } + }, + { + "name": "west", + "from": [ + 18.25, + 7.75, + 1.3 + ], + "to": [ + 20.25, + 7.75, + 15.3 + ], + "rotation": { + "angle": 45, + "axis": "x", + "origin": [ + 18.5, + 7.75, + 8.3 + ] + }, + "faces": { + "east": { + "uv": [ + 1, + 8, + 15, + 6 + ], + "rotation": 270, + "texture": "#all", + "cullface": "east", + "tintindex": 0 + }, + "west": { + "uv": [ + 1, + 8, + 15, + 6 + ], + "rotation": 270, + "texture": "#all", + "cullface": "east", + "tintindex": 0 + } + } + }, + { + "name": "west", + "from": [ + 16.25, + 7.75, + 8.3 + ], + "to": [ + 18.25, + 7.75, + 17.3 + ], + "rotation": { + "angle": 45, + "axis": "x", + "origin": [ + 18.5, + 7.75, + 8.3 + ] + }, + "faces": { + "east": { + "uv": [ + 7, + 10, + 16, + 8 + ], + "rotation": 270, + "texture": "#all", + "cullface": "east", + "tintindex": 0 + }, + "west": { + "uv": [ + 7, + 10, + 16, + 8 + ], + "rotation": 270, + "texture": "#all", + "cullface": "east", + "tintindex": 0 + } + } + }, + { + "name": "west", + "from": [ + 16.25, + 7.75, + -0.7 + ], + "to": [ + 18.25, + 7.75, + 8.3 + ], + "rotation": { + "angle": 45, + "axis": "x", + "origin": [ + 18.5, + 7.75, + 8.3 + ] + }, + "faces": { + "east": { + "uv": [ + 0, + 10, + 9, + 8 + ], + "rotation": 270, + "texture": "#all", + "cullface": "east", + "tintindex": 0 + }, + "west": { + "uv": [ + 0, + 10, + 9, + 8 + ], + "rotation": 270, + "texture": "#all", + "cullface": "east", + "tintindex": 0 + } + } + }, + { + "name": "west", + "from": [ + 16.25, + 7.75, + 8.3 + ], + "to": [ + 18.25, + 16.75, + 8.3 + ], + "rotation": { + "angle": 45, + "axis": "x", + "origin": [ + 18.5, + 7.75, + 8.3 + ] + }, + "faces": { + "east": { + "uv": [ + 0, + 13, + 9, + 11 + ], + "rotation": 90, + "texture": "#all", + "cullface": "east", + "tintindex": 0 + }, + "west": { + "uv": [ + 0, + 13, + 9, + 11 + ], + "rotation": 270, + "texture": "#all", + "cullface": "east", + "tintindex": 0 + } + } + }, + { + "name": "west", + "from": [ + 20.25, + 2.75, + 8.3 + ], + "to": [ + 21.25, + 12.75, + 8.3 + ], + "rotation": { + "angle": 45, + "axis": "x", + "origin": [ + 18.5, + 7.75, + 8.3 + ] + }, + "faces": { + "east": { + "uv": [ + 1, + 9, + 11, + 8 + ], + "rotation": 90, + "texture": "#all", + "cullface": "east", + "tintindex": 0 + }, + "west": { + "uv": [ + 1, + 9, + 11, + 8 + ], + "rotation": 270, + "texture": "#all", + "cullface": "east", + "tintindex": 0 + } + } + }, + { + "name": "west", + "from": [ + 18.25, + 0.75, + 8.3 + ], + "to": [ + 20.25, + 14.75, + 8.3 + ], + "rotation": { + "angle": 45, + "axis": "x", + "origin": [ + 18.5, + 7.75, + 8.3 + ] + }, + "faces": { + "east": { + "uv": [ + 0, + 11, + 14, + 9 + ], + "rotation": 90, + "texture": "#all", + "cullface": "east", + "tintindex": 0 + }, + "west": { + "uv": [ + 0, + 11, + 14, + 9 + ], + "rotation": 270, + "texture": "#all", + "cullface": "east", + "tintindex": 0 + } + } + }, + { + "name": "west", + "from": [ + 16.25, + -1.25, + 8.3 + ], + "to": [ + 18.25, + 7.75, + 8.3 + ], + "rotation": { + "angle": 45, + "axis": "x", + "origin": [ + 18.5, + 7.75, + 8.3 + ] + }, + "faces": { + "east": { + "uv": [ + 7, + 13, + 16, + 11 + ], + "rotation": 90, + "texture": "#all", + "cullface": "east", + "tintindex": 0 + }, + "west": { + "uv": [ + 7, + 13, + 16, + 11 + ], + "rotation": 270, + "texture": "#all", + "cullface": "east", + "tintindex": 0 + } + } + }, + { + "name": "east", + "from": [ + -5.05, + 7.75, + 3.3 + ], + "to": [ + -4.05, + 7.75, + 13.3 + ], + "rotation": { + "angle": -45, + "axis": "x", + "origin": [ + -2.8, + 7.75, + 8.3 + ] + }, + "faces": { + "west": { + "uv": [ + 3, + 6, + 13, + 5 + ], + "rotation": 90, + "texture": "#all", + "cullface": "west", + "tintindex": 0 + }, + "east": { + "uv": [ + 3, + 6, + 13, + 5 + ], + "rotation": 90, + "texture": "#all", + "cullface": "west", + "tintindex": 0 + } + } + }, + { + "name": "east", + "from": [ + -4.05, + 7.75, + 1.3 + ], + "to": [ + -2.05, + 7.75, + 15.3 + ], + "rotation": { + "angle": -45, + "axis": "x", + "origin": [ + -2.8, + 7.75, + 8.3 + ] + }, + "faces": { + "west": { + "uv": [ + 1, + 8, + 15, + 6 + ], + "rotation": 90, + "texture": "#all", + "cullface": "west", + "tintindex": 0 + }, + "east": { + "uv": [ + 1, + 8, + 15, + 6 + ], + "rotation": 90, + "texture": "#all", + "cullface": "west", + "tintindex": 0 + } + } + }, + { + "name": "east", + "from": [ + -2.05, + 7.75, + 8.3 + ], + "to": [ + -0.05, + 7.75, + 17.3 + ], + "rotation": { + "angle": -45, + "axis": "x", + "origin": [ + -2.8, + 7.75, + 8.3 + ] + }, + "faces": { + "west": { + "uv": [ + 7, + 10, + 16, + 8 + ], + "rotation": 90, + "texture": "#all", + "cullface": "west", + "tintindex": 0 + }, + "east": { + "uv": [ + 7, + 10, + 16, + 8 + ], + "rotation": 90, + "texture": "#all", + "cullface": "west", + "tintindex": 0 + } + } + }, + { + "name": "east", + "from": [ + -2.05, + 7.75, + -0.7 + ], + "to": [ + -0.05, + 7.75, + 8.3 + ], + "rotation": { + "angle": -45, + "axis": "x", + "origin": [ + -2.8, + 7.75, + 8.3 + ] + }, + "faces": { + "west": { + "uv": [ + 0, + 10, + 9, + 8 + ], + "rotation": 90, + "texture": "#all", + "cullface": "west", + "tintindex": 0 + }, + "east": { + "uv": [ + 0, + 10, + 9, + 8 + ], + "rotation": 90, + "texture": "#all", + "cullface": "west", + "tintindex": 0 + } + } + }, + { + "name": "east", + "from": [ + -2.05, + -1.25, + 8.3 + ], + "to": [ + -0.05, + 7.75, + 8.3 + ], + "rotation": { + "angle": -45, + "axis": "x", + "origin": [ + -2.8, + 7.75, + 8.3 + ] + }, + "faces": { + "west": { + "uv": [ + 0, + 13, + 9, + 11 + ], + "rotation": 270, + "texture": "#all", + "cullface": "west", + "tintindex": 0 + }, + "east": { + "uv": [ + 0, + 13, + 9, + 11 + ], + "rotation": 90, + "texture": "#all", + "cullface": "west", + "tintindex": 0 + } + } + }, + { + "name": "east", + "from": [ + -5.05, + 2.75, + 8.3 + ], + "to": [ + -4.05, + 12.75, + 8.3 + ], + "rotation": { + "angle": -45, + "axis": "x", + "origin": [ + -2.8, + 7.75, + 8.3 + ] + }, + "faces": { + "west": { + "uv": [ + 1, + 9, + 11, + 8 + ], + "rotation": 270, + "texture": "#all", + "cullface": "west", + "tintindex": 0 + }, + "east": { + "uv": [ + 1, + 9, + 11, + 8 + ], + "rotation": 90, + "texture": "#all", + "cullface": "west", + "tintindex": 0 + } + } + }, + { + "name": "east", + "from": [ + -4.05, + 0.75, + 8.3 + ], + "to": [ + -2.05, + 14.75, + 8.3 + ], + "rotation": { + "angle": -45, + "axis": "x", + "origin": [ + -2.8, + 7.75, + 8.3 + ] + }, + "faces": { + "west": { + "uv": [ + 0, + 11, + 14, + 9 + ], + "rotation": 270, + "texture": "#all", + "cullface": "west", + "tintindex": 0 + }, + "east": { + "uv": [ + 0, + 11, + 14, + 9 + ], + "rotation": 90, + "texture": "#all", + "cullface": "west", + "tintindex": 0 + } + } + }, + { + "name": "east", + "from": [ + -2.05, + 7.75, + 8.3 + ], + "to": [ + -0.05, + 16.75, + 8.3 + ], + "rotation": { + "angle": -45, + "axis": "x", + "origin": [ + -2.8, + 7.75, + 8.3 + ] + }, + "faces": { + "west": { + "uv": [ + 7, + 13, + 16, + 11 + ], + "rotation": 270, + "texture": "#all", + "cullface": "west", + "tintindex": 0 + }, + "east": { + "uv": [ + 7, + 13, + 16, + 11 + ], + "rotation": 90, + "texture": "#all", + "cullface": "west", + "tintindex": 0 + } + } + }, + { + "name": "north", + "from": [ + 8.2, + 2.75, + -5.05 + ], + "to": [ + 8.2, + 12.75, + -4.05 + ], + "rotation": { + "angle": 45, + "axis": "z", + "origin": [ + 8.2, + 7.75, + -2.8 + ] + }, + "faces": { + "north": { + "uv": [ + 3, + 6, + 13, + 5 + ], + "rotation": 270, + "texture": "#all", + "cullface": "north", + "tintindex": 0 + }, + "south": { + "uv": [ + 3, + 6, + 13, + 5 + ], + "rotation": 90, + "texture": "#all", + "cullface": "north", + "tintindex": 0 + } + } + }, + { + "name": "north", + "from": [ + 8.2, + 0.75, + -4.05 + ], + "to": [ + 8.2, + 14.75, + -2.05 + ], + "rotation": { + "angle": 45, + "axis": "z", + "origin": [ + 8.2, + 7.75, + -2.8 + ] + }, + "faces": { + "north": { + "uv": [ + 1, + 8, + 15, + 6 + ], + "rotation": 270, + "texture": "#all", + "cullface": "north", + "tintindex": 0 + }, + "south": { + "uv": [ + 1, + 8, + 15, + 6 + ], + "rotation": 90, + "texture": "#all", + "cullface": "north", + "tintindex": 0 + } + } + }, + { + "name": "north", + "from": [ + 8.2, + 7.75, + -2.05 + ], + "to": [ + 8.2, + 16.75, + -0.05 + ], + "rotation": { + "angle": 45, + "axis": "z", + "origin": [ + 8.2, + 7.75, + -2.8 + ] + }, + "faces": { + "north": { + "uv": [ + 7, + 10, + 16, + 8 + ], + "rotation": 270, + "texture": "#all", + "cullface": "north", + "tintindex": 0 + }, + "south": { + "uv": [ + 7, + 10, + 16, + 8 + ], + "rotation": 90, + "texture": "#all", + "cullface": "north", + "tintindex": 0 + } + } + }, + { + "name": "north", + "from": [ + 8.2, + -1.25, + -2.05 + ], + "to": [ + 8.2, + 7.75, + -0.05 + ], + "rotation": { + "angle": 45, + "axis": "z", + "origin": [ + 8.2, + 7.75, + -2.8 + ] + }, + "faces": { + "north": { + "uv": [ + 0, + 10, + 9, + 8 + ], + "rotation": 270, + "texture": "#all", + "cullface": "north", + "tintindex": 0 + }, + "south": { + "uv": [ + 0, + 10, + 9, + 8 + ], + "rotation": 90, + "texture": "#all", + "cullface": "north", + "tintindex": 0 + } + } + }, + { + "name": "north", + "from": [ + -0.8, + 7.75, + -2.05 + ], + "to": [ + 8.2, + 7.75, + -0.05 + ], + "rotation": { + "angle": 45, + "axis": "z", + "origin": [ + 8.2, + 7.75, + -2.8 + ] + }, + "faces": { + "north": { + "uv": [ + 0, + 13, + 9, + 11 + ], + "rotation": 180, + "texture": "#all", + "cullface": "north", + "tintindex": 0 + }, + "south": { + "uv": [ + 0, + 13, + 9, + 11 + ], + "texture": "#all", + "cullface": "north", + "tintindex": 0 + } + } + }, + { + "name": "north", + "from": [ + 3.2, + 7.75, + -5.05 + ], + "to": [ + 13.2, + 7.75, + -4.05 + ], + "rotation": { + "angle": 45, + "axis": "z", + "origin": [ + 8.2, + 7.75, + -2.8 + ] + }, + "faces": { + "north": { + "uv": [ + 1, + 9, + 11, + 8 + ], + "rotation": 180, + "texture": "#all", + "cullface": "north", + "tintindex": 0 + }, + "south": { + "uv": [ + 1, + 9, + 11, + 8 + ], + "texture": "#all", + "cullface": "north", + "tintindex": 0 + } + } + }, + { + "name": "north", + "from": [ + 1.2, + 7.75, + -4.05 + ], + "to": [ + 15.2, + 7.75, + -2.05 + ], + "rotation": { + "angle": 45, + "axis": "z", + "origin": [ + 8.2, + 7.75, + -2.8 + ] + }, + "faces": { + "north": { + "uv": [ + 0, + 11, + 14, + 9 + ], + "rotation": 180, + "texture": "#all", + "cullface": "north", + "tintindex": 0 + }, + "south": { + "uv": [ + 0, + 11, + 14, + 9 + ], + "texture": "#all", + "cullface": "north", + "tintindex": 0 + } + } + }, + { + "name": "north", + "from": [ + 8.2, + 7.75, + -2.05 + ], + "to": [ + 17.2, + 7.75, + -0.05 + ], + "rotation": { + "angle": 45, + "axis": "z", + "origin": [ + 8.2, + 7.75, + -2.8 + ] + }, + "faces": { + "north": { + "uv": [ + 7, + 13, + 16, + 11 + ], + "rotation": 180, + "texture": "#all", + "cullface": "north", + "tintindex": 0 + }, + "south": { + "uv": [ + 7, + 13, + 16, + 11 + ], + "texture": "#all", + "cullface": "north", + "tintindex": 0 + } + } + }, + { + "name": "south", + "from": [ + 8.2, + 2.75, + 19.95 + ], + "to": [ + 8.2, + 12.75, + 20.95 + ], + "rotation": { + "angle": -45, + "axis": "z", + "origin": [ + 8.2, + 7.75, + 18.7 + ] + }, + "faces": { + "south": { + "uv": [ + 3, + 6, + 13, + 5 + ], + "rotation": 90, + "texture": "#all", + "cullface": "south", + "tintindex": 0 + }, + "north": { + "uv": [ + 3, + 6, + 13, + 5 + ], + "rotation": 270, + "texture": "#all", + "cullface": "south", + "tintindex": 0 + } + } + }, + { + "name": "south", + "from": [ + 8.2, + 0.75, + 17.95 + ], + "to": [ + 8.2, + 14.75, + 19.95 + ], + "rotation": { + "angle": -45, + "axis": "z", + "origin": [ + 8.2, + 7.75, + 18.7 + ] + }, + "faces": { + "south": { + "uv": [ + 1, + 8, + 15, + 6 + ], + "rotation": 90, + "texture": "#all", + "cullface": "south", + "tintindex": 0 + }, + "north": { + "uv": [ + 1, + 8, + 15, + 6 + ], + "rotation": 270, + "texture": "#all", + "cullface": "south", + "tintindex": 0 + } + } + }, + { + "name": "south", + "from": [ + 8.2, + 7.75, + 15.95 + ], + "to": [ + 8.2, + 16.75, + 17.95 + ], + "rotation": { + "angle": -45, + "axis": "z", + "origin": [ + 8.2, + 7.75, + 18.7 + ] + }, + "faces": { + "south": { + "uv": [ + 7, + 10, + 16, + 8 + ], + "rotation": 90, + "texture": "#all", + "cullface": "south", + "tintindex": 0 + }, + "north": { + "uv": [ + 7, + 10, + 16, + 8 + ], + "rotation": 270, + "texture": "#all", + "cullface": "south", + "tintindex": 0 + } + } + }, + { + "name": "south", + "from": [ + 8.2, + -1.25, + 15.95 + ], + "to": [ + 8.2, + 7.75, + 17.95 + ], + "rotation": { + "angle": -45, + "axis": "z", + "origin": [ + 8.2, + 7.75, + 18.7 + ] + }, + "faces": { + "south": { + "uv": [ + 0, + 10, + 9, + 8 + ], + "rotation": 90, + "texture": "#all", + "cullface": "south", + "tintindex": 0 + }, + "north": { + "uv": [ + 0, + 10, + 9, + 8 + ], + "rotation": 270, + "texture": "#all", + "cullface": "south", + "tintindex": 0 + } + } + }, + { + "name": "south", + "from": [ + 8.2, + 7.75, + 15.95 + ], + "to": [ + 17.2, + 7.75, + 17.95 + ], + "rotation": { + "angle": -45, + "axis": "z", + "origin": [ + 8.2, + 7.75, + 18.7 + ] + }, + "faces": { + "south": { + "uv": [ + 0, + 13, + 9, + 11 + ], + "texture": "#all", + "cullface": "south", + "tintindex": 0 + }, + "north": { + "uv": [ + 0, + 13, + 9, + 11 + ], + "rotation": 180, + "texture": "#all", + "cullface": "south", + "tintindex": 0 + } + } + }, + { + "name": "south", + "from": [ + 3.2, + 7.75, + 19.95 + ], + "to": [ + 13.2, + 7.75, + 20.95 + ], + "rotation": { + "angle": -45, + "axis": "z", + "origin": [ + 8.2, + 7.75, + 18.7 + ] + }, + "faces": { + "south": { + "uv": [ + 1, + 9, + 11, + 8 + ], + "texture": "#all", + "cullface": "south", + "tintindex": 0 + }, + "north": { + "uv": [ + 1, + 9, + 11, + 8 + ], + "rotation": 180, + "texture": "#all", + "cullface": "south", + "tintindex": 0 + } + } + }, + { + "name": "south", + "from": [ + 1.2, + 7.75, + 17.95 + ], + "to": [ + 15.2, + 7.75, + 19.95 + ], + "rotation": { + "angle": -45, + "axis": "z", + "origin": [ + 8.2, + 7.75, + 18.7 + ] + }, + "faces": { + "south": { + "uv": [ + 0, + 11, + 14, + 9 + ], + "texture": "#all", + "cullface": "south", + "tintindex": 0 + }, + "north": { + "uv": [ + 0, + 11, + 14, + 9 + ], + "rotation": 180, + "texture": "#all", + "cullface": "south", + "tintindex": 0 + } + } + }, + { + "name": "south", + "from": [ + -0.8, + 7.75, + 15.95 + ], + "to": [ + 8.2, + 7.75, + 17.95 + ], + "rotation": { + "angle": -45, + "axis": "z", + "origin": [ + 8.2, + 7.75, + 18.7 + ] + }, + "faces": { + "south": { + "uv": [ + 7, + 13, + 16, + 11 + ], + "texture": "#all", + "cullface": "south", + "tintindex": 0 + }, + "north": { + "uv": [ + 7, + 13, + 16, + 11 + ], + "rotation": 180, + "texture": "#all", + "cullface": "south", + "tintindex": 0 + } + } + } + ], + "groups": [ + 0, + { + "name": "top1", + "origin": [ + 8, + 18.25, + 8 + ], + "color": 0, + "children": [ + 1, + 2, + 3, + 4 + ] + }, + { + "name": "top2", + "origin": [ + 8, + 18.25, + 8 + ], + "color": 0, + "children": [ + 5, + 6, + 7, + 8 + ] + }, + { + "name": "down1", + "origin": [ + 8, + 18.25, + 8 + ], + "color": 0, + "children": [ + 9, + 10, + 11, + 12 + ] + }, + { + "name": "down2", + "origin": [ + 8, + 18.25, + 8 + ], + "color": 0, + "children": [ + 13, + 14, + 15, + 16 + ] + }, + { + "name": "west1", + "origin": [ + 8, + 18.25, + 8 + ], + "color": 0, + "children": [ + 17, + 18, + 19, + 20 + ] + }, + { + "name": "west2", + "origin": [ + 8, + 18.25, + 8 + ], + "color": 0, + "children": [ + 21, + 22, + 23, + 24 + ] + }, + { + "name": "east1", + "origin": [ + 8, + 18.25, + 8 + ], + "color": 0, + "children": [ + 25, + 26, + 27, + 28 + ] + }, + { + "name": "east2", + "origin": [ + 8, + 18.25, + 8 + ], + "color": 0, + "children": [ + 29, + 30, + 31, + 32 + ] + }, + { + "name": "north", + "origin": [ + 8, + 18.25, + 8 + ], + "color": 0, + "children": [ + 33, + 34, + 35, + 36 + ] + }, + { + "name": "north2", + "origin": [ + 8, + 18.25, + 8 + ], + "color": 0, + "children": [ + 37, + 38, + 39, + 40 + ] + }, + { + "name": "south", + "origin": [ + 8, + 18.25, + 8 + ], + "color": 0, + "children": [ + 41, + 42, + 43, + 44 + ] + }, + { + "name": "south2", + "origin": [ + 8, + 18.25, + 8 + ], + "color": 0, + "children": [ + 45, + 46, + 47, + 48 + ] + } + ] +} \ No newline at end of file diff --git a/common-1.21.1/src/main/resources/assets/antarchy/models/block/truffalo_tuft_white.json b/common-1.21.1/src/main/resources/assets/antarchy/models/block/truffalo_tuft_white.json new file mode 100644 index 00000000..1eca9371 --- /dev/null +++ b/common-1.21.1/src/main/resources/assets/antarchy/models/block/truffalo_tuft_white.json @@ -0,0 +1,6 @@ +{ + "parent": "antarchy:block/truffalo_tuft_template", + "textures": { + "all": "antarchy:block/truffalo/white_truffalo_tuft" + } +} diff --git a/common-1.21.1/src/main/resources/assets/antarchy/models/block/truffalo_tuft_yellow.json b/common-1.21.1/src/main/resources/assets/antarchy/models/block/truffalo_tuft_yellow.json new file mode 100644 index 00000000..37c419cc --- /dev/null +++ b/common-1.21.1/src/main/resources/assets/antarchy/models/block/truffalo_tuft_yellow.json @@ -0,0 +1,6 @@ +{ + "parent": "antarchy:block/truffalo_tuft_template", + "textures": { + "all": "antarchy:block/truffalo/yellow_truffalo_tuft" + } +} diff --git a/common-1.21.1/src/main/resources/assets/antarchy/models/block/truffalo_wall_hanging_sign.json b/common-1.21.1/src/main/resources/assets/antarchy/models/block/truffalo_wall_hanging_sign.json new file mode 100644 index 00000000..7bce3536 --- /dev/null +++ b/common-1.21.1/src/main/resources/assets/antarchy/models/block/truffalo_wall_hanging_sign.json @@ -0,0 +1,5 @@ +{ + "textures": { + "particle": "antarchy:block/truffalo/truffalo_planks" + } +} diff --git a/common-1.21.1/src/main/resources/assets/antarchy/models/block/truffalo_wall_sign.json b/common-1.21.1/src/main/resources/assets/antarchy/models/block/truffalo_wall_sign.json new file mode 100644 index 00000000..4be93de3 --- /dev/null +++ b/common-1.21.1/src/main/resources/assets/antarchy/models/block/truffalo_wall_sign.json @@ -0,0 +1,5 @@ +{ + "textures": { + "particle": "antarchy:item/truffalo_sign" + } +} diff --git a/common-1.21.1/src/main/resources/assets/antarchy/models/block/truffalo_wood.json b/common-1.21.1/src/main/resources/assets/antarchy/models/block/truffalo_wood.json new file mode 100644 index 00000000..bce9c92c --- /dev/null +++ b/common-1.21.1/src/main/resources/assets/antarchy/models/block/truffalo_wood.json @@ -0,0 +1,7 @@ +{ + "parent": "minecraft:block/jungle_wood", + "textures": { + "end": "antarchy:block/truffalo/truffalo_log", + "side": "antarchy:block/truffalo/truffalo_log" + } +} diff --git a/common-1.21.1/src/main/resources/assets/antarchy/models/item/black_truffalo_tuft.json b/common-1.21.1/src/main/resources/assets/antarchy/models/item/black_truffalo_tuft.json new file mode 100644 index 00000000..3a85639b --- /dev/null +++ b/common-1.21.1/src/main/resources/assets/antarchy/models/item/black_truffalo_tuft.json @@ -0,0 +1,3 @@ +{ + "parent": "antarchy:block/truffalo_tuft_black" +} diff --git a/common-1.21.1/src/main/resources/assets/antarchy/models/item/blue_truffalo_tuft.json b/common-1.21.1/src/main/resources/assets/antarchy/models/item/blue_truffalo_tuft.json new file mode 100644 index 00000000..31bfa44d --- /dev/null +++ b/common-1.21.1/src/main/resources/assets/antarchy/models/item/blue_truffalo_tuft.json @@ -0,0 +1,3 @@ +{ + "parent": "antarchy:block/truffalo_tuft_blue" +} diff --git a/common-1.21.1/src/main/resources/assets/antarchy/models/item/brown_truffalo_tuft.json b/common-1.21.1/src/main/resources/assets/antarchy/models/item/brown_truffalo_tuft.json new file mode 100644 index 00000000..bb2b0bf4 --- /dev/null +++ b/common-1.21.1/src/main/resources/assets/antarchy/models/item/brown_truffalo_tuft.json @@ -0,0 +1,3 @@ +{ + "parent": "antarchy:block/truffalo_tuft_brown" +} diff --git a/common-1.21.1/src/main/resources/assets/antarchy/models/item/cyan_truffalo_tuft.json b/common-1.21.1/src/main/resources/assets/antarchy/models/item/cyan_truffalo_tuft.json new file mode 100644 index 00000000..f374d9d8 --- /dev/null +++ b/common-1.21.1/src/main/resources/assets/antarchy/models/item/cyan_truffalo_tuft.json @@ -0,0 +1,3 @@ +{ + "parent": "antarchy:block/truffalo_tuft_cyan" +} diff --git a/common-1.21.1/src/main/resources/assets/antarchy/models/item/gray_truffalo_tuft.json b/common-1.21.1/src/main/resources/assets/antarchy/models/item/gray_truffalo_tuft.json new file mode 100644 index 00000000..16a21056 --- /dev/null +++ b/common-1.21.1/src/main/resources/assets/antarchy/models/item/gray_truffalo_tuft.json @@ -0,0 +1,3 @@ +{ + "parent": "antarchy:block/truffalo_tuft_gray" +} diff --git a/common-1.21.1/src/main/resources/assets/antarchy/models/item/green_truffalo_tuft.json b/common-1.21.1/src/main/resources/assets/antarchy/models/item/green_truffalo_tuft.json new file mode 100644 index 00000000..6cf274a0 --- /dev/null +++ b/common-1.21.1/src/main/resources/assets/antarchy/models/item/green_truffalo_tuft.json @@ -0,0 +1,3 @@ +{ + "parent": "antarchy:block/truffalo_tuft_green" +} diff --git a/common-1.21.1/src/main/resources/assets/antarchy/models/item/hoverboard.json b/common-1.21.1/src/main/resources/assets/antarchy/models/item/hoverboard.json new file mode 100644 index 00000000..8b4ffc58 --- /dev/null +++ b/common-1.21.1/src/main/resources/assets/antarchy/models/item/hoverboard.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "antarchy:item/hoverboard/hoverboard" + } +} diff --git a/common-1.21.1/src/main/resources/assets/antarchy/models/item/hoverboard_black.json b/common-1.21.1/src/main/resources/assets/antarchy/models/item/hoverboard_black.json new file mode 100644 index 00000000..ca7358df --- /dev/null +++ b/common-1.21.1/src/main/resources/assets/antarchy/models/item/hoverboard_black.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "antarchy:item/hoverboard/hoverboard_black" + } +} diff --git a/common-1.21.1/src/main/resources/assets/antarchy/models/item/hoverboard_blue.json b/common-1.21.1/src/main/resources/assets/antarchy/models/item/hoverboard_blue.json new file mode 100644 index 00000000..5fe34395 --- /dev/null +++ b/common-1.21.1/src/main/resources/assets/antarchy/models/item/hoverboard_blue.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "antarchy:item/hoverboard/hoverboard_blue" + } +} diff --git a/common-1.21.1/src/main/resources/assets/antarchy/models/item/hoverboard_brown.json b/common-1.21.1/src/main/resources/assets/antarchy/models/item/hoverboard_brown.json new file mode 100644 index 00000000..92d059b8 --- /dev/null +++ b/common-1.21.1/src/main/resources/assets/antarchy/models/item/hoverboard_brown.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "antarchy:item/hoverboard/hoverboard_brown" + } +} diff --git a/common-1.21.1/src/main/resources/assets/antarchy/models/item/hoverboard_cyan.json b/common-1.21.1/src/main/resources/assets/antarchy/models/item/hoverboard_cyan.json new file mode 100644 index 00000000..cbe7c5fb --- /dev/null +++ b/common-1.21.1/src/main/resources/assets/antarchy/models/item/hoverboard_cyan.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "antarchy:item/hoverboard/hoverboard_cyan" + } +} diff --git a/common-1.21.1/src/main/resources/assets/antarchy/models/item/hoverboard_gray.json b/common-1.21.1/src/main/resources/assets/antarchy/models/item/hoverboard_gray.json new file mode 100644 index 00000000..64045068 --- /dev/null +++ b/common-1.21.1/src/main/resources/assets/antarchy/models/item/hoverboard_gray.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "antarchy:item/hoverboard/hoverboard_gray" + } +} diff --git a/common-1.21.1/src/main/resources/assets/antarchy/models/item/hoverboard_green.json b/common-1.21.1/src/main/resources/assets/antarchy/models/item/hoverboard_green.json new file mode 100644 index 00000000..7c516302 --- /dev/null +++ b/common-1.21.1/src/main/resources/assets/antarchy/models/item/hoverboard_green.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "antarchy:item/hoverboard/hoverboard_green" + } +} diff --git a/common-1.21.1/src/main/resources/assets/antarchy/models/item/hoverboard_light_blue.json b/common-1.21.1/src/main/resources/assets/antarchy/models/item/hoverboard_light_blue.json new file mode 100644 index 00000000..3f32efa3 --- /dev/null +++ b/common-1.21.1/src/main/resources/assets/antarchy/models/item/hoverboard_light_blue.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "antarchy:item/hoverboard/hoverboard_light_blue" + } +} diff --git a/common-1.21.1/src/main/resources/assets/antarchy/models/item/hoverboard_light_gray.json b/common-1.21.1/src/main/resources/assets/antarchy/models/item/hoverboard_light_gray.json new file mode 100644 index 00000000..7adc8656 --- /dev/null +++ b/common-1.21.1/src/main/resources/assets/antarchy/models/item/hoverboard_light_gray.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "antarchy:item/hoverboard/hoverboard_light_gray" + } +} diff --git a/common-1.21.1/src/main/resources/assets/antarchy/models/item/hoverboard_lime.json b/common-1.21.1/src/main/resources/assets/antarchy/models/item/hoverboard_lime.json new file mode 100644 index 00000000..191665aa --- /dev/null +++ b/common-1.21.1/src/main/resources/assets/antarchy/models/item/hoverboard_lime.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "antarchy:item/hoverboard/hoverboard_lime" + } +} diff --git a/common-1.21.1/src/main/resources/assets/antarchy/models/item/hoverboard_magenta.json b/common-1.21.1/src/main/resources/assets/antarchy/models/item/hoverboard_magenta.json new file mode 100644 index 00000000..ea49d703 --- /dev/null +++ b/common-1.21.1/src/main/resources/assets/antarchy/models/item/hoverboard_magenta.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "antarchy:item/hoverboard/hoverboard_magenta" + } +} diff --git a/common-1.21.1/src/main/resources/assets/antarchy/models/item/hoverboard_orange.json b/common-1.21.1/src/main/resources/assets/antarchy/models/item/hoverboard_orange.json new file mode 100644 index 00000000..168240e1 --- /dev/null +++ b/common-1.21.1/src/main/resources/assets/antarchy/models/item/hoverboard_orange.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "antarchy:item/hoverboard/hoverboard_orange" + } +} diff --git a/common-1.21.1/src/main/resources/assets/antarchy/models/item/hoverboard_pink.json b/common-1.21.1/src/main/resources/assets/antarchy/models/item/hoverboard_pink.json new file mode 100644 index 00000000..35fe893c --- /dev/null +++ b/common-1.21.1/src/main/resources/assets/antarchy/models/item/hoverboard_pink.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "antarchy:item/hoverboard/hoverboard_pink" + } +} diff --git a/common-1.21.1/src/main/resources/assets/antarchy/models/item/hoverboard_purple.json b/common-1.21.1/src/main/resources/assets/antarchy/models/item/hoverboard_purple.json new file mode 100644 index 00000000..5af639fc --- /dev/null +++ b/common-1.21.1/src/main/resources/assets/antarchy/models/item/hoverboard_purple.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "antarchy:item/hoverboard/hoverboard_purple" + } +} diff --git a/common-1.21.1/src/main/resources/assets/antarchy/models/item/hoverboard_red.json b/common-1.21.1/src/main/resources/assets/antarchy/models/item/hoverboard_red.json new file mode 100644 index 00000000..b2801760 --- /dev/null +++ b/common-1.21.1/src/main/resources/assets/antarchy/models/item/hoverboard_red.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "antarchy:item/hoverboard/hoverboard_red" + } +} diff --git a/common-1.21.1/src/main/resources/assets/antarchy/models/item/hoverboard_white.json b/common-1.21.1/src/main/resources/assets/antarchy/models/item/hoverboard_white.json new file mode 100644 index 00000000..8464ccf6 --- /dev/null +++ b/common-1.21.1/src/main/resources/assets/antarchy/models/item/hoverboard_white.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "antarchy:item/hoverboard/hoverboard_white" + } +} diff --git a/common-1.21.1/src/main/resources/assets/antarchy/models/item/hoverboard_yellow.json b/common-1.21.1/src/main/resources/assets/antarchy/models/item/hoverboard_yellow.json new file mode 100644 index 00000000..0264df18 --- /dev/null +++ b/common-1.21.1/src/main/resources/assets/antarchy/models/item/hoverboard_yellow.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "antarchy:item/hoverboard/hoverboard_yellow" + } +} diff --git a/common-1.21.1/src/main/resources/assets/antarchy/models/item/light_blue_truffalo_tuft.json b/common-1.21.1/src/main/resources/assets/antarchy/models/item/light_blue_truffalo_tuft.json new file mode 100644 index 00000000..10f474fa --- /dev/null +++ b/common-1.21.1/src/main/resources/assets/antarchy/models/item/light_blue_truffalo_tuft.json @@ -0,0 +1,3 @@ +{ + "parent": "antarchy:block/truffalo_tuft_light_blue" +} diff --git a/common-1.21.1/src/main/resources/assets/antarchy/models/item/light_gray_truffalo_tuft.json b/common-1.21.1/src/main/resources/assets/antarchy/models/item/light_gray_truffalo_tuft.json new file mode 100644 index 00000000..e75f9e5f --- /dev/null +++ b/common-1.21.1/src/main/resources/assets/antarchy/models/item/light_gray_truffalo_tuft.json @@ -0,0 +1,3 @@ +{ + "parent": "antarchy:block/truffalo_tuft_light_gray" +} diff --git a/common-1.21.1/src/main/resources/assets/antarchy/models/item/lime_truffalo_tuft.json b/common-1.21.1/src/main/resources/assets/antarchy/models/item/lime_truffalo_tuft.json new file mode 100644 index 00000000..cee6305a --- /dev/null +++ b/common-1.21.1/src/main/resources/assets/antarchy/models/item/lime_truffalo_tuft.json @@ -0,0 +1,3 @@ +{ + "parent": "antarchy:block/truffalo_tuft_lime" +} diff --git a/common-1.21.1/src/main/resources/assets/antarchy/models/item/magenta_truffalo_tuft.json b/common-1.21.1/src/main/resources/assets/antarchy/models/item/magenta_truffalo_tuft.json new file mode 100644 index 00000000..8060ad9a --- /dev/null +++ b/common-1.21.1/src/main/resources/assets/antarchy/models/item/magenta_truffalo_tuft.json @@ -0,0 +1,3 @@ +{ + "parent": "antarchy:block/truffalo_tuft_magenta" +} diff --git a/common-1.21.1/src/main/resources/assets/antarchy/models/item/music_disc_underside.json b/common-1.21.1/src/main/resources/assets/antarchy/models/item/music_disc_underside.json new file mode 100644 index 00000000..8f74d5dc --- /dev/null +++ b/common-1.21.1/src/main/resources/assets/antarchy/models/item/music_disc_underside.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "antarchy:item/music_disc_underside" + } +} diff --git a/common-1.21.1/src/main/resources/assets/antarchy/models/item/orange_truffalo_tuft.json b/common-1.21.1/src/main/resources/assets/antarchy/models/item/orange_truffalo_tuft.json new file mode 100644 index 00000000..3e4b2c1a --- /dev/null +++ b/common-1.21.1/src/main/resources/assets/antarchy/models/item/orange_truffalo_tuft.json @@ -0,0 +1,3 @@ +{ + "parent": "antarchy:block/truffalo_tuft_orange" +} diff --git a/common-1.21.1/src/main/resources/assets/antarchy/models/item/pink_truffalo_tuft.json b/common-1.21.1/src/main/resources/assets/antarchy/models/item/pink_truffalo_tuft.json new file mode 100644 index 00000000..fd57d7e5 --- /dev/null +++ b/common-1.21.1/src/main/resources/assets/antarchy/models/item/pink_truffalo_tuft.json @@ -0,0 +1,3 @@ +{ + "parent": "antarchy:block/truffalo_tuft_pink" +} diff --git a/common-1.21.1/src/main/resources/assets/antarchy/models/item/purple_truffalo_tuft.json b/common-1.21.1/src/main/resources/assets/antarchy/models/item/purple_truffalo_tuft.json new file mode 100644 index 00000000..89d391ba --- /dev/null +++ b/common-1.21.1/src/main/resources/assets/antarchy/models/item/purple_truffalo_tuft.json @@ -0,0 +1,3 @@ +{ + "parent": "antarchy:block/truffalo_tuft_purple" +} diff --git a/common-1.21.1/src/main/resources/assets/antarchy/models/item/red_truffalo_tuft.json b/common-1.21.1/src/main/resources/assets/antarchy/models/item/red_truffalo_tuft.json new file mode 100644 index 00000000..59ab0272 --- /dev/null +++ b/common-1.21.1/src/main/resources/assets/antarchy/models/item/red_truffalo_tuft.json @@ -0,0 +1,3 @@ +{ + "parent": "antarchy:block/truffalo_tuft_red" +} diff --git a/common-1.21.1/src/main/resources/assets/antarchy/models/item/royal_boat.json b/common-1.21.1/src/main/resources/assets/antarchy/models/item/royal_boat.json new file mode 100644 index 00000000..5d9cd98d --- /dev/null +++ b/common-1.21.1/src/main/resources/assets/antarchy/models/item/royal_boat.json @@ -0,0 +1,7 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "antarchy:item/royal_boat" + } +} + diff --git a/common-1.21.1/src/main/resources/assets/antarchy/models/item/royal_button.json b/common-1.21.1/src/main/resources/assets/antarchy/models/item/royal_button.json new file mode 100644 index 00000000..44f6f576 --- /dev/null +++ b/common-1.21.1/src/main/resources/assets/antarchy/models/item/royal_button.json @@ -0,0 +1,4 @@ +{ + "parent": "antarchy:block/royal_button_inventory" +} + diff --git a/common-1.21.1/src/main/resources/assets/antarchy/models/item/royal_chest_boat.json b/common-1.21.1/src/main/resources/assets/antarchy/models/item/royal_chest_boat.json new file mode 100644 index 00000000..f93241d4 --- /dev/null +++ b/common-1.21.1/src/main/resources/assets/antarchy/models/item/royal_chest_boat.json @@ -0,0 +1,7 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "antarchy:item/royal_chest_boat" + } +} + diff --git a/common-1.21.1/src/main/resources/assets/antarchy/models/item/royal_door.json b/common-1.21.1/src/main/resources/assets/antarchy/models/item/royal_door.json new file mode 100644 index 00000000..3f22e637 --- /dev/null +++ b/common-1.21.1/src/main/resources/assets/antarchy/models/item/royal_door.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "antarchy:item/royal_door" + } +} diff --git a/common-1.21.1/src/main/resources/assets/antarchy/models/item/royal_fence.json b/common-1.21.1/src/main/resources/assets/antarchy/models/item/royal_fence.json new file mode 100644 index 00000000..077c93c7 --- /dev/null +++ b/common-1.21.1/src/main/resources/assets/antarchy/models/item/royal_fence.json @@ -0,0 +1,4 @@ +{ + "parent": "antarchy:block/royal_fence_inventory" +} + diff --git a/common-1.21.1/src/main/resources/assets/antarchy/models/item/royal_fence_gate.json b/common-1.21.1/src/main/resources/assets/antarchy/models/item/royal_fence_gate.json new file mode 100644 index 00000000..38ab16b5 --- /dev/null +++ b/common-1.21.1/src/main/resources/assets/antarchy/models/item/royal_fence_gate.json @@ -0,0 +1,4 @@ +{ + "parent": "antarchy:block/royal_fence_gate" +} + diff --git a/common-1.21.1/src/main/resources/assets/antarchy/models/item/royal_flowering_leaves.json b/common-1.21.1/src/main/resources/assets/antarchy/models/item/royal_flowering_leaves.json new file mode 100644 index 00000000..581868a9 --- /dev/null +++ b/common-1.21.1/src/main/resources/assets/antarchy/models/item/royal_flowering_leaves.json @@ -0,0 +1,3 @@ +{ + "parent": "antarchy:block/royal_flowering_leaves" +} diff --git a/common-1.21.1/src/main/resources/assets/antarchy/models/item/royal_hanging_sign.json b/common-1.21.1/src/main/resources/assets/antarchy/models/item/royal_hanging_sign.json new file mode 100644 index 00000000..834b318f --- /dev/null +++ b/common-1.21.1/src/main/resources/assets/antarchy/models/item/royal_hanging_sign.json @@ -0,0 +1,7 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "antarchy:item/royal_hanging_sign" + } +} + diff --git a/common-1.21.1/src/main/resources/assets/antarchy/models/item/royal_leaves.json b/common-1.21.1/src/main/resources/assets/antarchy/models/item/royal_leaves.json new file mode 100644 index 00000000..8ddad63f --- /dev/null +++ b/common-1.21.1/src/main/resources/assets/antarchy/models/item/royal_leaves.json @@ -0,0 +1,3 @@ +{ + "parent": "antarchy:block/royal_leaves" +} diff --git a/common-1.21.1/src/main/resources/assets/antarchy/models/item/royal_log.json b/common-1.21.1/src/main/resources/assets/antarchy/models/item/royal_log.json new file mode 100644 index 00000000..07579509 --- /dev/null +++ b/common-1.21.1/src/main/resources/assets/antarchy/models/item/royal_log.json @@ -0,0 +1,4 @@ +{ + "parent": "antarchy:block/royal_log" +} + diff --git a/common-1.21.1/src/main/resources/assets/antarchy/models/item/royal_planks.json b/common-1.21.1/src/main/resources/assets/antarchy/models/item/royal_planks.json new file mode 100644 index 00000000..dd927174 --- /dev/null +++ b/common-1.21.1/src/main/resources/assets/antarchy/models/item/royal_planks.json @@ -0,0 +1,4 @@ +{ + "parent": "antarchy:block/royal_planks" +} + diff --git a/common-1.21.1/src/main/resources/assets/antarchy/models/item/royal_pressure_plate.json b/common-1.21.1/src/main/resources/assets/antarchy/models/item/royal_pressure_plate.json new file mode 100644 index 00000000..d15606c7 --- /dev/null +++ b/common-1.21.1/src/main/resources/assets/antarchy/models/item/royal_pressure_plate.json @@ -0,0 +1,4 @@ +{ + "parent": "antarchy:block/royal_pressure_plate" +} + diff --git a/common-1.21.1/src/main/resources/assets/antarchy/models/item/royal_sapling.json b/common-1.21.1/src/main/resources/assets/antarchy/models/item/royal_sapling.json new file mode 100644 index 00000000..38e384b1 --- /dev/null +++ b/common-1.21.1/src/main/resources/assets/antarchy/models/item/royal_sapling.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "antarchy:block/royal/royal_sapling" + } +} diff --git a/common-1.21.1/src/main/resources/assets/antarchy/models/item/royal_sign.json b/common-1.21.1/src/main/resources/assets/antarchy/models/item/royal_sign.json new file mode 100644 index 00000000..64c35d26 --- /dev/null +++ b/common-1.21.1/src/main/resources/assets/antarchy/models/item/royal_sign.json @@ -0,0 +1,7 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "antarchy:item/royal_sign" + } +} + diff --git a/common-1.21.1/src/main/resources/assets/antarchy/models/item/royal_slab.json b/common-1.21.1/src/main/resources/assets/antarchy/models/item/royal_slab.json new file mode 100644 index 00000000..1ccd35dc --- /dev/null +++ b/common-1.21.1/src/main/resources/assets/antarchy/models/item/royal_slab.json @@ -0,0 +1,4 @@ +{ + "parent": "antarchy:block/royal_slab" +} + diff --git a/common-1.21.1/src/main/resources/assets/antarchy/models/item/royal_stairs.json b/common-1.21.1/src/main/resources/assets/antarchy/models/item/royal_stairs.json new file mode 100644 index 00000000..88702599 --- /dev/null +++ b/common-1.21.1/src/main/resources/assets/antarchy/models/item/royal_stairs.json @@ -0,0 +1,4 @@ +{ + "parent": "antarchy:block/royal_stairs" +} + diff --git a/common-1.21.1/src/main/resources/assets/antarchy/models/item/royal_trapdoor.json b/common-1.21.1/src/main/resources/assets/antarchy/models/item/royal_trapdoor.json new file mode 100644 index 00000000..36ef37ec --- /dev/null +++ b/common-1.21.1/src/main/resources/assets/antarchy/models/item/royal_trapdoor.json @@ -0,0 +1,3 @@ +{ + "parent": "antarchy:block/royal_trapdoor_bottom" +} diff --git a/common-1.21.1/src/main/resources/assets/antarchy/models/item/royal_wood.json b/common-1.21.1/src/main/resources/assets/antarchy/models/item/royal_wood.json new file mode 100644 index 00000000..cd402133 --- /dev/null +++ b/common-1.21.1/src/main/resources/assets/antarchy/models/item/royal_wood.json @@ -0,0 +1,4 @@ +{ + "parent": "antarchy:block/royal_wood" +} + diff --git a/common-1.21.1/src/main/resources/assets/antarchy/models/item/stripped_royal_log.json b/common-1.21.1/src/main/resources/assets/antarchy/models/item/stripped_royal_log.json new file mode 100644 index 00000000..0a0dcadc --- /dev/null +++ b/common-1.21.1/src/main/resources/assets/antarchy/models/item/stripped_royal_log.json @@ -0,0 +1,4 @@ +{ + "parent": "antarchy:block/stripped_royal_log" +} + diff --git a/common-1.21.1/src/main/resources/assets/antarchy/models/item/stripped_royal_wood.json b/common-1.21.1/src/main/resources/assets/antarchy/models/item/stripped_royal_wood.json new file mode 100644 index 00000000..a6cd2cd8 --- /dev/null +++ b/common-1.21.1/src/main/resources/assets/antarchy/models/item/stripped_royal_wood.json @@ -0,0 +1,4 @@ +{ + "parent": "antarchy:block/stripped_royal_wood" +} + diff --git a/common-1.21.1/src/main/resources/assets/antarchy/models/item/stripped_truffalo_log.json b/common-1.21.1/src/main/resources/assets/antarchy/models/item/stripped_truffalo_log.json new file mode 100644 index 00000000..9a94f22d --- /dev/null +++ b/common-1.21.1/src/main/resources/assets/antarchy/models/item/stripped_truffalo_log.json @@ -0,0 +1,4 @@ +{ + "parent": "antarchy:block/stripped_truffalo_log" +} + diff --git a/common-1.21.1/src/main/resources/assets/antarchy/models/item/stripped_truffalo_wood.json b/common-1.21.1/src/main/resources/assets/antarchy/models/item/stripped_truffalo_wood.json new file mode 100644 index 00000000..e8177a87 --- /dev/null +++ b/common-1.21.1/src/main/resources/assets/antarchy/models/item/stripped_truffalo_wood.json @@ -0,0 +1,4 @@ +{ + "parent": "antarchy:block/stripped_truffalo_wood" +} + diff --git a/common-1.21.1/src/main/resources/assets/antarchy/models/item/truffalo_boat.json b/common-1.21.1/src/main/resources/assets/antarchy/models/item/truffalo_boat.json new file mode 100644 index 00000000..0cd6be3a --- /dev/null +++ b/common-1.21.1/src/main/resources/assets/antarchy/models/item/truffalo_boat.json @@ -0,0 +1,7 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "antarchy:item/truffalo_boat" + } +} + diff --git a/common-1.21.1/src/main/resources/assets/antarchy/models/item/truffalo_button.json b/common-1.21.1/src/main/resources/assets/antarchy/models/item/truffalo_button.json new file mode 100644 index 00000000..c2e537d5 --- /dev/null +++ b/common-1.21.1/src/main/resources/assets/antarchy/models/item/truffalo_button.json @@ -0,0 +1,4 @@ +{ + "parent": "antarchy:block/truffalo_button_inventory" +} + diff --git a/common-1.21.1/src/main/resources/assets/antarchy/models/item/truffalo_chest_boat.json b/common-1.21.1/src/main/resources/assets/antarchy/models/item/truffalo_chest_boat.json new file mode 100644 index 00000000..f56d001d --- /dev/null +++ b/common-1.21.1/src/main/resources/assets/antarchy/models/item/truffalo_chest_boat.json @@ -0,0 +1,7 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "antarchy:item/truffalo_chest_boat" + } +} + diff --git a/common-1.21.1/src/main/resources/assets/antarchy/models/item/truffalo_door.json b/common-1.21.1/src/main/resources/assets/antarchy/models/item/truffalo_door.json new file mode 100644 index 00000000..f17cc2af --- /dev/null +++ b/common-1.21.1/src/main/resources/assets/antarchy/models/item/truffalo_door.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "antarchy:item/truffalo_door_icon" + } +} diff --git a/common-1.21.1/src/main/resources/assets/antarchy/models/item/truffalo_fence.json b/common-1.21.1/src/main/resources/assets/antarchy/models/item/truffalo_fence.json new file mode 100644 index 00000000..84d3cfc5 --- /dev/null +++ b/common-1.21.1/src/main/resources/assets/antarchy/models/item/truffalo_fence.json @@ -0,0 +1,4 @@ +{ + "parent": "antarchy:block/truffalo_fence_inventory" +} + diff --git a/common-1.21.1/src/main/resources/assets/antarchy/models/item/truffalo_fence_gate.json b/common-1.21.1/src/main/resources/assets/antarchy/models/item/truffalo_fence_gate.json new file mode 100644 index 00000000..de020a1c --- /dev/null +++ b/common-1.21.1/src/main/resources/assets/antarchy/models/item/truffalo_fence_gate.json @@ -0,0 +1,4 @@ +{ + "parent": "antarchy:block/truffalo_fence_gate" +} + diff --git a/common-1.21.1/src/main/resources/assets/antarchy/models/item/truffalo_hanging_sign.json b/common-1.21.1/src/main/resources/assets/antarchy/models/item/truffalo_hanging_sign.json new file mode 100644 index 00000000..17b9e158 --- /dev/null +++ b/common-1.21.1/src/main/resources/assets/antarchy/models/item/truffalo_hanging_sign.json @@ -0,0 +1,7 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "antarchy:item/truffalo_hanging_sign" + } +} + diff --git a/common-1.21.1/src/main/resources/assets/antarchy/models/item/truffalo_log.json b/common-1.21.1/src/main/resources/assets/antarchy/models/item/truffalo_log.json new file mode 100644 index 00000000..48291bb5 --- /dev/null +++ b/common-1.21.1/src/main/resources/assets/antarchy/models/item/truffalo_log.json @@ -0,0 +1,4 @@ +{ + "parent": "antarchy:block/truffalo_log" +} + diff --git a/common-1.21.1/src/main/resources/assets/antarchy/models/item/truffalo_planks.json b/common-1.21.1/src/main/resources/assets/antarchy/models/item/truffalo_planks.json new file mode 100644 index 00000000..da2c17aa --- /dev/null +++ b/common-1.21.1/src/main/resources/assets/antarchy/models/item/truffalo_planks.json @@ -0,0 +1,4 @@ +{ + "parent": "antarchy:block/truffalo_planks" +} + diff --git a/common-1.21.1/src/main/resources/assets/antarchy/models/item/truffalo_pressure_plate.json b/common-1.21.1/src/main/resources/assets/antarchy/models/item/truffalo_pressure_plate.json new file mode 100644 index 00000000..a3cb5958 --- /dev/null +++ b/common-1.21.1/src/main/resources/assets/antarchy/models/item/truffalo_pressure_plate.json @@ -0,0 +1,4 @@ +{ + "parent": "antarchy:block/truffalo_pressure_plate" +} + diff --git a/common-1.21.1/src/main/resources/assets/antarchy/models/item/truffalo_sapling.json b/common-1.21.1/src/main/resources/assets/antarchy/models/item/truffalo_sapling.json new file mode 100644 index 00000000..5b511f0c --- /dev/null +++ b/common-1.21.1/src/main/resources/assets/antarchy/models/item/truffalo_sapling.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "antarchy:block/truffalo/truffalo_sapling" + } +} diff --git a/common-1.21.1/src/main/resources/assets/antarchy/models/item/truffalo_sign.json b/common-1.21.1/src/main/resources/assets/antarchy/models/item/truffalo_sign.json new file mode 100644 index 00000000..6e4306fa --- /dev/null +++ b/common-1.21.1/src/main/resources/assets/antarchy/models/item/truffalo_sign.json @@ -0,0 +1,7 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "antarchy:item/truffalo_sign" + } +} + diff --git a/common-1.21.1/src/main/resources/assets/antarchy/models/item/truffalo_slab.json b/common-1.21.1/src/main/resources/assets/antarchy/models/item/truffalo_slab.json new file mode 100644 index 00000000..e51ff718 --- /dev/null +++ b/common-1.21.1/src/main/resources/assets/antarchy/models/item/truffalo_slab.json @@ -0,0 +1,4 @@ +{ + "parent": "antarchy:block/truffalo_slab" +} + diff --git a/common-1.21.1/src/main/resources/assets/antarchy/models/item/truffalo_stairs.json b/common-1.21.1/src/main/resources/assets/antarchy/models/item/truffalo_stairs.json new file mode 100644 index 00000000..ff7b4285 --- /dev/null +++ b/common-1.21.1/src/main/resources/assets/antarchy/models/item/truffalo_stairs.json @@ -0,0 +1,4 @@ +{ + "parent": "antarchy:block/truffalo_stairs" +} + diff --git a/common-1.21.1/src/main/resources/assets/antarchy/models/item/truffalo_trapdoor.json b/common-1.21.1/src/main/resources/assets/antarchy/models/item/truffalo_trapdoor.json new file mode 100644 index 00000000..fb71d598 --- /dev/null +++ b/common-1.21.1/src/main/resources/assets/antarchy/models/item/truffalo_trapdoor.json @@ -0,0 +1,3 @@ +{ + "parent": "antarchy:block/truffalo_trapdoor_bottom" +} diff --git a/common-1.21.1/src/main/resources/assets/antarchy/models/item/truffalo_wood.json b/common-1.21.1/src/main/resources/assets/antarchy/models/item/truffalo_wood.json new file mode 100644 index 00000000..e49ad0c7 --- /dev/null +++ b/common-1.21.1/src/main/resources/assets/antarchy/models/item/truffalo_wood.json @@ -0,0 +1,4 @@ +{ + "parent": "antarchy:block/truffalo_wood" +} + diff --git a/common-1.21.1/src/main/resources/assets/antarchy/models/item/white_truffalo_tuft.json b/common-1.21.1/src/main/resources/assets/antarchy/models/item/white_truffalo_tuft.json new file mode 100644 index 00000000..986b18b0 --- /dev/null +++ b/common-1.21.1/src/main/resources/assets/antarchy/models/item/white_truffalo_tuft.json @@ -0,0 +1,3 @@ +{ + "parent": "antarchy:block/truffalo_tuft_white" +} diff --git a/common-1.21.1/src/main/resources/assets/antarchy/models/item/yellow_truffalo_tuft.json b/common-1.21.1/src/main/resources/assets/antarchy/models/item/yellow_truffalo_tuft.json new file mode 100644 index 00000000..dcee9c1c --- /dev/null +++ b/common-1.21.1/src/main/resources/assets/antarchy/models/item/yellow_truffalo_tuft.json @@ -0,0 +1,3 @@ +{ + "parent": "antarchy:block/truffalo_tuft_yellow" +} diff --git a/common-1.21.1/src/main/resources/assets/antarchy/sounds.json b/common-1.21.1/src/main/resources/assets/antarchy/sounds.json index 19997bc4..6bda0918 100644 --- a/common-1.21.1/src/main/resources/assets/antarchy/sounds.json +++ b/common-1.21.1/src/main/resources/assets/antarchy/sounds.json @@ -986,6 +986,14 @@ } ] }, + "music_disc_underside": { + "sounds": [ + { + "name": "antarchy:records/underside", + "stream": true + } + ] + }, "lucid_lullaby": { "sounds": [ { diff --git a/common-1.21.1/src/main/resources/assets/antarchy/textures/block/truffalo/black_truffalo_tuft.png b/common-1.21.1/src/main/resources/assets/antarchy/textures/block/truffalo/black_truffalo_tuft.png new file mode 100644 index 00000000..ef62679f Binary files /dev/null and b/common-1.21.1/src/main/resources/assets/antarchy/textures/block/truffalo/black_truffalo_tuft.png differ diff --git a/common-1.21.1/src/main/resources/assets/antarchy/textures/block/truffalo/blue_truffalo_tuft.png b/common-1.21.1/src/main/resources/assets/antarchy/textures/block/truffalo/blue_truffalo_tuft.png new file mode 100644 index 00000000..d9e2aa2b Binary files /dev/null and b/common-1.21.1/src/main/resources/assets/antarchy/textures/block/truffalo/blue_truffalo_tuft.png differ diff --git a/common-1.21.1/src/main/resources/assets/antarchy/textures/block/truffalo/brown_truffalo_tuft.png b/common-1.21.1/src/main/resources/assets/antarchy/textures/block/truffalo/brown_truffalo_tuft.png new file mode 100644 index 00000000..1fdf6237 Binary files /dev/null and b/common-1.21.1/src/main/resources/assets/antarchy/textures/block/truffalo/brown_truffalo_tuft.png differ diff --git a/common-1.21.1/src/main/resources/assets/antarchy/textures/block/truffalo/cyan_truffalo_tuft.png b/common-1.21.1/src/main/resources/assets/antarchy/textures/block/truffalo/cyan_truffalo_tuft.png new file mode 100644 index 00000000..715cb3f7 Binary files /dev/null and b/common-1.21.1/src/main/resources/assets/antarchy/textures/block/truffalo/cyan_truffalo_tuft.png differ diff --git a/common-1.21.1/src/main/resources/assets/antarchy/textures/block/truffalo/gray_truffalo_tuft.png b/common-1.21.1/src/main/resources/assets/antarchy/textures/block/truffalo/gray_truffalo_tuft.png new file mode 100644 index 00000000..f542dfc6 Binary files /dev/null and b/common-1.21.1/src/main/resources/assets/antarchy/textures/block/truffalo/gray_truffalo_tuft.png differ diff --git a/common-1.21.1/src/main/resources/assets/antarchy/textures/block/truffalo/green_truffalo_tuft.png b/common-1.21.1/src/main/resources/assets/antarchy/textures/block/truffalo/green_truffalo_tuft.png new file mode 100644 index 00000000..0ed3065a Binary files /dev/null and b/common-1.21.1/src/main/resources/assets/antarchy/textures/block/truffalo/green_truffalo_tuft.png differ diff --git a/common-1.21.1/src/main/resources/assets/antarchy/textures/block/truffalo/light_blue_truffalo_tuft.png b/common-1.21.1/src/main/resources/assets/antarchy/textures/block/truffalo/light_blue_truffalo_tuft.png new file mode 100644 index 00000000..40b53cbd Binary files /dev/null and b/common-1.21.1/src/main/resources/assets/antarchy/textures/block/truffalo/light_blue_truffalo_tuft.png differ diff --git a/common-1.21.1/src/main/resources/assets/antarchy/textures/block/truffalo/light_gray_truffalo_tuft.png b/common-1.21.1/src/main/resources/assets/antarchy/textures/block/truffalo/light_gray_truffalo_tuft.png new file mode 100644 index 00000000..0780b4a3 Binary files /dev/null and b/common-1.21.1/src/main/resources/assets/antarchy/textures/block/truffalo/light_gray_truffalo_tuft.png differ diff --git a/common-1.21.1/src/main/resources/assets/antarchy/textures/block/truffalo/lime_truffalo_tuft.png b/common-1.21.1/src/main/resources/assets/antarchy/textures/block/truffalo/lime_truffalo_tuft.png new file mode 100644 index 00000000..8b51565b Binary files /dev/null and b/common-1.21.1/src/main/resources/assets/antarchy/textures/block/truffalo/lime_truffalo_tuft.png differ diff --git a/common-1.21.1/src/main/resources/assets/antarchy/textures/block/truffalo/magenta_truffalo_tuft.png b/common-1.21.1/src/main/resources/assets/antarchy/textures/block/truffalo/magenta_truffalo_tuft.png new file mode 100644 index 00000000..85d3c10d Binary files /dev/null and b/common-1.21.1/src/main/resources/assets/antarchy/textures/block/truffalo/magenta_truffalo_tuft.png differ diff --git a/common-1.21.1/src/main/resources/assets/antarchy/textures/block/truffalo/orange_truffalo_tuft.png b/common-1.21.1/src/main/resources/assets/antarchy/textures/block/truffalo/orange_truffalo_tuft.png new file mode 100644 index 00000000..dd2c967c Binary files /dev/null and b/common-1.21.1/src/main/resources/assets/antarchy/textures/block/truffalo/orange_truffalo_tuft.png differ diff --git a/common-1.21.1/src/main/resources/assets/antarchy/textures/block/truffalo/pink_truffalo_tuft.png b/common-1.21.1/src/main/resources/assets/antarchy/textures/block/truffalo/pink_truffalo_tuft.png new file mode 100644 index 00000000..1835151a Binary files /dev/null and b/common-1.21.1/src/main/resources/assets/antarchy/textures/block/truffalo/pink_truffalo_tuft.png differ diff --git a/common-1.21.1/src/main/resources/assets/antarchy/textures/block/truffalo/purple_truffalo_tuft.png b/common-1.21.1/src/main/resources/assets/antarchy/textures/block/truffalo/purple_truffalo_tuft.png new file mode 100644 index 00000000..6decc264 Binary files /dev/null and b/common-1.21.1/src/main/resources/assets/antarchy/textures/block/truffalo/purple_truffalo_tuft.png differ diff --git a/common-1.21.1/src/main/resources/assets/antarchy/textures/block/truffalo/red_truffalo_tuft.png b/common-1.21.1/src/main/resources/assets/antarchy/textures/block/truffalo/red_truffalo_tuft.png new file mode 100644 index 00000000..e44eafed Binary files /dev/null and b/common-1.21.1/src/main/resources/assets/antarchy/textures/block/truffalo/red_truffalo_tuft.png differ diff --git a/common-1.21.1/src/main/resources/assets/antarchy/textures/block/truffalo/truffalo_door_bottom.png b/common-1.21.1/src/main/resources/assets/antarchy/textures/block/truffalo/truffalo_door_bottom.png new file mode 100644 index 00000000..77d00dc2 Binary files /dev/null and b/common-1.21.1/src/main/resources/assets/antarchy/textures/block/truffalo/truffalo_door_bottom.png differ diff --git a/common-1.21.1/src/main/resources/assets/antarchy/textures/block/truffalo/truffalo_door_top.png b/common-1.21.1/src/main/resources/assets/antarchy/textures/block/truffalo/truffalo_door_top.png new file mode 100644 index 00000000..e1a8c21d Binary files /dev/null and b/common-1.21.1/src/main/resources/assets/antarchy/textures/block/truffalo/truffalo_door_top.png differ diff --git a/common-1.21.1/src/main/resources/assets/antarchy/textures/block/truffalo/truffalo_log.png b/common-1.21.1/src/main/resources/assets/antarchy/textures/block/truffalo/truffalo_log.png new file mode 100644 index 00000000..17971a49 Binary files /dev/null and b/common-1.21.1/src/main/resources/assets/antarchy/textures/block/truffalo/truffalo_log.png differ diff --git a/common-1.21.1/src/main/resources/assets/antarchy/textures/block/truffalo/truffalo_log_stripped.png b/common-1.21.1/src/main/resources/assets/antarchy/textures/block/truffalo/truffalo_log_stripped.png new file mode 100644 index 00000000..bc7e17b9 Binary files /dev/null and b/common-1.21.1/src/main/resources/assets/antarchy/textures/block/truffalo/truffalo_log_stripped.png differ diff --git a/common-1.21.1/src/main/resources/assets/antarchy/textures/block/truffalo/truffalo_log_top.png b/common-1.21.1/src/main/resources/assets/antarchy/textures/block/truffalo/truffalo_log_top.png new file mode 100644 index 00000000..d983393d Binary files /dev/null and b/common-1.21.1/src/main/resources/assets/antarchy/textures/block/truffalo/truffalo_log_top.png differ diff --git a/common-1.21.1/src/main/resources/assets/antarchy/textures/block/truffalo/truffalo_planks.png b/common-1.21.1/src/main/resources/assets/antarchy/textures/block/truffalo/truffalo_planks.png new file mode 100644 index 00000000..95b92894 Binary files /dev/null and b/common-1.21.1/src/main/resources/assets/antarchy/textures/block/truffalo/truffalo_planks.png differ diff --git a/common-1.21.1/src/main/resources/assets/antarchy/textures/block/truffalo/truffalo_sapling.png b/common-1.21.1/src/main/resources/assets/antarchy/textures/block/truffalo/truffalo_sapling.png new file mode 100644 index 00000000..6c376013 Binary files /dev/null and b/common-1.21.1/src/main/resources/assets/antarchy/textures/block/truffalo/truffalo_sapling.png differ diff --git a/common-1.21.1/src/main/resources/assets/antarchy/textures/block/truffalo/truffalo_stripped_log_top.png b/common-1.21.1/src/main/resources/assets/antarchy/textures/block/truffalo/truffalo_stripped_log_top.png new file mode 100644 index 00000000..44e88d3d Binary files /dev/null and b/common-1.21.1/src/main/resources/assets/antarchy/textures/block/truffalo/truffalo_stripped_log_top.png differ diff --git a/common-1.21.1/src/main/resources/assets/antarchy/textures/block/truffalo/truffalo_trapdoor.png b/common-1.21.1/src/main/resources/assets/antarchy/textures/block/truffalo/truffalo_trapdoor.png new file mode 100644 index 00000000..f22f3e83 Binary files /dev/null and b/common-1.21.1/src/main/resources/assets/antarchy/textures/block/truffalo/truffalo_trapdoor.png differ diff --git a/common-1.21.1/src/main/resources/assets/antarchy/textures/block/truffalo/white_truffalo_tuft.png b/common-1.21.1/src/main/resources/assets/antarchy/textures/block/truffalo/white_truffalo_tuft.png new file mode 100644 index 00000000..3eb0f204 Binary files /dev/null and b/common-1.21.1/src/main/resources/assets/antarchy/textures/block/truffalo/white_truffalo_tuft.png differ diff --git a/common-1.21.1/src/main/resources/assets/antarchy/textures/block/truffalo/yellow_truffalo_tuft.png b/common-1.21.1/src/main/resources/assets/antarchy/textures/block/truffalo/yellow_truffalo_tuft.png new file mode 100644 index 00000000..0a7273a8 Binary files /dev/null and b/common-1.21.1/src/main/resources/assets/antarchy/textures/block/truffalo/yellow_truffalo_tuft.png differ diff --git a/common-1.21.1/src/main/resources/assets/antarchy/textures/entity/boat/royal.png b/common-1.21.1/src/main/resources/assets/antarchy/textures/entity/boat/royal.png new file mode 100644 index 00000000..df67c79e Binary files /dev/null and b/common-1.21.1/src/main/resources/assets/antarchy/textures/entity/boat/royal.png differ diff --git a/common-1.21.1/src/main/resources/assets/antarchy/textures/entity/boat/truffalo.png b/common-1.21.1/src/main/resources/assets/antarchy/textures/entity/boat/truffalo.png new file mode 100644 index 00000000..f31cbffa Binary files /dev/null and b/common-1.21.1/src/main/resources/assets/antarchy/textures/entity/boat/truffalo.png differ diff --git a/common-1.21.1/src/main/resources/assets/antarchy/textures/entity/chest_boat/royal.png b/common-1.21.1/src/main/resources/assets/antarchy/textures/entity/chest_boat/royal.png new file mode 100644 index 00000000..4b533b60 Binary files /dev/null and b/common-1.21.1/src/main/resources/assets/antarchy/textures/entity/chest_boat/royal.png differ diff --git a/common-1.21.1/src/main/resources/assets/antarchy/textures/entity/chest_boat/truffalo.png b/common-1.21.1/src/main/resources/assets/antarchy/textures/entity/chest_boat/truffalo.png new file mode 100644 index 00000000..9fef333a Binary files /dev/null and b/common-1.21.1/src/main/resources/assets/antarchy/textures/entity/chest_boat/truffalo.png differ diff --git a/common-1.21.1/src/main/resources/assets/antarchy/textures/entity/hoverboard/hoverboard.png b/common-1.21.1/src/main/resources/assets/antarchy/textures/entity/hoverboard/hoverboard.png new file mode 100644 index 00000000..6ef485c4 Binary files /dev/null and b/common-1.21.1/src/main/resources/assets/antarchy/textures/entity/hoverboard/hoverboard.png differ diff --git a/common-1.21.1/src/main/resources/assets/antarchy/textures/entity/hoverboard/hoverboard_black.png b/common-1.21.1/src/main/resources/assets/antarchy/textures/entity/hoverboard/hoverboard_black.png new file mode 100644 index 00000000..06b2f774 Binary files /dev/null and b/common-1.21.1/src/main/resources/assets/antarchy/textures/entity/hoverboard/hoverboard_black.png differ diff --git a/common-1.21.1/src/main/resources/assets/antarchy/textures/entity/hoverboard/hoverboard_blue.png b/common-1.21.1/src/main/resources/assets/antarchy/textures/entity/hoverboard/hoverboard_blue.png new file mode 100644 index 00000000..9c50a66e Binary files /dev/null and b/common-1.21.1/src/main/resources/assets/antarchy/textures/entity/hoverboard/hoverboard_blue.png differ diff --git a/common-1.21.1/src/main/resources/assets/antarchy/textures/entity/hoverboard/hoverboard_brown.png b/common-1.21.1/src/main/resources/assets/antarchy/textures/entity/hoverboard/hoverboard_brown.png new file mode 100644 index 00000000..274bf7de Binary files /dev/null and b/common-1.21.1/src/main/resources/assets/antarchy/textures/entity/hoverboard/hoverboard_brown.png differ diff --git a/common-1.21.1/src/main/resources/assets/antarchy/textures/entity/hoverboard/hoverboard_cyan.png b/common-1.21.1/src/main/resources/assets/antarchy/textures/entity/hoverboard/hoverboard_cyan.png new file mode 100644 index 00000000..ae6d82e5 Binary files /dev/null and b/common-1.21.1/src/main/resources/assets/antarchy/textures/entity/hoverboard/hoverboard_cyan.png differ diff --git a/common-1.21.1/src/main/resources/assets/antarchy/textures/entity/hoverboard/hoverboard_gray.png b/common-1.21.1/src/main/resources/assets/antarchy/textures/entity/hoverboard/hoverboard_gray.png new file mode 100644 index 00000000..9ed6c10f Binary files /dev/null and b/common-1.21.1/src/main/resources/assets/antarchy/textures/entity/hoverboard/hoverboard_gray.png differ diff --git a/common-1.21.1/src/main/resources/assets/antarchy/textures/entity/hoverboard/hoverboard_green.png b/common-1.21.1/src/main/resources/assets/antarchy/textures/entity/hoverboard/hoverboard_green.png new file mode 100644 index 00000000..1406b85f Binary files /dev/null and b/common-1.21.1/src/main/resources/assets/antarchy/textures/entity/hoverboard/hoverboard_green.png differ diff --git a/common-1.21.1/src/main/resources/assets/antarchy/textures/entity/hoverboard/hoverboard_light_blue.png b/common-1.21.1/src/main/resources/assets/antarchy/textures/entity/hoverboard/hoverboard_light_blue.png new file mode 100644 index 00000000..b5078399 Binary files /dev/null and b/common-1.21.1/src/main/resources/assets/antarchy/textures/entity/hoverboard/hoverboard_light_blue.png differ diff --git a/common-1.21.1/src/main/resources/assets/antarchy/textures/entity/hoverboard/hoverboard_light_gray.png b/common-1.21.1/src/main/resources/assets/antarchy/textures/entity/hoverboard/hoverboard_light_gray.png new file mode 100644 index 00000000..1cdbafcd Binary files /dev/null and b/common-1.21.1/src/main/resources/assets/antarchy/textures/entity/hoverboard/hoverboard_light_gray.png differ diff --git a/common-1.21.1/src/main/resources/assets/antarchy/textures/entity/hoverboard/hoverboard_lime.png b/common-1.21.1/src/main/resources/assets/antarchy/textures/entity/hoverboard/hoverboard_lime.png new file mode 100644 index 00000000..c7e14bff Binary files /dev/null and b/common-1.21.1/src/main/resources/assets/antarchy/textures/entity/hoverboard/hoverboard_lime.png differ diff --git a/common-1.21.1/src/main/resources/assets/antarchy/textures/entity/hoverboard/hoverboard_magenta.png b/common-1.21.1/src/main/resources/assets/antarchy/textures/entity/hoverboard/hoverboard_magenta.png new file mode 100644 index 00000000..7962ac6c Binary files /dev/null and b/common-1.21.1/src/main/resources/assets/antarchy/textures/entity/hoverboard/hoverboard_magenta.png differ diff --git a/common-1.21.1/src/main/resources/assets/antarchy/textures/entity/hoverboard/hoverboard_orange.png b/common-1.21.1/src/main/resources/assets/antarchy/textures/entity/hoverboard/hoverboard_orange.png new file mode 100644 index 00000000..7306f589 Binary files /dev/null and b/common-1.21.1/src/main/resources/assets/antarchy/textures/entity/hoverboard/hoverboard_orange.png differ diff --git a/common-1.21.1/src/main/resources/assets/antarchy/textures/entity/hoverboard/hoverboard_pink.png b/common-1.21.1/src/main/resources/assets/antarchy/textures/entity/hoverboard/hoverboard_pink.png new file mode 100644 index 00000000..65450f02 Binary files /dev/null and b/common-1.21.1/src/main/resources/assets/antarchy/textures/entity/hoverboard/hoverboard_pink.png differ diff --git a/common-1.21.1/src/main/resources/assets/antarchy/textures/entity/hoverboard/hoverboard_purple.png b/common-1.21.1/src/main/resources/assets/antarchy/textures/entity/hoverboard/hoverboard_purple.png new file mode 100644 index 00000000..c17e5ac9 Binary files /dev/null and b/common-1.21.1/src/main/resources/assets/antarchy/textures/entity/hoverboard/hoverboard_purple.png differ diff --git a/common-1.21.1/src/main/resources/assets/antarchy/textures/entity/hoverboard/hoverboard_red.png b/common-1.21.1/src/main/resources/assets/antarchy/textures/entity/hoverboard/hoverboard_red.png new file mode 100644 index 00000000..2d666c5a Binary files /dev/null and b/common-1.21.1/src/main/resources/assets/antarchy/textures/entity/hoverboard/hoverboard_red.png differ diff --git a/common-1.21.1/src/main/resources/assets/antarchy/textures/entity/hoverboard/hoverboard_white.png b/common-1.21.1/src/main/resources/assets/antarchy/textures/entity/hoverboard/hoverboard_white.png new file mode 100644 index 00000000..e031f0ea Binary files /dev/null and b/common-1.21.1/src/main/resources/assets/antarchy/textures/entity/hoverboard/hoverboard_white.png differ diff --git a/common-1.21.1/src/main/resources/assets/antarchy/textures/entity/hoverboard/hoverboard_yellow.png b/common-1.21.1/src/main/resources/assets/antarchy/textures/entity/hoverboard/hoverboard_yellow.png new file mode 100644 index 00000000..b780973f Binary files /dev/null and b/common-1.21.1/src/main/resources/assets/antarchy/textures/entity/hoverboard/hoverboard_yellow.png differ diff --git a/common-1.21.1/src/main/resources/assets/antarchy/textures/entity/signs/hanging/royal.png b/common-1.21.1/src/main/resources/assets/antarchy/textures/entity/signs/hanging/royal.png new file mode 100644 index 00000000..6ab7ac11 Binary files /dev/null and b/common-1.21.1/src/main/resources/assets/antarchy/textures/entity/signs/hanging/royal.png differ diff --git a/common-1.21.1/src/main/resources/assets/antarchy/textures/entity/signs/hanging/truffalo.png b/common-1.21.1/src/main/resources/assets/antarchy/textures/entity/signs/hanging/truffalo.png new file mode 100644 index 00000000..d333dc7f Binary files /dev/null and b/common-1.21.1/src/main/resources/assets/antarchy/textures/entity/signs/hanging/truffalo.png differ diff --git a/common-1.21.1/src/main/resources/assets/antarchy/textures/entity/signs/royal.png b/common-1.21.1/src/main/resources/assets/antarchy/textures/entity/signs/royal.png new file mode 100644 index 00000000..0d540f09 Binary files /dev/null and b/common-1.21.1/src/main/resources/assets/antarchy/textures/entity/signs/royal.png differ diff --git a/common-1.21.1/src/main/resources/assets/antarchy/textures/entity/signs/truffalo.png b/common-1.21.1/src/main/resources/assets/antarchy/textures/entity/signs/truffalo.png new file mode 100644 index 00000000..26572d84 Binary files /dev/null and b/common-1.21.1/src/main/resources/assets/antarchy/textures/entity/signs/truffalo.png differ diff --git a/common-1.21.1/src/main/resources/assets/antarchy/textures/gui/hanging_signs/royal.png b/common-1.21.1/src/main/resources/assets/antarchy/textures/gui/hanging_signs/royal.png new file mode 100644 index 00000000..c633da9c Binary files /dev/null and b/common-1.21.1/src/main/resources/assets/antarchy/textures/gui/hanging_signs/royal.png differ diff --git a/common-1.21.1/src/main/resources/assets/antarchy/textures/item/hoverboard/hoverboard.png b/common-1.21.1/src/main/resources/assets/antarchy/textures/item/hoverboard/hoverboard.png new file mode 100644 index 00000000..f824c2d1 Binary files /dev/null and b/common-1.21.1/src/main/resources/assets/antarchy/textures/item/hoverboard/hoverboard.png differ diff --git a/common-1.21.1/src/main/resources/assets/antarchy/textures/item/hoverboard/hoverboard_black.png b/common-1.21.1/src/main/resources/assets/antarchy/textures/item/hoverboard/hoverboard_black.png new file mode 100644 index 00000000..1d50da36 Binary files /dev/null and b/common-1.21.1/src/main/resources/assets/antarchy/textures/item/hoverboard/hoverboard_black.png differ diff --git a/common-1.21.1/src/main/resources/assets/antarchy/textures/item/hoverboard/hoverboard_blue.png b/common-1.21.1/src/main/resources/assets/antarchy/textures/item/hoverboard/hoverboard_blue.png new file mode 100644 index 00000000..aafc3cc9 Binary files /dev/null and b/common-1.21.1/src/main/resources/assets/antarchy/textures/item/hoverboard/hoverboard_blue.png differ diff --git a/common-1.21.1/src/main/resources/assets/antarchy/textures/item/hoverboard/hoverboard_brown.png b/common-1.21.1/src/main/resources/assets/antarchy/textures/item/hoverboard/hoverboard_brown.png new file mode 100644 index 00000000..952c99fd Binary files /dev/null and b/common-1.21.1/src/main/resources/assets/antarchy/textures/item/hoverboard/hoverboard_brown.png differ diff --git a/common-1.21.1/src/main/resources/assets/antarchy/textures/item/hoverboard/hoverboard_cyan.png b/common-1.21.1/src/main/resources/assets/antarchy/textures/item/hoverboard/hoverboard_cyan.png new file mode 100644 index 00000000..5df34e92 Binary files /dev/null and b/common-1.21.1/src/main/resources/assets/antarchy/textures/item/hoverboard/hoverboard_cyan.png differ diff --git a/common-1.21.1/src/main/resources/assets/antarchy/textures/item/hoverboard/hoverboard_gray.png b/common-1.21.1/src/main/resources/assets/antarchy/textures/item/hoverboard/hoverboard_gray.png new file mode 100644 index 00000000..574b6e19 Binary files /dev/null and b/common-1.21.1/src/main/resources/assets/antarchy/textures/item/hoverboard/hoverboard_gray.png differ diff --git a/common-1.21.1/src/main/resources/assets/antarchy/textures/item/hoverboard/hoverboard_green.png b/common-1.21.1/src/main/resources/assets/antarchy/textures/item/hoverboard/hoverboard_green.png new file mode 100644 index 00000000..e8cfea98 Binary files /dev/null and b/common-1.21.1/src/main/resources/assets/antarchy/textures/item/hoverboard/hoverboard_green.png differ diff --git a/common-1.21.1/src/main/resources/assets/antarchy/textures/item/hoverboard/hoverboard_light_blue.png b/common-1.21.1/src/main/resources/assets/antarchy/textures/item/hoverboard/hoverboard_light_blue.png new file mode 100644 index 00000000..cd5cc534 Binary files /dev/null and b/common-1.21.1/src/main/resources/assets/antarchy/textures/item/hoverboard/hoverboard_light_blue.png differ diff --git a/common-1.21.1/src/main/resources/assets/antarchy/textures/item/hoverboard/hoverboard_light_gray.png b/common-1.21.1/src/main/resources/assets/antarchy/textures/item/hoverboard/hoverboard_light_gray.png new file mode 100644 index 00000000..909fcc74 Binary files /dev/null and b/common-1.21.1/src/main/resources/assets/antarchy/textures/item/hoverboard/hoverboard_light_gray.png differ diff --git a/common-1.21.1/src/main/resources/assets/antarchy/textures/item/hoverboard/hoverboard_lime.png b/common-1.21.1/src/main/resources/assets/antarchy/textures/item/hoverboard/hoverboard_lime.png new file mode 100644 index 00000000..5ad641d5 Binary files /dev/null and b/common-1.21.1/src/main/resources/assets/antarchy/textures/item/hoverboard/hoverboard_lime.png differ diff --git a/common-1.21.1/src/main/resources/assets/antarchy/textures/item/hoverboard/hoverboard_magenta.png b/common-1.21.1/src/main/resources/assets/antarchy/textures/item/hoverboard/hoverboard_magenta.png new file mode 100644 index 00000000..ee256674 Binary files /dev/null and b/common-1.21.1/src/main/resources/assets/antarchy/textures/item/hoverboard/hoverboard_magenta.png differ diff --git a/common-1.21.1/src/main/resources/assets/antarchy/textures/item/hoverboard/hoverboard_orange.png b/common-1.21.1/src/main/resources/assets/antarchy/textures/item/hoverboard/hoverboard_orange.png new file mode 100644 index 00000000..fb3b3287 Binary files /dev/null and b/common-1.21.1/src/main/resources/assets/antarchy/textures/item/hoverboard/hoverboard_orange.png differ diff --git a/common-1.21.1/src/main/resources/assets/antarchy/textures/item/hoverboard/hoverboard_pink.png b/common-1.21.1/src/main/resources/assets/antarchy/textures/item/hoverboard/hoverboard_pink.png new file mode 100644 index 00000000..b95d3da5 Binary files /dev/null and b/common-1.21.1/src/main/resources/assets/antarchy/textures/item/hoverboard/hoverboard_pink.png differ diff --git a/common-1.21.1/src/main/resources/assets/antarchy/textures/item/hoverboard/hoverboard_purple.png b/common-1.21.1/src/main/resources/assets/antarchy/textures/item/hoverboard/hoverboard_purple.png new file mode 100644 index 00000000..bc1653fc Binary files /dev/null and b/common-1.21.1/src/main/resources/assets/antarchy/textures/item/hoverboard/hoverboard_purple.png differ diff --git a/common-1.21.1/src/main/resources/assets/antarchy/textures/item/hoverboard/hoverboard_red.png b/common-1.21.1/src/main/resources/assets/antarchy/textures/item/hoverboard/hoverboard_red.png new file mode 100644 index 00000000..c09ce14b Binary files /dev/null and b/common-1.21.1/src/main/resources/assets/antarchy/textures/item/hoverboard/hoverboard_red.png differ diff --git a/common-1.21.1/src/main/resources/assets/antarchy/textures/item/hoverboard/hoverboard_white.png b/common-1.21.1/src/main/resources/assets/antarchy/textures/item/hoverboard/hoverboard_white.png new file mode 100644 index 00000000..55c29050 Binary files /dev/null and b/common-1.21.1/src/main/resources/assets/antarchy/textures/item/hoverboard/hoverboard_white.png differ diff --git a/common-1.21.1/src/main/resources/assets/antarchy/textures/item/hoverboard/hoverboard_yellow.png b/common-1.21.1/src/main/resources/assets/antarchy/textures/item/hoverboard/hoverboard_yellow.png new file mode 100644 index 00000000..bdfac340 Binary files /dev/null and b/common-1.21.1/src/main/resources/assets/antarchy/textures/item/hoverboard/hoverboard_yellow.png differ diff --git a/common-1.21.1/src/main/resources/assets/antarchy/textures/item/music_disc_underside.png b/common-1.21.1/src/main/resources/assets/antarchy/textures/item/music_disc_underside.png new file mode 100644 index 00000000..53b90928 Binary files /dev/null and b/common-1.21.1/src/main/resources/assets/antarchy/textures/item/music_disc_underside.png differ diff --git a/common-1.21.1/src/main/resources/assets/antarchy/textures/item/royal_boat.png b/common-1.21.1/src/main/resources/assets/antarchy/textures/item/royal_boat.png new file mode 100644 index 00000000..68582c8b Binary files /dev/null and b/common-1.21.1/src/main/resources/assets/antarchy/textures/item/royal_boat.png differ diff --git a/common-1.21.1/src/main/resources/assets/antarchy/textures/item/royal_chest_boat.png b/common-1.21.1/src/main/resources/assets/antarchy/textures/item/royal_chest_boat.png new file mode 100644 index 00000000..7d3287ec Binary files /dev/null and b/common-1.21.1/src/main/resources/assets/antarchy/textures/item/royal_chest_boat.png differ diff --git a/common-1.21.1/src/main/resources/assets/antarchy/textures/item/royal_gaurdian_shield/royal_guardian_shield.png b/common-1.21.1/src/main/resources/assets/antarchy/textures/item/royal_gaurdian_shield/royal_guardian_shield.png deleted file mode 100644 index a22810fd..00000000 Binary files a/common-1.21.1/src/main/resources/assets/antarchy/textures/item/royal_gaurdian_shield/royal_guardian_shield.png and /dev/null differ diff --git a/common-1.21.1/src/main/resources/assets/antarchy/textures/item/royal_hanging_sign.png b/common-1.21.1/src/main/resources/assets/antarchy/textures/item/royal_hanging_sign.png new file mode 100644 index 00000000..6a69c8f8 Binary files /dev/null and b/common-1.21.1/src/main/resources/assets/antarchy/textures/item/royal_hanging_sign.png differ diff --git a/common-1.21.1/src/main/resources/assets/antarchy/textures/item/royal_sign.png b/common-1.21.1/src/main/resources/assets/antarchy/textures/item/royal_sign.png new file mode 100644 index 00000000..61d45255 Binary files /dev/null and b/common-1.21.1/src/main/resources/assets/antarchy/textures/item/royal_sign.png differ diff --git a/common-1.21.1/src/main/resources/assets/antarchy/textures/item/truffalo_boat.png b/common-1.21.1/src/main/resources/assets/antarchy/textures/item/truffalo_boat.png new file mode 100644 index 00000000..4b99cfc8 Binary files /dev/null and b/common-1.21.1/src/main/resources/assets/antarchy/textures/item/truffalo_boat.png differ diff --git a/common-1.21.1/src/main/resources/assets/antarchy/textures/item/truffalo_chest_boat.png b/common-1.21.1/src/main/resources/assets/antarchy/textures/item/truffalo_chest_boat.png new file mode 100644 index 00000000..38a2d279 Binary files /dev/null and b/common-1.21.1/src/main/resources/assets/antarchy/textures/item/truffalo_chest_boat.png differ diff --git a/common-1.21.1/src/main/resources/assets/antarchy/textures/item/truffalo_door_icon.png b/common-1.21.1/src/main/resources/assets/antarchy/textures/item/truffalo_door_icon.png new file mode 100644 index 00000000..f28fe7b0 Binary files /dev/null and b/common-1.21.1/src/main/resources/assets/antarchy/textures/item/truffalo_door_icon.png differ diff --git a/common-1.21.1/src/main/resources/assets/antarchy/textures/item/truffalo_hanging_sign.png b/common-1.21.1/src/main/resources/assets/antarchy/textures/item/truffalo_hanging_sign.png new file mode 100644 index 00000000..553c00fd Binary files /dev/null and b/common-1.21.1/src/main/resources/assets/antarchy/textures/item/truffalo_hanging_sign.png differ diff --git a/common-1.21.1/src/main/resources/assets/antarchy/textures/item/truffalo_sign.png b/common-1.21.1/src/main/resources/assets/antarchy/textures/item/truffalo_sign.png new file mode 100644 index 00000000..34e8876a Binary files /dev/null and b/common-1.21.1/src/main/resources/assets/antarchy/textures/item/truffalo_sign.png differ diff --git a/common-1.21.1/src/main/resources/data/antarchy/jukebox_song/underside.json b/common-1.21.1/src/main/resources/data/antarchy/jukebox_song/underside.json new file mode 100644 index 00000000..10fde747 --- /dev/null +++ b/common-1.21.1/src/main/resources/data/antarchy/jukebox_song/underside.json @@ -0,0 +1,8 @@ +{ + "sound_event": "antarchy:music_disc_underside", + "description": { + "translate": "jukebox_song.antarchy.underside" + }, + "length_in_seconds": 225.0, + "comparator_output": 13 +} diff --git a/common-1.21.1/src/main/resources/data/antarchy/loot_table/blocks/black_truffalo_tuft.json b/common-1.21.1/src/main/resources/data/antarchy/loot_table/blocks/black_truffalo_tuft.json new file mode 100644 index 00000000..ac9cea8d --- /dev/null +++ b/common-1.21.1/src/main/resources/data/antarchy/loot_table/blocks/black_truffalo_tuft.json @@ -0,0 +1,21 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "bonus_rolls": 0.0, + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ], + "entries": [ + { + "type": "minecraft:item", + "name": "antarchy:black_truffalo_tuft" + } + ], + "rolls": 1.0 + } + ], + "random_sequence": "antarchy:blocks/black_truffalo_tuft" +} diff --git a/common-1.21.1/src/main/resources/data/antarchy/loot_table/blocks/blue_truffalo_tuft.json b/common-1.21.1/src/main/resources/data/antarchy/loot_table/blocks/blue_truffalo_tuft.json new file mode 100644 index 00000000..dbb20d31 --- /dev/null +++ b/common-1.21.1/src/main/resources/data/antarchy/loot_table/blocks/blue_truffalo_tuft.json @@ -0,0 +1,21 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "bonus_rolls": 0.0, + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ], + "entries": [ + { + "type": "minecraft:item", + "name": "antarchy:blue_truffalo_tuft" + } + ], + "rolls": 1.0 + } + ], + "random_sequence": "antarchy:blocks/blue_truffalo_tuft" +} diff --git a/common-1.21.1/src/main/resources/data/antarchy/loot_table/blocks/brown_truffalo_tuft.json b/common-1.21.1/src/main/resources/data/antarchy/loot_table/blocks/brown_truffalo_tuft.json new file mode 100644 index 00000000..107b7ad4 --- /dev/null +++ b/common-1.21.1/src/main/resources/data/antarchy/loot_table/blocks/brown_truffalo_tuft.json @@ -0,0 +1,21 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "bonus_rolls": 0.0, + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ], + "entries": [ + { + "type": "minecraft:item", + "name": "antarchy:brown_truffalo_tuft" + } + ], + "rolls": 1.0 + } + ], + "random_sequence": "antarchy:blocks/brown_truffalo_tuft" +} diff --git a/common-1.21.1/src/main/resources/data/antarchy/loot_table/blocks/cyan_truffalo_tuft.json b/common-1.21.1/src/main/resources/data/antarchy/loot_table/blocks/cyan_truffalo_tuft.json new file mode 100644 index 00000000..99ec2112 --- /dev/null +++ b/common-1.21.1/src/main/resources/data/antarchy/loot_table/blocks/cyan_truffalo_tuft.json @@ -0,0 +1,21 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "bonus_rolls": 0.0, + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ], + "entries": [ + { + "type": "minecraft:item", + "name": "antarchy:cyan_truffalo_tuft" + } + ], + "rolls": 1.0 + } + ], + "random_sequence": "antarchy:blocks/cyan_truffalo_tuft" +} diff --git a/common-1.21.1/src/main/resources/data/antarchy/loot_table/blocks/gray_truffalo_tuft.json b/common-1.21.1/src/main/resources/data/antarchy/loot_table/blocks/gray_truffalo_tuft.json new file mode 100644 index 00000000..02313f9f --- /dev/null +++ b/common-1.21.1/src/main/resources/data/antarchy/loot_table/blocks/gray_truffalo_tuft.json @@ -0,0 +1,21 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "bonus_rolls": 0.0, + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ], + "entries": [ + { + "type": "minecraft:item", + "name": "antarchy:gray_truffalo_tuft" + } + ], + "rolls": 1.0 + } + ], + "random_sequence": "antarchy:blocks/gray_truffalo_tuft" +} diff --git a/common-1.21.1/src/main/resources/data/antarchy/loot_table/blocks/green_truffalo_tuft.json b/common-1.21.1/src/main/resources/data/antarchy/loot_table/blocks/green_truffalo_tuft.json new file mode 100644 index 00000000..2c18ed3d --- /dev/null +++ b/common-1.21.1/src/main/resources/data/antarchy/loot_table/blocks/green_truffalo_tuft.json @@ -0,0 +1,21 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "bonus_rolls": 0.0, + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ], + "entries": [ + { + "type": "minecraft:item", + "name": "antarchy:green_truffalo_tuft" + } + ], + "rolls": 1.0 + } + ], + "random_sequence": "antarchy:blocks/green_truffalo_tuft" +} diff --git a/common-1.21.1/src/main/resources/data/antarchy/loot_table/blocks/light_blue_truffalo_tuft.json b/common-1.21.1/src/main/resources/data/antarchy/loot_table/blocks/light_blue_truffalo_tuft.json new file mode 100644 index 00000000..fc7085cc --- /dev/null +++ b/common-1.21.1/src/main/resources/data/antarchy/loot_table/blocks/light_blue_truffalo_tuft.json @@ -0,0 +1,21 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "bonus_rolls": 0.0, + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ], + "entries": [ + { + "type": "minecraft:item", + "name": "antarchy:light_blue_truffalo_tuft" + } + ], + "rolls": 1.0 + } + ], + "random_sequence": "antarchy:blocks/light_blue_truffalo_tuft" +} diff --git a/common-1.21.1/src/main/resources/data/antarchy/loot_table/blocks/light_gray_truffalo_tuft.json b/common-1.21.1/src/main/resources/data/antarchy/loot_table/blocks/light_gray_truffalo_tuft.json new file mode 100644 index 00000000..ffb85736 --- /dev/null +++ b/common-1.21.1/src/main/resources/data/antarchy/loot_table/blocks/light_gray_truffalo_tuft.json @@ -0,0 +1,21 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "bonus_rolls": 0.0, + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ], + "entries": [ + { + "type": "minecraft:item", + "name": "antarchy:light_gray_truffalo_tuft" + } + ], + "rolls": 1.0 + } + ], + "random_sequence": "antarchy:blocks/light_gray_truffalo_tuft" +} diff --git a/common-1.21.1/src/main/resources/data/antarchy/loot_table/blocks/lime_truffalo_tuft.json b/common-1.21.1/src/main/resources/data/antarchy/loot_table/blocks/lime_truffalo_tuft.json new file mode 100644 index 00000000..9e4be025 --- /dev/null +++ b/common-1.21.1/src/main/resources/data/antarchy/loot_table/blocks/lime_truffalo_tuft.json @@ -0,0 +1,21 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "bonus_rolls": 0.0, + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ], + "entries": [ + { + "type": "minecraft:item", + "name": "antarchy:lime_truffalo_tuft" + } + ], + "rolls": 1.0 + } + ], + "random_sequence": "antarchy:blocks/lime_truffalo_tuft" +} diff --git a/common-1.21.1/src/main/resources/data/antarchy/loot_table/blocks/magenta_truffalo_tuft.json b/common-1.21.1/src/main/resources/data/antarchy/loot_table/blocks/magenta_truffalo_tuft.json new file mode 100644 index 00000000..f01cf89e --- /dev/null +++ b/common-1.21.1/src/main/resources/data/antarchy/loot_table/blocks/magenta_truffalo_tuft.json @@ -0,0 +1,21 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "bonus_rolls": 0.0, + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ], + "entries": [ + { + "type": "minecraft:item", + "name": "antarchy:magenta_truffalo_tuft" + } + ], + "rolls": 1.0 + } + ], + "random_sequence": "antarchy:blocks/magenta_truffalo_tuft" +} diff --git a/common-1.21.1/src/main/resources/data/antarchy/loot_table/blocks/orange_truffalo_tuft.json b/common-1.21.1/src/main/resources/data/antarchy/loot_table/blocks/orange_truffalo_tuft.json new file mode 100644 index 00000000..e3affa3c --- /dev/null +++ b/common-1.21.1/src/main/resources/data/antarchy/loot_table/blocks/orange_truffalo_tuft.json @@ -0,0 +1,21 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "bonus_rolls": 0.0, + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ], + "entries": [ + { + "type": "minecraft:item", + "name": "antarchy:orange_truffalo_tuft" + } + ], + "rolls": 1.0 + } + ], + "random_sequence": "antarchy:blocks/orange_truffalo_tuft" +} diff --git a/common-1.21.1/src/main/resources/data/antarchy/loot_table/blocks/pink_truffalo_tuft.json b/common-1.21.1/src/main/resources/data/antarchy/loot_table/blocks/pink_truffalo_tuft.json new file mode 100644 index 00000000..43471614 --- /dev/null +++ b/common-1.21.1/src/main/resources/data/antarchy/loot_table/blocks/pink_truffalo_tuft.json @@ -0,0 +1,21 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "bonus_rolls": 0.0, + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ], + "entries": [ + { + "type": "minecraft:item", + "name": "antarchy:pink_truffalo_tuft" + } + ], + "rolls": 1.0 + } + ], + "random_sequence": "antarchy:blocks/pink_truffalo_tuft" +} diff --git a/common-1.21.1/src/main/resources/data/antarchy/loot_table/blocks/potted_truffalo_sapling.json b/common-1.21.1/src/main/resources/data/antarchy/loot_table/blocks/potted_truffalo_sapling.json new file mode 100644 index 00000000..d948a9a7 --- /dev/null +++ b/common-1.21.1/src/main/resources/data/antarchy/loot_table/blocks/potted_truffalo_sapling.json @@ -0,0 +1,24 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "rolls": 1.0, + "entries": [ + { + "type": "minecraft:item", + "name": "minecraft:flower_pot" + } + ] + }, + { + "rolls": 1.0, + "entries": [ + { + "type": "minecraft:item", + "name": "antarchy:truffalo_sapling" + } + ] + } + ], + "random_sequence": "antarchy:blocks/potted_truffalo_sapling" +} diff --git a/common-1.21.1/src/main/resources/data/antarchy/loot_table/blocks/purple_truffalo_tuft.json b/common-1.21.1/src/main/resources/data/antarchy/loot_table/blocks/purple_truffalo_tuft.json new file mode 100644 index 00000000..f1e79bfa --- /dev/null +++ b/common-1.21.1/src/main/resources/data/antarchy/loot_table/blocks/purple_truffalo_tuft.json @@ -0,0 +1,21 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "bonus_rolls": 0.0, + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ], + "entries": [ + { + "type": "minecraft:item", + "name": "antarchy:purple_truffalo_tuft" + } + ], + "rolls": 1.0 + } + ], + "random_sequence": "antarchy:blocks/purple_truffalo_tuft" +} diff --git a/common-1.21.1/src/main/resources/data/antarchy/loot_table/blocks/red_truffalo_tuft.json b/common-1.21.1/src/main/resources/data/antarchy/loot_table/blocks/red_truffalo_tuft.json new file mode 100644 index 00000000..c57c9afd --- /dev/null +++ b/common-1.21.1/src/main/resources/data/antarchy/loot_table/blocks/red_truffalo_tuft.json @@ -0,0 +1,21 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "bonus_rolls": 0.0, + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ], + "entries": [ + { + "type": "minecraft:item", + "name": "antarchy:red_truffalo_tuft" + } + ], + "rolls": 1.0 + } + ], + "random_sequence": "antarchy:blocks/red_truffalo_tuft" +} diff --git a/common-1.21.1/src/main/resources/data/antarchy/loot_table/blocks/royal_button.json b/common-1.21.1/src/main/resources/data/antarchy/loot_table/blocks/royal_button.json new file mode 100644 index 00000000..6d8cfca0 --- /dev/null +++ b/common-1.21.1/src/main/resources/data/antarchy/loot_table/blocks/royal_button.json @@ -0,0 +1,21 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "bonus_rolls": 0.0, + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ], + "entries": [ + { + "type": "minecraft:item", + "name": "antarchy:royal_button" + } + ], + "rolls": 1.0 + } + ], + "random_sequence": "minecraft:blocks/jungle_button" +} diff --git a/common-1.21.1/src/main/resources/data/antarchy/loot_table/blocks/royal_door.json b/common-1.21.1/src/main/resources/data/antarchy/loot_table/blocks/royal_door.json new file mode 100644 index 00000000..f10f45b7 --- /dev/null +++ b/common-1.21.1/src/main/resources/data/antarchy/loot_table/blocks/royal_door.json @@ -0,0 +1,30 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "bonus_rolls": 0.0, + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ], + "entries": [ + { + "type": "minecraft:item", + "conditions": [ + { + "block": "antarchy:royal_door", + "condition": "minecraft:block_state_property", + "properties": { + "half": "lower" + } + } + ], + "name": "antarchy:royal_door" + } + ], + "rolls": 1.0 + } + ], + "random_sequence": "minecraft:blocks/jungle_door" +} diff --git a/common-1.21.1/src/main/resources/data/antarchy/loot_table/blocks/royal_fence.json b/common-1.21.1/src/main/resources/data/antarchy/loot_table/blocks/royal_fence.json new file mode 100644 index 00000000..a2f8c1bb --- /dev/null +++ b/common-1.21.1/src/main/resources/data/antarchy/loot_table/blocks/royal_fence.json @@ -0,0 +1,21 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "bonus_rolls": 0.0, + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ], + "entries": [ + { + "type": "minecraft:item", + "name": "antarchy:royal_fence" + } + ], + "rolls": 1.0 + } + ], + "random_sequence": "minecraft:blocks/jungle_fence" +} diff --git a/common-1.21.1/src/main/resources/data/antarchy/loot_table/blocks/royal_fence_gate.json b/common-1.21.1/src/main/resources/data/antarchy/loot_table/blocks/royal_fence_gate.json new file mode 100644 index 00000000..defc27c9 --- /dev/null +++ b/common-1.21.1/src/main/resources/data/antarchy/loot_table/blocks/royal_fence_gate.json @@ -0,0 +1,21 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "bonus_rolls": 0.0, + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ], + "entries": [ + { + "type": "minecraft:item", + "name": "antarchy:royal_fence_gate" + } + ], + "rolls": 1.0 + } + ], + "random_sequence": "minecraft:blocks/jungle_fence_gate" +} diff --git a/common-1.21.1/src/main/resources/data/antarchy/loot_table/blocks/royal_flowering_leaves.json b/common-1.21.1/src/main/resources/data/antarchy/loot_table/blocks/royal_flowering_leaves.json new file mode 100644 index 00000000..ee441fed --- /dev/null +++ b/common-1.21.1/src/main/resources/data/antarchy/loot_table/blocks/royal_flowering_leaves.json @@ -0,0 +1,137 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "bonus_rolls": 0.0, + "entries": [ + { + "type": "minecraft:alternatives", + "children": [ + { + "type": "minecraft:item", + "conditions": [ + { + "condition": "minecraft:any_of", + "terms": [ + { + "condition": "minecraft:match_tool", + "predicate": { + "items": "minecraft:shears" + } + }, + { + "condition": "minecraft:match_tool", + "predicate": { + "predicates": { + "minecraft:enchantments": [ + { + "enchantments": "minecraft:silk_touch", + "levels": { + "min": 1 + } + } + ] + } + } + } + ] + } + ], + "name": "antarchy:royal_flowering_leaves" + }, + { + "type": "minecraft:item", + "conditions": [ + { + "condition": "minecraft:survives_explosion" + }, + { + "chances": [ + 0.05, + 0.0625, + 0.083333336, + 0.1, + 0.2 + ], + "condition": "minecraft:table_bonus", + "enchantment": "minecraft:fortune" + } + ], + "name": "antarchy:royal_sapling" + } + ] + } + ], + "rolls": 1.0 + }, + { + "bonus_rolls": 0.0, + "conditions": [ + { + "condition": "minecraft:inverted", + "term": { + "condition": "minecraft:any_of", + "terms": [ + { + "condition": "minecraft:match_tool", + "predicate": { + "items": "minecraft:shears" + } + }, + { + "condition": "minecraft:match_tool", + "predicate": { + "predicates": { + "minecraft:enchantments": [ + { + "enchantments": "minecraft:silk_touch", + "levels": { + "min": 1 + } + } + ] + } + } + } + ] + } + } + ], + "entries": [ + { + "type": "minecraft:item", + "conditions": [ + { + "chances": [ + 0.02, + 0.022222223, + 0.025, + 0.033333335, + 0.1 + ], + "condition": "minecraft:table_bonus", + "enchantment": "minecraft:fortune" + } + ], + "functions": [ + { + "add": false, + "count": { + "type": "minecraft:uniform", + "max": 2.0, + "min": 1.0 + }, + "function": "minecraft:set_count" + }, + { + "function": "minecraft:explosion_decay" + } + ], + "name": "minecraft:stick" + } + ], + "rolls": 1.0 + } + ], + "random_sequence": "antarchy:blocks/royal_flowering_leaves" +} diff --git a/common-1.21.1/src/main/resources/data/antarchy/loot_table/blocks/royal_hanging_sign.json b/common-1.21.1/src/main/resources/data/antarchy/loot_table/blocks/royal_hanging_sign.json new file mode 100644 index 00000000..8a23ac10 --- /dev/null +++ b/common-1.21.1/src/main/resources/data/antarchy/loot_table/blocks/royal_hanging_sign.json @@ -0,0 +1,21 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "bonus_rolls": 0.0, + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ], + "entries": [ + { + "type": "minecraft:item", + "name": "antarchy:royal_hanging_sign" + } + ], + "rolls": 1.0 + } + ], + "random_sequence": "antarchy:blocks/royal_hanging_sign" +} diff --git a/common-1.21.1/src/main/resources/data/antarchy/loot_table/blocks/royal_leaves.json b/common-1.21.1/src/main/resources/data/antarchy/loot_table/blocks/royal_leaves.json new file mode 100644 index 00000000..ace26aac --- /dev/null +++ b/common-1.21.1/src/main/resources/data/antarchy/loot_table/blocks/royal_leaves.json @@ -0,0 +1,137 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "bonus_rolls": 0.0, + "entries": [ + { + "type": "minecraft:alternatives", + "children": [ + { + "type": "minecraft:item", + "conditions": [ + { + "condition": "minecraft:any_of", + "terms": [ + { + "condition": "minecraft:match_tool", + "predicate": { + "items": "minecraft:shears" + } + }, + { + "condition": "minecraft:match_tool", + "predicate": { + "predicates": { + "minecraft:enchantments": [ + { + "enchantments": "minecraft:silk_touch", + "levels": { + "min": 1 + } + } + ] + } + } + } + ] + } + ], + "name": "antarchy:royal_leaves" + }, + { + "type": "minecraft:item", + "conditions": [ + { + "condition": "minecraft:survives_explosion" + }, + { + "chances": [ + 0.05, + 0.0625, + 0.083333336, + 0.1, + 0.2 + ], + "condition": "minecraft:table_bonus", + "enchantment": "minecraft:fortune" + } + ], + "name": "antarchy:royal_sapling" + } + ] + } + ], + "rolls": 1.0 + }, + { + "bonus_rolls": 0.0, + "conditions": [ + { + "condition": "minecraft:inverted", + "term": { + "condition": "minecraft:any_of", + "terms": [ + { + "condition": "minecraft:match_tool", + "predicate": { + "items": "minecraft:shears" + } + }, + { + "condition": "minecraft:match_tool", + "predicate": { + "predicates": { + "minecraft:enchantments": [ + { + "enchantments": "minecraft:silk_touch", + "levels": { + "min": 1 + } + } + ] + } + } + } + ] + } + } + ], + "entries": [ + { + "type": "minecraft:item", + "conditions": [ + { + "chances": [ + 0.02, + 0.022222223, + 0.025, + 0.033333335, + 0.1 + ], + "condition": "minecraft:table_bonus", + "enchantment": "minecraft:fortune" + } + ], + "functions": [ + { + "add": false, + "count": { + "type": "minecraft:uniform", + "max": 2.0, + "min": 1.0 + }, + "function": "minecraft:set_count" + }, + { + "function": "minecraft:explosion_decay" + } + ], + "name": "minecraft:stick" + } + ], + "rolls": 1.0 + } + ], + "random_sequence": "antarchy:blocks/royal_leaves" +} diff --git a/common-1.21.1/src/main/resources/data/antarchy/loot_table/blocks/royal_log.json b/common-1.21.1/src/main/resources/data/antarchy/loot_table/blocks/royal_log.json new file mode 100644 index 00000000..1b02da83 --- /dev/null +++ b/common-1.21.1/src/main/resources/data/antarchy/loot_table/blocks/royal_log.json @@ -0,0 +1,21 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "bonus_rolls": 0.0, + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ], + "entries": [ + { + "type": "minecraft:item", + "name": "antarchy:royal_log" + } + ], + "rolls": 1.0 + } + ], + "random_sequence": "minecraft:blocks/jungle_log" +} diff --git a/common-1.21.1/src/main/resources/data/antarchy/loot_table/blocks/royal_planks.json b/common-1.21.1/src/main/resources/data/antarchy/loot_table/blocks/royal_planks.json new file mode 100644 index 00000000..cfed9ada --- /dev/null +++ b/common-1.21.1/src/main/resources/data/antarchy/loot_table/blocks/royal_planks.json @@ -0,0 +1,21 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "bonus_rolls": 0.0, + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ], + "entries": [ + { + "type": "minecraft:item", + "name": "antarchy:royal_planks" + } + ], + "rolls": 1.0 + } + ], + "random_sequence": "minecraft:blocks/jungle_planks" +} diff --git a/common-1.21.1/src/main/resources/data/antarchy/loot_table/blocks/royal_pressure_plate.json b/common-1.21.1/src/main/resources/data/antarchy/loot_table/blocks/royal_pressure_plate.json new file mode 100644 index 00000000..7aa789ff --- /dev/null +++ b/common-1.21.1/src/main/resources/data/antarchy/loot_table/blocks/royal_pressure_plate.json @@ -0,0 +1,21 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "bonus_rolls": 0.0, + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ], + "entries": [ + { + "type": "minecraft:item", + "name": "antarchy:royal_pressure_plate" + } + ], + "rolls": 1.0 + } + ], + "random_sequence": "minecraft:blocks/jungle_pressure_plate" +} diff --git a/common-1.21.1/src/main/resources/data/antarchy/loot_table/blocks/royal_sapling.json b/common-1.21.1/src/main/resources/data/antarchy/loot_table/blocks/royal_sapling.json new file mode 100644 index 00000000..d24d014b --- /dev/null +++ b/common-1.21.1/src/main/resources/data/antarchy/loot_table/blocks/royal_sapling.json @@ -0,0 +1,15 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "rolls": 1.0, + "entries": [ + { + "type": "minecraft:item", + "name": "antarchy:royal_sapling" + } + ] + } + ], + "random_sequence": "antarchy:blocks/royal_sapling" +} diff --git a/common-1.21.1/src/main/resources/data/antarchy/loot_table/blocks/royal_sign.json b/common-1.21.1/src/main/resources/data/antarchy/loot_table/blocks/royal_sign.json new file mode 100644 index 00000000..47eda2de --- /dev/null +++ b/common-1.21.1/src/main/resources/data/antarchy/loot_table/blocks/royal_sign.json @@ -0,0 +1,21 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "bonus_rolls": 0.0, + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ], + "entries": [ + { + "type": "minecraft:item", + "name": "antarchy:royal_sign" + } + ], + "rolls": 1.0 + } + ], + "random_sequence": "antarchy:blocks/royal_sign" +} diff --git a/common-1.21.1/src/main/resources/data/antarchy/loot_table/blocks/royal_slab.json b/common-1.21.1/src/main/resources/data/antarchy/loot_table/blocks/royal_slab.json new file mode 100644 index 00000000..a272fab5 --- /dev/null +++ b/common-1.21.1/src/main/resources/data/antarchy/loot_table/blocks/royal_slab.json @@ -0,0 +1,35 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "bonus_rolls": 0.0, + "entries": [ + { + "type": "minecraft:item", + "functions": [ + { + "add": false, + "conditions": [ + { + "block": "antarchy:royal_slab", + "condition": "minecraft:block_state_property", + "properties": { + "type": "double" + } + } + ], + "count": 2.0, + "function": "minecraft:set_count" + }, + { + "function": "minecraft:explosion_decay" + } + ], + "name": "antarchy:royal_slab" + } + ], + "rolls": 1.0 + } + ], + "random_sequence": "minecraft:blocks/jungle_slab" +} diff --git a/common-1.21.1/src/main/resources/data/antarchy/loot_table/blocks/royal_stairs.json b/common-1.21.1/src/main/resources/data/antarchy/loot_table/blocks/royal_stairs.json new file mode 100644 index 00000000..5df86a9c --- /dev/null +++ b/common-1.21.1/src/main/resources/data/antarchy/loot_table/blocks/royal_stairs.json @@ -0,0 +1,21 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "bonus_rolls": 0.0, + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ], + "entries": [ + { + "type": "minecraft:item", + "name": "antarchy:royal_stairs" + } + ], + "rolls": 1.0 + } + ], + "random_sequence": "minecraft:blocks/jungle_stairs" +} diff --git a/common-1.21.1/src/main/resources/data/antarchy/loot_table/blocks/royal_trapdoor.json b/common-1.21.1/src/main/resources/data/antarchy/loot_table/blocks/royal_trapdoor.json new file mode 100644 index 00000000..97226170 --- /dev/null +++ b/common-1.21.1/src/main/resources/data/antarchy/loot_table/blocks/royal_trapdoor.json @@ -0,0 +1,21 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "bonus_rolls": 0.0, + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ], + "entries": [ + { + "type": "minecraft:item", + "name": "antarchy:royal_trapdoor" + } + ], + "rolls": 1.0 + } + ], + "random_sequence": "minecraft:blocks/jungle_trapdoor" +} diff --git a/common-1.21.1/src/main/resources/data/antarchy/loot_table/blocks/royal_wall_hanging_sign.json b/common-1.21.1/src/main/resources/data/antarchy/loot_table/blocks/royal_wall_hanging_sign.json new file mode 100644 index 00000000..5921a4c8 --- /dev/null +++ b/common-1.21.1/src/main/resources/data/antarchy/loot_table/blocks/royal_wall_hanging_sign.json @@ -0,0 +1,21 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "bonus_rolls": 0.0, + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ], + "entries": [ + { + "type": "minecraft:item", + "name": "antarchy:royal_hanging_sign" + } + ], + "rolls": 1.0 + } + ], + "random_sequence": "antarchy:blocks/royal_wall_hanging_sign" +} diff --git a/common-1.21.1/src/main/resources/data/antarchy/loot_table/blocks/royal_wall_sign.json b/common-1.21.1/src/main/resources/data/antarchy/loot_table/blocks/royal_wall_sign.json new file mode 100644 index 00000000..b7c5c0fb --- /dev/null +++ b/common-1.21.1/src/main/resources/data/antarchy/loot_table/blocks/royal_wall_sign.json @@ -0,0 +1,21 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "bonus_rolls": 0.0, + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ], + "entries": [ + { + "type": "minecraft:item", + "name": "antarchy:royal_sign" + } + ], + "rolls": 1.0 + } + ], + "random_sequence": "antarchy:blocks/royal_wall_sign" +} diff --git a/common-1.21.1/src/main/resources/data/antarchy/loot_table/blocks/royal_wood.json b/common-1.21.1/src/main/resources/data/antarchy/loot_table/blocks/royal_wood.json new file mode 100644 index 00000000..7efc09b1 --- /dev/null +++ b/common-1.21.1/src/main/resources/data/antarchy/loot_table/blocks/royal_wood.json @@ -0,0 +1,21 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "bonus_rolls": 0.0, + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ], + "entries": [ + { + "type": "minecraft:item", + "name": "antarchy:royal_wood" + } + ], + "rolls": 1.0 + } + ], + "random_sequence": "minecraft:blocks/jungle_wood" +} diff --git a/common-1.21.1/src/main/resources/data/antarchy/loot_table/blocks/stripped_royal_log.json b/common-1.21.1/src/main/resources/data/antarchy/loot_table/blocks/stripped_royal_log.json new file mode 100644 index 00000000..342ffed7 --- /dev/null +++ b/common-1.21.1/src/main/resources/data/antarchy/loot_table/blocks/stripped_royal_log.json @@ -0,0 +1,21 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "bonus_rolls": 0.0, + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ], + "entries": [ + { + "type": "minecraft:item", + "name": "antarchy:stripped_royal_log" + } + ], + "rolls": 1.0 + } + ], + "random_sequence": "minecraft:blocks/stripped_jungle_log" +} diff --git a/common-1.21.1/src/main/resources/data/antarchy/loot_table/blocks/stripped_royal_wood.json b/common-1.21.1/src/main/resources/data/antarchy/loot_table/blocks/stripped_royal_wood.json new file mode 100644 index 00000000..94bd16cb --- /dev/null +++ b/common-1.21.1/src/main/resources/data/antarchy/loot_table/blocks/stripped_royal_wood.json @@ -0,0 +1,21 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "bonus_rolls": 0.0, + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ], + "entries": [ + { + "type": "minecraft:item", + "name": "antarchy:stripped_royal_wood" + } + ], + "rolls": 1.0 + } + ], + "random_sequence": "minecraft:blocks/stripped_jungle_wood" +} diff --git a/common-1.21.1/src/main/resources/data/antarchy/loot_table/blocks/stripped_truffalo_log.json b/common-1.21.1/src/main/resources/data/antarchy/loot_table/blocks/stripped_truffalo_log.json new file mode 100644 index 00000000..c0314ebd --- /dev/null +++ b/common-1.21.1/src/main/resources/data/antarchy/loot_table/blocks/stripped_truffalo_log.json @@ -0,0 +1,21 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "bonus_rolls": 0.0, + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ], + "entries": [ + { + "type": "minecraft:item", + "name": "antarchy:stripped_truffalo_log" + } + ], + "rolls": 1.0 + } + ], + "random_sequence": "minecraft:blocks/stripped_jungle_log" +} diff --git a/common-1.21.1/src/main/resources/data/antarchy/loot_table/blocks/stripped_truffalo_wood.json b/common-1.21.1/src/main/resources/data/antarchy/loot_table/blocks/stripped_truffalo_wood.json new file mode 100644 index 00000000..d1ae8ee1 --- /dev/null +++ b/common-1.21.1/src/main/resources/data/antarchy/loot_table/blocks/stripped_truffalo_wood.json @@ -0,0 +1,21 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "bonus_rolls": 0.0, + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ], + "entries": [ + { + "type": "minecraft:item", + "name": "antarchy:stripped_truffalo_wood" + } + ], + "rolls": 1.0 + } + ], + "random_sequence": "minecraft:blocks/stripped_jungle_wood" +} diff --git a/common-1.21.1/src/main/resources/data/antarchy/loot_table/blocks/truffalo_button.json b/common-1.21.1/src/main/resources/data/antarchy/loot_table/blocks/truffalo_button.json new file mode 100644 index 00000000..5ad58d66 --- /dev/null +++ b/common-1.21.1/src/main/resources/data/antarchy/loot_table/blocks/truffalo_button.json @@ -0,0 +1,21 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "bonus_rolls": 0.0, + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ], + "entries": [ + { + "type": "minecraft:item", + "name": "antarchy:truffalo_button" + } + ], + "rolls": 1.0 + } + ], + "random_sequence": "minecraft:blocks/jungle_button" +} diff --git a/common-1.21.1/src/main/resources/data/antarchy/loot_table/blocks/truffalo_door.json b/common-1.21.1/src/main/resources/data/antarchy/loot_table/blocks/truffalo_door.json new file mode 100644 index 00000000..69b83796 --- /dev/null +++ b/common-1.21.1/src/main/resources/data/antarchy/loot_table/blocks/truffalo_door.json @@ -0,0 +1,30 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "bonus_rolls": 0.0, + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ], + "entries": [ + { + "type": "minecraft:item", + "conditions": [ + { + "block": "antarchy:truffalo_door", + "condition": "minecraft:block_state_property", + "properties": { + "half": "lower" + } + } + ], + "name": "antarchy:truffalo_door" + } + ], + "rolls": 1.0 + } + ], + "random_sequence": "minecraft:blocks/jungle_door" +} diff --git a/common-1.21.1/src/main/resources/data/antarchy/loot_table/blocks/truffalo_fence.json b/common-1.21.1/src/main/resources/data/antarchy/loot_table/blocks/truffalo_fence.json new file mode 100644 index 00000000..707a33ea --- /dev/null +++ b/common-1.21.1/src/main/resources/data/antarchy/loot_table/blocks/truffalo_fence.json @@ -0,0 +1,21 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "bonus_rolls": 0.0, + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ], + "entries": [ + { + "type": "minecraft:item", + "name": "antarchy:truffalo_fence" + } + ], + "rolls": 1.0 + } + ], + "random_sequence": "minecraft:blocks/jungle_fence" +} diff --git a/common-1.21.1/src/main/resources/data/antarchy/loot_table/blocks/truffalo_fence_gate.json b/common-1.21.1/src/main/resources/data/antarchy/loot_table/blocks/truffalo_fence_gate.json new file mode 100644 index 00000000..c8e7bc7f --- /dev/null +++ b/common-1.21.1/src/main/resources/data/antarchy/loot_table/blocks/truffalo_fence_gate.json @@ -0,0 +1,21 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "bonus_rolls": 0.0, + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ], + "entries": [ + { + "type": "minecraft:item", + "name": "antarchy:truffalo_fence_gate" + } + ], + "rolls": 1.0 + } + ], + "random_sequence": "minecraft:blocks/jungle_fence_gate" +} diff --git a/common-1.21.1/src/main/resources/data/antarchy/loot_table/blocks/truffalo_hanging_sign.json b/common-1.21.1/src/main/resources/data/antarchy/loot_table/blocks/truffalo_hanging_sign.json new file mode 100644 index 00000000..54f758a0 --- /dev/null +++ b/common-1.21.1/src/main/resources/data/antarchy/loot_table/blocks/truffalo_hanging_sign.json @@ -0,0 +1,21 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "bonus_rolls": 0.0, + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ], + "entries": [ + { + "type": "minecraft:item", + "name": "antarchy:truffalo_hanging_sign" + } + ], + "rolls": 1.0 + } + ], + "random_sequence": "antarchy:blocks/truffalo_hanging_sign" +} diff --git a/common-1.21.1/src/main/resources/data/antarchy/loot_table/blocks/truffalo_log.json b/common-1.21.1/src/main/resources/data/antarchy/loot_table/blocks/truffalo_log.json new file mode 100644 index 00000000..51e527a7 --- /dev/null +++ b/common-1.21.1/src/main/resources/data/antarchy/loot_table/blocks/truffalo_log.json @@ -0,0 +1,21 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "bonus_rolls": 0.0, + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ], + "entries": [ + { + "type": "minecraft:item", + "name": "antarchy:truffalo_log" + } + ], + "rolls": 1.0 + } + ], + "random_sequence": "minecraft:blocks/jungle_log" +} diff --git a/common-1.21.1/src/main/resources/data/antarchy/loot_table/blocks/truffalo_planks.json b/common-1.21.1/src/main/resources/data/antarchy/loot_table/blocks/truffalo_planks.json new file mode 100644 index 00000000..c529cb0d --- /dev/null +++ b/common-1.21.1/src/main/resources/data/antarchy/loot_table/blocks/truffalo_planks.json @@ -0,0 +1,21 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "bonus_rolls": 0.0, + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ], + "entries": [ + { + "type": "minecraft:item", + "name": "antarchy:truffalo_planks" + } + ], + "rolls": 1.0 + } + ], + "random_sequence": "minecraft:blocks/jungle_planks" +} diff --git a/common-1.21.1/src/main/resources/data/antarchy/loot_table/blocks/truffalo_pressure_plate.json b/common-1.21.1/src/main/resources/data/antarchy/loot_table/blocks/truffalo_pressure_plate.json new file mode 100644 index 00000000..fa9da633 --- /dev/null +++ b/common-1.21.1/src/main/resources/data/antarchy/loot_table/blocks/truffalo_pressure_plate.json @@ -0,0 +1,21 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "bonus_rolls": 0.0, + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ], + "entries": [ + { + "type": "minecraft:item", + "name": "antarchy:truffalo_pressure_plate" + } + ], + "rolls": 1.0 + } + ], + "random_sequence": "minecraft:blocks/jungle_pressure_plate" +} diff --git a/common-1.21.1/src/main/resources/data/antarchy/loot_table/blocks/truffalo_sapling.json b/common-1.21.1/src/main/resources/data/antarchy/loot_table/blocks/truffalo_sapling.json new file mode 100644 index 00000000..d970743a --- /dev/null +++ b/common-1.21.1/src/main/resources/data/antarchy/loot_table/blocks/truffalo_sapling.json @@ -0,0 +1,15 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "rolls": 1.0, + "entries": [ + { + "type": "minecraft:item", + "name": "antarchy:truffalo_sapling" + } + ] + } + ], + "random_sequence": "antarchy:blocks/truffalo_sapling" +} diff --git a/common-1.21.1/src/main/resources/data/antarchy/loot_table/blocks/truffalo_sign.json b/common-1.21.1/src/main/resources/data/antarchy/loot_table/blocks/truffalo_sign.json new file mode 100644 index 00000000..2b29322a --- /dev/null +++ b/common-1.21.1/src/main/resources/data/antarchy/loot_table/blocks/truffalo_sign.json @@ -0,0 +1,21 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "bonus_rolls": 0.0, + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ], + "entries": [ + { + "type": "minecraft:item", + "name": "antarchy:truffalo_sign" + } + ], + "rolls": 1.0 + } + ], + "random_sequence": "antarchy:blocks/truffalo_sign" +} diff --git a/common-1.21.1/src/main/resources/data/antarchy/loot_table/blocks/truffalo_slab.json b/common-1.21.1/src/main/resources/data/antarchy/loot_table/blocks/truffalo_slab.json new file mode 100644 index 00000000..8a299819 --- /dev/null +++ b/common-1.21.1/src/main/resources/data/antarchy/loot_table/blocks/truffalo_slab.json @@ -0,0 +1,35 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "bonus_rolls": 0.0, + "entries": [ + { + "type": "minecraft:item", + "functions": [ + { + "add": false, + "conditions": [ + { + "block": "antarchy:truffalo_slab", + "condition": "minecraft:block_state_property", + "properties": { + "type": "double" + } + } + ], + "count": 2.0, + "function": "minecraft:set_count" + }, + { + "function": "minecraft:explosion_decay" + } + ], + "name": "antarchy:truffalo_slab" + } + ], + "rolls": 1.0 + } + ], + "random_sequence": "minecraft:blocks/jungle_slab" +} diff --git a/common-1.21.1/src/main/resources/data/antarchy/loot_table/blocks/truffalo_stairs.json b/common-1.21.1/src/main/resources/data/antarchy/loot_table/blocks/truffalo_stairs.json new file mode 100644 index 00000000..158d7522 --- /dev/null +++ b/common-1.21.1/src/main/resources/data/antarchy/loot_table/blocks/truffalo_stairs.json @@ -0,0 +1,21 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "bonus_rolls": 0.0, + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ], + "entries": [ + { + "type": "minecraft:item", + "name": "antarchy:truffalo_stairs" + } + ], + "rolls": 1.0 + } + ], + "random_sequence": "minecraft:blocks/jungle_stairs" +} diff --git a/common-1.21.1/src/main/resources/data/antarchy/loot_table/blocks/truffalo_trapdoor.json b/common-1.21.1/src/main/resources/data/antarchy/loot_table/blocks/truffalo_trapdoor.json new file mode 100644 index 00000000..390764a8 --- /dev/null +++ b/common-1.21.1/src/main/resources/data/antarchy/loot_table/blocks/truffalo_trapdoor.json @@ -0,0 +1,21 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "bonus_rolls": 0.0, + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ], + "entries": [ + { + "type": "minecraft:item", + "name": "antarchy:truffalo_trapdoor" + } + ], + "rolls": 1.0 + } + ], + "random_sequence": "minecraft:blocks/jungle_trapdoor" +} diff --git a/common-1.21.1/src/main/resources/data/antarchy/loot_table/blocks/truffalo_wall_hanging_sign.json b/common-1.21.1/src/main/resources/data/antarchy/loot_table/blocks/truffalo_wall_hanging_sign.json new file mode 100644 index 00000000..23a38bab --- /dev/null +++ b/common-1.21.1/src/main/resources/data/antarchy/loot_table/blocks/truffalo_wall_hanging_sign.json @@ -0,0 +1,21 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "bonus_rolls": 0.0, + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ], + "entries": [ + { + "type": "minecraft:item", + "name": "antarchy:truffalo_hanging_sign" + } + ], + "rolls": 1.0 + } + ], + "random_sequence": "antarchy:blocks/truffalo_wall_hanging_sign" +} diff --git a/common-1.21.1/src/main/resources/data/antarchy/loot_table/blocks/truffalo_wall_sign.json b/common-1.21.1/src/main/resources/data/antarchy/loot_table/blocks/truffalo_wall_sign.json new file mode 100644 index 00000000..bad8f513 --- /dev/null +++ b/common-1.21.1/src/main/resources/data/antarchy/loot_table/blocks/truffalo_wall_sign.json @@ -0,0 +1,21 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "bonus_rolls": 0.0, + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ], + "entries": [ + { + "type": "minecraft:item", + "name": "antarchy:truffalo_sign" + } + ], + "rolls": 1.0 + } + ], + "random_sequence": "antarchy:blocks/truffalo_wall_sign" +} diff --git a/common-1.21.1/src/main/resources/data/antarchy/loot_table/blocks/truffalo_wood.json b/common-1.21.1/src/main/resources/data/antarchy/loot_table/blocks/truffalo_wood.json new file mode 100644 index 00000000..84d678cf --- /dev/null +++ b/common-1.21.1/src/main/resources/data/antarchy/loot_table/blocks/truffalo_wood.json @@ -0,0 +1,21 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "bonus_rolls": 0.0, + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ], + "entries": [ + { + "type": "minecraft:item", + "name": "antarchy:truffalo_wood" + } + ], + "rolls": 1.0 + } + ], + "random_sequence": "minecraft:blocks/jungle_wood" +} diff --git a/common-1.21.1/src/main/resources/data/antarchy/loot_table/blocks/white_truffalo_tuft.json b/common-1.21.1/src/main/resources/data/antarchy/loot_table/blocks/white_truffalo_tuft.json new file mode 100644 index 00000000..71d4ec30 --- /dev/null +++ b/common-1.21.1/src/main/resources/data/antarchy/loot_table/blocks/white_truffalo_tuft.json @@ -0,0 +1,21 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "bonus_rolls": 0.0, + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ], + "entries": [ + { + "type": "minecraft:item", + "name": "antarchy:white_truffalo_tuft" + } + ], + "rolls": 1.0 + } + ], + "random_sequence": "antarchy:blocks/white_truffalo_tuft" +} diff --git a/common-1.21.1/src/main/resources/data/antarchy/loot_table/blocks/yellow_truffalo_tuft.json b/common-1.21.1/src/main/resources/data/antarchy/loot_table/blocks/yellow_truffalo_tuft.json new file mode 100644 index 00000000..43ddfbb3 --- /dev/null +++ b/common-1.21.1/src/main/resources/data/antarchy/loot_table/blocks/yellow_truffalo_tuft.json @@ -0,0 +1,21 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "bonus_rolls": 0.0, + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ], + "entries": [ + { + "type": "minecraft:item", + "name": "antarchy:yellow_truffalo_tuft" + } + ], + "rolls": 1.0 + } + ], + "random_sequence": "antarchy:blocks/yellow_truffalo_tuft" +} diff --git a/common-1.21.1/src/main/resources/data/antarchy/recipe/hoverboard.json b/common-1.21.1/src/main/resources/data/antarchy/recipe/hoverboard.json new file mode 100644 index 00000000..40da4613 --- /dev/null +++ b/common-1.21.1/src/main/resources/data/antarchy/recipe/hoverboard.json @@ -0,0 +1,30 @@ +{ + "type": "minecraft:crafting_shaped", + "category": "misc", + "pattern": [ + "NUN", + "BLB", + "C C" + ], + "key": { + "N": { + "item": "minecraft:netherite_ingot" + }, + "U": { + "item": "antarchy:uranium_ingot" + }, + "B": { + "item": "antarchy:bluestone" + }, + "L": { + "item": "antarchy:lucid_eye" + }, + "C": { + "item": "antarchy:blood_crystal_shard" + } + }, + "result": { + "id": "antarchy:hoverboard", + "count": 1 + } +} diff --git a/common-1.21.1/src/main/resources/data/antarchy/recipe/hoverboard_black.json b/common-1.21.1/src/main/resources/data/antarchy/recipe/hoverboard_black.json new file mode 100644 index 00000000..b1d03f5f --- /dev/null +++ b/common-1.21.1/src/main/resources/data/antarchy/recipe/hoverboard_black.json @@ -0,0 +1,17 @@ +{ + "type": "minecraft:crafting_shapeless", + "category": "misc", + "group": "hoverboard", + "ingredients": [ + { + "tag": "antarchy:hoverboards" + }, + { + "item": "minecraft:black_dye" + } + ], + "result": { + "id": "antarchy:hoverboard_black", + "count": 1 + } +} diff --git a/common-1.21.1/src/main/resources/data/antarchy/recipe/hoverboard_blue.json b/common-1.21.1/src/main/resources/data/antarchy/recipe/hoverboard_blue.json new file mode 100644 index 00000000..eda2639d --- /dev/null +++ b/common-1.21.1/src/main/resources/data/antarchy/recipe/hoverboard_blue.json @@ -0,0 +1,17 @@ +{ + "type": "minecraft:crafting_shapeless", + "category": "misc", + "group": "hoverboard", + "ingredients": [ + { + "tag": "antarchy:hoverboards" + }, + { + "item": "minecraft:blue_dye" + } + ], + "result": { + "id": "antarchy:hoverboard_blue", + "count": 1 + } +} diff --git a/common-1.21.1/src/main/resources/data/antarchy/recipe/hoverboard_brown.json b/common-1.21.1/src/main/resources/data/antarchy/recipe/hoverboard_brown.json new file mode 100644 index 00000000..b836c7d8 --- /dev/null +++ b/common-1.21.1/src/main/resources/data/antarchy/recipe/hoverboard_brown.json @@ -0,0 +1,17 @@ +{ + "type": "minecraft:crafting_shapeless", + "category": "misc", + "group": "hoverboard", + "ingredients": [ + { + "tag": "antarchy:hoverboards" + }, + { + "item": "minecraft:brown_dye" + } + ], + "result": { + "id": "antarchy:hoverboard_brown", + "count": 1 + } +} diff --git a/common-1.21.1/src/main/resources/data/antarchy/recipe/hoverboard_cyan.json b/common-1.21.1/src/main/resources/data/antarchy/recipe/hoverboard_cyan.json new file mode 100644 index 00000000..cbecf15c --- /dev/null +++ b/common-1.21.1/src/main/resources/data/antarchy/recipe/hoverboard_cyan.json @@ -0,0 +1,17 @@ +{ + "type": "minecraft:crafting_shapeless", + "category": "misc", + "group": "hoverboard", + "ingredients": [ + { + "tag": "antarchy:hoverboards" + }, + { + "item": "minecraft:cyan_dye" + } + ], + "result": { + "id": "antarchy:hoverboard_cyan", + "count": 1 + } +} diff --git a/common-1.21.1/src/main/resources/data/antarchy/recipe/hoverboard_gray.json b/common-1.21.1/src/main/resources/data/antarchy/recipe/hoverboard_gray.json new file mode 100644 index 00000000..e9da3e2a --- /dev/null +++ b/common-1.21.1/src/main/resources/data/antarchy/recipe/hoverboard_gray.json @@ -0,0 +1,17 @@ +{ + "type": "minecraft:crafting_shapeless", + "category": "misc", + "group": "hoverboard", + "ingredients": [ + { + "tag": "antarchy:hoverboards" + }, + { + "item": "minecraft:gray_dye" + } + ], + "result": { + "id": "antarchy:hoverboard_gray", + "count": 1 + } +} diff --git a/common-1.21.1/src/main/resources/data/antarchy/recipe/hoverboard_green.json b/common-1.21.1/src/main/resources/data/antarchy/recipe/hoverboard_green.json new file mode 100644 index 00000000..bb4ee9ba --- /dev/null +++ b/common-1.21.1/src/main/resources/data/antarchy/recipe/hoverboard_green.json @@ -0,0 +1,17 @@ +{ + "type": "minecraft:crafting_shapeless", + "category": "misc", + "group": "hoverboard", + "ingredients": [ + { + "tag": "antarchy:hoverboards" + }, + { + "item": "minecraft:green_dye" + } + ], + "result": { + "id": "antarchy:hoverboard_green", + "count": 1 + } +} diff --git a/common-1.21.1/src/main/resources/data/antarchy/recipe/hoverboard_light_blue.json b/common-1.21.1/src/main/resources/data/antarchy/recipe/hoverboard_light_blue.json new file mode 100644 index 00000000..e7a6b331 --- /dev/null +++ b/common-1.21.1/src/main/resources/data/antarchy/recipe/hoverboard_light_blue.json @@ -0,0 +1,17 @@ +{ + "type": "minecraft:crafting_shapeless", + "category": "misc", + "group": "hoverboard", + "ingredients": [ + { + "tag": "antarchy:hoverboards" + }, + { + "item": "minecraft:light_blue_dye" + } + ], + "result": { + "id": "antarchy:hoverboard_light_blue", + "count": 1 + } +} diff --git a/common-1.21.1/src/main/resources/data/antarchy/recipe/hoverboard_light_gray.json b/common-1.21.1/src/main/resources/data/antarchy/recipe/hoverboard_light_gray.json new file mode 100644 index 00000000..d8abce9d --- /dev/null +++ b/common-1.21.1/src/main/resources/data/antarchy/recipe/hoverboard_light_gray.json @@ -0,0 +1,17 @@ +{ + "type": "minecraft:crafting_shapeless", + "category": "misc", + "group": "hoverboard", + "ingredients": [ + { + "tag": "antarchy:hoverboards" + }, + { + "item": "minecraft:light_gray_dye" + } + ], + "result": { + "id": "antarchy:hoverboard_light_gray", + "count": 1 + } +} diff --git a/common-1.21.1/src/main/resources/data/antarchy/recipe/hoverboard_lime.json b/common-1.21.1/src/main/resources/data/antarchy/recipe/hoverboard_lime.json new file mode 100644 index 00000000..177f74b8 --- /dev/null +++ b/common-1.21.1/src/main/resources/data/antarchy/recipe/hoverboard_lime.json @@ -0,0 +1,17 @@ +{ + "type": "minecraft:crafting_shapeless", + "category": "misc", + "group": "hoverboard", + "ingredients": [ + { + "tag": "antarchy:hoverboards" + }, + { + "item": "minecraft:lime_dye" + } + ], + "result": { + "id": "antarchy:hoverboard_lime", + "count": 1 + } +} diff --git a/common-1.21.1/src/main/resources/data/antarchy/recipe/hoverboard_magenta.json b/common-1.21.1/src/main/resources/data/antarchy/recipe/hoverboard_magenta.json new file mode 100644 index 00000000..3a6a28a6 --- /dev/null +++ b/common-1.21.1/src/main/resources/data/antarchy/recipe/hoverboard_magenta.json @@ -0,0 +1,17 @@ +{ + "type": "minecraft:crafting_shapeless", + "category": "misc", + "group": "hoverboard", + "ingredients": [ + { + "tag": "antarchy:hoverboards" + }, + { + "item": "minecraft:magenta_dye" + } + ], + "result": { + "id": "antarchy:hoverboard_magenta", + "count": 1 + } +} diff --git a/common-1.21.1/src/main/resources/data/antarchy/recipe/hoverboard_orange.json b/common-1.21.1/src/main/resources/data/antarchy/recipe/hoverboard_orange.json new file mode 100644 index 00000000..1464d78b --- /dev/null +++ b/common-1.21.1/src/main/resources/data/antarchy/recipe/hoverboard_orange.json @@ -0,0 +1,17 @@ +{ + "type": "minecraft:crafting_shapeless", + "category": "misc", + "group": "hoverboard", + "ingredients": [ + { + "tag": "antarchy:hoverboards" + }, + { + "item": "minecraft:orange_dye" + } + ], + "result": { + "id": "antarchy:hoverboard_orange", + "count": 1 + } +} diff --git a/common-1.21.1/src/main/resources/data/antarchy/recipe/hoverboard_pink.json b/common-1.21.1/src/main/resources/data/antarchy/recipe/hoverboard_pink.json new file mode 100644 index 00000000..d3ec8ca0 --- /dev/null +++ b/common-1.21.1/src/main/resources/data/antarchy/recipe/hoverboard_pink.json @@ -0,0 +1,17 @@ +{ + "type": "minecraft:crafting_shapeless", + "category": "misc", + "group": "hoverboard", + "ingredients": [ + { + "tag": "antarchy:hoverboards" + }, + { + "item": "minecraft:pink_dye" + } + ], + "result": { + "id": "antarchy:hoverboard_pink", + "count": 1 + } +} diff --git a/common-1.21.1/src/main/resources/data/antarchy/recipe/hoverboard_purple.json b/common-1.21.1/src/main/resources/data/antarchy/recipe/hoverboard_purple.json new file mode 100644 index 00000000..bc95ba49 --- /dev/null +++ b/common-1.21.1/src/main/resources/data/antarchy/recipe/hoverboard_purple.json @@ -0,0 +1,17 @@ +{ + "type": "minecraft:crafting_shapeless", + "category": "misc", + "group": "hoverboard", + "ingredients": [ + { + "tag": "antarchy:hoverboards" + }, + { + "item": "minecraft:purple_dye" + } + ], + "result": { + "id": "antarchy:hoverboard_purple", + "count": 1 + } +} diff --git a/common-1.21.1/src/main/resources/data/antarchy/recipe/hoverboard_red.json b/common-1.21.1/src/main/resources/data/antarchy/recipe/hoverboard_red.json new file mode 100644 index 00000000..802fb08a --- /dev/null +++ b/common-1.21.1/src/main/resources/data/antarchy/recipe/hoverboard_red.json @@ -0,0 +1,17 @@ +{ + "type": "minecraft:crafting_shapeless", + "category": "misc", + "group": "hoverboard", + "ingredients": [ + { + "tag": "antarchy:hoverboards" + }, + { + "item": "minecraft:red_dye" + } + ], + "result": { + "id": "antarchy:hoverboard_red", + "count": 1 + } +} diff --git a/common-1.21.1/src/main/resources/data/antarchy/recipe/hoverboard_white.json b/common-1.21.1/src/main/resources/data/antarchy/recipe/hoverboard_white.json new file mode 100644 index 00000000..46a48fbd --- /dev/null +++ b/common-1.21.1/src/main/resources/data/antarchy/recipe/hoverboard_white.json @@ -0,0 +1,17 @@ +{ + "type": "minecraft:crafting_shapeless", + "category": "misc", + "group": "hoverboard", + "ingredients": [ + { + "tag": "antarchy:hoverboards" + }, + { + "item": "minecraft:white_dye" + } + ], + "result": { + "id": "antarchy:hoverboard_white", + "count": 1 + } +} diff --git a/common-1.21.1/src/main/resources/data/antarchy/recipe/hoverboard_yellow.json b/common-1.21.1/src/main/resources/data/antarchy/recipe/hoverboard_yellow.json new file mode 100644 index 00000000..90ef8d3f --- /dev/null +++ b/common-1.21.1/src/main/resources/data/antarchy/recipe/hoverboard_yellow.json @@ -0,0 +1,17 @@ +{ + "type": "minecraft:crafting_shapeless", + "category": "misc", + "group": "hoverboard", + "ingredients": [ + { + "tag": "antarchy:hoverboards" + }, + { + "item": "minecraft:yellow_dye" + } + ], + "result": { + "id": "antarchy:hoverboard_yellow", + "count": 1 + } +} diff --git a/common-1.21.1/src/main/resources/data/antarchy/recipe/royal/royal_boat.json b/common-1.21.1/src/main/resources/data/antarchy/recipe/royal/royal_boat.json new file mode 100644 index 00000000..c649a06d --- /dev/null +++ b/common-1.21.1/src/main/resources/data/antarchy/recipe/royal/royal_boat.json @@ -0,0 +1,18 @@ +{ + "type": "minecraft:crafting_shaped", + "category": "equipment", + "key": { + "#": { + "item": "antarchy:royal_planks" + } + }, + "pattern": [ + "# #", + "###" + ], + "result": { + "count": 1, + "id": "antarchy:royal_boat" + } +} + diff --git a/common-1.21.1/src/main/resources/data/antarchy/recipe/royal/royal_button.json b/common-1.21.1/src/main/resources/data/antarchy/recipe/royal/royal_button.json new file mode 100644 index 00000000..ac325620 --- /dev/null +++ b/common-1.21.1/src/main/resources/data/antarchy/recipe/royal/royal_button.json @@ -0,0 +1,14 @@ +{ + "type": "minecraft:crafting_shapeless", + "category": "redstone", + "group": "wooden_button", + "ingredients": [ + { + "item": "antarchy:royal_planks" + } + ], + "result": { + "count": 1, + "id": "antarchy:royal_button" + } +} diff --git a/common-1.21.1/src/main/resources/data/antarchy/recipe/royal/royal_chest_boat.json b/common-1.21.1/src/main/resources/data/antarchy/recipe/royal/royal_chest_boat.json new file mode 100644 index 00000000..02145e8f --- /dev/null +++ b/common-1.21.1/src/main/resources/data/antarchy/recipe/royal/royal_chest_boat.json @@ -0,0 +1,17 @@ +{ + "type": "minecraft:crafting_shapeless", + "category": "equipment", + "ingredients": [ + { + "item": "antarchy:royal_boat" + }, + { + "item": "minecraft:chest" + } + ], + "result": { + "count": 1, + "id": "antarchy:royal_chest_boat" + } +} + diff --git a/common-1.21.1/src/main/resources/data/antarchy/recipe/royal/royal_door.json b/common-1.21.1/src/main/resources/data/antarchy/recipe/royal/royal_door.json new file mode 100644 index 00000000..b03fd86d --- /dev/null +++ b/common-1.21.1/src/main/resources/data/antarchy/recipe/royal/royal_door.json @@ -0,0 +1,19 @@ +{ + "type": "minecraft:crafting_shaped", + "category": "redstone", + "group": "wooden_door", + "key": { + "#": { + "item": "antarchy:royal_planks" + } + }, + "pattern": [ + "##", + "##", + "##" + ], + "result": { + "count": 3, + "id": "antarchy:royal_door" + } +} diff --git a/common-1.21.1/src/main/resources/data/antarchy/recipe/royal/royal_fence.json b/common-1.21.1/src/main/resources/data/antarchy/recipe/royal/royal_fence.json new file mode 100644 index 00000000..970a1d9d --- /dev/null +++ b/common-1.21.1/src/main/resources/data/antarchy/recipe/royal/royal_fence.json @@ -0,0 +1,21 @@ +{ + "type": "minecraft:crafting_shaped", + "category": "misc", + "group": "wooden_fence", + "key": { + "#": { + "item": "minecraft:stick" + }, + "W": { + "item": "antarchy:royal_planks" + } + }, + "pattern": [ + "W#W", + "W#W" + ], + "result": { + "count": 3, + "id": "antarchy:royal_fence" + } +} diff --git a/common-1.21.1/src/main/resources/data/antarchy/recipe/royal/royal_fence_gate.json b/common-1.21.1/src/main/resources/data/antarchy/recipe/royal/royal_fence_gate.json new file mode 100644 index 00000000..3960930a --- /dev/null +++ b/common-1.21.1/src/main/resources/data/antarchy/recipe/royal/royal_fence_gate.json @@ -0,0 +1,21 @@ +{ + "type": "minecraft:crafting_shaped", + "category": "redstone", + "group": "wooden_fence_gate", + "key": { + "#": { + "item": "minecraft:stick" + }, + "W": { + "item": "antarchy:royal_planks" + } + }, + "pattern": [ + "#W#", + "#W#" + ], + "result": { + "count": 1, + "id": "antarchy:royal_fence_gate" + } +} diff --git a/common-1.21.1/src/main/resources/data/antarchy/recipe/royal/royal_hanging_sign.json b/common-1.21.1/src/main/resources/data/antarchy/recipe/royal/royal_hanging_sign.json new file mode 100644 index 00000000..b24e1454 --- /dev/null +++ b/common-1.21.1/src/main/resources/data/antarchy/recipe/royal/royal_hanging_sign.json @@ -0,0 +1,22 @@ +{ + "type": "minecraft:crafting_shaped", + "category": "misc", + "group": "hanging_sign", + "key": { + "#": { + "item": "antarchy:stripped_royal_log" + }, + "X": { + "item": "minecraft:chain" + } + }, + "pattern": [ + "X X", + "###", + "###" + ], + "result": { + "count": 6, + "id": "antarchy:royal_hanging_sign" + } +} diff --git a/common-1.21.1/src/main/resources/data/antarchy/recipe/royal/royal_planks.json b/common-1.21.1/src/main/resources/data/antarchy/recipe/royal/royal_planks.json new file mode 100644 index 00000000..2f5cb9cd --- /dev/null +++ b/common-1.21.1/src/main/resources/data/antarchy/recipe/royal/royal_planks.json @@ -0,0 +1,14 @@ +{ + "type": "minecraft:crafting_shapeless", + "category": "building", + "group": "planks", + "ingredients": [ + { + "tag": "antarchy:royal_logs" + } + ], + "result": { + "count": 4, + "id": "antarchy:royal_planks" + } +} diff --git a/common-1.21.1/src/main/resources/data/antarchy/recipe/royal/royal_pressure_plate.json b/common-1.21.1/src/main/resources/data/antarchy/recipe/royal/royal_pressure_plate.json new file mode 100644 index 00000000..e1d43821 --- /dev/null +++ b/common-1.21.1/src/main/resources/data/antarchy/recipe/royal/royal_pressure_plate.json @@ -0,0 +1,17 @@ +{ + "type": "minecraft:crafting_shaped", + "category": "redstone", + "group": "wooden_pressure_plate", + "key": { + "#": { + "item": "antarchy:royal_planks" + } + }, + "pattern": [ + "##" + ], + "result": { + "count": 1, + "id": "antarchy:royal_pressure_plate" + } +} diff --git a/common-1.21.1/src/main/resources/data/antarchy/recipe/royal/royal_sign.json b/common-1.21.1/src/main/resources/data/antarchy/recipe/royal/royal_sign.json new file mode 100644 index 00000000..c6258e03 --- /dev/null +++ b/common-1.21.1/src/main/resources/data/antarchy/recipe/royal/royal_sign.json @@ -0,0 +1,22 @@ +{ + "type": "minecraft:crafting_shaped", + "category": "misc", + "group": "wooden_sign", + "key": { + "#": { + "item": "antarchy:royal_planks" + }, + "X": { + "item": "minecraft:stick" + } + }, + "pattern": [ + "###", + "###", + " X " + ], + "result": { + "count": 3, + "id": "antarchy:royal_sign" + } +} diff --git a/common-1.21.1/src/main/resources/data/antarchy/recipe/royal/royal_slab.json b/common-1.21.1/src/main/resources/data/antarchy/recipe/royal/royal_slab.json new file mode 100644 index 00000000..882e3654 --- /dev/null +++ b/common-1.21.1/src/main/resources/data/antarchy/recipe/royal/royal_slab.json @@ -0,0 +1,17 @@ +{ + "type": "minecraft:crafting_shaped", + "category": "building", + "group": "wooden_slab", + "key": { + "#": { + "item": "antarchy:royal_planks" + } + }, + "pattern": [ + "###" + ], + "result": { + "count": 6, + "id": "antarchy:royal_slab" + } +} diff --git a/common-1.21.1/src/main/resources/data/antarchy/recipe/royal/royal_stairs.json b/common-1.21.1/src/main/resources/data/antarchy/recipe/royal/royal_stairs.json new file mode 100644 index 00000000..4486b092 --- /dev/null +++ b/common-1.21.1/src/main/resources/data/antarchy/recipe/royal/royal_stairs.json @@ -0,0 +1,19 @@ +{ + "type": "minecraft:crafting_shaped", + "category": "building", + "group": "wooden_stairs", + "key": { + "#": { + "item": "antarchy:royal_planks" + } + }, + "pattern": [ + "# ", + "## ", + "###" + ], + "result": { + "count": 4, + "id": "antarchy:royal_stairs" + } +} diff --git a/common-1.21.1/src/main/resources/data/antarchy/recipe/royal/royal_trapdoor.json b/common-1.21.1/src/main/resources/data/antarchy/recipe/royal/royal_trapdoor.json new file mode 100644 index 00000000..b192af5a --- /dev/null +++ b/common-1.21.1/src/main/resources/data/antarchy/recipe/royal/royal_trapdoor.json @@ -0,0 +1,18 @@ +{ + "type": "minecraft:crafting_shaped", + "category": "redstone", + "group": "wooden_trapdoor", + "key": { + "#": { + "item": "antarchy:royal_planks" + } + }, + "pattern": [ + "###", + "###" + ], + "result": { + "count": 2, + "id": "antarchy:royal_trapdoor" + } +} diff --git a/common-1.21.1/src/main/resources/data/antarchy/recipe/royal/royal_wood.json b/common-1.21.1/src/main/resources/data/antarchy/recipe/royal/royal_wood.json new file mode 100644 index 00000000..e0e84ab0 --- /dev/null +++ b/common-1.21.1/src/main/resources/data/antarchy/recipe/royal/royal_wood.json @@ -0,0 +1,18 @@ +{ + "type": "minecraft:crafting_shaped", + "category": "building", + "group": "bark", + "key": { + "#": { + "item": "antarchy:royal_log" + } + }, + "pattern": [ + "##", + "##" + ], + "result": { + "count": 3, + "id": "antarchy:royal_wood" + } +} diff --git a/common-1.21.1/src/main/resources/data/antarchy/recipe/royal/stripped_royal_wood.json b/common-1.21.1/src/main/resources/data/antarchy/recipe/royal/stripped_royal_wood.json new file mode 100644 index 00000000..694639d8 --- /dev/null +++ b/common-1.21.1/src/main/resources/data/antarchy/recipe/royal/stripped_royal_wood.json @@ -0,0 +1,18 @@ +{ + "type": "minecraft:crafting_shaped", + "category": "building", + "group": "bark", + "key": { + "#": { + "item": "antarchy:stripped_royal_log" + } + }, + "pattern": [ + "##", + "##" + ], + "result": { + "count": 3, + "id": "antarchy:stripped_royal_wood" + } +} diff --git a/common-1.21.1/src/main/resources/data/antarchy/recipe/truffalo/black_truffalo_tuft.json b/common-1.21.1/src/main/resources/data/antarchy/recipe/truffalo/black_truffalo_tuft.json new file mode 100644 index 00000000..7f8b3432 --- /dev/null +++ b/common-1.21.1/src/main/resources/data/antarchy/recipe/truffalo/black_truffalo_tuft.json @@ -0,0 +1,13 @@ +{ + "type": "minecraft:crafting_shapeless", + "category": "misc", + "group": "truffalo_tuft", + "ingredients": [ + { "tag": "antarchy:truffalo_tuft" }, + { "item": "minecraft:black_dye" } + ], + "result": { + "count": 1, + "id": "antarchy:black_truffalo_tuft" + } +} diff --git a/common-1.21.1/src/main/resources/data/antarchy/recipe/truffalo/blue_truffalo_tuft.json b/common-1.21.1/src/main/resources/data/antarchy/recipe/truffalo/blue_truffalo_tuft.json new file mode 100644 index 00000000..faacf711 --- /dev/null +++ b/common-1.21.1/src/main/resources/data/antarchy/recipe/truffalo/blue_truffalo_tuft.json @@ -0,0 +1,13 @@ +{ + "type": "minecraft:crafting_shapeless", + "category": "misc", + "group": "truffalo_tuft", + "ingredients": [ + { "tag": "antarchy:truffalo_tuft" }, + { "item": "minecraft:blue_dye" } + ], + "result": { + "count": 1, + "id": "antarchy:blue_truffalo_tuft" + } +} diff --git a/common-1.21.1/src/main/resources/data/antarchy/recipe/truffalo/brown_truffalo_tuft.json b/common-1.21.1/src/main/resources/data/antarchy/recipe/truffalo/brown_truffalo_tuft.json new file mode 100644 index 00000000..6b7ae827 --- /dev/null +++ b/common-1.21.1/src/main/resources/data/antarchy/recipe/truffalo/brown_truffalo_tuft.json @@ -0,0 +1,13 @@ +{ + "type": "minecraft:crafting_shapeless", + "category": "misc", + "group": "truffalo_tuft", + "ingredients": [ + { "tag": "antarchy:truffalo_tuft" }, + { "item": "minecraft:brown_dye" } + ], + "result": { + "count": 1, + "id": "antarchy:brown_truffalo_tuft" + } +} diff --git a/common-1.21.1/src/main/resources/data/antarchy/recipe/truffalo/cyan_truffalo_tuft.json b/common-1.21.1/src/main/resources/data/antarchy/recipe/truffalo/cyan_truffalo_tuft.json new file mode 100644 index 00000000..a14e5601 --- /dev/null +++ b/common-1.21.1/src/main/resources/data/antarchy/recipe/truffalo/cyan_truffalo_tuft.json @@ -0,0 +1,13 @@ +{ + "type": "minecraft:crafting_shapeless", + "category": "misc", + "group": "truffalo_tuft", + "ingredients": [ + { "tag": "antarchy:truffalo_tuft" }, + { "item": "minecraft:cyan_dye" } + ], + "result": { + "count": 1, + "id": "antarchy:cyan_truffalo_tuft" + } +} diff --git a/common-1.21.1/src/main/resources/data/antarchy/recipe/truffalo/gray_truffalo_tuft.json b/common-1.21.1/src/main/resources/data/antarchy/recipe/truffalo/gray_truffalo_tuft.json new file mode 100644 index 00000000..1301d795 --- /dev/null +++ b/common-1.21.1/src/main/resources/data/antarchy/recipe/truffalo/gray_truffalo_tuft.json @@ -0,0 +1,13 @@ +{ + "type": "minecraft:crafting_shapeless", + "category": "misc", + "group": "truffalo_tuft", + "ingredients": [ + { "tag": "antarchy:truffalo_tuft" }, + { "item": "minecraft:gray_dye" } + ], + "result": { + "count": 1, + "id": "antarchy:gray_truffalo_tuft" + } +} diff --git a/common-1.21.1/src/main/resources/data/antarchy/recipe/truffalo/green_truffalo_tuft.json b/common-1.21.1/src/main/resources/data/antarchy/recipe/truffalo/green_truffalo_tuft.json new file mode 100644 index 00000000..54916c9f --- /dev/null +++ b/common-1.21.1/src/main/resources/data/antarchy/recipe/truffalo/green_truffalo_tuft.json @@ -0,0 +1,13 @@ +{ + "type": "minecraft:crafting_shapeless", + "category": "misc", + "group": "truffalo_tuft", + "ingredients": [ + { "tag": "antarchy:truffalo_tuft" }, + { "item": "minecraft:green_dye" } + ], + "result": { + "count": 1, + "id": "antarchy:green_truffalo_tuft" + } +} diff --git a/common-1.21.1/src/main/resources/data/antarchy/recipe/truffalo/light_blue_truffalo_tuft.json b/common-1.21.1/src/main/resources/data/antarchy/recipe/truffalo/light_blue_truffalo_tuft.json new file mode 100644 index 00000000..7132709a --- /dev/null +++ b/common-1.21.1/src/main/resources/data/antarchy/recipe/truffalo/light_blue_truffalo_tuft.json @@ -0,0 +1,13 @@ +{ + "type": "minecraft:crafting_shapeless", + "category": "misc", + "group": "truffalo_tuft", + "ingredients": [ + { "tag": "antarchy:truffalo_tuft" }, + { "item": "minecraft:light_blue_dye" } + ], + "result": { + "count": 1, + "id": "antarchy:light_blue_truffalo_tuft" + } +} diff --git a/common-1.21.1/src/main/resources/data/antarchy/recipe/truffalo/light_gray_truffalo_tuft.json b/common-1.21.1/src/main/resources/data/antarchy/recipe/truffalo/light_gray_truffalo_tuft.json new file mode 100644 index 00000000..7dad2243 --- /dev/null +++ b/common-1.21.1/src/main/resources/data/antarchy/recipe/truffalo/light_gray_truffalo_tuft.json @@ -0,0 +1,13 @@ +{ + "type": "minecraft:crafting_shapeless", + "category": "misc", + "group": "truffalo_tuft", + "ingredients": [ + { "tag": "antarchy:truffalo_tuft" }, + { "item": "minecraft:light_gray_dye" } + ], + "result": { + "count": 1, + "id": "antarchy:light_gray_truffalo_tuft" + } +} diff --git a/common-1.21.1/src/main/resources/data/antarchy/recipe/truffalo/lime_truffalo_tuft.json b/common-1.21.1/src/main/resources/data/antarchy/recipe/truffalo/lime_truffalo_tuft.json new file mode 100644 index 00000000..4a5f24a1 --- /dev/null +++ b/common-1.21.1/src/main/resources/data/antarchy/recipe/truffalo/lime_truffalo_tuft.json @@ -0,0 +1,13 @@ +{ + "type": "minecraft:crafting_shapeless", + "category": "misc", + "group": "truffalo_tuft", + "ingredients": [ + { "tag": "antarchy:truffalo_tuft" }, + { "item": "minecraft:lime_dye" } + ], + "result": { + "count": 1, + "id": "antarchy:lime_truffalo_tuft" + } +} diff --git a/common-1.21.1/src/main/resources/data/antarchy/recipe/truffalo/magenta_truffalo_tuft.json b/common-1.21.1/src/main/resources/data/antarchy/recipe/truffalo/magenta_truffalo_tuft.json new file mode 100644 index 00000000..1495f705 --- /dev/null +++ b/common-1.21.1/src/main/resources/data/antarchy/recipe/truffalo/magenta_truffalo_tuft.json @@ -0,0 +1,13 @@ +{ + "type": "minecraft:crafting_shapeless", + "category": "misc", + "group": "truffalo_tuft", + "ingredients": [ + { "tag": "antarchy:truffalo_tuft" }, + { "item": "minecraft:magenta_dye" } + ], + "result": { + "count": 1, + "id": "antarchy:magenta_truffalo_tuft" + } +} diff --git a/common-1.21.1/src/main/resources/data/antarchy/recipe/truffalo/orange_truffalo_tuft.json b/common-1.21.1/src/main/resources/data/antarchy/recipe/truffalo/orange_truffalo_tuft.json new file mode 100644 index 00000000..c77f2368 --- /dev/null +++ b/common-1.21.1/src/main/resources/data/antarchy/recipe/truffalo/orange_truffalo_tuft.json @@ -0,0 +1,13 @@ +{ + "type": "minecraft:crafting_shapeless", + "category": "misc", + "group": "truffalo_tuft", + "ingredients": [ + { "tag": "antarchy:truffalo_tuft" }, + { "item": "minecraft:orange_dye" } + ], + "result": { + "count": 1, + "id": "antarchy:orange_truffalo_tuft" + } +} diff --git a/common-1.21.1/src/main/resources/data/antarchy/recipe/truffalo/pink_truffalo_tuft.json b/common-1.21.1/src/main/resources/data/antarchy/recipe/truffalo/pink_truffalo_tuft.json new file mode 100644 index 00000000..b048aac6 --- /dev/null +++ b/common-1.21.1/src/main/resources/data/antarchy/recipe/truffalo/pink_truffalo_tuft.json @@ -0,0 +1,13 @@ +{ + "type": "minecraft:crafting_shapeless", + "category": "misc", + "group": "truffalo_tuft", + "ingredients": [ + { "tag": "antarchy:truffalo_tuft" }, + { "item": "minecraft:pink_dye" } + ], + "result": { + "count": 1, + "id": "antarchy:pink_truffalo_tuft" + } +} diff --git a/common-1.21.1/src/main/resources/data/antarchy/recipe/truffalo/purple_truffalo_tuft.json b/common-1.21.1/src/main/resources/data/antarchy/recipe/truffalo/purple_truffalo_tuft.json new file mode 100644 index 00000000..983a3da2 --- /dev/null +++ b/common-1.21.1/src/main/resources/data/antarchy/recipe/truffalo/purple_truffalo_tuft.json @@ -0,0 +1,13 @@ +{ + "type": "minecraft:crafting_shapeless", + "category": "misc", + "group": "truffalo_tuft", + "ingredients": [ + { "tag": "antarchy:truffalo_tuft" }, + { "item": "minecraft:purple_dye" } + ], + "result": { + "count": 1, + "id": "antarchy:purple_truffalo_tuft" + } +} diff --git a/common-1.21.1/src/main/resources/data/antarchy/recipe/truffalo/red_truffalo_tuft.json b/common-1.21.1/src/main/resources/data/antarchy/recipe/truffalo/red_truffalo_tuft.json new file mode 100644 index 00000000..d57f5d5d --- /dev/null +++ b/common-1.21.1/src/main/resources/data/antarchy/recipe/truffalo/red_truffalo_tuft.json @@ -0,0 +1,13 @@ +{ + "type": "minecraft:crafting_shapeless", + "category": "misc", + "group": "truffalo_tuft", + "ingredients": [ + { "tag": "antarchy:truffalo_tuft" }, + { "item": "minecraft:red_dye" } + ], + "result": { + "count": 1, + "id": "antarchy:red_truffalo_tuft" + } +} diff --git a/common-1.21.1/src/main/resources/data/antarchy/recipe/truffalo/stripped_truffalo_wood.json b/common-1.21.1/src/main/resources/data/antarchy/recipe/truffalo/stripped_truffalo_wood.json new file mode 100644 index 00000000..8dccd77e --- /dev/null +++ b/common-1.21.1/src/main/resources/data/antarchy/recipe/truffalo/stripped_truffalo_wood.json @@ -0,0 +1,18 @@ +{ + "type": "minecraft:crafting_shaped", + "category": "building", + "group": "bark", + "key": { + "#": { + "item": "antarchy:stripped_truffalo_log" + } + }, + "pattern": [ + "##", + "##" + ], + "result": { + "count": 3, + "id": "antarchy:stripped_truffalo_wood" + } +} diff --git a/common-1.21.1/src/main/resources/data/antarchy/recipe/truffalo/truffalo_boat.json b/common-1.21.1/src/main/resources/data/antarchy/recipe/truffalo/truffalo_boat.json new file mode 100644 index 00000000..d623529b --- /dev/null +++ b/common-1.21.1/src/main/resources/data/antarchy/recipe/truffalo/truffalo_boat.json @@ -0,0 +1,18 @@ +{ + "type": "minecraft:crafting_shaped", + "category": "equipment", + "key": { + "#": { + "item": "antarchy:truffalo_planks" + } + }, + "pattern": [ + "# #", + "###" + ], + "result": { + "count": 1, + "id": "antarchy:truffalo_boat" + } +} + diff --git a/common-1.21.1/src/main/resources/data/antarchy/recipe/truffalo/truffalo_button.json b/common-1.21.1/src/main/resources/data/antarchy/recipe/truffalo/truffalo_button.json new file mode 100644 index 00000000..08245cee --- /dev/null +++ b/common-1.21.1/src/main/resources/data/antarchy/recipe/truffalo/truffalo_button.json @@ -0,0 +1,14 @@ +{ + "type": "minecraft:crafting_shapeless", + "category": "redstone", + "group": "wooden_button", + "ingredients": [ + { + "item": "antarchy:truffalo_planks" + } + ], + "result": { + "count": 1, + "id": "antarchy:truffalo_button" + } +} diff --git a/common-1.21.1/src/main/resources/data/antarchy/recipe/truffalo/truffalo_chest_boat.json b/common-1.21.1/src/main/resources/data/antarchy/recipe/truffalo/truffalo_chest_boat.json new file mode 100644 index 00000000..36953dae --- /dev/null +++ b/common-1.21.1/src/main/resources/data/antarchy/recipe/truffalo/truffalo_chest_boat.json @@ -0,0 +1,17 @@ +{ + "type": "minecraft:crafting_shapeless", + "category": "equipment", + "ingredients": [ + { + "item": "antarchy:truffalo_boat" + }, + { + "item": "minecraft:chest" + } + ], + "result": { + "count": 1, + "id": "antarchy:truffalo_chest_boat" + } +} + diff --git a/common-1.21.1/src/main/resources/data/antarchy/recipe/truffalo/truffalo_door.json b/common-1.21.1/src/main/resources/data/antarchy/recipe/truffalo/truffalo_door.json new file mode 100644 index 00000000..431ebfb8 --- /dev/null +++ b/common-1.21.1/src/main/resources/data/antarchy/recipe/truffalo/truffalo_door.json @@ -0,0 +1,19 @@ +{ + "type": "minecraft:crafting_shaped", + "category": "redstone", + "group": "wooden_door", + "key": { + "#": { + "item": "antarchy:truffalo_planks" + } + }, + "pattern": [ + "##", + "##", + "##" + ], + "result": { + "count": 3, + "id": "antarchy:truffalo_door" + } +} diff --git a/common-1.21.1/src/main/resources/data/antarchy/recipe/truffalo/truffalo_fence.json b/common-1.21.1/src/main/resources/data/antarchy/recipe/truffalo/truffalo_fence.json new file mode 100644 index 00000000..6a6f4f07 --- /dev/null +++ b/common-1.21.1/src/main/resources/data/antarchy/recipe/truffalo/truffalo_fence.json @@ -0,0 +1,21 @@ +{ + "type": "minecraft:crafting_shaped", + "category": "misc", + "group": "wooden_fence", + "key": { + "#": { + "item": "minecraft:stick" + }, + "W": { + "item": "antarchy:truffalo_planks" + } + }, + "pattern": [ + "W#W", + "W#W" + ], + "result": { + "count": 3, + "id": "antarchy:truffalo_fence" + } +} diff --git a/common-1.21.1/src/main/resources/data/antarchy/recipe/truffalo/truffalo_fence_gate.json b/common-1.21.1/src/main/resources/data/antarchy/recipe/truffalo/truffalo_fence_gate.json new file mode 100644 index 00000000..f721e2d9 --- /dev/null +++ b/common-1.21.1/src/main/resources/data/antarchy/recipe/truffalo/truffalo_fence_gate.json @@ -0,0 +1,21 @@ +{ + "type": "minecraft:crafting_shaped", + "category": "redstone", + "group": "wooden_fence_gate", + "key": { + "#": { + "item": "minecraft:stick" + }, + "W": { + "item": "antarchy:truffalo_planks" + } + }, + "pattern": [ + "#W#", + "#W#" + ], + "result": { + "count": 1, + "id": "antarchy:truffalo_fence_gate" + } +} diff --git a/common-1.21.1/src/main/resources/data/antarchy/recipe/truffalo/truffalo_hanging_sign.json b/common-1.21.1/src/main/resources/data/antarchy/recipe/truffalo/truffalo_hanging_sign.json new file mode 100644 index 00000000..69f59086 --- /dev/null +++ b/common-1.21.1/src/main/resources/data/antarchy/recipe/truffalo/truffalo_hanging_sign.json @@ -0,0 +1,22 @@ +{ + "type": "minecraft:crafting_shaped", + "category": "misc", + "group": "hanging_sign", + "key": { + "#": { + "item": "antarchy:stripped_truffalo_log" + }, + "X": { + "item": "minecraft:chain" + } + }, + "pattern": [ + "X X", + "###", + "###" + ], + "result": { + "count": 6, + "id": "antarchy:truffalo_hanging_sign" + } +} diff --git a/common-1.21.1/src/main/resources/data/antarchy/recipe/truffalo/truffalo_planks.json b/common-1.21.1/src/main/resources/data/antarchy/recipe/truffalo/truffalo_planks.json new file mode 100644 index 00000000..830e6ceb --- /dev/null +++ b/common-1.21.1/src/main/resources/data/antarchy/recipe/truffalo/truffalo_planks.json @@ -0,0 +1,14 @@ +{ + "type": "minecraft:crafting_shapeless", + "category": "building", + "group": "planks", + "ingredients": [ + { + "tag": "antarchy:truffalo_logs" + } + ], + "result": { + "count": 2, + "id": "antarchy:truffalo_planks" + } +} diff --git a/common-1.21.1/src/main/resources/data/antarchy/recipe/truffalo/truffalo_pressure_plate.json b/common-1.21.1/src/main/resources/data/antarchy/recipe/truffalo/truffalo_pressure_plate.json new file mode 100644 index 00000000..5ca36c21 --- /dev/null +++ b/common-1.21.1/src/main/resources/data/antarchy/recipe/truffalo/truffalo_pressure_plate.json @@ -0,0 +1,17 @@ +{ + "type": "minecraft:crafting_shaped", + "category": "redstone", + "group": "wooden_pressure_plate", + "key": { + "#": { + "item": "antarchy:truffalo_planks" + } + }, + "pattern": [ + "##" + ], + "result": { + "count": 1, + "id": "antarchy:truffalo_pressure_plate" + } +} diff --git a/common-1.21.1/src/main/resources/data/antarchy/recipe/truffalo/truffalo_sign.json b/common-1.21.1/src/main/resources/data/antarchy/recipe/truffalo/truffalo_sign.json new file mode 100644 index 00000000..9922cee8 --- /dev/null +++ b/common-1.21.1/src/main/resources/data/antarchy/recipe/truffalo/truffalo_sign.json @@ -0,0 +1,22 @@ +{ + "type": "minecraft:crafting_shaped", + "category": "misc", + "group": "wooden_sign", + "key": { + "#": { + "item": "antarchy:truffalo_planks" + }, + "X": { + "item": "minecraft:stick" + } + }, + "pattern": [ + "###", + "###", + " X " + ], + "result": { + "count": 3, + "id": "antarchy:truffalo_sign" + } +} diff --git a/common-1.21.1/src/main/resources/data/antarchy/recipe/truffalo/truffalo_slab.json b/common-1.21.1/src/main/resources/data/antarchy/recipe/truffalo/truffalo_slab.json new file mode 100644 index 00000000..f6da964b --- /dev/null +++ b/common-1.21.1/src/main/resources/data/antarchy/recipe/truffalo/truffalo_slab.json @@ -0,0 +1,17 @@ +{ + "type": "minecraft:crafting_shaped", + "category": "building", + "group": "wooden_slab", + "key": { + "#": { + "item": "antarchy:truffalo_planks" + } + }, + "pattern": [ + "###" + ], + "result": { + "count": 6, + "id": "antarchy:truffalo_slab" + } +} diff --git a/common-1.21.1/src/main/resources/data/antarchy/recipe/truffalo/truffalo_stairs.json b/common-1.21.1/src/main/resources/data/antarchy/recipe/truffalo/truffalo_stairs.json new file mode 100644 index 00000000..9c4a0650 --- /dev/null +++ b/common-1.21.1/src/main/resources/data/antarchy/recipe/truffalo/truffalo_stairs.json @@ -0,0 +1,19 @@ +{ + "type": "minecraft:crafting_shaped", + "category": "building", + "group": "wooden_stairs", + "key": { + "#": { + "item": "antarchy:truffalo_planks" + } + }, + "pattern": [ + "# ", + "## ", + "###" + ], + "result": { + "count": 4, + "id": "antarchy:truffalo_stairs" + } +} diff --git a/common-1.21.1/src/main/resources/data/antarchy/recipe/truffalo/truffalo_trapdoor.json b/common-1.21.1/src/main/resources/data/antarchy/recipe/truffalo/truffalo_trapdoor.json new file mode 100644 index 00000000..2c8ae9e7 --- /dev/null +++ b/common-1.21.1/src/main/resources/data/antarchy/recipe/truffalo/truffalo_trapdoor.json @@ -0,0 +1,18 @@ +{ + "type": "minecraft:crafting_shaped", + "category": "redstone", + "group": "wooden_trapdoor", + "key": { + "#": { + "item": "antarchy:truffalo_planks" + } + }, + "pattern": [ + "###", + "###" + ], + "result": { + "count": 2, + "id": "antarchy:truffalo_trapdoor" + } +} diff --git a/common-1.21.1/src/main/resources/data/antarchy/recipe/truffalo/truffalo_wood.json b/common-1.21.1/src/main/resources/data/antarchy/recipe/truffalo/truffalo_wood.json new file mode 100644 index 00000000..40edf004 --- /dev/null +++ b/common-1.21.1/src/main/resources/data/antarchy/recipe/truffalo/truffalo_wood.json @@ -0,0 +1,18 @@ +{ + "type": "minecraft:crafting_shaped", + "category": "building", + "group": "bark", + "key": { + "#": { + "item": "antarchy:truffalo_log" + } + }, + "pattern": [ + "##", + "##" + ], + "result": { + "count": 3, + "id": "antarchy:truffalo_wood" + } +} diff --git a/common-1.21.1/src/main/resources/data/antarchy/recipe/truffalo/white_truffalo_tuft.json b/common-1.21.1/src/main/resources/data/antarchy/recipe/truffalo/white_truffalo_tuft.json new file mode 100644 index 00000000..6754020c --- /dev/null +++ b/common-1.21.1/src/main/resources/data/antarchy/recipe/truffalo/white_truffalo_tuft.json @@ -0,0 +1,13 @@ +{ + "type": "minecraft:crafting_shapeless", + "category": "misc", + "group": "truffalo_tuft", + "ingredients": [ + { "tag": "antarchy:truffalo_tuft" }, + { "item": "minecraft:white_dye" } + ], + "result": { + "count": 1, + "id": "antarchy:white_truffalo_tuft" + } +} diff --git a/common-1.21.1/src/main/resources/data/antarchy/recipe/truffalo/yellow_truffalo_tuft.json b/common-1.21.1/src/main/resources/data/antarchy/recipe/truffalo/yellow_truffalo_tuft.json new file mode 100644 index 00000000..e062bc0f --- /dev/null +++ b/common-1.21.1/src/main/resources/data/antarchy/recipe/truffalo/yellow_truffalo_tuft.json @@ -0,0 +1,13 @@ +{ + "type": "minecraft:crafting_shapeless", + "category": "misc", + "group": "truffalo_tuft", + "ingredients": [ + { "tag": "antarchy:truffalo_tuft" }, + { "item": "minecraft:yellow_dye" } + ], + "result": { + "count": 1, + "id": "antarchy:yellow_truffalo_tuft" + } +} diff --git a/common-1.21.1/src/main/resources/data/antarchy/tags/block/royal_logs.json b/common-1.21.1/src/main/resources/data/antarchy/tags/block/royal_logs.json new file mode 100644 index 00000000..a93ee69f --- /dev/null +++ b/common-1.21.1/src/main/resources/data/antarchy/tags/block/royal_logs.json @@ -0,0 +1,9 @@ +{ + "replace": false, + "values": [ + "antarchy:royal_log", + "antarchy:royal_wood", + "antarchy:stripped_royal_log", + "antarchy:stripped_royal_wood" + ] +} diff --git a/common-1.21.1/src/main/resources/data/antarchy/tags/block/truffalo_logs.json b/common-1.21.1/src/main/resources/data/antarchy/tags/block/truffalo_logs.json new file mode 100644 index 00000000..5cfc4d49 --- /dev/null +++ b/common-1.21.1/src/main/resources/data/antarchy/tags/block/truffalo_logs.json @@ -0,0 +1,9 @@ +{ + "replace": false, + "values": [ + "antarchy:truffalo_log", + "antarchy:truffalo_wood", + "antarchy:stripped_truffalo_log", + "antarchy:stripped_truffalo_wood" + ] +} diff --git a/common-1.21.1/src/main/resources/data/antarchy/tags/block/truffalo_sapling_supports.json b/common-1.21.1/src/main/resources/data/antarchy/tags/block/truffalo_sapling_supports.json new file mode 100644 index 00000000..9b588321 --- /dev/null +++ b/common-1.21.1/src/main/resources/data/antarchy/tags/block/truffalo_sapling_supports.json @@ -0,0 +1,14 @@ +{ + "replace": false, + "values": [ + "minecraft:dirt", + "minecraft:grass_block", + "minecraft:coarse_dirt", + "minecraft:podzol", + "minecraft:mycelium", + "minecraft:farmland", + "minecraft:rooted_dirt", + "minecraft:moss_block", + "antarchy:blush_moss_block" + ] +} diff --git a/common-1.21.1/src/main/resources/data/antarchy/tags/block/truffalo_tuft.json b/common-1.21.1/src/main/resources/data/antarchy/tags/block/truffalo_tuft.json new file mode 100644 index 00000000..3f73a76c --- /dev/null +++ b/common-1.21.1/src/main/resources/data/antarchy/tags/block/truffalo_tuft.json @@ -0,0 +1,21 @@ +{ + "replace": false, + "values": [ + "antarchy:white_truffalo_tuft", + "antarchy:orange_truffalo_tuft", + "antarchy:magenta_truffalo_tuft", + "antarchy:light_blue_truffalo_tuft", + "antarchy:yellow_truffalo_tuft", + "antarchy:lime_truffalo_tuft", + "antarchy:pink_truffalo_tuft", + "antarchy:gray_truffalo_tuft", + "antarchy:light_gray_truffalo_tuft", + "antarchy:cyan_truffalo_tuft", + "antarchy:purple_truffalo_tuft", + "antarchy:blue_truffalo_tuft", + "antarchy:brown_truffalo_tuft", + "antarchy:green_truffalo_tuft", + "antarchy:red_truffalo_tuft", + "antarchy:black_truffalo_tuft" + ] +} diff --git a/common-1.21.1/src/main/resources/data/antarchy/tags/item/hoverboards.json b/common-1.21.1/src/main/resources/data/antarchy/tags/item/hoverboards.json new file mode 100644 index 00000000..46bfa077 --- /dev/null +++ b/common-1.21.1/src/main/resources/data/antarchy/tags/item/hoverboards.json @@ -0,0 +1,22 @@ +{ + "replace": false, + "values": [ + "antarchy:hoverboard", + "antarchy:hoverboard_white", + "antarchy:hoverboard_orange", + "antarchy:hoverboard_magenta", + "antarchy:hoverboard_light_blue", + "antarchy:hoverboard_yellow", + "antarchy:hoverboard_lime", + "antarchy:hoverboard_pink", + "antarchy:hoverboard_gray", + "antarchy:hoverboard_light_gray", + "antarchy:hoverboard_cyan", + "antarchy:hoverboard_purple", + "antarchy:hoverboard_blue", + "antarchy:hoverboard_brown", + "antarchy:hoverboard_green", + "antarchy:hoverboard_red", + "antarchy:hoverboard_black" + ] +} diff --git a/common-1.21.1/src/main/resources/data/antarchy/tags/item/royal_logs.json b/common-1.21.1/src/main/resources/data/antarchy/tags/item/royal_logs.json new file mode 100644 index 00000000..a93ee69f --- /dev/null +++ b/common-1.21.1/src/main/resources/data/antarchy/tags/item/royal_logs.json @@ -0,0 +1,9 @@ +{ + "replace": false, + "values": [ + "antarchy:royal_log", + "antarchy:royal_wood", + "antarchy:stripped_royal_log", + "antarchy:stripped_royal_wood" + ] +} diff --git a/common-1.21.1/src/main/resources/data/antarchy/tags/item/truffalo_logs.json b/common-1.21.1/src/main/resources/data/antarchy/tags/item/truffalo_logs.json new file mode 100644 index 00000000..5cfc4d49 --- /dev/null +++ b/common-1.21.1/src/main/resources/data/antarchy/tags/item/truffalo_logs.json @@ -0,0 +1,9 @@ +{ + "replace": false, + "values": [ + "antarchy:truffalo_log", + "antarchy:truffalo_wood", + "antarchy:stripped_truffalo_log", + "antarchy:stripped_truffalo_wood" + ] +} diff --git a/common-1.21.1/src/main/resources/data/antarchy/tags/item/truffalo_tuft.json b/common-1.21.1/src/main/resources/data/antarchy/tags/item/truffalo_tuft.json new file mode 100644 index 00000000..3f73a76c --- /dev/null +++ b/common-1.21.1/src/main/resources/data/antarchy/tags/item/truffalo_tuft.json @@ -0,0 +1,21 @@ +{ + "replace": false, + "values": [ + "antarchy:white_truffalo_tuft", + "antarchy:orange_truffalo_tuft", + "antarchy:magenta_truffalo_tuft", + "antarchy:light_blue_truffalo_tuft", + "antarchy:yellow_truffalo_tuft", + "antarchy:lime_truffalo_tuft", + "antarchy:pink_truffalo_tuft", + "antarchy:gray_truffalo_tuft", + "antarchy:light_gray_truffalo_tuft", + "antarchy:cyan_truffalo_tuft", + "antarchy:purple_truffalo_tuft", + "antarchy:blue_truffalo_tuft", + "antarchy:brown_truffalo_tuft", + "antarchy:green_truffalo_tuft", + "antarchy:red_truffalo_tuft", + "antarchy:black_truffalo_tuft" + ] +} diff --git a/common-1.21.1/src/main/resources/data/antarchy/worldgen/biome/dream_dunes.json b/common-1.21.1/src/main/resources/data/antarchy/worldgen/biome/dream_dunes.json index 0a9ccc5f..328ea45a 100644 --- a/common-1.21.1/src/main/resources/data/antarchy/worldgen/biome/dream_dunes.json +++ b/common-1.21.1/src/main/resources/data/antarchy/worldgen/biome/dream_dunes.json @@ -62,8 +62,7 @@ [ "antarchy:cornea_stalk_patch", "antarchy:patch_ceiling_cornea_stalk" - ], - [] + ] ], "creature_spawn_probability": 0.03, "spawners": { diff --git a/common-1.21.1/src/main/resources/data/antarchy/worldgen/configured_feature/blush_moss_vegetation.json b/common-1.21.1/src/main/resources/data/antarchy/worldgen/configured_feature/blush_moss_vegetation.json index bcf78e9a..cd11bca8 100644 --- a/common-1.21.1/src/main/resources/data/antarchy/worldgen/configured_feature/blush_moss_vegetation.json +++ b/common-1.21.1/src/main/resources/data/antarchy/worldgen/configured_feature/blush_moss_vegetation.json @@ -16,6 +16,12 @@ } }, "weight": 25 + }, + { + "data": { + "Name": "antarchy:truffalo_sapling" + }, + "weight": 1 } ] } diff --git a/common-1.21.1/src/main/resources/data/antarchy/worldgen/configured_feature/truffalo_tree.json b/common-1.21.1/src/main/resources/data/antarchy/worldgen/configured_feature/truffalo_tree.json new file mode 100644 index 00000000..60e1232e --- /dev/null +++ b/common-1.21.1/src/main/resources/data/antarchy/worldgen/configured_feature/truffalo_tree.json @@ -0,0 +1,19 @@ +{ + "type": "antarchy:truffalo_tree", + "config": { + "trunk_provider": { + "type": "minecraft:simple_state_provider", + "state": { + "Name": "antarchy:truffalo_log", + "Properties": { + "axis": "y" + } + } + }, + "height": { + "type": "minecraft:uniform", + "min_inclusive": 4, + "max_inclusive": 9 + } + } +} diff --git a/common-1.21.1/src/main/resources/data/minecraft/tags/block/all_hanging_signs.json b/common-1.21.1/src/main/resources/data/minecraft/tags/block/all_hanging_signs.json index 1aa3938b..c0165ba4 100644 --- a/common-1.21.1/src/main/resources/data/minecraft/tags/block/all_hanging_signs.json +++ b/common-1.21.1/src/main/resources/data/minecraft/tags/block/all_hanging_signs.json @@ -1,11 +1,15 @@ { - "replace": false, - "values": [ - "antarchy:ouranwood_hanging_sign", - "antarchy:ouranwood_wall_hanging_sign", - "antarchy:peach_hanging_sign", - "antarchy:peach_wall_hanging_sign", - "antarchy:nadir_hanging_sign", - "antarchy:nadir_wall_hanging_sign" - ] + "replace": false, + "values": [ + "antarchy:ouranwood_hanging_sign", + "antarchy:ouranwood_wall_hanging_sign", + "antarchy:peach_hanging_sign", + "antarchy:peach_wall_hanging_sign", + "antarchy:nadir_hanging_sign", + "antarchy:nadir_wall_hanging_sign", + "antarchy:royal_hanging_sign", + "antarchy:royal_wall_hanging_sign", + "antarchy:truffalo_hanging_sign", + "antarchy:truffalo_wall_hanging_sign" + ] } diff --git a/common-1.21.1/src/main/resources/data/minecraft/tags/block/ceiling_hanging_signs.json b/common-1.21.1/src/main/resources/data/minecraft/tags/block/ceiling_hanging_signs.json index 756c631b..95e8093f 100644 --- a/common-1.21.1/src/main/resources/data/minecraft/tags/block/ceiling_hanging_signs.json +++ b/common-1.21.1/src/main/resources/data/minecraft/tags/block/ceiling_hanging_signs.json @@ -1,8 +1,10 @@ { - "replace": false, - "values": [ - "antarchy:ouranwood_hanging_sign", - "antarchy:peach_hanging_sign", - "antarchy:nadir_hanging_sign" - ] + "replace": false, + "values": [ + "antarchy:ouranwood_hanging_sign", + "antarchy:peach_hanging_sign", + "antarchy:nadir_hanging_sign", + "antarchy:royal_hanging_sign", + "antarchy:truffalo_hanging_sign" + ] } diff --git a/common-1.21.1/src/main/resources/data/minecraft/tags/block/doors.json b/common-1.21.1/src/main/resources/data/minecraft/tags/block/doors.json index b060f1cd..c4dcd7e4 100644 --- a/common-1.21.1/src/main/resources/data/minecraft/tags/block/doors.json +++ b/common-1.21.1/src/main/resources/data/minecraft/tags/block/doors.json @@ -1,8 +1,10 @@ { - "replace": false, - "values": [ - "antarchy:uranium_door", - "antarchy:titanium_door", - "antarchy:nadir_door" - ] + "replace": false, + "values": [ + "antarchy:uranium_door", + "antarchy:titanium_door", + "antarchy:nadir_door", + "antarchy:royal_door", + "antarchy:truffalo_door" + ] } diff --git a/common-1.21.1/src/main/resources/data/minecraft/tags/block/fence_gates.json b/common-1.21.1/src/main/resources/data/minecraft/tags/block/fence_gates.json index 340319a1..383608df 100644 --- a/common-1.21.1/src/main/resources/data/minecraft/tags/block/fence_gates.json +++ b/common-1.21.1/src/main/resources/data/minecraft/tags/block/fence_gates.json @@ -1,8 +1,10 @@ { - "replace": false, - "values": [ - "antarchy:ouranwood_fence_gate", - "antarchy:peach_fence_gate", - "antarchy:nadir_fence_gate" - ] + "replace": false, + "values": [ + "antarchy:ouranwood_fence_gate", + "antarchy:peach_fence_gate", + "antarchy:nadir_fence_gate", + "antarchy:royal_fence_gate", + "antarchy:truffalo_fence_gate" + ] } diff --git a/common-1.21.1/src/main/resources/data/minecraft/tags/block/logs.json b/common-1.21.1/src/main/resources/data/minecraft/tags/block/logs.json index 549e0617..0c13e07c 100644 --- a/common-1.21.1/src/main/resources/data/minecraft/tags/block/logs.json +++ b/common-1.21.1/src/main/resources/data/minecraft/tags/block/logs.json @@ -1,20 +1,28 @@ { - "replace": false, - "values": [ - "antarchy:ouranwood_log", - "antarchy:ouranwood_wood", - "antarchy:duplicator_log", - "antarchy:mossy_ouranwood_log", - "antarchy:mossy_ouranwood_wood", - "antarchy:stripped_ouranwood_log", - "antarchy:stripped_ouranwood_wood", - "antarchy:peach_log", - "antarchy:peach_wood", - "antarchy:stripped_peach_log", - "antarchy:stripped_peach_wood", - "antarchy:nadir_log", - "antarchy:nadir_wood", - "antarchy:stripped_nadir_log", - "antarchy:stripped_nadir_wood" - ] + "replace": false, + "values": [ + "antarchy:ouranwood_log", + "antarchy:ouranwood_wood", + "antarchy:duplicator_log", + "antarchy:mossy_ouranwood_log", + "antarchy:mossy_ouranwood_wood", + "antarchy:stripped_ouranwood_log", + "antarchy:stripped_ouranwood_wood", + "antarchy:peach_log", + "antarchy:peach_wood", + "antarchy:stripped_peach_log", + "antarchy:stripped_peach_wood", + "antarchy:nadir_log", + "antarchy:nadir_wood", + "antarchy:stripped_nadir_log", + "antarchy:stripped_nadir_wood", + "antarchy:royal_log", + "antarchy:royal_wood", + "antarchy:stripped_royal_log", + "antarchy:stripped_royal_wood", + "antarchy:truffalo_log", + "antarchy:truffalo_wood", + "antarchy:stripped_truffalo_log", + "antarchy:stripped_truffalo_wood" + ] } diff --git a/common-1.21.1/src/main/resources/data/minecraft/tags/block/logs_that_burn.json b/common-1.21.1/src/main/resources/data/minecraft/tags/block/logs_that_burn.json index 549e0617..0c13e07c 100644 --- a/common-1.21.1/src/main/resources/data/minecraft/tags/block/logs_that_burn.json +++ b/common-1.21.1/src/main/resources/data/minecraft/tags/block/logs_that_burn.json @@ -1,20 +1,28 @@ { - "replace": false, - "values": [ - "antarchy:ouranwood_log", - "antarchy:ouranwood_wood", - "antarchy:duplicator_log", - "antarchy:mossy_ouranwood_log", - "antarchy:mossy_ouranwood_wood", - "antarchy:stripped_ouranwood_log", - "antarchy:stripped_ouranwood_wood", - "antarchy:peach_log", - "antarchy:peach_wood", - "antarchy:stripped_peach_log", - "antarchy:stripped_peach_wood", - "antarchy:nadir_log", - "antarchy:nadir_wood", - "antarchy:stripped_nadir_log", - "antarchy:stripped_nadir_wood" - ] + "replace": false, + "values": [ + "antarchy:ouranwood_log", + "antarchy:ouranwood_wood", + "antarchy:duplicator_log", + "antarchy:mossy_ouranwood_log", + "antarchy:mossy_ouranwood_wood", + "antarchy:stripped_ouranwood_log", + "antarchy:stripped_ouranwood_wood", + "antarchy:peach_log", + "antarchy:peach_wood", + "antarchy:stripped_peach_log", + "antarchy:stripped_peach_wood", + "antarchy:nadir_log", + "antarchy:nadir_wood", + "antarchy:stripped_nadir_log", + "antarchy:stripped_nadir_wood", + "antarchy:royal_log", + "antarchy:royal_wood", + "antarchy:stripped_royal_log", + "antarchy:stripped_royal_wood", + "antarchy:truffalo_log", + "antarchy:truffalo_wood", + "antarchy:stripped_truffalo_log", + "antarchy:stripped_truffalo_wood" + ] } diff --git a/common-1.21.1/src/main/resources/data/minecraft/tags/block/mineable/axe.json b/common-1.21.1/src/main/resources/data/minecraft/tags/block/mineable/axe.json index 01045829..a06ddf37 100644 --- a/common-1.21.1/src/main/resources/data/minecraft/tags/block/mineable/axe.json +++ b/common-1.21.1/src/main/resources/data/minecraft/tags/block/mineable/axe.json @@ -1,61 +1,97 @@ { - "replace": false, - "values": [ - "antarchy:duplicator_log", - "antarchy:ouranwood_log", - "antarchy:ouranwood_wood", - "antarchy:mossy_ouranwood_log", - "antarchy:mossy_ouranwood_wood", - "antarchy:stripped_ouranwood_log", - "antarchy:stripped_ouranwood_wood", - "antarchy:ouranwood_planks", - "antarchy:ouranwood_stairs", - "antarchy:ouranwood_slab", - "antarchy:ouranwood_fence", - "antarchy:ouranwood_fence_gate", - "antarchy:ouranwood_door", - "antarchy:ouranwood_trapdoor", - "antarchy:ouranwood_pressure_plate", - "antarchy:ouranwood_button", - "antarchy:ouranwood_sign", - "antarchy:ouranwood_wall_sign", - "antarchy:ouranwood_hanging_sign", - "antarchy:ouranwood_wall_hanging_sign", - "antarchy:peach_log", - "antarchy:peach_wood", - "antarchy:stripped_peach_log", - "antarchy:stripped_peach_wood", - "antarchy:peach_planks", - "antarchy:peach_stairs", - "antarchy:peach_slab", - "antarchy:peach_fence", - "antarchy:peach_fence_gate", - "antarchy:peach_door", - "antarchy:peach_trapdoor", - "antarchy:peach_pressure_plate", - "antarchy:peach_button", - "antarchy:peach_sign", - "antarchy:peach_wall_sign", - "antarchy:peach_hanging_sign", - "antarchy:peach_wall_hanging_sign", - "antarchy:dream_campfire", - "antarchy:glowcap_mushroom_block", - "antarchy:nadir_log", - "antarchy:nadir_wood", - "antarchy:stripped_nadir_log", - "antarchy:stripped_nadir_wood", - "antarchy:nadir_planks", - "antarchy:nadir_stairs", - "antarchy:nadir_slab", - "antarchy:nadir_fence", - "antarchy:nadir_fence_gate", - "antarchy:nadir_door", - "antarchy:nadir_trapdoor", - "antarchy:nadir_pressure_plate", - "antarchy:nadir_button", - "antarchy:nadir_sign", - "antarchy:nadir_wall_sign", - "antarchy:nadir_hanging_sign", - "antarchy:nadir_wall_hanging_sign" - ] + "replace": false, + "values": [ + "antarchy:duplicator_log", + "antarchy:ouranwood_log", + "antarchy:ouranwood_wood", + "antarchy:mossy_ouranwood_log", + "antarchy:mossy_ouranwood_wood", + "antarchy:stripped_ouranwood_log", + "antarchy:stripped_ouranwood_wood", + "antarchy:ouranwood_planks", + "antarchy:ouranwood_stairs", + "antarchy:ouranwood_slab", + "antarchy:ouranwood_fence", + "antarchy:ouranwood_fence_gate", + "antarchy:ouranwood_door", + "antarchy:ouranwood_trapdoor", + "antarchy:ouranwood_pressure_plate", + "antarchy:ouranwood_button", + "antarchy:ouranwood_sign", + "antarchy:ouranwood_wall_sign", + "antarchy:ouranwood_hanging_sign", + "antarchy:ouranwood_wall_hanging_sign", + "antarchy:peach_log", + "antarchy:peach_wood", + "antarchy:stripped_peach_log", + "antarchy:stripped_peach_wood", + "antarchy:peach_planks", + "antarchy:peach_stairs", + "antarchy:peach_slab", + "antarchy:peach_fence", + "antarchy:peach_fence_gate", + "antarchy:peach_door", + "antarchy:peach_trapdoor", + "antarchy:peach_pressure_plate", + "antarchy:peach_button", + "antarchy:peach_sign", + "antarchy:peach_wall_sign", + "antarchy:peach_hanging_sign", + "antarchy:peach_wall_hanging_sign", + "antarchy:dream_campfire", + "antarchy:glowcap_mushroom_block", + "antarchy:nadir_log", + "antarchy:nadir_wood", + "antarchy:stripped_nadir_log", + "antarchy:stripped_nadir_wood", + "antarchy:nadir_planks", + "antarchy:nadir_stairs", + "antarchy:nadir_slab", + "antarchy:nadir_fence", + "antarchy:nadir_fence_gate", + "antarchy:nadir_door", + "antarchy:nadir_trapdoor", + "antarchy:nadir_pressure_plate", + "antarchy:nadir_button", + "antarchy:nadir_sign", + "antarchy:nadir_wall_sign", + "antarchy:nadir_hanging_sign", + "antarchy:nadir_wall_hanging_sign", + "antarchy:royal_log", + "antarchy:royal_wood", + "antarchy:stripped_royal_log", + "antarchy:stripped_royal_wood", + "antarchy:royal_planks", + "antarchy:royal_stairs", + "antarchy:royal_slab", + "antarchy:royal_fence", + "antarchy:royal_fence_gate", + "antarchy:royal_door", + "antarchy:royal_trapdoor", + "antarchy:royal_pressure_plate", + "antarchy:royal_button", + "antarchy:royal_sign", + "antarchy:royal_wall_sign", + "antarchy:royal_hanging_sign", + "antarchy:royal_wall_hanging_sign", + "antarchy:royal_leaves", + "antarchy:royal_flowering_leaves", + "antarchy:truffalo_log", + "antarchy:truffalo_wood", + "antarchy:stripped_truffalo_log", + "antarchy:stripped_truffalo_wood", + "antarchy:truffalo_planks", + "antarchy:truffalo_stairs", + "antarchy:truffalo_slab", + "antarchy:truffalo_fence", + "antarchy:truffalo_fence_gate", + "antarchy:truffalo_door", + "antarchy:truffalo_trapdoor", + "antarchy:truffalo_pressure_plate", + "antarchy:truffalo_button", + "antarchy:truffalo_sign", + "antarchy:truffalo_wall_sign", + "antarchy:truffalo_hanging_sign", + "antarchy:truffalo_wall_hanging_sign" + ] } diff --git a/common-1.21.1/src/main/resources/data/minecraft/tags/block/mineable/hoe.json b/common-1.21.1/src/main/resources/data/minecraft/tags/block/mineable/hoe.json index d66584d1..94be490b 100644 --- a/common-1.21.1/src/main/resources/data/minecraft/tags/block/mineable/hoe.json +++ b/common-1.21.1/src/main/resources/data/minecraft/tags/block/mineable/hoe.json @@ -1,20 +1,36 @@ { - "replace": false, - "values": [ - "antarchy:ouranwood_leaves", - "antarchy:peach_leaves", - "antarchy:corn_crop", - "antarchy:wild_corn", - "antarchy:umbral_moss_block", - "antarchy:umbral_moss_carpet", - "antarchy:blush_moss_block", - "antarchy:blush_moss_carpet", - "antarchy:amber_moss_block", - "antarchy:amber_moss_carpet", - "antarchy:lumen_froglight", - "antarchy:roseate_froglight", - "antarchy:biowart", - "antarchy:biowart_tendrils", - "antarchy:bile_vein" - ] + "replace": false, + "values": [ + "antarchy:ouranwood_leaves", + "antarchy:peach_leaves", + "antarchy:corn_crop", + "antarchy:wild_corn", + "antarchy:umbral_moss_block", + "antarchy:umbral_moss_carpet", + "antarchy:blush_moss_block", + "antarchy:blush_moss_carpet", + "antarchy:amber_moss_block", + "antarchy:amber_moss_carpet", + "antarchy:lumen_froglight", + "antarchy:roseate_froglight", + "antarchy:biowart", + "antarchy:biowart_tendrils", + "antarchy:bile_vein", + "antarchy:white_truffalo_tuft", + "antarchy:orange_truffalo_tuft", + "antarchy:magenta_truffalo_tuft", + "antarchy:light_blue_truffalo_tuft", + "antarchy:yellow_truffalo_tuft", + "antarchy:lime_truffalo_tuft", + "antarchy:pink_truffalo_tuft", + "antarchy:gray_truffalo_tuft", + "antarchy:light_gray_truffalo_tuft", + "antarchy:cyan_truffalo_tuft", + "antarchy:purple_truffalo_tuft", + "antarchy:blue_truffalo_tuft", + "antarchy:brown_truffalo_tuft", + "antarchy:green_truffalo_tuft", + "antarchy:red_truffalo_tuft", + "antarchy:black_truffalo_tuft" + ] } diff --git a/common-1.21.1/src/main/resources/data/minecraft/tags/block/planks.json b/common-1.21.1/src/main/resources/data/minecraft/tags/block/planks.json index beb77914..09b36e80 100644 --- a/common-1.21.1/src/main/resources/data/minecraft/tags/block/planks.json +++ b/common-1.21.1/src/main/resources/data/minecraft/tags/block/planks.json @@ -1,8 +1,10 @@ { - "replace": false, - "values": [ - "antarchy:ouranwood_planks", - "antarchy:peach_planks", - "antarchy:nadir_planks" - ] + "replace": false, + "values": [ + "antarchy:ouranwood_planks", + "antarchy:peach_planks", + "antarchy:nadir_planks", + "antarchy:royal_planks", + "antarchy:truffalo_planks" + ] } diff --git a/common-1.21.1/src/main/resources/data/minecraft/tags/block/saplings.json b/common-1.21.1/src/main/resources/data/minecraft/tags/block/saplings.json index 548aa47f..c426a796 100644 --- a/common-1.21.1/src/main/resources/data/minecraft/tags/block/saplings.json +++ b/common-1.21.1/src/main/resources/data/minecraft/tags/block/saplings.json @@ -1,8 +1,10 @@ { - "replace": false, - "values": [ - "antarchy:ouranwood_acorn", - "antarchy:peach_sapling", - "antarchy:nadir_sapling" - ] + "replace": false, + "values": [ + "antarchy:ouranwood_acorn", + "antarchy:peach_sapling", + "antarchy:nadir_sapling", + "antarchy:royal_sapling", + "antarchy:truffalo_sapling" + ] } diff --git a/common-1.21.1/src/main/resources/data/minecraft/tags/block/standing_signs.json b/common-1.21.1/src/main/resources/data/minecraft/tags/block/standing_signs.json index 67704453..ab5622a1 100644 --- a/common-1.21.1/src/main/resources/data/minecraft/tags/block/standing_signs.json +++ b/common-1.21.1/src/main/resources/data/minecraft/tags/block/standing_signs.json @@ -1,8 +1,10 @@ { - "replace": false, - "values": [ - "antarchy:ouranwood_sign", - "antarchy:peach_sign", - "antarchy:nadir_sign" - ] + "replace": false, + "values": [ + "antarchy:ouranwood_sign", + "antarchy:peach_sign", + "antarchy:nadir_sign", + "antarchy:royal_sign", + "antarchy:truffalo_sign" + ] } diff --git a/common-1.21.1/src/main/resources/data/minecraft/tags/block/trapdoors.json b/common-1.21.1/src/main/resources/data/minecraft/tags/block/trapdoors.json index fe128a6b..617b826c 100644 --- a/common-1.21.1/src/main/resources/data/minecraft/tags/block/trapdoors.json +++ b/common-1.21.1/src/main/resources/data/minecraft/tags/block/trapdoors.json @@ -1,8 +1,10 @@ { - "replace": false, - "values": [ - "antarchy:uranium_trapdoor", - "antarchy:titanium_trapdoor", - "antarchy:nadir_trapdoor" - ] + "replace": false, + "values": [ + "antarchy:uranium_trapdoor", + "antarchy:titanium_trapdoor", + "antarchy:nadir_trapdoor", + "antarchy:royal_trapdoor", + "antarchy:truffalo_trapdoor" + ] } diff --git a/common-1.21.1/src/main/resources/data/minecraft/tags/block/wall_hanging_signs.json b/common-1.21.1/src/main/resources/data/minecraft/tags/block/wall_hanging_signs.json index f99f806d..b667ea1b 100644 --- a/common-1.21.1/src/main/resources/data/minecraft/tags/block/wall_hanging_signs.json +++ b/common-1.21.1/src/main/resources/data/minecraft/tags/block/wall_hanging_signs.json @@ -1,8 +1,10 @@ { - "replace": false, - "values": [ - "antarchy:ouranwood_wall_hanging_sign", - "antarchy:peach_wall_hanging_sign", - "antarchy:nadir_wall_hanging_sign" - ] + "replace": false, + "values": [ + "antarchy:ouranwood_wall_hanging_sign", + "antarchy:peach_wall_hanging_sign", + "antarchy:nadir_wall_hanging_sign", + "antarchy:royal_wall_hanging_sign", + "antarchy:truffalo_wall_hanging_sign" + ] } diff --git a/common-1.21.1/src/main/resources/data/minecraft/tags/block/wall_signs.json b/common-1.21.1/src/main/resources/data/minecraft/tags/block/wall_signs.json index 98760663..8fb5339d 100644 --- a/common-1.21.1/src/main/resources/data/minecraft/tags/block/wall_signs.json +++ b/common-1.21.1/src/main/resources/data/minecraft/tags/block/wall_signs.json @@ -1,8 +1,10 @@ { - "replace": false, - "values": [ - "antarchy:ouranwood_wall_sign", - "antarchy:peach_wall_sign", - "antarchy:nadir_wall_sign" - ] + "replace": false, + "values": [ + "antarchy:ouranwood_wall_sign", + "antarchy:peach_wall_sign", + "antarchy:nadir_wall_sign", + "antarchy:royal_wall_sign", + "antarchy:truffalo_wall_sign" + ] } diff --git a/common-1.21.1/src/main/resources/data/minecraft/tags/block/wooden_buttons.json b/common-1.21.1/src/main/resources/data/minecraft/tags/block/wooden_buttons.json index adac6b61..4c61cb72 100644 --- a/common-1.21.1/src/main/resources/data/minecraft/tags/block/wooden_buttons.json +++ b/common-1.21.1/src/main/resources/data/minecraft/tags/block/wooden_buttons.json @@ -1,8 +1,10 @@ { - "replace": false, - "values": [ - "antarchy:ouranwood_button", - "antarchy:peach_button", - "antarchy:nadir_button" - ] + "replace": false, + "values": [ + "antarchy:ouranwood_button", + "antarchy:peach_button", + "antarchy:nadir_button", + "antarchy:royal_button", + "antarchy:truffalo_button" + ] } diff --git a/common-1.21.1/src/main/resources/data/minecraft/tags/block/wooden_doors.json b/common-1.21.1/src/main/resources/data/minecraft/tags/block/wooden_doors.json index a97b4d54..9ebbfcaf 100644 --- a/common-1.21.1/src/main/resources/data/minecraft/tags/block/wooden_doors.json +++ b/common-1.21.1/src/main/resources/data/minecraft/tags/block/wooden_doors.json @@ -1,8 +1,10 @@ { - "replace": false, - "values": [ - "antarchy:ouranwood_door", - "antarchy:peach_door", - "antarchy:nadir_door" - ] + "replace": false, + "values": [ + "antarchy:ouranwood_door", + "antarchy:peach_door", + "antarchy:nadir_door", + "antarchy:royal_door", + "antarchy:truffalo_door" + ] } diff --git a/common-1.21.1/src/main/resources/data/minecraft/tags/block/wooden_fences.json b/common-1.21.1/src/main/resources/data/minecraft/tags/block/wooden_fences.json index 17d8174a..05374ffd 100644 --- a/common-1.21.1/src/main/resources/data/minecraft/tags/block/wooden_fences.json +++ b/common-1.21.1/src/main/resources/data/minecraft/tags/block/wooden_fences.json @@ -1,8 +1,10 @@ { - "replace": false, - "values": [ - "antarchy:ouranwood_fence", - "antarchy:peach_fence", - "antarchy:nadir_fence" - ] + "replace": false, + "values": [ + "antarchy:ouranwood_fence", + "antarchy:peach_fence", + "antarchy:nadir_fence", + "antarchy:royal_fence", + "antarchy:truffalo_fence" + ] } diff --git a/common-1.21.1/src/main/resources/data/minecraft/tags/block/wooden_pressure_plates.json b/common-1.21.1/src/main/resources/data/minecraft/tags/block/wooden_pressure_plates.json index ff567df3..080703cf 100644 --- a/common-1.21.1/src/main/resources/data/minecraft/tags/block/wooden_pressure_plates.json +++ b/common-1.21.1/src/main/resources/data/minecraft/tags/block/wooden_pressure_plates.json @@ -1,8 +1,10 @@ { - "replace": false, - "values": [ - "antarchy:ouranwood_pressure_plate", - "antarchy:peach_pressure_plate", - "antarchy:nadir_pressure_plate" - ] + "replace": false, + "values": [ + "antarchy:ouranwood_pressure_plate", + "antarchy:peach_pressure_plate", + "antarchy:nadir_pressure_plate", + "antarchy:royal_pressure_plate", + "antarchy:truffalo_pressure_plate" + ] } diff --git a/common-1.21.1/src/main/resources/data/minecraft/tags/block/wooden_slabs.json b/common-1.21.1/src/main/resources/data/minecraft/tags/block/wooden_slabs.json index 5b700b68..7ac806ce 100644 --- a/common-1.21.1/src/main/resources/data/minecraft/tags/block/wooden_slabs.json +++ b/common-1.21.1/src/main/resources/data/minecraft/tags/block/wooden_slabs.json @@ -1,8 +1,10 @@ { - "replace": false, - "values": [ - "antarchy:ouranwood_slab", - "antarchy:peach_slab", - "antarchy:nadir_slab" - ] + "replace": false, + "values": [ + "antarchy:ouranwood_slab", + "antarchy:peach_slab", + "antarchy:nadir_slab", + "antarchy:royal_slab", + "antarchy:truffalo_slab" + ] } diff --git a/common-1.21.1/src/main/resources/data/minecraft/tags/block/wooden_stairs.json b/common-1.21.1/src/main/resources/data/minecraft/tags/block/wooden_stairs.json index 7af32ee4..642565ad 100644 --- a/common-1.21.1/src/main/resources/data/minecraft/tags/block/wooden_stairs.json +++ b/common-1.21.1/src/main/resources/data/minecraft/tags/block/wooden_stairs.json @@ -1,8 +1,10 @@ { - "replace": false, - "values": [ - "antarchy:ouranwood_stairs", - "antarchy:peach_stairs", - "antarchy:nadir_stairs" - ] + "replace": false, + "values": [ + "antarchy:ouranwood_stairs", + "antarchy:peach_stairs", + "antarchy:nadir_stairs", + "antarchy:royal_stairs", + "antarchy:truffalo_stairs" + ] } diff --git a/common-1.21.1/src/main/resources/data/minecraft/tags/block/wooden_trapdoors.json b/common-1.21.1/src/main/resources/data/minecraft/tags/block/wooden_trapdoors.json index 85da6c5a..c96f6af0 100644 --- a/common-1.21.1/src/main/resources/data/minecraft/tags/block/wooden_trapdoors.json +++ b/common-1.21.1/src/main/resources/data/minecraft/tags/block/wooden_trapdoors.json @@ -1,8 +1,10 @@ { - "replace": false, - "values": [ - "antarchy:ouranwood_trapdoor", - "antarchy:peach_trapdoor", - "antarchy:nadir_trapdoor" - ] + "replace": false, + "values": [ + "antarchy:ouranwood_trapdoor", + "antarchy:peach_trapdoor", + "antarchy:nadir_trapdoor", + "antarchy:royal_trapdoor", + "antarchy:truffalo_trapdoor" + ] } diff --git a/common-1.21.1/src/main/resources/data/minecraft/tags/item/boats.json b/common-1.21.1/src/main/resources/data/minecraft/tags/item/boats.json index b5846802..822f1e86 100644 --- a/common-1.21.1/src/main/resources/data/minecraft/tags/item/boats.json +++ b/common-1.21.1/src/main/resources/data/minecraft/tags/item/boats.json @@ -1,9 +1,11 @@ { - "replace": false, - "values": [ - "antarchy:ouranwood_boat", - "antarchy:ouranwood_chest_boat", - "antarchy:peach_boat", - "antarchy:nadir_boat" - ] + "replace": false, + "values": [ + "antarchy:ouranwood_boat", + "antarchy:ouranwood_chest_boat", + "antarchy:peach_boat", + "antarchy:nadir_boat", + "antarchy:royal_boat", + "antarchy:truffalo_boat" + ] } diff --git a/common-1.21.1/src/main/resources/data/minecraft/tags/item/chest_boats.json b/common-1.21.1/src/main/resources/data/minecraft/tags/item/chest_boats.json index 8344e540..daee232b 100644 --- a/common-1.21.1/src/main/resources/data/minecraft/tags/item/chest_boats.json +++ b/common-1.21.1/src/main/resources/data/minecraft/tags/item/chest_boats.json @@ -1,8 +1,10 @@ { - "replace": false, - "values": [ - "antarchy:ouranwood_chest_boat", - "antarchy:peach_chest_boat", - "antarchy:nadir_chest_boat" - ] + "replace": false, + "values": [ + "antarchy:ouranwood_chest_boat", + "antarchy:peach_chest_boat", + "antarchy:nadir_chest_boat", + "antarchy:royal_chest_boat", + "antarchy:truffalo_chest_boat" + ] } diff --git a/common-1.21.1/src/main/resources/data/minecraft/tags/item/doors.json b/common-1.21.1/src/main/resources/data/minecraft/tags/item/doors.json index b060f1cd..c4dcd7e4 100644 --- a/common-1.21.1/src/main/resources/data/minecraft/tags/item/doors.json +++ b/common-1.21.1/src/main/resources/data/minecraft/tags/item/doors.json @@ -1,8 +1,10 @@ { - "replace": false, - "values": [ - "antarchy:uranium_door", - "antarchy:titanium_door", - "antarchy:nadir_door" - ] + "replace": false, + "values": [ + "antarchy:uranium_door", + "antarchy:titanium_door", + "antarchy:nadir_door", + "antarchy:royal_door", + "antarchy:truffalo_door" + ] } diff --git a/common-1.21.1/src/main/resources/data/minecraft/tags/item/fence_gates.json b/common-1.21.1/src/main/resources/data/minecraft/tags/item/fence_gates.json index 340319a1..383608df 100644 --- a/common-1.21.1/src/main/resources/data/minecraft/tags/item/fence_gates.json +++ b/common-1.21.1/src/main/resources/data/minecraft/tags/item/fence_gates.json @@ -1,8 +1,10 @@ { - "replace": false, - "values": [ - "antarchy:ouranwood_fence_gate", - "antarchy:peach_fence_gate", - "antarchy:nadir_fence_gate" - ] + "replace": false, + "values": [ + "antarchy:ouranwood_fence_gate", + "antarchy:peach_fence_gate", + "antarchy:nadir_fence_gate", + "antarchy:royal_fence_gate", + "antarchy:truffalo_fence_gate" + ] } diff --git a/common-1.21.1/src/main/resources/data/minecraft/tags/item/hanging_signs.json b/common-1.21.1/src/main/resources/data/minecraft/tags/item/hanging_signs.json index 756c631b..95e8093f 100644 --- a/common-1.21.1/src/main/resources/data/minecraft/tags/item/hanging_signs.json +++ b/common-1.21.1/src/main/resources/data/minecraft/tags/item/hanging_signs.json @@ -1,8 +1,10 @@ { - "replace": false, - "values": [ - "antarchy:ouranwood_hanging_sign", - "antarchy:peach_hanging_sign", - "antarchy:nadir_hanging_sign" - ] + "replace": false, + "values": [ + "antarchy:ouranwood_hanging_sign", + "antarchy:peach_hanging_sign", + "antarchy:nadir_hanging_sign", + "antarchy:royal_hanging_sign", + "antarchy:truffalo_hanging_sign" + ] } diff --git a/common-1.21.1/src/main/resources/data/minecraft/tags/item/logs.json b/common-1.21.1/src/main/resources/data/minecraft/tags/item/logs.json index 549e0617..0c13e07c 100644 --- a/common-1.21.1/src/main/resources/data/minecraft/tags/item/logs.json +++ b/common-1.21.1/src/main/resources/data/minecraft/tags/item/logs.json @@ -1,20 +1,28 @@ { - "replace": false, - "values": [ - "antarchy:ouranwood_log", - "antarchy:ouranwood_wood", - "antarchy:duplicator_log", - "antarchy:mossy_ouranwood_log", - "antarchy:mossy_ouranwood_wood", - "antarchy:stripped_ouranwood_log", - "antarchy:stripped_ouranwood_wood", - "antarchy:peach_log", - "antarchy:peach_wood", - "antarchy:stripped_peach_log", - "antarchy:stripped_peach_wood", - "antarchy:nadir_log", - "antarchy:nadir_wood", - "antarchy:stripped_nadir_log", - "antarchy:stripped_nadir_wood" - ] + "replace": false, + "values": [ + "antarchy:ouranwood_log", + "antarchy:ouranwood_wood", + "antarchy:duplicator_log", + "antarchy:mossy_ouranwood_log", + "antarchy:mossy_ouranwood_wood", + "antarchy:stripped_ouranwood_log", + "antarchy:stripped_ouranwood_wood", + "antarchy:peach_log", + "antarchy:peach_wood", + "antarchy:stripped_peach_log", + "antarchy:stripped_peach_wood", + "antarchy:nadir_log", + "antarchy:nadir_wood", + "antarchy:stripped_nadir_log", + "antarchy:stripped_nadir_wood", + "antarchy:royal_log", + "antarchy:royal_wood", + "antarchy:stripped_royal_log", + "antarchy:stripped_royal_wood", + "antarchy:truffalo_log", + "antarchy:truffalo_wood", + "antarchy:stripped_truffalo_log", + "antarchy:stripped_truffalo_wood" + ] } diff --git a/common-1.21.1/src/main/resources/data/minecraft/tags/item/logs_that_burn.json b/common-1.21.1/src/main/resources/data/minecraft/tags/item/logs_that_burn.json index 549e0617..0c13e07c 100644 --- a/common-1.21.1/src/main/resources/data/minecraft/tags/item/logs_that_burn.json +++ b/common-1.21.1/src/main/resources/data/minecraft/tags/item/logs_that_burn.json @@ -1,20 +1,28 @@ { - "replace": false, - "values": [ - "antarchy:ouranwood_log", - "antarchy:ouranwood_wood", - "antarchy:duplicator_log", - "antarchy:mossy_ouranwood_log", - "antarchy:mossy_ouranwood_wood", - "antarchy:stripped_ouranwood_log", - "antarchy:stripped_ouranwood_wood", - "antarchy:peach_log", - "antarchy:peach_wood", - "antarchy:stripped_peach_log", - "antarchy:stripped_peach_wood", - "antarchy:nadir_log", - "antarchy:nadir_wood", - "antarchy:stripped_nadir_log", - "antarchy:stripped_nadir_wood" - ] + "replace": false, + "values": [ + "antarchy:ouranwood_log", + "antarchy:ouranwood_wood", + "antarchy:duplicator_log", + "antarchy:mossy_ouranwood_log", + "antarchy:mossy_ouranwood_wood", + "antarchy:stripped_ouranwood_log", + "antarchy:stripped_ouranwood_wood", + "antarchy:peach_log", + "antarchy:peach_wood", + "antarchy:stripped_peach_log", + "antarchy:stripped_peach_wood", + "antarchy:nadir_log", + "antarchy:nadir_wood", + "antarchy:stripped_nadir_log", + "antarchy:stripped_nadir_wood", + "antarchy:royal_log", + "antarchy:royal_wood", + "antarchy:stripped_royal_log", + "antarchy:stripped_royal_wood", + "antarchy:truffalo_log", + "antarchy:truffalo_wood", + "antarchy:stripped_truffalo_log", + "antarchy:stripped_truffalo_wood" + ] } diff --git a/common-1.21.1/src/main/resources/data/minecraft/tags/item/planks.json b/common-1.21.1/src/main/resources/data/minecraft/tags/item/planks.json index beb77914..09b36e80 100644 --- a/common-1.21.1/src/main/resources/data/minecraft/tags/item/planks.json +++ b/common-1.21.1/src/main/resources/data/minecraft/tags/item/planks.json @@ -1,8 +1,10 @@ { - "replace": false, - "values": [ - "antarchy:ouranwood_planks", - "antarchy:peach_planks", - "antarchy:nadir_planks" - ] + "replace": false, + "values": [ + "antarchy:ouranwood_planks", + "antarchy:peach_planks", + "antarchy:nadir_planks", + "antarchy:royal_planks", + "antarchy:truffalo_planks" + ] } diff --git a/common-1.21.1/src/main/resources/data/minecraft/tags/item/saplings.json b/common-1.21.1/src/main/resources/data/minecraft/tags/item/saplings.json index 548aa47f..c426a796 100644 --- a/common-1.21.1/src/main/resources/data/minecraft/tags/item/saplings.json +++ b/common-1.21.1/src/main/resources/data/minecraft/tags/item/saplings.json @@ -1,8 +1,10 @@ { - "replace": false, - "values": [ - "antarchy:ouranwood_acorn", - "antarchy:peach_sapling", - "antarchy:nadir_sapling" - ] + "replace": false, + "values": [ + "antarchy:ouranwood_acorn", + "antarchy:peach_sapling", + "antarchy:nadir_sapling", + "antarchy:royal_sapling", + "antarchy:truffalo_sapling" + ] } diff --git a/common-1.21.1/src/main/resources/data/minecraft/tags/item/signs.json b/common-1.21.1/src/main/resources/data/minecraft/tags/item/signs.json index 67704453..ab5622a1 100644 --- a/common-1.21.1/src/main/resources/data/minecraft/tags/item/signs.json +++ b/common-1.21.1/src/main/resources/data/minecraft/tags/item/signs.json @@ -1,8 +1,10 @@ { - "replace": false, - "values": [ - "antarchy:ouranwood_sign", - "antarchy:peach_sign", - "antarchy:nadir_sign" - ] + "replace": false, + "values": [ + "antarchy:ouranwood_sign", + "antarchy:peach_sign", + "antarchy:nadir_sign", + "antarchy:royal_sign", + "antarchy:truffalo_sign" + ] } diff --git a/common-1.21.1/src/main/resources/data/minecraft/tags/item/trapdoors.json b/common-1.21.1/src/main/resources/data/minecraft/tags/item/trapdoors.json index fe128a6b..617b826c 100644 --- a/common-1.21.1/src/main/resources/data/minecraft/tags/item/trapdoors.json +++ b/common-1.21.1/src/main/resources/data/minecraft/tags/item/trapdoors.json @@ -1,8 +1,10 @@ { - "replace": false, - "values": [ - "antarchy:uranium_trapdoor", - "antarchy:titanium_trapdoor", - "antarchy:nadir_trapdoor" - ] + "replace": false, + "values": [ + "antarchy:uranium_trapdoor", + "antarchy:titanium_trapdoor", + "antarchy:nadir_trapdoor", + "antarchy:royal_trapdoor", + "antarchy:truffalo_trapdoor" + ] } diff --git a/common-1.21.1/src/main/resources/data/minecraft/tags/item/wooden_buttons.json b/common-1.21.1/src/main/resources/data/minecraft/tags/item/wooden_buttons.json index adac6b61..4c61cb72 100644 --- a/common-1.21.1/src/main/resources/data/minecraft/tags/item/wooden_buttons.json +++ b/common-1.21.1/src/main/resources/data/minecraft/tags/item/wooden_buttons.json @@ -1,8 +1,10 @@ { - "replace": false, - "values": [ - "antarchy:ouranwood_button", - "antarchy:peach_button", - "antarchy:nadir_button" - ] + "replace": false, + "values": [ + "antarchy:ouranwood_button", + "antarchy:peach_button", + "antarchy:nadir_button", + "antarchy:royal_button", + "antarchy:truffalo_button" + ] } diff --git a/common-1.21.1/src/main/resources/data/minecraft/tags/item/wooden_doors.json b/common-1.21.1/src/main/resources/data/minecraft/tags/item/wooden_doors.json index a97b4d54..9ebbfcaf 100644 --- a/common-1.21.1/src/main/resources/data/minecraft/tags/item/wooden_doors.json +++ b/common-1.21.1/src/main/resources/data/minecraft/tags/item/wooden_doors.json @@ -1,8 +1,10 @@ { - "replace": false, - "values": [ - "antarchy:ouranwood_door", - "antarchy:peach_door", - "antarchy:nadir_door" - ] + "replace": false, + "values": [ + "antarchy:ouranwood_door", + "antarchy:peach_door", + "antarchy:nadir_door", + "antarchy:royal_door", + "antarchy:truffalo_door" + ] } diff --git a/common-1.21.1/src/main/resources/data/minecraft/tags/item/wooden_fences.json b/common-1.21.1/src/main/resources/data/minecraft/tags/item/wooden_fences.json index 17d8174a..05374ffd 100644 --- a/common-1.21.1/src/main/resources/data/minecraft/tags/item/wooden_fences.json +++ b/common-1.21.1/src/main/resources/data/minecraft/tags/item/wooden_fences.json @@ -1,8 +1,10 @@ { - "replace": false, - "values": [ - "antarchy:ouranwood_fence", - "antarchy:peach_fence", - "antarchy:nadir_fence" - ] + "replace": false, + "values": [ + "antarchy:ouranwood_fence", + "antarchy:peach_fence", + "antarchy:nadir_fence", + "antarchy:royal_fence", + "antarchy:truffalo_fence" + ] } diff --git a/common-1.21.1/src/main/resources/data/minecraft/tags/item/wooden_pressure_plates.json b/common-1.21.1/src/main/resources/data/minecraft/tags/item/wooden_pressure_plates.json index ff567df3..080703cf 100644 --- a/common-1.21.1/src/main/resources/data/minecraft/tags/item/wooden_pressure_plates.json +++ b/common-1.21.1/src/main/resources/data/minecraft/tags/item/wooden_pressure_plates.json @@ -1,8 +1,10 @@ { - "replace": false, - "values": [ - "antarchy:ouranwood_pressure_plate", - "antarchy:peach_pressure_plate", - "antarchy:nadir_pressure_plate" - ] + "replace": false, + "values": [ + "antarchy:ouranwood_pressure_plate", + "antarchy:peach_pressure_plate", + "antarchy:nadir_pressure_plate", + "antarchy:royal_pressure_plate", + "antarchy:truffalo_pressure_plate" + ] } diff --git a/common-1.21.1/src/main/resources/data/minecraft/tags/item/wooden_slabs.json b/common-1.21.1/src/main/resources/data/minecraft/tags/item/wooden_slabs.json index 5b700b68..7ac806ce 100644 --- a/common-1.21.1/src/main/resources/data/minecraft/tags/item/wooden_slabs.json +++ b/common-1.21.1/src/main/resources/data/minecraft/tags/item/wooden_slabs.json @@ -1,8 +1,10 @@ { - "replace": false, - "values": [ - "antarchy:ouranwood_slab", - "antarchy:peach_slab", - "antarchy:nadir_slab" - ] + "replace": false, + "values": [ + "antarchy:ouranwood_slab", + "antarchy:peach_slab", + "antarchy:nadir_slab", + "antarchy:royal_slab", + "antarchy:truffalo_slab" + ] } diff --git a/common-1.21.1/src/main/resources/data/minecraft/tags/item/wooden_stairs.json b/common-1.21.1/src/main/resources/data/minecraft/tags/item/wooden_stairs.json index 7af32ee4..642565ad 100644 --- a/common-1.21.1/src/main/resources/data/minecraft/tags/item/wooden_stairs.json +++ b/common-1.21.1/src/main/resources/data/minecraft/tags/item/wooden_stairs.json @@ -1,8 +1,10 @@ { - "replace": false, - "values": [ - "antarchy:ouranwood_stairs", - "antarchy:peach_stairs", - "antarchy:nadir_stairs" - ] + "replace": false, + "values": [ + "antarchy:ouranwood_stairs", + "antarchy:peach_stairs", + "antarchy:nadir_stairs", + "antarchy:royal_stairs", + "antarchy:truffalo_stairs" + ] } diff --git a/common-1.21.1/src/main/resources/data/minecraft/tags/item/wooden_trapdoors.json b/common-1.21.1/src/main/resources/data/minecraft/tags/item/wooden_trapdoors.json index 85da6c5a..c96f6af0 100644 --- a/common-1.21.1/src/main/resources/data/minecraft/tags/item/wooden_trapdoors.json +++ b/common-1.21.1/src/main/resources/data/minecraft/tags/item/wooden_trapdoors.json @@ -1,8 +1,10 @@ { - "replace": false, - "values": [ - "antarchy:ouranwood_trapdoor", - "antarchy:peach_trapdoor", - "antarchy:nadir_trapdoor" - ] + "replace": false, + "values": [ + "antarchy:ouranwood_trapdoor", + "antarchy:peach_trapdoor", + "antarchy:nadir_trapdoor", + "antarchy:royal_trapdoor", + "antarchy:truffalo_trapdoor" + ] } diff --git a/fabric-1.21.1/src/main/java/com/craisinlord/antarchy/fabric/AntarchyWoodTypes.java b/fabric-1.21.1/src/main/java/com/craisinlord/antarchy/fabric/AntarchyWoodTypes.java index a028df0e..e9fd50bb 100644 --- a/fabric-1.21.1/src/main/java/com/craisinlord/antarchy/fabric/AntarchyWoodTypes.java +++ b/fabric-1.21.1/src/main/java/com/craisinlord/antarchy/fabric/AntarchyWoodTypes.java @@ -9,6 +9,8 @@ public final class AntarchyWoodTypes { public static final WoodType OURANWOOD = register("ouranwood"); public static final WoodType PEACH = register("peach"); public static final WoodType NADIR = register("nadir"); + public static final WoodType ROYAL = register("royal"); + public static final WoodType TRUFFALO = register("truffalo"); private AntarchyWoodTypes() { } diff --git a/fabric-1.21.1/src/main/java/com/craisinlord/antarchy/fabric/client/AntarchyFabricClientBootstrap.java b/fabric-1.21.1/src/main/java/com/craisinlord/antarchy/fabric/client/AntarchyFabricClientBootstrap.java index 9ebd9db2..6cd3a140 100644 --- a/fabric-1.21.1/src/main/java/com/craisinlord/antarchy/fabric/client/AntarchyFabricClientBootstrap.java +++ b/fabric-1.21.1/src/main/java/com/craisinlord/antarchy/fabric/client/AntarchyFabricClientBootstrap.java @@ -8,6 +8,7 @@ import com.craisinlord.antarchy.Antarchy; import com.craisinlord.antarchy.content.client.CameraShakeClientState; import com.craisinlord.antarchy.content.client.HerculesBeetleImpactShakeClientState; import com.craisinlord.antarchy.content.client.HordeClientState; +import com.craisinlord.antarchy.content.client.PortalGunRollClientState; import com.craisinlord.antarchy.content.client.SizeRaySoundHandler; import com.craisinlord.antarchy.content.client.TigerEyeClientHooks; import com.craisinlord.antarchy.content.client.renderer.*; @@ -110,6 +111,8 @@ public final class AntarchyFabricClientBootstrap { EntityRendererRegistry.register(AntarchyFabricEntities.PEACH_CHEST_BOAT_ENTITY.get(), context -> new PeachBoatRenderer<>(context, ResourceLocation.fromNamespaceAndPath(Antarchy.MODID, "textures/entity/chest_boat/peach.png"), true)); EntityRendererRegistry.register(AntarchyFabricEntities.NADIR_BOAT_ENTITY.get(), context -> new PeachBoatRenderer<>(context, ResourceLocation.fromNamespaceAndPath(Antarchy.MODID, "textures/entity/boat/nadir.png"), false)); EntityRendererRegistry.register(AntarchyFabricEntities.NADIR_CHEST_BOAT_ENTITY.get(), context -> new PeachBoatRenderer<>(context, ResourceLocation.fromNamespaceAndPath(Antarchy.MODID, "textures/entity/chest_boat/nadir.png"), true)); + EntityRendererRegistry.register(AntarchyFabricEntities.ROYAL_BOAT_ENTITY.get(), context -> new PeachBoatRenderer<>(context, ResourceLocation.fromNamespaceAndPath(Antarchy.MODID, "textures/entity/boat/royal.png"), false)); + EntityRendererRegistry.register(AntarchyFabricEntities.ROYAL_CHEST_BOAT_ENTITY.get(), context -> new PeachBoatRenderer<>(context, ResourceLocation.fromNamespaceAndPath(Antarchy.MODID, "textures/entity/chest_boat/royal.png"), true)); EntityRendererRegistry.register(AntarchyFabricEntities.APPLE_COW.get(), AppleCowRenderer::new); EntityRendererRegistry.register(AntarchyFabricEntities.GOLDEN_APPLE_COW.get(), AppleCowRenderer::new); EntityRendererRegistry.register(AntarchyFabricEntities.ENCHANTED_GOLDEN_APPLE_COW.get(), AppleCowRenderer::new); @@ -126,7 +129,9 @@ public final class AntarchyFabricClientBootstrap { EntityRendererRegistry.register(AntarchyFabricEntities.NIGHTMARE_PORTAL.get(), NightmarePortalRenderer::new); EntityRendererRegistry.register(AntarchyFabricEntities.DIMENSIONAL_TEAR.get(), DimensionalTearRenderer::new); EntityRendererRegistry.register(AntarchyFabricEntities.PORTAL_GUN_PORTAL.get(), PortalGunPortalRenderer::new); + EntityRendererRegistry.register(AntarchyFabricEntities.HOVERBOARD.get(), com.craisinlord.antarchy.content.client.renderer.HoverboardRenderer::new); EntityRendererRegistry.register(AntarchyFabricEntities.PORTAL_GUN_BLACK_HOLE.get(), com.craisinlord.antarchy.content.client.renderer.PortalGunBlackHoleRenderer::new); + EntityRendererRegistry.register(AntarchyFabricEntities.PORTAL_GUN_PROJECTILE.get(), com.craisinlord.antarchy.content.client.renderer.PortalGunProjectileRenderer::new); EntityRendererRegistry.register(AntarchyFabricEntities.NIGHTMARE_BITE.get(), NightmareBiteRenderer::new); EntityRendererRegistry.register(AntarchyFabricEntities.LUCID.get(), LucidRenderer::new); EntityRendererRegistry.register(AntarchyFabricEntities.BED_BUG.get(), BedBugRenderer::new); @@ -322,6 +327,16 @@ public final class AntarchyFabricClientBootstrap { BlockRenderLayerMap.INSTANCE.putBlock(AntarchyFabricBlocks.NADIR_TRAPDOOR.get(), RenderType.cutout()); BlockRenderLayerMap.INSTANCE.putBlock(AntarchyFabricBlocks.NADIR_SAPLING.get(), RenderType.cutout()); BlockRenderLayerMap.INSTANCE.putBlock(AntarchyFabricBlocks.POTTED_NADIR_SAPLING.get(), RenderType.cutout()); + BlockRenderLayerMap.INSTANCE.putBlock(AntarchyFabricBlocks.ROYAL_LEAVES.get(), RenderType.cutout()); + BlockRenderLayerMap.INSTANCE.putBlock(AntarchyFabricBlocks.ROYAL_FLOWERING_LEAVES.get(), RenderType.cutout()); + BlockRenderLayerMap.INSTANCE.putBlock(AntarchyFabricBlocks.ROYAL_DOOR.get(), RenderType.cutout()); + BlockRenderLayerMap.INSTANCE.putBlock(AntarchyFabricBlocks.ROYAL_TRAPDOOR.get(), RenderType.cutout()); + BlockRenderLayerMap.INSTANCE.putBlock(AntarchyFabricBlocks.ROYAL_SAPLING.get(), RenderType.cutout()); + BlockRenderLayerMap.INSTANCE.putBlock(AntarchyFabricBlocks.POTTED_ROYAL_SAPLING.get(), RenderType.cutout()); + BlockRenderLayerMap.INSTANCE.putBlock(AntarchyFabricBlocks.TRUFFALO_DOOR.get(), RenderType.cutout()); + BlockRenderLayerMap.INSTANCE.putBlock(AntarchyFabricBlocks.TRUFFALO_TRAPDOOR.get(), RenderType.cutout()); + BlockRenderLayerMap.INSTANCE.putBlock(AntarchyFabricBlocks.TRUFFALO_SAPLING.get(), RenderType.cutout()); + BlockRenderLayerMap.INSTANCE.putBlock(AntarchyFabricBlocks.POTTED_TRUFFALO_SAPLING.get(), RenderType.cutout()); BlockRenderLayerMap.INSTANCE.putBlock(AntarchyFabricBlocks.DUPLICATOR_SAPLING.get(), RenderType.cutout()); BlockRenderLayerMap.INSTANCE.putBlock(AntarchyFabricBlocks.ORANGE_MILKWEED.get(), RenderType.cutout()); BlockRenderLayerMap.INSTANCE.putBlock(AntarchyFabricBlocks.PINK_MILKWEED.get(), RenderType.cutout()); @@ -487,6 +502,7 @@ public final class AntarchyFabricClientBootstrap { CameraShakeClientState.tick(); HerculesBeetleImpactShakeClientState.tick(); HordeClientState.tick(); + PortalGunRollClientState.tick(client); if (client.player != null) { ParalyzedClientHandler.clampPlayerInput(client.player); } @@ -530,6 +546,9 @@ public final class AntarchyFabricClientBootstrap { BloodCrystalKatanaTrailHandler.render(context); ScorpionWhipTetherRenderHandler.render(context); WormHookTetherRenderHandler.render(context); + if (context.matrixStack() != null) { + com.craisinlord.antarchy.content.client.renderer.PortalGunPortalViewRenderer.render(context.camera(), context.matrixStack().last().pose(), context.tickCounter()); + } }); } diff --git a/fabric-1.21.1/src/main/java/com/craisinlord/antarchy/fabric/registry/AntarchyFabricBlocks.java b/fabric-1.21.1/src/main/java/com/craisinlord/antarchy/fabric/registry/AntarchyFabricBlocks.java index 475b2bad..9e8cb88a 100644 --- a/fabric-1.21.1/src/main/java/com/craisinlord/antarchy/fabric/registry/AntarchyFabricBlocks.java +++ b/fabric-1.21.1/src/main/java/com/craisinlord/antarchy/fabric/registry/AntarchyFabricBlocks.java @@ -9,6 +9,8 @@ import com.craisinlord.antarchy.content.block.entity.CritterCageBlockEntity; import com.craisinlord.antarchy.content.block.entity.DreamCampfireBlockEntity; import com.craisinlord.antarchy.content.block.entity.HushweedBlockEntity; import com.craisinlord.antarchy.content.block.entity.LucidAnchorBlockEntity; +import com.craisinlord.antarchy.content.block.entity.PortalGunPortalBaseBlockEntity; +import com.craisinlord.antarchy.content.block.entity.PortalGunPortalMasterBlockEntity; import com.craisinlord.antarchy.content.block.entity.PotentNyxiteBlockEntity; import com.craisinlord.antarchy.content.block.entity.SeashellBlockEntity; import com.craisinlord.antarchy.content.block.entity.UpperBlockEntity; @@ -155,6 +157,10 @@ public final class AntarchyFabricBlocks { () -> new LucidAnchorBlock(BlockBehaviour.Properties.ofFullCopy(Blocks.BEACON).strength(3.0F))); public static final DeferredBlock CRITTER_CAGE_BLOCK = BLOCKS.register("critter_cage_block", () -> new CritterCageBlock(BlockBehaviour.Properties.of().strength(5.0F, 6.0F).sound(net.minecraft.world.level.block.SoundType.METAL).noOcclusion())); + public static final DeferredBlock PORTAL_GUN_PORTAL_MASTER = BLOCKS.register("portal_gun_portal_master", + () -> new PortalGunPortalMasterBlock(AntarchyFabricBlocks::portalGunPortalMasterBlockEntityType, portalProperties())); + public static final DeferredBlock PORTAL_GUN_PORTAL_BASE = BLOCKS.register("portal_gun_portal_base", + () -> new PortalGunPortalBaseBlock(AntarchyFabricBlocks::portalGunPortalBaseBlockEntityType, portalProperties())); public static final DeferredBlock OURANWOOD_SIGN = BLOCKS.register("ouranwood_sign", @@ -337,6 +343,196 @@ public final class AntarchyFabricBlocks { () -> new DuplicatorSaplingBlock(BlockBehaviour.Properties.ofFullCopy(Blocks.OAK_SAPLING).randomTicks().noCollission())); + public static final DeferredBlock ROYAL_LOG = BLOCKS.register("royal_log", + () -> new RotatedPillarBlock(BlockBehaviour.Properties.ofFullCopy(Blocks.JUNGLE_LOG))); + + + public static final DeferredBlock ROYAL_WOOD = BLOCKS.register("royal_wood", + () -> new RotatedPillarBlock(BlockBehaviour.Properties.ofFullCopy(Blocks.JUNGLE_WOOD))); + + + public static final DeferredBlock STRIPPED_ROYAL_LOG = BLOCKS.register("stripped_royal_log", + () -> new RotatedPillarBlock(BlockBehaviour.Properties.ofFullCopy(Blocks.STRIPPED_JUNGLE_LOG))); + + + public static final DeferredBlock STRIPPED_ROYAL_WOOD = BLOCKS.register("stripped_royal_wood", + () -> new RotatedPillarBlock(BlockBehaviour.Properties.ofFullCopy(Blocks.STRIPPED_JUNGLE_WOOD))); + + + public static final DeferredBlock ROYAL_PLANKS = BLOCKS.register("royal_planks", + () -> new Block(BlockBehaviour.Properties.ofFullCopy(Blocks.JUNGLE_PLANKS))); + + + public static final DeferredBlock ROYAL_STAIRS = BLOCKS.register("royal_stairs", + () -> new net.minecraft.world.level.block.StairBlock(ROYAL_PLANKS.get().defaultBlockState(), BlockBehaviour.Properties.ofFullCopy(Blocks.JUNGLE_STAIRS))); + + + public static final DeferredBlock ROYAL_SLAB = BLOCKS.register("royal_slab", + () -> new net.minecraft.world.level.block.SlabBlock(BlockBehaviour.Properties.ofFullCopy(Blocks.JUNGLE_SLAB))); + + + public static final DeferredBlock ROYAL_FENCE = BLOCKS.register("royal_fence", + () -> new net.minecraft.world.level.block.FenceBlock(BlockBehaviour.Properties.ofFullCopy(Blocks.JUNGLE_FENCE))); + + + public static final DeferredBlock ROYAL_FENCE_GATE = BLOCKS.register("royal_fence_gate", + () -> new net.minecraft.world.level.block.FenceGateBlock(net.minecraft.world.level.block.state.properties.WoodType.JUNGLE, BlockBehaviour.Properties.ofFullCopy(Blocks.JUNGLE_FENCE_GATE))); + + + public static final DeferredBlock ROYAL_DOOR = BLOCKS.register("royal_door", + () -> new net.minecraft.world.level.block.DoorBlock(net.minecraft.world.level.block.state.properties.BlockSetType.JUNGLE, BlockBehaviour.Properties.ofFullCopy(Blocks.JUNGLE_DOOR))); + + + public static final DeferredBlock ROYAL_TRAPDOOR = BLOCKS.register("royal_trapdoor", + () -> new net.minecraft.world.level.block.TrapDoorBlock(net.minecraft.world.level.block.state.properties.BlockSetType.JUNGLE, BlockBehaviour.Properties.ofFullCopy(Blocks.JUNGLE_TRAPDOOR))); + + + public static final DeferredBlock ROYAL_PRESSURE_PLATE = BLOCKS.register("royal_pressure_plate", + () -> new net.minecraft.world.level.block.PressurePlateBlock(net.minecraft.world.level.block.state.properties.BlockSetType.JUNGLE, BlockBehaviour.Properties.ofFullCopy(Blocks.JUNGLE_PRESSURE_PLATE))); + + + public static final DeferredBlock ROYAL_BUTTON = BLOCKS.register("royal_button", + () -> new net.minecraft.world.level.block.ButtonBlock(net.minecraft.world.level.block.state.properties.BlockSetType.JUNGLE, 30, BlockBehaviour.Properties.ofFullCopy(Blocks.JUNGLE_BUTTON))); + + + public static final DeferredBlock ROYAL_LEAVES = BLOCKS.register("royal_leaves", + () -> new net.minecraft.world.level.block.LeavesBlock(BlockBehaviour.Properties.ofFullCopy(Blocks.JUNGLE_LEAVES).randomTicks())); + + + public static final DeferredBlock ROYAL_FLOWERING_LEAVES = BLOCKS.register("royal_flowering_leaves", + () -> new net.minecraft.world.level.block.LeavesBlock(BlockBehaviour.Properties.ofFullCopy(Blocks.JUNGLE_LEAVES).randomTicks().lightLevel(state -> 12))); + + + public static final DeferredBlock ROYAL_SAPLING = BLOCKS.register("royal_sapling", + () -> new com.craisinlord.antarchy.content.block.RoyalSaplingBlock(BlockBehaviour.Properties.ofFullCopy(Blocks.OAK_SAPLING).noCollission())); + public static final DeferredBlock POTTED_ROYAL_SAPLING = BLOCKS.register("potted_royal_sapling", + () -> new net.minecraft.world.level.block.FlowerPotBlock(ROYAL_SAPLING.get(), BlockBehaviour.Properties.ofFullCopy(Blocks.POTTED_DANDELION))); + + + public static final DeferredBlock ROYAL_SIGN = BLOCKS.register("royal_sign", + () -> new net.minecraft.world.level.block.StandingSignBlock(AntarchyWoodTypes.ROYAL, BlockBehaviour.Properties.ofFullCopy(Blocks.JUNGLE_SIGN))); + + + public static final DeferredBlock ROYAL_WALL_SIGN = BLOCKS.register("royal_wall_sign", + () -> new net.minecraft.world.level.block.WallSignBlock(AntarchyWoodTypes.ROYAL, BlockBehaviour.Properties.ofFullCopy(Blocks.JUNGLE_WALL_SIGN))); + + + public static final DeferredBlock ROYAL_HANGING_SIGN = BLOCKS.register("royal_hanging_sign", + () -> new net.minecraft.world.level.block.CeilingHangingSignBlock(AntarchyWoodTypes.ROYAL, BlockBehaviour.Properties.ofFullCopy(Blocks.JUNGLE_HANGING_SIGN))); + + + public static final DeferredBlock ROYAL_WALL_HANGING_SIGN = BLOCKS.register("royal_wall_hanging_sign", + () -> new net.minecraft.world.level.block.WallHangingSignBlock(AntarchyWoodTypes.ROYAL, BlockBehaviour.Properties.ofFullCopy(Blocks.JUNGLE_WALL_HANGING_SIGN))); + + + public static final DeferredBlock TRUFFALO_LOG = BLOCKS.register("truffalo_log", + () -> new com.craisinlord.antarchy.content.block.TruffaloLogBlock(BlockBehaviour.Properties.ofFullCopy(Blocks.JUNGLE_LOG))); + + + public static final DeferredBlock TRUFFALO_WOOD = BLOCKS.register("truffalo_wood", + () -> new RotatedPillarBlock(BlockBehaviour.Properties.ofFullCopy(Blocks.JUNGLE_WOOD))); + + + public static final DeferredBlock STRIPPED_TRUFFALO_LOG = BLOCKS.register("stripped_truffalo_log", + () -> new com.craisinlord.antarchy.content.block.TruffaloLogBlock(BlockBehaviour.Properties.ofFullCopy(Blocks.STRIPPED_JUNGLE_LOG))); + + + public static final DeferredBlock STRIPPED_TRUFFALO_WOOD = BLOCKS.register("stripped_truffalo_wood", + () -> new RotatedPillarBlock(BlockBehaviour.Properties.ofFullCopy(Blocks.STRIPPED_JUNGLE_WOOD))); + + + public static final DeferredBlock TRUFFALO_PLANKS = BLOCKS.register("truffalo_planks", + () -> new Block(BlockBehaviour.Properties.ofFullCopy(Blocks.JUNGLE_PLANKS))); + + + public static final DeferredBlock TRUFFALO_STAIRS = BLOCKS.register("truffalo_stairs", + () -> new net.minecraft.world.level.block.StairBlock(TRUFFALO_PLANKS.get().defaultBlockState(), BlockBehaviour.Properties.ofFullCopy(Blocks.JUNGLE_STAIRS))); + + + public static final DeferredBlock TRUFFALO_SLAB = BLOCKS.register("truffalo_slab", + () -> new net.minecraft.world.level.block.SlabBlock(BlockBehaviour.Properties.ofFullCopy(Blocks.JUNGLE_SLAB))); + + + public static final DeferredBlock TRUFFALO_FENCE = BLOCKS.register("truffalo_fence", + () -> new net.minecraft.world.level.block.FenceBlock(BlockBehaviour.Properties.ofFullCopy(Blocks.JUNGLE_FENCE))); + + + public static final DeferredBlock TRUFFALO_FENCE_GATE = BLOCKS.register("truffalo_fence_gate", + () -> new net.minecraft.world.level.block.FenceGateBlock(net.minecraft.world.level.block.state.properties.WoodType.JUNGLE, BlockBehaviour.Properties.ofFullCopy(Blocks.JUNGLE_FENCE_GATE))); + + + public static final DeferredBlock TRUFFALO_DOOR = BLOCKS.register("truffalo_door", + () -> new net.minecraft.world.level.block.DoorBlock(net.minecraft.world.level.block.state.properties.BlockSetType.JUNGLE, BlockBehaviour.Properties.ofFullCopy(Blocks.JUNGLE_DOOR))); + + + public static final DeferredBlock TRUFFALO_TRAPDOOR = BLOCKS.register("truffalo_trapdoor", + () -> new net.minecraft.world.level.block.TrapDoorBlock(net.minecraft.world.level.block.state.properties.BlockSetType.JUNGLE, BlockBehaviour.Properties.ofFullCopy(Blocks.JUNGLE_TRAPDOOR))); + + + public static final DeferredBlock TRUFFALO_PRESSURE_PLATE = BLOCKS.register("truffalo_pressure_plate", + () -> new net.minecraft.world.level.block.PressurePlateBlock(net.minecraft.world.level.block.state.properties.BlockSetType.JUNGLE, BlockBehaviour.Properties.ofFullCopy(Blocks.JUNGLE_PRESSURE_PLATE))); + + + public static final DeferredBlock TRUFFALO_BUTTON = BLOCKS.register("truffalo_button", + () -> new net.minecraft.world.level.block.ButtonBlock(net.minecraft.world.level.block.state.properties.BlockSetType.JUNGLE, 30, BlockBehaviour.Properties.ofFullCopy(Blocks.JUNGLE_BUTTON))); + + + public static final DeferredBlock TRUFFALO_SAPLING = BLOCKS.register("truffalo_sapling", + () -> new com.craisinlord.antarchy.content.block.TruffaloSaplingBlock(BlockBehaviour.Properties.ofFullCopy(Blocks.OAK_SAPLING).randomTicks().noCollission())); + public static final DeferredBlock POTTED_TRUFFALO_SAPLING = BLOCKS.register("potted_truffalo_sapling", + () -> new net.minecraft.world.level.block.FlowerPotBlock(TRUFFALO_SAPLING.get(), BlockBehaviour.Properties.ofFullCopy(Blocks.POTTED_DANDELION))); + + + public static final DeferredBlock TRUFFALO_SIGN = BLOCKS.register("truffalo_sign", + () -> new net.minecraft.world.level.block.StandingSignBlock(AntarchyWoodTypes.TRUFFALO, BlockBehaviour.Properties.ofFullCopy(Blocks.JUNGLE_SIGN))); + + + public static final DeferredBlock TRUFFALO_WALL_SIGN = BLOCKS.register("truffalo_wall_sign", + () -> new net.minecraft.world.level.block.WallSignBlock(AntarchyWoodTypes.TRUFFALO, BlockBehaviour.Properties.ofFullCopy(Blocks.JUNGLE_WALL_SIGN))); + + + public static final DeferredBlock TRUFFALO_HANGING_SIGN = BLOCKS.register("truffalo_hanging_sign", + () -> new net.minecraft.world.level.block.CeilingHangingSignBlock(AntarchyWoodTypes.TRUFFALO, BlockBehaviour.Properties.ofFullCopy(Blocks.JUNGLE_HANGING_SIGN))); + + + public static final DeferredBlock TRUFFALO_WALL_HANGING_SIGN = BLOCKS.register("truffalo_wall_hanging_sign", + () -> new net.minecraft.world.level.block.WallHangingSignBlock(AntarchyWoodTypes.TRUFFALO, BlockBehaviour.Properties.ofFullCopy(Blocks.JUNGLE_WALL_HANGING_SIGN))); + + + public static final DeferredBlock TRUFFALO_TUFT_WHITE = BLOCKS.register("white_truffalo_tuft", + () -> new com.craisinlord.antarchy.content.block.TruffaloTuftBlock(BlockBehaviour.Properties.ofFullCopy(Blocks.WHITE_WOOL))); + public static final DeferredBlock TRUFFALO_TUFT_ORANGE = BLOCKS.register("orange_truffalo_tuft", + () -> new com.craisinlord.antarchy.content.block.TruffaloTuftBlock(BlockBehaviour.Properties.ofFullCopy(Blocks.ORANGE_WOOL))); + public static final DeferredBlock TRUFFALO_TUFT_MAGENTA = BLOCKS.register("magenta_truffalo_tuft", + () -> new com.craisinlord.antarchy.content.block.TruffaloTuftBlock(BlockBehaviour.Properties.ofFullCopy(Blocks.MAGENTA_WOOL))); + public static final DeferredBlock TRUFFALO_TUFT_LIGHT_BLUE = BLOCKS.register("light_blue_truffalo_tuft", + () -> new com.craisinlord.antarchy.content.block.TruffaloTuftBlock(BlockBehaviour.Properties.ofFullCopy(Blocks.LIGHT_BLUE_WOOL))); + public static final DeferredBlock TRUFFALO_TUFT_YELLOW = BLOCKS.register("yellow_truffalo_tuft", + () -> new com.craisinlord.antarchy.content.block.TruffaloTuftBlock(BlockBehaviour.Properties.ofFullCopy(Blocks.YELLOW_WOOL))); + public static final DeferredBlock TRUFFALO_TUFT_LIME = BLOCKS.register("lime_truffalo_tuft", + () -> new com.craisinlord.antarchy.content.block.TruffaloTuftBlock(BlockBehaviour.Properties.ofFullCopy(Blocks.LIME_WOOL))); + public static final DeferredBlock TRUFFALO_TUFT_PINK = BLOCKS.register("pink_truffalo_tuft", + () -> new com.craisinlord.antarchy.content.block.TruffaloTuftBlock(BlockBehaviour.Properties.ofFullCopy(Blocks.PINK_WOOL))); + public static final DeferredBlock TRUFFALO_TUFT_GRAY = BLOCKS.register("gray_truffalo_tuft", + () -> new com.craisinlord.antarchy.content.block.TruffaloTuftBlock(BlockBehaviour.Properties.ofFullCopy(Blocks.GRAY_WOOL))); + public static final DeferredBlock TRUFFALO_TUFT_LIGHT_GRAY = BLOCKS.register("light_gray_truffalo_tuft", + () -> new com.craisinlord.antarchy.content.block.TruffaloTuftBlock(BlockBehaviour.Properties.ofFullCopy(Blocks.LIGHT_GRAY_WOOL))); + public static final DeferredBlock TRUFFALO_TUFT_CYAN = BLOCKS.register("cyan_truffalo_tuft", + () -> new com.craisinlord.antarchy.content.block.TruffaloTuftBlock(BlockBehaviour.Properties.ofFullCopy(Blocks.CYAN_WOOL))); + public static final DeferredBlock TRUFFALO_TUFT_PURPLE = BLOCKS.register("purple_truffalo_tuft", + () -> new com.craisinlord.antarchy.content.block.TruffaloTuftBlock(BlockBehaviour.Properties.ofFullCopy(Blocks.PURPLE_WOOL))); + public static final DeferredBlock TRUFFALO_TUFT_BLUE = BLOCKS.register("blue_truffalo_tuft", + () -> new com.craisinlord.antarchy.content.block.TruffaloTuftBlock(BlockBehaviour.Properties.ofFullCopy(Blocks.BLUE_WOOL))); + public static final DeferredBlock TRUFFALO_TUFT_BROWN = BLOCKS.register("brown_truffalo_tuft", + () -> new com.craisinlord.antarchy.content.block.TruffaloTuftBlock(BlockBehaviour.Properties.ofFullCopy(Blocks.BROWN_WOOL))); + public static final DeferredBlock TRUFFALO_TUFT_GREEN = BLOCKS.register("green_truffalo_tuft", + () -> new com.craisinlord.antarchy.content.block.TruffaloTuftBlock(BlockBehaviour.Properties.ofFullCopy(Blocks.GREEN_WOOL))); + public static final DeferredBlock TRUFFALO_TUFT_RED = BLOCKS.register("red_truffalo_tuft", + () -> new com.craisinlord.antarchy.content.block.TruffaloTuftBlock(BlockBehaviour.Properties.ofFullCopy(Blocks.RED_WOOL))); + public static final DeferredBlock TRUFFALO_TUFT_BLACK = BLOCKS.register("black_truffalo_tuft", + () -> new com.craisinlord.antarchy.content.block.TruffaloTuftBlock(BlockBehaviour.Properties.ofFullCopy(Blocks.BLACK_WOOL))); + + public static final DeferredBlock DUCT_TAPE = BLOCKS.register("duct_tape", () -> new DuctTapeBlock(BlockBehaviour.Properties.of() .strength(0.2F) @@ -1222,6 +1418,16 @@ public final class AntarchyFabricBlocks { (pos, state) -> new UpperBlockEntity(pos, state, AntarchyFabricBlocks::upperBlockEntityType), UPPER.get() ).build(null)); + public static final DeferredHolder, BlockEntityType> PORTAL_GUN_PORTAL_MASTER_BLOCK_ENTITY = BLOCK_ENTITY_TYPES.register("portal_gun_portal_master", + () -> BlockEntityType.Builder.of( + (pos, state) -> new PortalGunPortalMasterBlockEntity(pos, state, AntarchyFabricBlocks::portalGunPortalMasterBlockEntityType), + PORTAL_GUN_PORTAL_MASTER.get() + ).build(null)); + public static final DeferredHolder, BlockEntityType> PORTAL_GUN_PORTAL_BASE_BLOCK_ENTITY = BLOCK_ENTITY_TYPES.register("portal_gun_portal_base", + () -> BlockEntityType.Builder.of( + (pos, state) -> new PortalGunPortalBaseBlockEntity(pos, state, AntarchyFabricBlocks::portalGunPortalBaseBlockEntityType), + PORTAL_GUN_PORTAL_BASE.get() + ).build(null)); @@ -1253,6 +1459,14 @@ public final class AntarchyFabricBlocks { return UPPER_BLOCK_ENTITY.get(); } + private static BlockEntityType portalGunPortalMasterBlockEntityType() { + return PORTAL_GUN_PORTAL_MASTER_BLOCK_ENTITY.get(); + } + + private static BlockEntityType portalGunPortalBaseBlockEntityType() { + return PORTAL_GUN_PORTAL_BASE_BLOCK_ENTITY.get(); + } + private static Block smallBloodCrystalBudBlock() { diff --git a/fabric-1.21.1/src/main/java/com/craisinlord/antarchy/fabric/registry/AntarchyFabricEntities.java b/fabric-1.21.1/src/main/java/com/craisinlord/antarchy/fabric/registry/AntarchyFabricEntities.java index 6bd48265..b8ecccdb 100644 --- a/fabric-1.21.1/src/main/java/com/craisinlord/antarchy/fabric/registry/AntarchyFabricEntities.java +++ b/fabric-1.21.1/src/main/java/com/craisinlord/antarchy/fabric/registry/AntarchyFabricEntities.java @@ -24,10 +24,15 @@ import com.craisinlord.antarchy.content.entity.CritterCageProjectileEntity; import com.craisinlord.antarchy.content.entity.WormHookProjectileEntity; import com.craisinlord.antarchy.content.entity.JumpyBugEntity; import com.craisinlord.antarchy.content.entity.StinkBugEntity; +import com.craisinlord.antarchy.content.entity.HoverboardEntity; import com.craisinlord.antarchy.content.entity.OuranwoodBoatEntity; import com.craisinlord.antarchy.content.entity.OuranwoodChestBoatEntity; import com.craisinlord.antarchy.content.entity.NadirBoatEntity; import com.craisinlord.antarchy.content.entity.NadirChestBoatEntity; +import com.craisinlord.antarchy.content.entity.RoyalBoatEntity; +import com.craisinlord.antarchy.content.entity.RoyalChestBoatEntity; +import com.craisinlord.antarchy.content.entity.TruffaloBoatEntity; +import com.craisinlord.antarchy.content.entity.TruffaloChestBoatEntity; import com.craisinlord.antarchy.content.entity.AlphaMantisEntity; import com.craisinlord.antarchy.content.entity.MantisEntity; import com.craisinlord.antarchy.content.entity.RollyPollyEntity; @@ -39,6 +44,7 @@ import com.craisinlord.antarchy.content.entity.nightmare.NightmarePortalEntity; import com.craisinlord.antarchy.content.entity.nightmare.NightmareBiteEntity; import com.craisinlord.antarchy.content.entity.portal.DimensionalTearEntity; import com.craisinlord.antarchy.content.portalgun.PortalGunPortalEntity; +import com.craisinlord.antarchy.content.portalgun.PortalGunProjectileEntity; import com.craisinlord.antarchy.content.entity.ToreterrorEntity; import com.craisinlord.antarchy.content.entity.WaterBombEntity; import com.craisinlord.antarchy.content.entity.kraken.KrakenEntity; @@ -89,6 +95,13 @@ public final class AntarchyFabricEntities { .build("rolly_polly")); + public static final DeferredHolder, EntityType> HOVERBOARD = ENTITY_TYPES.register("hoverboard", + () -> EntityType.Builder.of(HoverboardEntity::new, MobCategory.MISC) + .sized(1.5F, 0.6875F) + .clientTrackingRange(10) + .build("hoverboard")); + + public static final DeferredHolder, EntityType> MOLEWORM = ENTITY_TYPES.register("moleworm", () -> EntityType.Builder.of(MolewormEntity::new, MobCategory.MONSTER) .sized(0.4F, 0.3F) @@ -163,6 +176,38 @@ public final class AntarchyFabricEntities { .build("nadir_chest_boat")); + public static final DeferredHolder, EntityType> ROYAL_BOAT_ENTITY = ENTITY_TYPES.register("royal_boat", + () -> EntityType.Builder.of(RoyalBoatEntity::new, MobCategory.MISC) + .sized(1.375F, 0.5625F) + .clientTrackingRange(10) + .updateInterval(10) + .build("royal_boat")); + + + public static final DeferredHolder, EntityType> ROYAL_CHEST_BOAT_ENTITY = ENTITY_TYPES.register("royal_chest_boat", + () -> EntityType.Builder.of(RoyalChestBoatEntity::new, MobCategory.MISC) + .sized(1.375F, 0.5625F) + .clientTrackingRange(10) + .updateInterval(10) + .build("royal_chest_boat")); + + + public static final DeferredHolder, EntityType> TRUFFALO_BOAT_ENTITY = ENTITY_TYPES.register("truffalo_boat", + () -> EntityType.Builder.of(TruffaloBoatEntity::new, MobCategory.MISC) + .sized(1.375F, 0.5625F) + .clientTrackingRange(10) + .updateInterval(10) + .build("truffalo_boat")); + + + public static final DeferredHolder, EntityType> TRUFFALO_CHEST_BOAT_ENTITY = ENTITY_TYPES.register("truffalo_chest_boat", + () -> EntityType.Builder.of(TruffaloChestBoatEntity::new, MobCategory.MISC) + .sized(1.375F, 0.5625F) + .clientTrackingRange(10) + .updateInterval(10) + .build("truffalo_chest_boat")); + + public static final DeferredHolder, EntityType> MOLEVORE = ENTITY_TYPES.register("molevore", () -> EntityType.Builder.of(MolevoreEntity::new, MobCategory.MONSTER) .sized(1.95F, 1.1F) @@ -384,6 +429,12 @@ public final class AntarchyFabricEntities { .clientTrackingRange(10) .updateInterval(1) .build("portal_gun_black_hole")); + public static final DeferredHolder, EntityType> PORTAL_GUN_PROJECTILE = ENTITY_TYPES.register("portal_gun_projectile", + () -> EntityType.Builder.of(PortalGunProjectileEntity::new, MobCategory.MISC) + .sized(0.25F, 0.25F) + .clientTrackingRange(8) + .updateInterval(1) + .build("portal_gun_projectile")); public static final DeferredHolder, EntityType> NIGHTMARE_BITE = ENTITY_TYPES.register("nightmare_bite", () -> EntityType.Builder.of(NightmareBiteEntity::new, MobCategory.MISC) diff --git a/fabric-1.21.1/src/main/java/com/craisinlord/antarchy/fabric/registry/AntarchyFabricEntityAttributes.java b/fabric-1.21.1/src/main/java/com/craisinlord/antarchy/fabric/registry/AntarchyFabricEntityAttributes.java index 89b4a3d9..9505209b 100644 --- a/fabric-1.21.1/src/main/java/com/craisinlord/antarchy/fabric/registry/AntarchyFabricEntityAttributes.java +++ b/fabric-1.21.1/src/main/java/com/craisinlord/antarchy/fabric/registry/AntarchyFabricEntityAttributes.java @@ -100,6 +100,7 @@ public final class AntarchyFabricEntityAttributes { FabricDefaultAttributeRegistry.register(AntarchyFabricEntities.OURANWOOD_DEER.get(), com.craisinlord.antarchy.content.entity.OuranwoodDeerEntity.createAttributes().build()); FabricDefaultAttributeRegistry.register(AntarchyFabricEntities.GLIMMER.get(), com.craisinlord.antarchy.content.entity.glimmer.GlimmerEntity.createAttributes().build()); FabricDefaultAttributeRegistry.register(AntarchyFabricEntities.ELKA.get(), com.craisinlord.antarchy.content.entity.ElkaEntity.createAttributes().build()); + FabricDefaultAttributeRegistry.register(AntarchyFabricEntities.HOVERBOARD.get(), com.craisinlord.antarchy.content.entity.HoverboardEntity.createAttributes().build()); FabricDefaultAttributeRegistry.register(AntarchyFabricEntities.RED_ANT.get(), buildAntAttributes( AntarchySettings.redAntHealth(), diff --git a/fabric-1.21.1/src/main/java/com/craisinlord/antarchy/fabric/registry/AntarchyFabricItems.java b/fabric-1.21.1/src/main/java/com/craisinlord/antarchy/fabric/registry/AntarchyFabricItems.java index 37e4ab7c..f42b7cb3 100644 --- a/fabric-1.21.1/src/main/java/com/craisinlord/antarchy/fabric/registry/AntarchyFabricItems.java +++ b/fabric-1.21.1/src/main/java/com/craisinlord/antarchy/fabric/registry/AntarchyFabricItems.java @@ -14,11 +14,14 @@ import com.craisinlord.antarchy.content.item.ultimate.UltimateArmorItem; import com.craisinlord.antarchy.content.item.ultimate.UltimateBowItem; import com.craisinlord.antarchy.content.item.ultimate.UltimateCrossbowItem; import net.minecraft.core.registries.BuiltInRegistries; +import net.minecraft.core.registries.Registries; +import net.minecraft.resources.ResourceKey; import net.minecraft.resources.ResourceLocation; import net.minecraft.world.effect.MobEffectInstance; import net.minecraft.world.effect.MobEffects; import net.minecraft.world.item.ArmorItem; import net.minecraft.world.item.BucketItem; +import net.minecraft.world.item.DyeColor; import net.minecraft.world.item.Item; import net.minecraft.world.item.Items; import net.minecraft.world.item.MobBucketItem; @@ -66,6 +69,11 @@ public final class AntarchyFabricItems { public static final DeferredItem NIGHTMARE_SCALE = ITEMS.registerSimpleItem("nightmare_scale", new Item.Properties().rarity(Rarity.RARE).fireResistant()); + public static final DeferredItem MUSIC_DISC_UNDERSIDE = ITEMS.registerSimpleItem("music_disc_underside", + new Item.Properties().stacksTo(1).rarity(Rarity.RARE) + .jukeboxPlayable(ResourceKey.create(Registries.JUKEBOX_SONG, + ResourceLocation.fromNamespaceAndPath(Antarchy.MODID, "underside")))); + public static final DeferredItem PRIMORDIAL_SCUTE = ITEMS.registerSimpleItem("primordial_scute", new Item.Properties().rarity(Rarity.UNCOMMON)); @@ -252,6 +260,42 @@ public final class AntarchyFabricItems { () -> new OuranwoodChestBoatItem(AntarchyFabricEntities.OURANWOOD_CHEST_BOAT_ENTITY.get(), new Item.Properties().stacksTo(1))); + public static final DeferredItem HOVERBOARD = ITEMS.register("hoverboard", + () -> new HoverboardItem(AntarchyFabricEntities.HOVERBOARD.get(), null, new Item.Properties().stacksTo(1))); + public static final DeferredItem HOVERBOARD_WHITE = ITEMS.register("hoverboard_white", + () -> new HoverboardItem(AntarchyFabricEntities.HOVERBOARD.get(), DyeColor.WHITE, new Item.Properties().stacksTo(1))); + public static final DeferredItem HOVERBOARD_ORANGE = ITEMS.register("hoverboard_orange", + () -> new HoverboardItem(AntarchyFabricEntities.HOVERBOARD.get(), DyeColor.ORANGE, new Item.Properties().stacksTo(1))); + public static final DeferredItem HOVERBOARD_MAGENTA = ITEMS.register("hoverboard_magenta", + () -> new HoverboardItem(AntarchyFabricEntities.HOVERBOARD.get(), DyeColor.MAGENTA, new Item.Properties().stacksTo(1))); + public static final DeferredItem HOVERBOARD_LIGHT_BLUE = ITEMS.register("hoverboard_light_blue", + () -> new HoverboardItem(AntarchyFabricEntities.HOVERBOARD.get(), DyeColor.LIGHT_BLUE, new Item.Properties().stacksTo(1))); + public static final DeferredItem HOVERBOARD_YELLOW = ITEMS.register("hoverboard_yellow", + () -> new HoverboardItem(AntarchyFabricEntities.HOVERBOARD.get(), DyeColor.YELLOW, new Item.Properties().stacksTo(1))); + public static final DeferredItem HOVERBOARD_LIME = ITEMS.register("hoverboard_lime", + () -> new HoverboardItem(AntarchyFabricEntities.HOVERBOARD.get(), DyeColor.LIME, new Item.Properties().stacksTo(1))); + public static final DeferredItem HOVERBOARD_PINK = ITEMS.register("hoverboard_pink", + () -> new HoverboardItem(AntarchyFabricEntities.HOVERBOARD.get(), DyeColor.PINK, new Item.Properties().stacksTo(1))); + public static final DeferredItem HOVERBOARD_GRAY = ITEMS.register("hoverboard_gray", + () -> new HoverboardItem(AntarchyFabricEntities.HOVERBOARD.get(), DyeColor.GRAY, new Item.Properties().stacksTo(1))); + public static final DeferredItem HOVERBOARD_LIGHT_GRAY = ITEMS.register("hoverboard_light_gray", + () -> new HoverboardItem(AntarchyFabricEntities.HOVERBOARD.get(), DyeColor.LIGHT_GRAY, new Item.Properties().stacksTo(1))); + public static final DeferredItem HOVERBOARD_CYAN = ITEMS.register("hoverboard_cyan", + () -> new HoverboardItem(AntarchyFabricEntities.HOVERBOARD.get(), DyeColor.CYAN, new Item.Properties().stacksTo(1))); + public static final DeferredItem HOVERBOARD_PURPLE = ITEMS.register("hoverboard_purple", + () -> new HoverboardItem(AntarchyFabricEntities.HOVERBOARD.get(), DyeColor.PURPLE, new Item.Properties().stacksTo(1))); + public static final DeferredItem HOVERBOARD_BLUE = ITEMS.register("hoverboard_blue", + () -> new HoverboardItem(AntarchyFabricEntities.HOVERBOARD.get(), DyeColor.BLUE, new Item.Properties().stacksTo(1))); + public static final DeferredItem HOVERBOARD_BROWN = ITEMS.register("hoverboard_brown", + () -> new HoverboardItem(AntarchyFabricEntities.HOVERBOARD.get(), DyeColor.BROWN, new Item.Properties().stacksTo(1))); + public static final DeferredItem HOVERBOARD_GREEN = ITEMS.register("hoverboard_green", + () -> new HoverboardItem(AntarchyFabricEntities.HOVERBOARD.get(), DyeColor.GREEN, new Item.Properties().stacksTo(1))); + public static final DeferredItem HOVERBOARD_RED = ITEMS.register("hoverboard_red", + () -> new HoverboardItem(AntarchyFabricEntities.HOVERBOARD.get(), DyeColor.RED, new Item.Properties().stacksTo(1))); + public static final DeferredItem HOVERBOARD_BLACK = ITEMS.register("hoverboard_black", + () -> new HoverboardItem(AntarchyFabricEntities.HOVERBOARD.get(), DyeColor.BLACK, new Item.Properties().stacksTo(1))); + + public static final DeferredItem PEACH_SIGN_ITEM = ITEMS.register("peach_sign", () -> new net.minecraft.world.item.SignItem(new Item.Properties().stacksTo(16), AntarchyFabricBlocks.PEACH_SIGN.get(), AntarchyFabricBlocks.PEACH_WALL_SIGN.get())); @@ -284,6 +328,146 @@ public final class AntarchyFabricItems { () -> new com.craisinlord.antarchy.content.item.NadirChestBoatItem(AntarchyFabricEntities.NADIR_CHEST_BOAT_ENTITY.get(), new Item.Properties().stacksTo(1))); + public static final DeferredItem ROYAL_LOG_ITEM = ITEMS.registerSimpleBlockItem(AntarchyFabricBlocks.ROYAL_LOG); + + + public static final DeferredItem ROYAL_WOOD_ITEM = ITEMS.registerSimpleBlockItem(AntarchyFabricBlocks.ROYAL_WOOD); + + + public static final DeferredItem STRIPPED_ROYAL_LOG_ITEM = ITEMS.registerSimpleBlockItem(AntarchyFabricBlocks.STRIPPED_ROYAL_LOG); + + + public static final DeferredItem STRIPPED_ROYAL_WOOD_ITEM = ITEMS.registerSimpleBlockItem(AntarchyFabricBlocks.STRIPPED_ROYAL_WOOD); + + + public static final DeferredItem ROYAL_PLANKS_ITEM = ITEMS.registerSimpleBlockItem(AntarchyFabricBlocks.ROYAL_PLANKS); + + + public static final DeferredItem ROYAL_STAIRS_ITEM = ITEMS.registerSimpleBlockItem(AntarchyFabricBlocks.ROYAL_STAIRS); + + + public static final DeferredItem ROYAL_SLAB_ITEM = ITEMS.registerSimpleBlockItem(AntarchyFabricBlocks.ROYAL_SLAB); + + + public static final DeferredItem ROYAL_FENCE_ITEM = ITEMS.registerSimpleBlockItem(AntarchyFabricBlocks.ROYAL_FENCE); + + + public static final DeferredItem ROYAL_FENCE_GATE_ITEM = ITEMS.registerSimpleBlockItem(AntarchyFabricBlocks.ROYAL_FENCE_GATE); + + + public static final DeferredItem ROYAL_DOOR_ITEM = ITEMS.registerSimpleBlockItem(AntarchyFabricBlocks.ROYAL_DOOR); + + + public static final DeferredItem ROYAL_TRAPDOOR_ITEM = ITEMS.registerSimpleBlockItem(AntarchyFabricBlocks.ROYAL_TRAPDOOR); + + + public static final DeferredItem ROYAL_PRESSURE_PLATE_ITEM = ITEMS.registerSimpleBlockItem(AntarchyFabricBlocks.ROYAL_PRESSURE_PLATE); + + + public static final DeferredItem ROYAL_BUTTON_ITEM = ITEMS.registerSimpleBlockItem(AntarchyFabricBlocks.ROYAL_BUTTON); + + + public static final DeferredItem ROYAL_LEAVES_ITEM = ITEMS.registerSimpleBlockItem(AntarchyFabricBlocks.ROYAL_LEAVES); + + + public static final DeferredItem ROYAL_FLOWERING_LEAVES_ITEM = ITEMS.registerSimpleBlockItem(AntarchyFabricBlocks.ROYAL_FLOWERING_LEAVES); + + + public static final DeferredItem ROYAL_SAPLING_ITEM = ITEMS.registerSimpleBlockItem(AntarchyFabricBlocks.ROYAL_SAPLING); + + + public static final DeferredItem ROYAL_SIGN_ITEM = ITEMS.register("royal_sign", + () -> new net.minecraft.world.item.SignItem(new Item.Properties().stacksTo(16), AntarchyFabricBlocks.ROYAL_SIGN.get(), AntarchyFabricBlocks.ROYAL_WALL_SIGN.get())); + + + public static final DeferredItem ROYAL_HANGING_SIGN_ITEM = ITEMS.register("royal_hanging_sign", + () -> new net.minecraft.world.item.HangingSignItem(AntarchyFabricBlocks.ROYAL_HANGING_SIGN.get(), AntarchyFabricBlocks.ROYAL_WALL_HANGING_SIGN.get(), new Item.Properties().stacksTo(16))); + + + public static final DeferredItem ROYAL_BOAT = ITEMS.register("royal_boat", + () -> new com.craisinlord.antarchy.content.item.RoyalBoatOnlyItem(AntarchyFabricEntities.ROYAL_BOAT_ENTITY.get(), new Item.Properties().stacksTo(1))); + + + public static final DeferredItem ROYAL_CHEST_BOAT = ITEMS.register("royal_chest_boat", + () -> new com.craisinlord.antarchy.content.item.RoyalChestBoatItem(AntarchyFabricEntities.ROYAL_CHEST_BOAT_ENTITY.get(), new Item.Properties().stacksTo(1))); + + + public static final DeferredItem TRUFFALO_LOG_ITEM = ITEMS.registerSimpleBlockItem(AntarchyFabricBlocks.TRUFFALO_LOG); + + + public static final DeferredItem TRUFFALO_WOOD_ITEM = ITEMS.registerSimpleBlockItem(AntarchyFabricBlocks.TRUFFALO_WOOD); + + + public static final DeferredItem STRIPPED_TRUFFALO_LOG_ITEM = ITEMS.registerSimpleBlockItem(AntarchyFabricBlocks.STRIPPED_TRUFFALO_LOG); + + + public static final DeferredItem STRIPPED_TRUFFALO_WOOD_ITEM = ITEMS.registerSimpleBlockItem(AntarchyFabricBlocks.STRIPPED_TRUFFALO_WOOD); + + + public static final DeferredItem TRUFFALO_PLANKS_ITEM = ITEMS.registerSimpleBlockItem(AntarchyFabricBlocks.TRUFFALO_PLANKS); + + + public static final DeferredItem TRUFFALO_STAIRS_ITEM = ITEMS.registerSimpleBlockItem(AntarchyFabricBlocks.TRUFFALO_STAIRS); + + + public static final DeferredItem TRUFFALO_SLAB_ITEM = ITEMS.registerSimpleBlockItem(AntarchyFabricBlocks.TRUFFALO_SLAB); + + + public static final DeferredItem TRUFFALO_FENCE_ITEM = ITEMS.registerSimpleBlockItem(AntarchyFabricBlocks.TRUFFALO_FENCE); + + + public static final DeferredItem TRUFFALO_FENCE_GATE_ITEM = ITEMS.registerSimpleBlockItem(AntarchyFabricBlocks.TRUFFALO_FENCE_GATE); + + + public static final DeferredItem TRUFFALO_DOOR_ITEM = ITEMS.registerSimpleBlockItem(AntarchyFabricBlocks.TRUFFALO_DOOR); + + + public static final DeferredItem TRUFFALO_TRAPDOOR_ITEM = ITEMS.registerSimpleBlockItem(AntarchyFabricBlocks.TRUFFALO_TRAPDOOR); + + + public static final DeferredItem TRUFFALO_PRESSURE_PLATE_ITEM = ITEMS.registerSimpleBlockItem(AntarchyFabricBlocks.TRUFFALO_PRESSURE_PLATE); + + + public static final DeferredItem TRUFFALO_BUTTON_ITEM = ITEMS.registerSimpleBlockItem(AntarchyFabricBlocks.TRUFFALO_BUTTON); + + + public static final DeferredItem TRUFFALO_SAPLING_ITEM = ITEMS.registerSimpleBlockItem(AntarchyFabricBlocks.TRUFFALO_SAPLING); + + + public static final DeferredItem TRUFFALO_SIGN_ITEM = ITEMS.register("truffalo_sign", + () -> new net.minecraft.world.item.SignItem(new Item.Properties().stacksTo(16), AntarchyFabricBlocks.TRUFFALO_SIGN.get(), AntarchyFabricBlocks.TRUFFALO_WALL_SIGN.get())); + + + public static final DeferredItem TRUFFALO_HANGING_SIGN_ITEM = ITEMS.register("truffalo_hanging_sign", + () -> new net.minecraft.world.item.HangingSignItem(AntarchyFabricBlocks.TRUFFALO_HANGING_SIGN.get(), AntarchyFabricBlocks.TRUFFALO_WALL_HANGING_SIGN.get(), new Item.Properties().stacksTo(16))); + + + public static final DeferredItem TRUFFALO_BOAT = ITEMS.register("truffalo_boat", + () -> new com.craisinlord.antarchy.content.item.TruffaloBoatOnlyItem(AntarchyFabricEntities.TRUFFALO_BOAT_ENTITY.get(), new Item.Properties().stacksTo(1))); + + + public static final DeferredItem TRUFFALO_CHEST_BOAT = ITEMS.register("truffalo_chest_boat", + () -> new com.craisinlord.antarchy.content.item.TruffaloChestBoatItem(AntarchyFabricEntities.TRUFFALO_CHEST_BOAT_ENTITY.get(), new Item.Properties().stacksTo(1))); + + + public static final DeferredItem TRUFFALO_TUFT_WHITE_ITEM = ITEMS.registerSimpleBlockItem(AntarchyFabricBlocks.TRUFFALO_TUFT_WHITE); + public static final DeferredItem TRUFFALO_TUFT_ORANGE_ITEM = ITEMS.registerSimpleBlockItem(AntarchyFabricBlocks.TRUFFALO_TUFT_ORANGE); + public static final DeferredItem TRUFFALO_TUFT_MAGENTA_ITEM = ITEMS.registerSimpleBlockItem(AntarchyFabricBlocks.TRUFFALO_TUFT_MAGENTA); + public static final DeferredItem TRUFFALO_TUFT_LIGHT_BLUE_ITEM = ITEMS.registerSimpleBlockItem(AntarchyFabricBlocks.TRUFFALO_TUFT_LIGHT_BLUE); + public static final DeferredItem TRUFFALO_TUFT_YELLOW_ITEM = ITEMS.registerSimpleBlockItem(AntarchyFabricBlocks.TRUFFALO_TUFT_YELLOW); + public static final DeferredItem TRUFFALO_TUFT_LIME_ITEM = ITEMS.registerSimpleBlockItem(AntarchyFabricBlocks.TRUFFALO_TUFT_LIME); + public static final DeferredItem TRUFFALO_TUFT_PINK_ITEM = ITEMS.registerSimpleBlockItem(AntarchyFabricBlocks.TRUFFALO_TUFT_PINK); + public static final DeferredItem TRUFFALO_TUFT_GRAY_ITEM = ITEMS.registerSimpleBlockItem(AntarchyFabricBlocks.TRUFFALO_TUFT_GRAY); + public static final DeferredItem TRUFFALO_TUFT_LIGHT_GRAY_ITEM = ITEMS.registerSimpleBlockItem(AntarchyFabricBlocks.TRUFFALO_TUFT_LIGHT_GRAY); + public static final DeferredItem TRUFFALO_TUFT_CYAN_ITEM = ITEMS.registerSimpleBlockItem(AntarchyFabricBlocks.TRUFFALO_TUFT_CYAN); + public static final DeferredItem TRUFFALO_TUFT_PURPLE_ITEM = ITEMS.registerSimpleBlockItem(AntarchyFabricBlocks.TRUFFALO_TUFT_PURPLE); + public static final DeferredItem TRUFFALO_TUFT_BLUE_ITEM = ITEMS.registerSimpleBlockItem(AntarchyFabricBlocks.TRUFFALO_TUFT_BLUE); + public static final DeferredItem TRUFFALO_TUFT_BROWN_ITEM = ITEMS.registerSimpleBlockItem(AntarchyFabricBlocks.TRUFFALO_TUFT_BROWN); + public static final DeferredItem TRUFFALO_TUFT_GREEN_ITEM = ITEMS.registerSimpleBlockItem(AntarchyFabricBlocks.TRUFFALO_TUFT_GREEN); + public static final DeferredItem TRUFFALO_TUFT_RED_ITEM = ITEMS.registerSimpleBlockItem(AntarchyFabricBlocks.TRUFFALO_TUFT_RED); + public static final DeferredItem TRUFFALO_TUFT_BLACK_ITEM = ITEMS.registerSimpleBlockItem(AntarchyFabricBlocks.TRUFFALO_TUFT_BLACK); + + public static final DeferredItem CRITTER_CAGE = ITEMS.register("critter_cage", () -> new CritterCageItem(new Item.Properties().stacksTo(16))); @@ -1248,7 +1432,14 @@ public final class AntarchyFabricItems { () -> new GravityGunItem(new Item.Properties().stacksTo(1).durability(512).rarity(Rarity.RARE).fireResistant())); public static final DeferredItem PORTAL_GUN = ITEMS.register("portal_gun", - () -> new PortalGunItem(new Item.Properties().stacksTo(1).durability(256).rarity(Rarity.RARE), AntarchyFabricEntities.PORTAL_GUN_PORTAL, AntarchyFabricEntities.PORTAL_GUN_BLACK_HOLE)); + () -> new PortalGunItem( + new Item.Properties().stacksTo(1).durability(256).rarity(Rarity.RARE), + AntarchyFabricEntities.PORTAL_GUN_PORTAL, + AntarchyFabricEntities.PORTAL_GUN_BLACK_HOLE, + AntarchyFabricEntities.PORTAL_GUN_PROJECTILE, + AntarchyFabricBlocks.PORTAL_GUN_PORTAL_MASTER, + AntarchyFabricBlocks.PORTAL_GUN_PORTAL_BASE + )); // Temporarily disabled: keeping the code but not registering the item for now. diff --git a/fabric-1.21.1/src/main/java/com/craisinlord/antarchy/fabric/registry/AntarchyFabricMisc.java b/fabric-1.21.1/src/main/java/com/craisinlord/antarchy/fabric/registry/AntarchyFabricMisc.java index 1862b49c..f335ba3a 100644 --- a/fabric-1.21.1/src/main/java/com/craisinlord/antarchy/fabric/registry/AntarchyFabricMisc.java +++ b/fabric-1.21.1/src/main/java/com/craisinlord/antarchy/fabric/registry/AntarchyFabricMisc.java @@ -65,6 +65,8 @@ import com.craisinlord.antarchy.content.worldgen.elythia.ElythiaCloudFeature; import com.craisinlord.antarchy.content.worldgen.thoraxis.LucidAntiwaterPoolFeature; import com.craisinlord.antarchy.content.worldgen.thoraxis.NadirTreeConfiguration; import com.craisinlord.antarchy.content.worldgen.thoraxis.NadirTreeFeature; +import com.craisinlord.antarchy.content.worldgen.truffalo.TruffaloTreeConfiguration; +import com.craisinlord.antarchy.content.worldgen.truffalo.TruffaloTreeFeature; import com.craisinlord.antarchy.content.worldgen.thoraxis.ThoraxisBiomeSource; import com.craisinlord.antarchy.content.worldgen.thoraxis.ThoraxisDuneConfiguration; import com.craisinlord.antarchy.content.worldgen.thoraxis.ThoraxisDuneFeature; @@ -578,6 +580,10 @@ public final class AntarchyFabricMisc { () -> new NadirTreeFeature(NadirTreeConfiguration.CODEC)); + public static final DeferredHolder, TruffaloTreeFeature> TRUFFALO_TREE_FEATURE = FEATURES.register("truffalo_tree", + () -> new TruffaloTreeFeature(TruffaloTreeConfiguration.CODEC)); + + public static final DeferredHolder, ElythiaFloraFeature> ELYTHIA_FOREST_FLORA = FEATURES.register("elythia_forest_flora", () -> new ElythiaFloraFeature(NoneFeatureConfiguration.CODEC, ElythiaFloraFeature.Variant.FOREST)); diff --git a/fabric-1.21.1/src/main/java/com/craisinlord/antarchy/fabric/registry/AntarchyFabricSounds.java b/fabric-1.21.1/src/main/java/com/craisinlord/antarchy/fabric/registry/AntarchyFabricSounds.java index 8fe096bf..dd70d90f 100644 --- a/fabric-1.21.1/src/main/java/com/craisinlord/antarchy/fabric/registry/AntarchyFabricSounds.java +++ b/fabric-1.21.1/src/main/java/com/craisinlord/antarchy/fabric/registry/AntarchyFabricSounds.java @@ -515,6 +515,7 @@ public final class AntarchyFabricSounds { public static final DeferredHolder POTENT_NYXITE_GEYSER_CONTINUOUS_ACTIVE = registerSoundEvent("potent_nyxite_geyser_continuous_active"); + public static final DeferredHolder MUSIC_DISC_UNDERSIDE = registerSoundEvent("music_disc_underside"); diff --git a/gradle.properties b/gradle.properties index 79e241f9..c73771d9 100644 --- a/gradle.properties +++ b/gradle.properties @@ -6,7 +6,7 @@ org.gradle.configureondemand=true minecraft_version_1_21_1=1.21.1 modid=antarchy mod_id=antarchy -mod_version=1.1.1 +mod_version=1.2.0 maven_group=com.craisinlord mixin_version=0.15.4+mixin.0.8.7 diff --git a/neoforge-1.21.1/src/main/java/com/craisinlord/antarchy/neoforge/AntarchyWoodTypes.java b/neoforge-1.21.1/src/main/java/com/craisinlord/antarchy/neoforge/AntarchyWoodTypes.java index ba506aa6..e294bebb 100644 --- a/neoforge-1.21.1/src/main/java/com/craisinlord/antarchy/neoforge/AntarchyWoodTypes.java +++ b/neoforge-1.21.1/src/main/java/com/craisinlord/antarchy/neoforge/AntarchyWoodTypes.java @@ -8,6 +8,8 @@ public final class AntarchyWoodTypes { public static final WoodType OURANWOOD = register("ouranwood"); public static final WoodType PEACH = register("peach"); public static final WoodType NADIR = register("nadir"); + public static final WoodType ROYAL = register("royal"); + public static final WoodType TRUFFALO = register("truffalo"); private AntarchyWoodTypes() { } diff --git a/neoforge-1.21.1/src/main/java/com/craisinlord/antarchy/neoforge/client/AntarchyNeoForgeClient.java b/neoforge-1.21.1/src/main/java/com/craisinlord/antarchy/neoforge/client/AntarchyNeoForgeClient.java index 1deb6370..8e435634 100644 --- a/neoforge-1.21.1/src/main/java/com/craisinlord/antarchy/neoforge/client/AntarchyNeoForgeClient.java +++ b/neoforge-1.21.1/src/main/java/com/craisinlord/antarchy/neoforge/client/AntarchyNeoForgeClient.java @@ -78,6 +78,8 @@ public final class AntarchyNeoForgeClient { private static final ResourceLocation PEACH_CHEST_BOAT_TEXTURE = ResourceLocation.fromNamespaceAndPath(Antarchy.MODID, "textures/entity/chest_boat/peach.png"); private static final ResourceLocation NADIR_BOAT_TEXTURE = ResourceLocation.fromNamespaceAndPath(Antarchy.MODID, "textures/entity/boat/nadir.png"); private static final ResourceLocation NADIR_CHEST_BOAT_TEXTURE = ResourceLocation.fromNamespaceAndPath(Antarchy.MODID, "textures/entity/chest_boat/nadir.png"); + private static final ResourceLocation ROYAL_BOAT_TEXTURE = ResourceLocation.fromNamespaceAndPath(Antarchy.MODID, "textures/entity/boat/royal.png"); + private static final ResourceLocation ROYAL_CHEST_BOAT_TEXTURE = ResourceLocation.fromNamespaceAndPath(Antarchy.MODID, "textures/entity/chest_boat/royal.png"); private static final ResourceLocation WATER_STILL = ResourceLocation.withDefaultNamespace("block/water_still"); private static final ResourceLocation WATER_FLOW = ResourceLocation.withDefaultNamespace("block/water_flow"); private static final ResourceLocation WATER_OVERLAY = ResourceLocation.withDefaultNamespace("block/water_overlay"); @@ -108,6 +110,7 @@ public final class AntarchyNeoForgeClient { event.registerEntityRenderer(AntarchyNeoforgeEntites.WORM.get(), context -> withParalyzedGeoLayer(new WormRenderer(context))); event.registerEntityRenderer(AntarchyNeoforgeEntites.MANTIS.get(), context -> withParalyzedGeoLayer(new MantisRenderer(context))); event.registerEntityRenderer(AntarchyNeoforgeEntites.ALPHA_MANTIS.get(), context -> withParalyzedGeoLayer(new AlphaMantisRenderer(context))); + event.registerEntityRenderer(AntarchyNeoforgeEntites.HOVERBOARD.get(), com.craisinlord.antarchy.content.client.renderer.HoverboardRenderer::new); event.registerEntityRenderer(AntarchyNeoforgeEntites.MOLEVORE.get(), context -> withParalyzedGeoLayer(new MolevoreRenderer(context))); event.registerEntityRenderer(AntarchyNeoforgeEntites.TRIFFID.get(), context -> withParalyzedGeoLayer(new TriffidRenderer(context))); event.registerEntityRenderer(AntarchyNeoforgeEntites.OURANWOOD_BOAT_ENTITY.get(), context -> new OuranwoodBoatRenderer<>(context, OURANWOOD_BOAT_TEXTURE, false)); @@ -116,6 +119,8 @@ public final class AntarchyNeoForgeClient { event.registerEntityRenderer(AntarchyNeoforgeEntites.PEACH_CHEST_BOAT_ENTITY.get(), context -> new PeachBoatRenderer<>(context, PEACH_CHEST_BOAT_TEXTURE, true)); event.registerEntityRenderer(AntarchyNeoforgeEntites.NADIR_BOAT_ENTITY.get(), context -> new PeachBoatRenderer<>(context, NADIR_BOAT_TEXTURE, false)); event.registerEntityRenderer(AntarchyNeoforgeEntites.NADIR_CHEST_BOAT_ENTITY.get(), context -> new PeachBoatRenderer<>(context, NADIR_CHEST_BOAT_TEXTURE, true)); + event.registerEntityRenderer(AntarchyNeoforgeEntites.ROYAL_BOAT_ENTITY.get(), context -> new PeachBoatRenderer<>(context, ROYAL_BOAT_TEXTURE, false)); + event.registerEntityRenderer(AntarchyNeoforgeEntites.ROYAL_CHEST_BOAT_ENTITY.get(), context -> new PeachBoatRenderer<>(context, ROYAL_CHEST_BOAT_TEXTURE, true)); event.registerEntityRenderer(AntarchyNeoforgeEntites.APPLE_COW.get(), context -> withParalyzedGeoLayer(new AppleCowRenderer(context))); event.registerEntityRenderer(AntarchyNeoforgeEntites.GOLDEN_APPLE_COW.get(), context -> withParalyzedGeoLayer(new AppleCowRenderer(context))); event.registerEntityRenderer(AntarchyNeoforgeEntites.ENCHANTED_GOLDEN_APPLE_COW.get(), context -> withParalyzedGeoLayer(new AppleCowRenderer(context))); @@ -132,6 +137,7 @@ public final class AntarchyNeoForgeClient { event.registerEntityRenderer(AntarchyNeoforgeEntites.DIMENSIONAL_TEAR.get(), DimensionalTearRenderer::new); event.registerEntityRenderer(AntarchyNeoforgeEntites.PORTAL_GUN_PORTAL.get(), PortalGunPortalRenderer::new); event.registerEntityRenderer(AntarchyNeoforgeEntites.PORTAL_GUN_BLACK_HOLE.get(), com.craisinlord.antarchy.content.client.renderer.PortalGunBlackHoleRenderer::new); + event.registerEntityRenderer(AntarchyNeoforgeEntites.PORTAL_GUN_PROJECTILE.get(), com.craisinlord.antarchy.content.client.renderer.PortalGunProjectileRenderer::new); event.registerEntityRenderer(AntarchyNeoforgeEntites.NIGHTMARE_BITE.get(), NightmareBiteRenderer::new); event.registerEntityRenderer(AntarchyNeoforgeEntites.LUCID.get(), context -> withParalyzedGeoLayer(new LucidRenderer(context))); event.registerEntityRenderer(AntarchyNeoforgeEntites.BED_BUG.get(), context -> withParalyzedGeoLayer(new BedBugRenderer(context))); @@ -586,6 +592,16 @@ public final class AntarchyNeoForgeClient { ItemBlockRenderTypes.setRenderLayer(AntarchyNeoforgeBlocks.NADIR_TRAPDOOR.get(), RenderType.cutout()); ItemBlockRenderTypes.setRenderLayer(AntarchyNeoforgeBlocks.NADIR_SAPLING.get(), RenderType.cutout()); ItemBlockRenderTypes.setRenderLayer(AntarchyNeoforgeBlocks.POTTED_NADIR_SAPLING.get(), RenderType.cutout()); + ItemBlockRenderTypes.setRenderLayer(AntarchyNeoforgeBlocks.ROYAL_LEAVES.get(), RenderType.cutout()); + ItemBlockRenderTypes.setRenderLayer(AntarchyNeoforgeBlocks.ROYAL_FLOWERING_LEAVES.get(), RenderType.cutout()); + ItemBlockRenderTypes.setRenderLayer(AntarchyNeoforgeBlocks.ROYAL_DOOR.get(), RenderType.cutout()); + ItemBlockRenderTypes.setRenderLayer(AntarchyNeoforgeBlocks.ROYAL_TRAPDOOR.get(), RenderType.cutout()); + ItemBlockRenderTypes.setRenderLayer(AntarchyNeoforgeBlocks.ROYAL_SAPLING.get(), RenderType.cutout()); + ItemBlockRenderTypes.setRenderLayer(AntarchyNeoforgeBlocks.POTTED_ROYAL_SAPLING.get(), RenderType.cutout()); + ItemBlockRenderTypes.setRenderLayer(AntarchyNeoforgeBlocks.TRUFFALO_DOOR.get(), RenderType.cutout()); + ItemBlockRenderTypes.setRenderLayer(AntarchyNeoforgeBlocks.TRUFFALO_TRAPDOOR.get(), RenderType.cutout()); + ItemBlockRenderTypes.setRenderLayer(AntarchyNeoforgeBlocks.TRUFFALO_SAPLING.get(), RenderType.cutout()); + ItemBlockRenderTypes.setRenderLayer(AntarchyNeoforgeBlocks.POTTED_TRUFFALO_SAPLING.get(), RenderType.cutout()); ItemBlockRenderTypes.setRenderLayer(AntarchyNeoforgeBlocks.DUPLICATOR_SAPLING.get(), RenderType.cutout()); ItemBlockRenderTypes.setRenderLayer(AntarchyNeoforgeBlocks.ORANGE_MILKWEED.get(), RenderType.cutout()); ItemBlockRenderTypes.setRenderLayer(AntarchyNeoforgeBlocks.PINK_MILKWEED.get(), RenderType.cutout()); diff --git a/neoforge-1.21.1/src/main/java/com/craisinlord/antarchy/neoforge/client/PortalGunPortalViewRenderHandler.java b/neoforge-1.21.1/src/main/java/com/craisinlord/antarchy/neoforge/client/PortalGunPortalViewRenderHandler.java new file mode 100644 index 00000000..5e74f391 --- /dev/null +++ b/neoforge-1.21.1/src/main/java/com/craisinlord/antarchy/neoforge/client/PortalGunPortalViewRenderHandler.java @@ -0,0 +1,22 @@ +package com.craisinlord.antarchy.neoforge.client; + +import com.craisinlord.antarchy.Antarchy; +import com.craisinlord.antarchy.content.client.renderer.PortalGunPortalViewRenderer; +import net.neoforged.api.distmarker.Dist; +import net.neoforged.bus.api.SubscribeEvent; +import net.neoforged.fml.common.EventBusSubscriber; +import net.neoforged.neoforge.client.event.RenderLevelStageEvent; + +@EventBusSubscriber(modid = Antarchy.MODID, value = Dist.CLIENT, bus = EventBusSubscriber.Bus.GAME) +public final class PortalGunPortalViewRenderHandler { + private PortalGunPortalViewRenderHandler() { + } + + @SubscribeEvent + public static void onRenderLevelStage(RenderLevelStageEvent event) { + if (event.getStage() != RenderLevelStageEvent.Stage.AFTER_PARTICLES) { + return; + } + PortalGunPortalViewRenderer.render(event.getCamera(), event.getPoseStack().last().pose(), event.getPartialTick()); + } +} diff --git a/neoforge-1.21.1/src/main/java/com/craisinlord/antarchy/neoforge/client/PortalGunRollClientHandler.java b/neoforge-1.21.1/src/main/java/com/craisinlord/antarchy/neoforge/client/PortalGunRollClientHandler.java new file mode 100644 index 00000000..7a9c7329 --- /dev/null +++ b/neoforge-1.21.1/src/main/java/com/craisinlord/antarchy/neoforge/client/PortalGunRollClientHandler.java @@ -0,0 +1,20 @@ +package com.craisinlord.antarchy.neoforge.client; + +import com.craisinlord.antarchy.Antarchy; +import com.craisinlord.antarchy.content.client.PortalGunRollClientState; +import net.minecraft.client.Minecraft; +import net.neoforged.api.distmarker.Dist; +import net.neoforged.bus.api.SubscribeEvent; +import net.neoforged.fml.common.EventBusSubscriber; +import net.neoforged.neoforge.client.event.ClientTickEvent; + +@EventBusSubscriber(modid = Antarchy.MODID, value = Dist.CLIENT, bus = EventBusSubscriber.Bus.GAME) +public final class PortalGunRollClientHandler { + private PortalGunRollClientHandler() { + } + + @SubscribeEvent + public static void onClientTick(ClientTickEvent.Post event) { + PortalGunRollClientState.tick(Minecraft.getInstance()); + } +} diff --git a/neoforge-1.21.1/src/main/java/com/craisinlord/antarchy/neoforge/registry/AntarchyNeoforgeBlocks.java b/neoforge-1.21.1/src/main/java/com/craisinlord/antarchy/neoforge/registry/AntarchyNeoforgeBlocks.java index 0dec6de5..a347f58d 100644 --- a/neoforge-1.21.1/src/main/java/com/craisinlord/antarchy/neoforge/registry/AntarchyNeoforgeBlocks.java +++ b/neoforge-1.21.1/src/main/java/com/craisinlord/antarchy/neoforge/registry/AntarchyNeoforgeBlocks.java @@ -9,6 +9,8 @@ import com.craisinlord.antarchy.content.block.entity.CritterCageBlockEntity; import com.craisinlord.antarchy.content.block.entity.DreamCampfireBlockEntity; import com.craisinlord.antarchy.content.block.entity.HushweedBlockEntity; import com.craisinlord.antarchy.content.block.entity.LucidAnchorBlockEntity; +import com.craisinlord.antarchy.content.block.entity.PortalGunPortalBaseBlockEntity; +import com.craisinlord.antarchy.content.block.entity.PortalGunPortalMasterBlockEntity; import com.craisinlord.antarchy.content.block.entity.PotentNyxiteBlockEntity; import com.craisinlord.antarchy.content.block.entity.SeashellBlockEntity; import com.craisinlord.antarchy.content.block.entity.UpperBlockEntity; @@ -103,6 +105,10 @@ public final class AntarchyNeoforgeBlocks { () -> new LucidAnchorBlock(BlockBehaviour.Properties.ofFullCopy(Blocks.BEACON).strength(3.0F))); public static final DeferredBlock CRITTER_CAGE_BLOCK = BLOCKS.register("critter_cage_block", () -> new CritterCageBlock(BlockBehaviour.Properties.of().strength(5.0F, 6.0F).sound(net.minecraft.world.level.block.SoundType.METAL).noOcclusion())); + public static final DeferredBlock PORTAL_GUN_PORTAL_MASTER = BLOCKS.register("portal_gun_portal_master", + () -> new PortalGunPortalMasterBlock(AntarchyNeoforgeBlocks::portalGunPortalMasterBlockEntityType, portalProperties())); + public static final DeferredBlock PORTAL_GUN_PORTAL_BASE = BLOCKS.register("portal_gun_portal_base", + () -> new PortalGunPortalBaseBlock(AntarchyNeoforgeBlocks::portalGunPortalBaseBlockEntityType, portalProperties())); public static final DeferredBlock OURANWOOD_SIGN = BLOCKS.register("ouranwood_sign", () -> new StandingSignBlock(AntarchyWoodTypes.OURANWOOD, BlockBehaviour.Properties.ofFullCopy(Blocks.JUNGLE_SIGN))); public static final DeferredBlock OURANWOOD_WALL_SIGN = BLOCKS.register("ouranwood_wall_sign", @@ -195,6 +201,118 @@ public final class AntarchyNeoforgeBlocks { () -> new WallHangingSignBlock(AntarchyWoodTypes.NADIR, BlockBehaviour.Properties.ofFullCopy(Blocks.JUNGLE_WALL_HANGING_SIGN))); public static final DeferredBlock DUPLICATOR_SAPLING = BLOCKS.register("duplicator_sapling", () -> new DuplicatorSaplingBlock(BlockBehaviour.Properties.ofFullCopy(Blocks.OAK_SAPLING).randomTicks().noCollission())); + public static final DeferredBlock ROYAL_LOG = BLOCKS.register("royal_log", + () -> new RotatedPillarBlock(BlockBehaviour.Properties.ofFullCopy(Blocks.JUNGLE_LOG))); + public static final DeferredBlock ROYAL_WOOD = BLOCKS.register("royal_wood", + () -> new RotatedPillarBlock(BlockBehaviour.Properties.ofFullCopy(Blocks.JUNGLE_WOOD))); + public static final DeferredBlock STRIPPED_ROYAL_LOG = BLOCKS.register("stripped_royal_log", + () -> new RotatedPillarBlock(BlockBehaviour.Properties.ofFullCopy(Blocks.STRIPPED_JUNGLE_LOG))); + public static final DeferredBlock STRIPPED_ROYAL_WOOD = BLOCKS.register("stripped_royal_wood", + () -> new RotatedPillarBlock(BlockBehaviour.Properties.ofFullCopy(Blocks.STRIPPED_JUNGLE_WOOD))); + public static final DeferredBlock ROYAL_PLANKS = BLOCKS.register("royal_planks", + () -> new Block(BlockBehaviour.Properties.ofFullCopy(Blocks.JUNGLE_PLANKS))); + public static final DeferredBlock ROYAL_STAIRS = BLOCKS.register("royal_stairs", + () -> new StairBlock(ROYAL_PLANKS.get().defaultBlockState(), BlockBehaviour.Properties.ofFullCopy(Blocks.JUNGLE_STAIRS))); + public static final DeferredBlock ROYAL_SLAB = BLOCKS.register("royal_slab", + () -> new SlabBlock(BlockBehaviour.Properties.ofFullCopy(Blocks.JUNGLE_SLAB))); + public static final DeferredBlock ROYAL_FENCE = BLOCKS.register("royal_fence", + () -> new FenceBlock(BlockBehaviour.Properties.ofFullCopy(Blocks.JUNGLE_FENCE))); + public static final DeferredBlock ROYAL_FENCE_GATE = BLOCKS.register("royal_fence_gate", + () -> new FenceGateBlock(WoodType.JUNGLE, BlockBehaviour.Properties.ofFullCopy(Blocks.JUNGLE_FENCE_GATE))); + public static final DeferredBlock ROYAL_DOOR = BLOCKS.register("royal_door", + () -> new DoorBlock(BlockSetType.JUNGLE, BlockBehaviour.Properties.ofFullCopy(Blocks.JUNGLE_DOOR))); + public static final DeferredBlock ROYAL_TRAPDOOR = BLOCKS.register("royal_trapdoor", + () -> new TrapDoorBlock(BlockSetType.JUNGLE, BlockBehaviour.Properties.ofFullCopy(Blocks.JUNGLE_TRAPDOOR))); + public static final DeferredBlock ROYAL_PRESSURE_PLATE = BLOCKS.register("royal_pressure_plate", + () -> new PressurePlateBlock(BlockSetType.JUNGLE, BlockBehaviour.Properties.ofFullCopy(Blocks.JUNGLE_PRESSURE_PLATE))); + public static final DeferredBlock ROYAL_BUTTON = BLOCKS.register("royal_button", + () -> new ButtonBlock(BlockSetType.JUNGLE, 30, BlockBehaviour.Properties.ofFullCopy(Blocks.JUNGLE_BUTTON))); + public static final DeferredBlock ROYAL_LEAVES = BLOCKS.register("royal_leaves", + () -> new LeavesBlock(BlockBehaviour.Properties.ofFullCopy(Blocks.JUNGLE_LEAVES).randomTicks())); + public static final DeferredBlock ROYAL_FLOWERING_LEAVES = BLOCKS.register("royal_flowering_leaves", + () -> new LeavesBlock(BlockBehaviour.Properties.ofFullCopy(Blocks.JUNGLE_LEAVES).randomTicks().lightLevel(state -> 12))); + public static final DeferredBlock ROYAL_SAPLING = BLOCKS.register("royal_sapling", + () -> new RoyalSaplingBlock(BlockBehaviour.Properties.ofFullCopy(Blocks.OAK_SAPLING).noCollission())); + public static final DeferredBlock POTTED_ROYAL_SAPLING = BLOCKS.register("potted_royal_sapling", + () -> new FlowerPotBlock(ROYAL_SAPLING.get(), BlockBehaviour.Properties.ofFullCopy(Blocks.POTTED_DANDELION))); + public static final DeferredBlock ROYAL_SIGN = BLOCKS.register("royal_sign", + () -> new StandingSignBlock(AntarchyWoodTypes.ROYAL, BlockBehaviour.Properties.ofFullCopy(Blocks.JUNGLE_SIGN))); + public static final DeferredBlock ROYAL_WALL_SIGN = BLOCKS.register("royal_wall_sign", + () -> new WallSignBlock(AntarchyWoodTypes.ROYAL, BlockBehaviour.Properties.ofFullCopy(Blocks.JUNGLE_WALL_SIGN))); + public static final DeferredBlock ROYAL_HANGING_SIGN = BLOCKS.register("royal_hanging_sign", + () -> new CeilingHangingSignBlock(AntarchyWoodTypes.ROYAL, BlockBehaviour.Properties.ofFullCopy(Blocks.JUNGLE_HANGING_SIGN))); + public static final DeferredBlock ROYAL_WALL_HANGING_SIGN = BLOCKS.register("royal_wall_hanging_sign", + () -> new WallHangingSignBlock(AntarchyWoodTypes.ROYAL, BlockBehaviour.Properties.ofFullCopy(Blocks.JUNGLE_WALL_HANGING_SIGN))); + public static final DeferredBlock TRUFFALO_LOG = BLOCKS.register("truffalo_log", + () -> new TruffaloLogBlock(BlockBehaviour.Properties.ofFullCopy(Blocks.JUNGLE_LOG))); + public static final DeferredBlock TRUFFALO_WOOD = BLOCKS.register("truffalo_wood", + () -> new RotatedPillarBlock(BlockBehaviour.Properties.ofFullCopy(Blocks.JUNGLE_WOOD))); + public static final DeferredBlock STRIPPED_TRUFFALO_LOG = BLOCKS.register("stripped_truffalo_log", + () -> new TruffaloLogBlock(BlockBehaviour.Properties.ofFullCopy(Blocks.STRIPPED_JUNGLE_LOG))); + public static final DeferredBlock STRIPPED_TRUFFALO_WOOD = BLOCKS.register("stripped_truffalo_wood", + () -> new RotatedPillarBlock(BlockBehaviour.Properties.ofFullCopy(Blocks.STRIPPED_JUNGLE_WOOD))); + public static final DeferredBlock TRUFFALO_PLANKS = BLOCKS.register("truffalo_planks", + () -> new Block(BlockBehaviour.Properties.ofFullCopy(Blocks.JUNGLE_PLANKS))); + public static final DeferredBlock TRUFFALO_STAIRS = BLOCKS.register("truffalo_stairs", + () -> new StairBlock(TRUFFALO_PLANKS.get().defaultBlockState(), BlockBehaviour.Properties.ofFullCopy(Blocks.JUNGLE_STAIRS))); + public static final DeferredBlock TRUFFALO_SLAB = BLOCKS.register("truffalo_slab", + () -> new SlabBlock(BlockBehaviour.Properties.ofFullCopy(Blocks.JUNGLE_SLAB))); + public static final DeferredBlock TRUFFALO_FENCE = BLOCKS.register("truffalo_fence", + () -> new FenceBlock(BlockBehaviour.Properties.ofFullCopy(Blocks.JUNGLE_FENCE))); + public static final DeferredBlock TRUFFALO_FENCE_GATE = BLOCKS.register("truffalo_fence_gate", + () -> new FenceGateBlock(WoodType.JUNGLE, BlockBehaviour.Properties.ofFullCopy(Blocks.JUNGLE_FENCE_GATE))); + public static final DeferredBlock TRUFFALO_DOOR = BLOCKS.register("truffalo_door", + () -> new DoorBlock(BlockSetType.JUNGLE, BlockBehaviour.Properties.ofFullCopy(Blocks.JUNGLE_DOOR))); + public static final DeferredBlock TRUFFALO_TRAPDOOR = BLOCKS.register("truffalo_trapdoor", + () -> new TrapDoorBlock(BlockSetType.JUNGLE, BlockBehaviour.Properties.ofFullCopy(Blocks.JUNGLE_TRAPDOOR))); + public static final DeferredBlock TRUFFALO_PRESSURE_PLATE = BLOCKS.register("truffalo_pressure_plate", + () -> new PressurePlateBlock(BlockSetType.JUNGLE, BlockBehaviour.Properties.ofFullCopy(Blocks.JUNGLE_PRESSURE_PLATE))); + public static final DeferredBlock TRUFFALO_BUTTON = BLOCKS.register("truffalo_button", + () -> new ButtonBlock(BlockSetType.JUNGLE, 30, BlockBehaviour.Properties.ofFullCopy(Blocks.JUNGLE_BUTTON))); + public static final DeferredBlock TRUFFALO_SAPLING = BLOCKS.register("truffalo_sapling", + () -> new TruffaloSaplingBlock(BlockBehaviour.Properties.ofFullCopy(Blocks.OAK_SAPLING).randomTicks().noCollission())); + public static final DeferredBlock POTTED_TRUFFALO_SAPLING = BLOCKS.register("potted_truffalo_sapling", + () -> new FlowerPotBlock(TRUFFALO_SAPLING.get(), BlockBehaviour.Properties.ofFullCopy(Blocks.POTTED_DANDELION))); + public static final DeferredBlock TRUFFALO_SIGN = BLOCKS.register("truffalo_sign", + () -> new StandingSignBlock(AntarchyWoodTypes.TRUFFALO, BlockBehaviour.Properties.ofFullCopy(Blocks.JUNGLE_SIGN))); + public static final DeferredBlock TRUFFALO_WALL_SIGN = BLOCKS.register("truffalo_wall_sign", + () -> new WallSignBlock(AntarchyWoodTypes.TRUFFALO, BlockBehaviour.Properties.ofFullCopy(Blocks.JUNGLE_WALL_SIGN))); + public static final DeferredBlock TRUFFALO_HANGING_SIGN = BLOCKS.register("truffalo_hanging_sign", + () -> new CeilingHangingSignBlock(AntarchyWoodTypes.TRUFFALO, BlockBehaviour.Properties.ofFullCopy(Blocks.JUNGLE_HANGING_SIGN))); + public static final DeferredBlock TRUFFALO_WALL_HANGING_SIGN = BLOCKS.register("truffalo_wall_hanging_sign", + () -> new WallHangingSignBlock(AntarchyWoodTypes.TRUFFALO, BlockBehaviour.Properties.ofFullCopy(Blocks.JUNGLE_WALL_HANGING_SIGN))); + public static final DeferredBlock TRUFFALO_TUFT_WHITE = BLOCKS.register("white_truffalo_tuft", + () -> new TruffaloTuftBlock(BlockBehaviour.Properties.ofFullCopy(Blocks.WHITE_WOOL))); + public static final DeferredBlock TRUFFALO_TUFT_ORANGE = BLOCKS.register("orange_truffalo_tuft", + () -> new TruffaloTuftBlock(BlockBehaviour.Properties.ofFullCopy(Blocks.ORANGE_WOOL))); + public static final DeferredBlock TRUFFALO_TUFT_MAGENTA = BLOCKS.register("magenta_truffalo_tuft", + () -> new TruffaloTuftBlock(BlockBehaviour.Properties.ofFullCopy(Blocks.MAGENTA_WOOL))); + public static final DeferredBlock TRUFFALO_TUFT_LIGHT_BLUE = BLOCKS.register("light_blue_truffalo_tuft", + () -> new TruffaloTuftBlock(BlockBehaviour.Properties.ofFullCopy(Blocks.LIGHT_BLUE_WOOL))); + public static final DeferredBlock TRUFFALO_TUFT_YELLOW = BLOCKS.register("yellow_truffalo_tuft", + () -> new TruffaloTuftBlock(BlockBehaviour.Properties.ofFullCopy(Blocks.YELLOW_WOOL))); + public static final DeferredBlock TRUFFALO_TUFT_LIME = BLOCKS.register("lime_truffalo_tuft", + () -> new TruffaloTuftBlock(BlockBehaviour.Properties.ofFullCopy(Blocks.LIME_WOOL))); + public static final DeferredBlock TRUFFALO_TUFT_PINK = BLOCKS.register("pink_truffalo_tuft", + () -> new TruffaloTuftBlock(BlockBehaviour.Properties.ofFullCopy(Blocks.PINK_WOOL))); + public static final DeferredBlock TRUFFALO_TUFT_GRAY = BLOCKS.register("gray_truffalo_tuft", + () -> new TruffaloTuftBlock(BlockBehaviour.Properties.ofFullCopy(Blocks.GRAY_WOOL))); + public static final DeferredBlock TRUFFALO_TUFT_LIGHT_GRAY = BLOCKS.register("light_gray_truffalo_tuft", + () -> new TruffaloTuftBlock(BlockBehaviour.Properties.ofFullCopy(Blocks.LIGHT_GRAY_WOOL))); + public static final DeferredBlock TRUFFALO_TUFT_CYAN = BLOCKS.register("cyan_truffalo_tuft", + () -> new TruffaloTuftBlock(BlockBehaviour.Properties.ofFullCopy(Blocks.CYAN_WOOL))); + public static final DeferredBlock TRUFFALO_TUFT_PURPLE = BLOCKS.register("purple_truffalo_tuft", + () -> new TruffaloTuftBlock(BlockBehaviour.Properties.ofFullCopy(Blocks.PURPLE_WOOL))); + public static final DeferredBlock TRUFFALO_TUFT_BLUE = BLOCKS.register("blue_truffalo_tuft", + () -> new TruffaloTuftBlock(BlockBehaviour.Properties.ofFullCopy(Blocks.BLUE_WOOL))); + public static final DeferredBlock TRUFFALO_TUFT_BROWN = BLOCKS.register("brown_truffalo_tuft", + () -> new TruffaloTuftBlock(BlockBehaviour.Properties.ofFullCopy(Blocks.BROWN_WOOL))); + public static final DeferredBlock TRUFFALO_TUFT_GREEN = BLOCKS.register("green_truffalo_tuft", + () -> new TruffaloTuftBlock(BlockBehaviour.Properties.ofFullCopy(Blocks.GREEN_WOOL))); + public static final DeferredBlock TRUFFALO_TUFT_RED = BLOCKS.register("red_truffalo_tuft", + () -> new TruffaloTuftBlock(BlockBehaviour.Properties.ofFullCopy(Blocks.RED_WOOL))); + public static final DeferredBlock TRUFFALO_TUFT_BLACK = BLOCKS.register("black_truffalo_tuft", + () -> new TruffaloTuftBlock(BlockBehaviour.Properties.ofFullCopy(Blocks.BLACK_WOOL))); public static final DeferredBlock DUCT_TAPE = BLOCKS.register("duct_tape", () -> new DuctTapeBlock(BlockBehaviour.Properties.of() .strength(0.2F) @@ -724,6 +842,16 @@ public final class AntarchyNeoforgeBlocks { (pos, state) -> new UpperBlockEntity(pos, state, AntarchyNeoforgeBlocks::upperBlockEntityType), UPPER.get() ).build(null)); + public static final DeferredHolder, BlockEntityType> PORTAL_GUN_PORTAL_MASTER_BLOCK_ENTITY = BLOCK_ENTITY_TYPES.register("portal_gun_portal_master", + () -> BlockEntityType.Builder.of( + (pos, state) -> new PortalGunPortalMasterBlockEntity(pos, state, AntarchyNeoforgeBlocks::portalGunPortalMasterBlockEntityType), + PORTAL_GUN_PORTAL_MASTER.get() + ).build(null)); + public static final DeferredHolder, BlockEntityType> PORTAL_GUN_PORTAL_BASE_BLOCK_ENTITY = BLOCK_ENTITY_TYPES.register("portal_gun_portal_base", + () -> BlockEntityType.Builder.of( + (pos, state) -> new PortalGunPortalBaseBlockEntity(pos, state, AntarchyNeoforgeBlocks::portalGunPortalBaseBlockEntityType), + PORTAL_GUN_PORTAL_BASE.get() + ).build(null)); private AntarchyNeoforgeBlocks() {} @@ -791,6 +919,14 @@ public final class AntarchyNeoforgeBlocks { return UPPER_BLOCK_ENTITY.get(); } + private static BlockEntityType portalGunPortalMasterBlockEntityType() { + return PORTAL_GUN_PORTAL_MASTER_BLOCK_ENTITY.get(); + } + + private static BlockEntityType portalGunPortalBaseBlockEntityType() { + return PORTAL_GUN_PORTAL_BASE_BLOCK_ENTITY.get(); + } + private static final class SimpleHorizontalFacingBlock extends HorizontalDirectionalBlock { private static final MapCodec CODEC = simpleCodec(SimpleHorizontalFacingBlock::new); diff --git a/neoforge-1.21.1/src/main/java/com/craisinlord/antarchy/neoforge/registry/AntarchyNeoforgeEntites.java b/neoforge-1.21.1/src/main/java/com/craisinlord/antarchy/neoforge/registry/AntarchyNeoforgeEntites.java index b7ef9a84..66b6962b 100644 --- a/neoforge-1.21.1/src/main/java/com/craisinlord/antarchy/neoforge/registry/AntarchyNeoforgeEntites.java +++ b/neoforge-1.21.1/src/main/java/com/craisinlord/antarchy/neoforge/registry/AntarchyNeoforgeEntites.java @@ -20,6 +20,7 @@ import com.craisinlord.antarchy.content.entity.HushProjectileEntity; import com.craisinlord.antarchy.content.entity.CritterCageProjectileEntity; import com.craisinlord.antarchy.content.entity.WormHookProjectileEntity; import com.craisinlord.antarchy.content.entity.HerculesBeetleEntity; +import com.craisinlord.antarchy.content.entity.HoverboardEntity; import com.craisinlord.antarchy.content.entity.JerryEntity; import com.craisinlord.antarchy.content.entity.JumpyBugEntity; import com.craisinlord.antarchy.content.entity.AlphaMantisEntity; @@ -34,6 +35,10 @@ import com.craisinlord.antarchy.content.entity.OuranwoodBoatEntity; import com.craisinlord.antarchy.content.entity.OuranwoodChestBoatEntity; import com.craisinlord.antarchy.content.entity.NadirBoatEntity; import com.craisinlord.antarchy.content.entity.NadirChestBoatEntity; +import com.craisinlord.antarchy.content.entity.RoyalBoatEntity; +import com.craisinlord.antarchy.content.entity.RoyalChestBoatEntity; +import com.craisinlord.antarchy.content.entity.TruffaloBoatEntity; +import com.craisinlord.antarchy.content.entity.TruffaloChestBoatEntity; import com.craisinlord.antarchy.content.entity.PeachBoatEntity; import com.craisinlord.antarchy.content.entity.PeachChestBoatEntity; import com.craisinlord.antarchy.content.entity.ReverieEntity; @@ -71,6 +76,7 @@ import com.craisinlord.antarchy.content.entity.LurkingTerrorEntity; import com.craisinlord.antarchy.content.entity.ToreterrorEntity; import com.craisinlord.antarchy.content.entity.WaterBombEntity; import com.craisinlord.antarchy.content.portalgun.PortalGunPortalEntity; +import com.craisinlord.antarchy.content.portalgun.PortalGunProjectileEntity; import net.minecraft.core.registries.Registries; import net.minecraft.world.entity.EntityType; import net.minecraft.world.entity.MobCategory; @@ -162,6 +168,35 @@ public final class AntarchyNeoforgeEntites { .clientTrackingRange(10) .updateInterval(10) .build("nadir_chest_boat")); + public static final DeferredHolder, EntityType> ROYAL_BOAT_ENTITY = ENTITY_TYPES.register("royal_boat", + () -> EntityType.Builder.of(RoyalBoatEntity::new, MobCategory.MISC) + .sized(1.375F, 0.5625F) + .clientTrackingRange(10) + .updateInterval(10) + .build("royal_boat")); + public static final DeferredHolder, EntityType> ROYAL_CHEST_BOAT_ENTITY = ENTITY_TYPES.register("royal_chest_boat", + () -> EntityType.Builder.of(RoyalChestBoatEntity::new, MobCategory.MISC) + .sized(1.375F, 0.5625F) + .clientTrackingRange(10) + .updateInterval(10) + .build("royal_chest_boat")); + public static final DeferredHolder, EntityType> TRUFFALO_BOAT_ENTITY = ENTITY_TYPES.register("truffalo_boat", + () -> EntityType.Builder.of(TruffaloBoatEntity::new, MobCategory.MISC) + .sized(1.375F, 0.5625F) + .clientTrackingRange(10) + .updateInterval(10) + .build("truffalo_boat")); + public static final DeferredHolder, EntityType> TRUFFALO_CHEST_BOAT_ENTITY = ENTITY_TYPES.register("truffalo_chest_boat", + () -> EntityType.Builder.of(TruffaloChestBoatEntity::new, MobCategory.MISC) + .sized(1.375F, 0.5625F) + .clientTrackingRange(10) + .updateInterval(10) + .build("truffalo_chest_boat")); + public static final DeferredHolder, EntityType> HOVERBOARD = ENTITY_TYPES.register("hoverboard", + () -> EntityType.Builder.of(HoverboardEntity::new, MobCategory.MISC) + .sized(1.5F, 0.6875F) + .clientTrackingRange(10) + .build("hoverboard")); public static final DeferredHolder, EntityType> MOLEVORE = ENTITY_TYPES.register("molevore", () -> EntityType.Builder.of(MolevoreEntity::new, MobCategory.MONSTER) .sized(1.95F, 1.1F) @@ -316,6 +351,12 @@ public final class AntarchyNeoforgeEntites { .clientTrackingRange(10) .updateInterval(1) .build("portal_gun_black_hole")); + public static final DeferredHolder, EntityType> PORTAL_GUN_PROJECTILE = ENTITY_TYPES.register("portal_gun_projectile", + () -> EntityType.Builder.of(PortalGunProjectileEntity::new, MobCategory.MISC) + .sized(0.25F, 0.25F) + .clientTrackingRange(8) + .updateInterval(1) + .build("portal_gun_projectile")); public static final DeferredHolder, EntityType> NIGHTMARE_BITE = ENTITY_TYPES.register("nightmare_bite", () -> EntityType.Builder.of(NightmareBiteEntity::new, MobCategory.MISC) .sized(2.5F, 2.0F) diff --git a/neoforge-1.21.1/src/main/java/com/craisinlord/antarchy/neoforge/registry/AntarchyNeoforgeEntityAttributes.java b/neoforge-1.21.1/src/main/java/com/craisinlord/antarchy/neoforge/registry/AntarchyNeoforgeEntityAttributes.java index cebbad46..f074f93e 100644 --- a/neoforge-1.21.1/src/main/java/com/craisinlord/antarchy/neoforge/registry/AntarchyNeoforgeEntityAttributes.java +++ b/neoforge-1.21.1/src/main/java/com/craisinlord/antarchy/neoforge/registry/AntarchyNeoforgeEntityAttributes.java @@ -87,6 +87,7 @@ public class AntarchyNeoforgeEntityAttributes { event.put(AntarchyNeoforgeEntites.OURANWOOD_DEER.get(), com.craisinlord.antarchy.content.entity.OuranwoodDeerEntity.createAttributes().build()); event.put(AntarchyNeoforgeEntites.GLIMMER.get(), com.craisinlord.antarchy.content.entity.glimmer.GlimmerEntity.createAttributes().build()); event.put(AntarchyNeoforgeEntites.ELKA.get(), ElkaEntity.createAttributes().build()); + event.put(AntarchyNeoforgeEntites.HOVERBOARD.get(), com.craisinlord.antarchy.content.entity.HoverboardEntity.createAttributes().build()); } private static AttributeSupplier.Builder buildAntAttributes(double health, double speed, double attackDamage) { diff --git a/neoforge-1.21.1/src/main/java/com/craisinlord/antarchy/neoforge/registry/AntarchyNeoforgeItems.java b/neoforge-1.21.1/src/main/java/com/craisinlord/antarchy/neoforge/registry/AntarchyNeoforgeItems.java index 0bf7637b..f725951b 100644 --- a/neoforge-1.21.1/src/main/java/com/craisinlord/antarchy/neoforge/registry/AntarchyNeoforgeItems.java +++ b/neoforge-1.21.1/src/main/java/com/craisinlord/antarchy/neoforge/registry/AntarchyNeoforgeItems.java @@ -24,6 +24,7 @@ import com.craisinlord.antarchy.content.item.OuranwoodChestBoatItem; import com.craisinlord.antarchy.content.item.RainbowSugarItem; import net.minecraft.core.registries.BuiltInRegistries; import net.minecraft.core.registries.Registries; +import net.minecraft.resources.ResourceKey; import net.minecraft.resources.ResourceLocation; import net.minecraft.world.effect.MobEffectInstance; import net.minecraft.world.effect.MobEffects; @@ -75,6 +76,11 @@ public final class AntarchyNeoforgeItems { public static final DeferredItem NIGHTMARE_SCALE = ITEMS.registerSimpleItem("nightmare_scale", new Item.Properties().rarity(Rarity.RARE).fireResistant()); + public static final DeferredItem MUSIC_DISC_UNDERSIDE = ITEMS.registerSimpleItem("music_disc_underside", + new Item.Properties().stacksTo(1).rarity(Rarity.RARE) + .jukeboxPlayable(ResourceKey.create(Registries.JUKEBOX_SONG, + ResourceLocation.fromNamespaceAndPath(Antarchy.MODID, "underside")))); + private static final DeferredHolder ULTIMATE_ARMOR_MATERIAL = ARMOR_MATERIALS.register("ultimate", () -> new ArmorMaterial( createUltimateArmorDefense(), @@ -225,6 +231,40 @@ public final class AntarchyNeoforgeItems { () -> new OuranwoodBoatOnlyItem(AntarchyNeoforgeEntites.OURANWOOD_BOAT_ENTITY.get(), new Item.Properties().stacksTo(1))); public static final DeferredItem OURANWOOD_CHEST_BOAT = ITEMS.register("ouranwood_chest_boat", () -> new OuranwoodChestBoatItem(AntarchyNeoforgeEntites.OURANWOOD_CHEST_BOAT_ENTITY.get(), new Item.Properties().stacksTo(1))); + public static final DeferredItem HOVERBOARD = ITEMS.register("hoverboard", + () -> new HoverboardItem(AntarchyNeoforgeEntites.HOVERBOARD.get(), null, new Item.Properties().stacksTo(1))); + public static final DeferredItem HOVERBOARD_WHITE = ITEMS.register("hoverboard_white", + () -> new HoverboardItem(AntarchyNeoforgeEntites.HOVERBOARD.get(), DyeColor.WHITE, new Item.Properties().stacksTo(1))); + public static final DeferredItem HOVERBOARD_ORANGE = ITEMS.register("hoverboard_orange", + () -> new HoverboardItem(AntarchyNeoforgeEntites.HOVERBOARD.get(), DyeColor.ORANGE, new Item.Properties().stacksTo(1))); + public static final DeferredItem HOVERBOARD_MAGENTA = ITEMS.register("hoverboard_magenta", + () -> new HoverboardItem(AntarchyNeoforgeEntites.HOVERBOARD.get(), DyeColor.MAGENTA, new Item.Properties().stacksTo(1))); + public static final DeferredItem HOVERBOARD_LIGHT_BLUE = ITEMS.register("hoverboard_light_blue", + () -> new HoverboardItem(AntarchyNeoforgeEntites.HOVERBOARD.get(), DyeColor.LIGHT_BLUE, new Item.Properties().stacksTo(1))); + public static final DeferredItem HOVERBOARD_YELLOW = ITEMS.register("hoverboard_yellow", + () -> new HoverboardItem(AntarchyNeoforgeEntites.HOVERBOARD.get(), DyeColor.YELLOW, new Item.Properties().stacksTo(1))); + public static final DeferredItem HOVERBOARD_LIME = ITEMS.register("hoverboard_lime", + () -> new HoverboardItem(AntarchyNeoforgeEntites.HOVERBOARD.get(), DyeColor.LIME, new Item.Properties().stacksTo(1))); + public static final DeferredItem HOVERBOARD_PINK = ITEMS.register("hoverboard_pink", + () -> new HoverboardItem(AntarchyNeoforgeEntites.HOVERBOARD.get(), DyeColor.PINK, new Item.Properties().stacksTo(1))); + public static final DeferredItem HOVERBOARD_GRAY = ITEMS.register("hoverboard_gray", + () -> new HoverboardItem(AntarchyNeoforgeEntites.HOVERBOARD.get(), DyeColor.GRAY, new Item.Properties().stacksTo(1))); + public static final DeferredItem HOVERBOARD_LIGHT_GRAY = ITEMS.register("hoverboard_light_gray", + () -> new HoverboardItem(AntarchyNeoforgeEntites.HOVERBOARD.get(), DyeColor.LIGHT_GRAY, new Item.Properties().stacksTo(1))); + public static final DeferredItem HOVERBOARD_CYAN = ITEMS.register("hoverboard_cyan", + () -> new HoverboardItem(AntarchyNeoforgeEntites.HOVERBOARD.get(), DyeColor.CYAN, new Item.Properties().stacksTo(1))); + public static final DeferredItem HOVERBOARD_PURPLE = ITEMS.register("hoverboard_purple", + () -> new HoverboardItem(AntarchyNeoforgeEntites.HOVERBOARD.get(), DyeColor.PURPLE, new Item.Properties().stacksTo(1))); + public static final DeferredItem HOVERBOARD_BLUE = ITEMS.register("hoverboard_blue", + () -> new HoverboardItem(AntarchyNeoforgeEntites.HOVERBOARD.get(), DyeColor.BLUE, new Item.Properties().stacksTo(1))); + public static final DeferredItem HOVERBOARD_BROWN = ITEMS.register("hoverboard_brown", + () -> new HoverboardItem(AntarchyNeoforgeEntites.HOVERBOARD.get(), DyeColor.BROWN, new Item.Properties().stacksTo(1))); + public static final DeferredItem HOVERBOARD_GREEN = ITEMS.register("hoverboard_green", + () -> new HoverboardItem(AntarchyNeoforgeEntites.HOVERBOARD.get(), DyeColor.GREEN, new Item.Properties().stacksTo(1))); + public static final DeferredItem HOVERBOARD_RED = ITEMS.register("hoverboard_red", + () -> new HoverboardItem(AntarchyNeoforgeEntites.HOVERBOARD.get(), DyeColor.RED, new Item.Properties().stacksTo(1))); + public static final DeferredItem HOVERBOARD_BLACK = ITEMS.register("hoverboard_black", + () -> new HoverboardItem(AntarchyNeoforgeEntites.HOVERBOARD.get(), DyeColor.BLACK, new Item.Properties().stacksTo(1))); public static final DeferredItem PEACH_SIGN_ITEM = ITEMS.register("peach_sign", () -> new net.minecraft.world.item.SignItem(new Item.Properties().stacksTo(16), AntarchyNeoforgeBlocks.PEACH_SIGN.get(), AntarchyNeoforgeBlocks.PEACH_WALL_SIGN.get())); public static final DeferredItem PEACH_HANGING_SIGN_ITEM = ITEMS.register("peach_hanging_sign", @@ -241,6 +281,68 @@ public final class AntarchyNeoforgeItems { () -> new NadirBoatOnlyItem(AntarchyNeoforgeEntites.NADIR_BOAT_ENTITY.get(), new Item.Properties().stacksTo(1))); public static final DeferredItem NADIR_CHEST_BOAT = ITEMS.register("nadir_chest_boat", () -> new NadirChestBoatItem(AntarchyNeoforgeEntites.NADIR_CHEST_BOAT_ENTITY.get(), new Item.Properties().stacksTo(1))); + public static final DeferredItem ROYAL_LOG_ITEM = ITEMS.registerSimpleBlockItem(AntarchyNeoforgeBlocks.ROYAL_LOG); + public static final DeferredItem ROYAL_WOOD_ITEM = ITEMS.registerSimpleBlockItem(AntarchyNeoforgeBlocks.ROYAL_WOOD); + public static final DeferredItem STRIPPED_ROYAL_LOG_ITEM = ITEMS.registerSimpleBlockItem(AntarchyNeoforgeBlocks.STRIPPED_ROYAL_LOG); + public static final DeferredItem STRIPPED_ROYAL_WOOD_ITEM = ITEMS.registerSimpleBlockItem(AntarchyNeoforgeBlocks.STRIPPED_ROYAL_WOOD); + public static final DeferredItem ROYAL_PLANKS_ITEM = ITEMS.registerSimpleBlockItem(AntarchyNeoforgeBlocks.ROYAL_PLANKS); + public static final DeferredItem ROYAL_STAIRS_ITEM = ITEMS.registerSimpleBlockItem(AntarchyNeoforgeBlocks.ROYAL_STAIRS); + public static final DeferredItem ROYAL_SLAB_ITEM = ITEMS.registerSimpleBlockItem(AntarchyNeoforgeBlocks.ROYAL_SLAB); + public static final DeferredItem ROYAL_FENCE_ITEM = ITEMS.registerSimpleBlockItem(AntarchyNeoforgeBlocks.ROYAL_FENCE); + public static final DeferredItem ROYAL_FENCE_GATE_ITEM = ITEMS.registerSimpleBlockItem(AntarchyNeoforgeBlocks.ROYAL_FENCE_GATE); + public static final DeferredItem ROYAL_DOOR_ITEM = ITEMS.registerSimpleBlockItem(AntarchyNeoforgeBlocks.ROYAL_DOOR); + public static final DeferredItem ROYAL_TRAPDOOR_ITEM = ITEMS.registerSimpleBlockItem(AntarchyNeoforgeBlocks.ROYAL_TRAPDOOR); + public static final DeferredItem ROYAL_PRESSURE_PLATE_ITEM = ITEMS.registerSimpleBlockItem(AntarchyNeoforgeBlocks.ROYAL_PRESSURE_PLATE); + public static final DeferredItem ROYAL_BUTTON_ITEM = ITEMS.registerSimpleBlockItem(AntarchyNeoforgeBlocks.ROYAL_BUTTON); + public static final DeferredItem ROYAL_LEAVES_ITEM = ITEMS.registerSimpleBlockItem(AntarchyNeoforgeBlocks.ROYAL_LEAVES); + public static final DeferredItem ROYAL_FLOWERING_LEAVES_ITEM = ITEMS.registerSimpleBlockItem(AntarchyNeoforgeBlocks.ROYAL_FLOWERING_LEAVES); + public static final DeferredItem ROYAL_SAPLING_ITEM = ITEMS.registerSimpleBlockItem(AntarchyNeoforgeBlocks.ROYAL_SAPLING); + public static final DeferredItem ROYAL_SIGN_ITEM = ITEMS.register("royal_sign", + () -> new net.minecraft.world.item.SignItem(new Item.Properties().stacksTo(16), AntarchyNeoforgeBlocks.ROYAL_SIGN.get(), AntarchyNeoforgeBlocks.ROYAL_WALL_SIGN.get())); + public static final DeferredItem ROYAL_HANGING_SIGN_ITEM = ITEMS.register("royal_hanging_sign", + () -> new net.minecraft.world.item.HangingSignItem(AntarchyNeoforgeBlocks.ROYAL_HANGING_SIGN.get(), AntarchyNeoforgeBlocks.ROYAL_WALL_HANGING_SIGN.get(), new Item.Properties().stacksTo(16))); + public static final DeferredItem ROYAL_BOAT = ITEMS.register("royal_boat", + () -> new RoyalBoatOnlyItem(AntarchyNeoforgeEntites.ROYAL_BOAT_ENTITY.get(), new Item.Properties().stacksTo(1))); + public static final DeferredItem ROYAL_CHEST_BOAT = ITEMS.register("royal_chest_boat", + () -> new RoyalChestBoatItem(AntarchyNeoforgeEntites.ROYAL_CHEST_BOAT_ENTITY.get(), new Item.Properties().stacksTo(1))); + public static final DeferredItem TRUFFALO_LOG_ITEM = ITEMS.registerSimpleBlockItem(AntarchyNeoforgeBlocks.TRUFFALO_LOG); + public static final DeferredItem TRUFFALO_WOOD_ITEM = ITEMS.registerSimpleBlockItem(AntarchyNeoforgeBlocks.TRUFFALO_WOOD); + public static final DeferredItem STRIPPED_TRUFFALO_LOG_ITEM = ITEMS.registerSimpleBlockItem(AntarchyNeoforgeBlocks.STRIPPED_TRUFFALO_LOG); + public static final DeferredItem STRIPPED_TRUFFALO_WOOD_ITEM = ITEMS.registerSimpleBlockItem(AntarchyNeoforgeBlocks.STRIPPED_TRUFFALO_WOOD); + public static final DeferredItem TRUFFALO_PLANKS_ITEM = ITEMS.registerSimpleBlockItem(AntarchyNeoforgeBlocks.TRUFFALO_PLANKS); + public static final DeferredItem TRUFFALO_STAIRS_ITEM = ITEMS.registerSimpleBlockItem(AntarchyNeoforgeBlocks.TRUFFALO_STAIRS); + public static final DeferredItem TRUFFALO_SLAB_ITEM = ITEMS.registerSimpleBlockItem(AntarchyNeoforgeBlocks.TRUFFALO_SLAB); + public static final DeferredItem TRUFFALO_FENCE_ITEM = ITEMS.registerSimpleBlockItem(AntarchyNeoforgeBlocks.TRUFFALO_FENCE); + public static final DeferredItem TRUFFALO_FENCE_GATE_ITEM = ITEMS.registerSimpleBlockItem(AntarchyNeoforgeBlocks.TRUFFALO_FENCE_GATE); + public static final DeferredItem TRUFFALO_DOOR_ITEM = ITEMS.registerSimpleBlockItem(AntarchyNeoforgeBlocks.TRUFFALO_DOOR); + public static final DeferredItem TRUFFALO_TRAPDOOR_ITEM = ITEMS.registerSimpleBlockItem(AntarchyNeoforgeBlocks.TRUFFALO_TRAPDOOR); + public static final DeferredItem TRUFFALO_PRESSURE_PLATE_ITEM = ITEMS.registerSimpleBlockItem(AntarchyNeoforgeBlocks.TRUFFALO_PRESSURE_PLATE); + public static final DeferredItem TRUFFALO_BUTTON_ITEM = ITEMS.registerSimpleBlockItem(AntarchyNeoforgeBlocks.TRUFFALO_BUTTON); + public static final DeferredItem TRUFFALO_SAPLING_ITEM = ITEMS.registerSimpleBlockItem(AntarchyNeoforgeBlocks.TRUFFALO_SAPLING); + public static final DeferredItem TRUFFALO_SIGN_ITEM = ITEMS.register("truffalo_sign", + () -> new SignItem(new Item.Properties().stacksTo(16), AntarchyNeoforgeBlocks.TRUFFALO_SIGN.get(), AntarchyNeoforgeBlocks.TRUFFALO_WALL_SIGN.get())); + public static final DeferredItem TRUFFALO_HANGING_SIGN_ITEM = ITEMS.register("truffalo_hanging_sign", + () -> new HangingSignItem(AntarchyNeoforgeBlocks.TRUFFALO_HANGING_SIGN.get(), AntarchyNeoforgeBlocks.TRUFFALO_WALL_HANGING_SIGN.get(), new Item.Properties().stacksTo(16))); + public static final DeferredItem TRUFFALO_BOAT = ITEMS.register("truffalo_boat", + () -> new TruffaloBoatOnlyItem(AntarchyNeoforgeEntites.TRUFFALO_BOAT_ENTITY.get(), new Item.Properties().stacksTo(1))); + public static final DeferredItem TRUFFALO_CHEST_BOAT = ITEMS.register("truffalo_chest_boat", + () -> new TruffaloChestBoatItem(AntarchyNeoforgeEntites.TRUFFALO_CHEST_BOAT_ENTITY.get(), new Item.Properties().stacksTo(1))); + public static final DeferredItem TRUFFALO_TUFT_WHITE_ITEM = ITEMS.registerSimpleBlockItem(AntarchyNeoforgeBlocks.TRUFFALO_TUFT_WHITE); + public static final DeferredItem TRUFFALO_TUFT_ORANGE_ITEM = ITEMS.registerSimpleBlockItem(AntarchyNeoforgeBlocks.TRUFFALO_TUFT_ORANGE); + public static final DeferredItem TRUFFALO_TUFT_MAGENTA_ITEM = ITEMS.registerSimpleBlockItem(AntarchyNeoforgeBlocks.TRUFFALO_TUFT_MAGENTA); + public static final DeferredItem TRUFFALO_TUFT_LIGHT_BLUE_ITEM = ITEMS.registerSimpleBlockItem(AntarchyNeoforgeBlocks.TRUFFALO_TUFT_LIGHT_BLUE); + public static final DeferredItem TRUFFALO_TUFT_YELLOW_ITEM = ITEMS.registerSimpleBlockItem(AntarchyNeoforgeBlocks.TRUFFALO_TUFT_YELLOW); + public static final DeferredItem TRUFFALO_TUFT_LIME_ITEM = ITEMS.registerSimpleBlockItem(AntarchyNeoforgeBlocks.TRUFFALO_TUFT_LIME); + public static final DeferredItem TRUFFALO_TUFT_PINK_ITEM = ITEMS.registerSimpleBlockItem(AntarchyNeoforgeBlocks.TRUFFALO_TUFT_PINK); + public static final DeferredItem TRUFFALO_TUFT_GRAY_ITEM = ITEMS.registerSimpleBlockItem(AntarchyNeoforgeBlocks.TRUFFALO_TUFT_GRAY); + public static final DeferredItem TRUFFALO_TUFT_LIGHT_GRAY_ITEM = ITEMS.registerSimpleBlockItem(AntarchyNeoforgeBlocks.TRUFFALO_TUFT_LIGHT_GRAY); + public static final DeferredItem TRUFFALO_TUFT_CYAN_ITEM = ITEMS.registerSimpleBlockItem(AntarchyNeoforgeBlocks.TRUFFALO_TUFT_CYAN); + public static final DeferredItem TRUFFALO_TUFT_PURPLE_ITEM = ITEMS.registerSimpleBlockItem(AntarchyNeoforgeBlocks.TRUFFALO_TUFT_PURPLE); + public static final DeferredItem TRUFFALO_TUFT_BLUE_ITEM = ITEMS.registerSimpleBlockItem(AntarchyNeoforgeBlocks.TRUFFALO_TUFT_BLUE); + public static final DeferredItem TRUFFALO_TUFT_BROWN_ITEM = ITEMS.registerSimpleBlockItem(AntarchyNeoforgeBlocks.TRUFFALO_TUFT_BROWN); + public static final DeferredItem TRUFFALO_TUFT_GREEN_ITEM = ITEMS.registerSimpleBlockItem(AntarchyNeoforgeBlocks.TRUFFALO_TUFT_GREEN); + public static final DeferredItem TRUFFALO_TUFT_RED_ITEM = ITEMS.registerSimpleBlockItem(AntarchyNeoforgeBlocks.TRUFFALO_TUFT_RED); + public static final DeferredItem TRUFFALO_TUFT_BLACK_ITEM = ITEMS.registerSimpleBlockItem(AntarchyNeoforgeBlocks.TRUFFALO_TUFT_BLACK); public static final DeferredItem CRITTER_CAGE = ITEMS.register("critter_cage", () -> new CritterCageItem(new Item.Properties().stacksTo(16))); public static final DeferredItem DUPLICATOR_SAPLING_ITEM = ITEMS.registerSimpleBlockItem(AntarchyNeoforgeBlocks.DUPLICATOR_SAPLING); @@ -795,7 +897,14 @@ public final class AntarchyNeoforgeItems { public static final DeferredItem GRAVITY_GUN = ITEMS.register("gravity_gun", () -> new GravityGunItem(new Item.Properties().stacksTo(1).durability(512).rarity(Rarity.RARE).fireResistant())); public static final DeferredItem PORTAL_GUN = ITEMS.register("portal_gun", - () -> new PortalGunItem(new Item.Properties().stacksTo(1).durability(256).rarity(Rarity.RARE), AntarchyNeoforgeEntites.PORTAL_GUN_PORTAL, AntarchyNeoforgeEntites.PORTAL_GUN_BLACK_HOLE)); + () -> new PortalGunItem( + new Item.Properties().stacksTo(1).durability(256).rarity(Rarity.RARE), + AntarchyNeoforgeEntites.PORTAL_GUN_PORTAL, + AntarchyNeoforgeEntites.PORTAL_GUN_BLACK_HOLE, + AntarchyNeoforgeEntites.PORTAL_GUN_PROJECTILE, + AntarchyNeoforgeBlocks.PORTAL_GUN_PORTAL_MASTER, + AntarchyNeoforgeBlocks.PORTAL_GUN_PORTAL_BASE + )); // Temporarily disabled: keeping the code but not registering the item for now. // public static final DeferredItem MINERS_DREAM = ITEMS.register("miners_dream", // () -> new MinersDreamItem(new Item.Properties().stacksTo(1).rarity(Rarity.RARE))); diff --git a/neoforge-1.21.1/src/main/java/com/craisinlord/antarchy/neoforge/registry/AntarchyNeoforgeMisc.java b/neoforge-1.21.1/src/main/java/com/craisinlord/antarchy/neoforge/registry/AntarchyNeoforgeMisc.java index 08f4b53f..846a3476 100644 --- a/neoforge-1.21.1/src/main/java/com/craisinlord/antarchy/neoforge/registry/AntarchyNeoforgeMisc.java +++ b/neoforge-1.21.1/src/main/java/com/craisinlord/antarchy/neoforge/registry/AntarchyNeoforgeMisc.java @@ -29,6 +29,7 @@ import com.craisinlord.antarchy.content.worldgen.elythia.*; import com.craisinlord.antarchy.neoforge.worldgen.CornPatchFeature; import com.craisinlord.antarchy.neoforge.worldgen.LumenLilyPadFeature; import com.craisinlord.antarchy.content.worldgen.thoraxis.*; +import com.craisinlord.antarchy.content.worldgen.truffalo.*; import com.craisinlord.antarchy.neoforge.content.fluid.AntiwaterFluid; import com.mojang.serialization.MapCodec; import net.minecraft.advancements.critereon.EntitySubPredicate; @@ -242,6 +243,8 @@ public final class AntarchyNeoforgeMisc { () -> new PeachTreeFeature(PeachTreeConfiguration.CODEC)); public static final DeferredHolder, NadirTreeFeature> NADIR_TREE_FEATURE = FEATURES.register("nadir_tree", () -> new NadirTreeFeature(NadirTreeConfiguration.CODEC)); + public static final DeferredHolder, TruffaloTreeFeature> TRUFFALO_TREE_FEATURE = FEATURES.register("truffalo_tree", + () -> new TruffaloTreeFeature(TruffaloTreeConfiguration.CODEC)); public static final DeferredHolder, ElythiaFloraFeature> ELYTHIA_FOREST_FLORA = FEATURES.register("elythia_forest_flora", () -> new ElythiaFloraFeature(NoneFeatureConfiguration.CODEC, ElythiaFloraFeature.Variant.FOREST)); public static final DeferredHolder, ElythiaFloraFeature> ELYTHIA_MEADOW_FLORA = FEATURES.register("elythia_meadow_flora", diff --git a/neoforge-1.21.1/src/main/java/com/craisinlord/antarchy/neoforge/registry/AntarchyNeoforgeSounds.java b/neoforge-1.21.1/src/main/java/com/craisinlord/antarchy/neoforge/registry/AntarchyNeoforgeSounds.java index 225c4c7c..b79c25e1 100644 --- a/neoforge-1.21.1/src/main/java/com/craisinlord/antarchy/neoforge/registry/AntarchyNeoforgeSounds.java +++ b/neoforge-1.21.1/src/main/java/com/craisinlord/antarchy/neoforge/registry/AntarchyNeoforgeSounds.java @@ -196,6 +196,7 @@ public final class AntarchyNeoforgeSounds { public static final DeferredHolder POTENT_NYXITE_GEYSER_ERUPTION_ACTIVE = registerSoundEvent("potent_nyxite_geyser_eruption_active"); public static final DeferredHolder POTENT_NYXITE_GEYSER_CONTINUOUS_START = registerSoundEvent("potent_nyxite_geyser_continuous_start"); public static final DeferredHolder POTENT_NYXITE_GEYSER_CONTINUOUS_ACTIVE = registerSoundEvent("potent_nyxite_geyser_continuous_active"); + public static final DeferredHolder MUSIC_DISC_UNDERSIDE = registerSoundEvent("music_disc_underside"); private AntarchyNeoforgeSounds() {}