VisualOverhaul 4.1.1 - Update to 1.19

This commit is contained in:
Motschen
2022-06-18 11:35:05 +02:00
parent 37e5789081
commit 7fb093de15
23 changed files with 721 additions and 90 deletions

View File

@@ -1,5 +1,5 @@
plugins {
id 'fabric-loom' version '0.10-SNAPSHOT'
id 'fabric-loom' version '0.12-SNAPSHOT'
id 'maven-publish'
}
@@ -10,9 +10,6 @@ archivesBaseName = project.archives_base_name
version = project.mod_version
group = project.maven_group
minecraft {
}
repositories {
maven { url "https://jitpack.io" }
maven { url "https://api.modrinth.com/maven" }
@@ -46,7 +43,7 @@ tasks.withType(JavaCompile).configureEach {
it.options.encoding = "UTF-8"
// Minecraft 1.17 (21w19a) upwards uses Java 16.
it.options.release = 16
it.options.release = 17
}
java {

View File

@@ -3,16 +3,16 @@ org.gradle.jvmargs=-Xmx2G
# Fabric Properties
# check these on https://fabricmc.net/use
minecraft_version=1.18.2
yarn_mappings=1.18.2+build.2
loader_version=0.13.3
minecraft_version=1.19
yarn_mappings=1.19+build.4
loader_version=0.14.8
# Mod Properties
mod_version = 4.1.0
mod_version = 4.1.1
maven_group = eu.midnightdust
archives_base_name = visualoverhaul
# Dependencies
# currently not on the main fabric site, check on the maven: https://maven.fabricmc.net/net/fabricmc/fabric-api/fabric-api
fabric_version=0.47.10+1.18.2
midnightlib_version=0.4.0
fabric_version=0.56.0+1.19
midnightlib_version=0.5.2

View File

@@ -8,6 +8,7 @@ import eu.midnightdust.visualoverhaul.block.renderer.JukeboxBlockEntityRenderer;
import eu.midnightdust.visualoverhaul.config.VOConfig;
import net.fabricmc.api.ClientModInitializer;
import net.fabricmc.fabric.api.client.event.lifecycle.v1.ClientTickEvents;
import net.fabricmc.fabric.api.client.networking.v1.ClientPlayNetworking;
import net.fabricmc.fabric.api.client.rendering.v1.ColorProviderRegistry;
import net.fabricmc.fabric.api.client.rendering.v1.EntityModelLayerRegistry;
import net.fabricmc.fabric.api.item.v1.FabricItemSettings;
@@ -16,7 +17,6 @@ import net.fabricmc.fabric.api.resource.ResourceManagerHelper;
import net.fabricmc.fabric.api.resource.ResourcePackActivationType;
import net.fabricmc.fabric.impl.blockrenderlayer.BlockRenderLayerMapImpl;
import net.fabricmc.fabric.impl.client.rendering.BlockEntityRendererRegistryImpl;
import net.fabricmc.fabric.impl.networking.ClientSidePacketRegistryImpl;
import net.fabricmc.loader.api.FabricLoader;
import net.minecraft.block.Block;
import net.minecraft.block.Blocks;
@@ -72,19 +72,19 @@ public class VisualOverhaulClient implements ClientModInitializer {
// }
Registry.ITEM.forEach((item) -> {
if(item instanceof MusicDiscItem || item.getName().getString().toLowerCase().contains("music_disc") || item.getName().getString().toLowerCase().contains("dynamic_disc")) {
if(item instanceof MusicDiscItem || item.getName().getString().toLowerCase().contains("music_disc") || item.getName().getString().toLowerCase().contains("record") || item.getName().getString().toLowerCase().contains("dynamic_disc")) {
FabricModelPredicateProviderRegistry.register(item, new Identifier("round"), (stack, world, entity, seed) -> stack.getCount() == 2 ? 1.0F : 0.0F);
}
});
ClientSidePacketRegistryImpl.INSTANCE.register(UPDATE_POTION_BOTTLES,
(packetContext, attachedData) -> {
ClientPlayNetworking.registerGlobalReceiver(UPDATE_POTION_BOTTLES,
(client, handler, attachedData, packetSender) -> {
BlockPos pos = attachedData.readBlockPos();
DefaultedList<ItemStack> inv = DefaultedList.ofSize(5, ItemStack.EMPTY);
for (int i = 0; i < 4; i++) {
inv.set(i, attachedData.readItemStack());
}
packetContext.getTaskQueue().execute(() -> {
client.execute(() -> {
if (client.world != null && client.world.getBlockEntity(pos) != null && client.world.getBlockEntity(pos) instanceof BrewingStandBlockEntity blockEntity) {
blockEntity.setStack(0, inv.get(0));
blockEntity.setStack(1, inv.get(1));
@@ -94,24 +94,24 @@ public class VisualOverhaulClient implements ClientModInitializer {
}
});
});
ClientSidePacketRegistryImpl.INSTANCE.register(UPDATE_RECORD,
(packetContext, attachedData) -> {
ClientPlayNetworking.registerGlobalReceiver(UPDATE_RECORD,
(client, handler, attachedData, packetSender) -> {
BlockPos pos = attachedData.readBlockPos();
ItemStack record = attachedData.readItemStack();
packetContext.getTaskQueue().execute(() -> {
client.execute(() -> {
if (client.world != null && client.world.getBlockEntity(pos) != null && client.world.getBlockEntity(pos) instanceof JukeboxBlockEntity blockEntity) {
blockEntity.setRecord(record);
}
});
});
ClientSidePacketRegistryImpl.INSTANCE.register(UPDATE_FURNACE_ITEMS,
(packetContext, attachedData) -> {
ClientPlayNetworking.registerGlobalReceiver(UPDATE_FURNACE_ITEMS,
(client, handler, attachedData, packetSender) -> {
BlockPos pos = attachedData.readBlockPos();
DefaultedList<ItemStack> inv = DefaultedList.ofSize(3, ItemStack.EMPTY);
for (int i = 0; i < 2; i++) {
inv.set(i, attachedData.readItemStack());
}
packetContext.getTaskQueue().execute(() -> {
client.execute(() -> {
if (client.world != null && client.world.getBlockEntity(pos) != null && client.world.getBlockEntity(pos) instanceof AbstractFurnaceBlockEntity blockEntity) {
blockEntity.setStack(0, inv.get(0));
blockEntity.setStack(1, inv.get(1));

View File

@@ -21,10 +21,11 @@ import net.minecraft.util.Identifier;
import net.minecraft.util.Util;
import net.minecraft.util.math.Direction;
import net.minecraft.util.math.Vec3f;
import net.minecraft.util.math.random.Random;
import net.minecraft.util.registry.Registry;
import org.apache.logging.log4j.LogManager;
import java.util.*;
import java.util.Objects;
@Environment(EnvType.CLIENT)
public class JukeboxBlockEntityRenderer implements BlockEntityRenderer<JukeboxBlockEntity> {
@@ -45,16 +46,15 @@ public class JukeboxBlockEntityRenderer implements BlockEntityRenderer<JukeboxBl
}
// Else gets the record sound played at the position of the jukebox //
else if (SoundTest.getSound(blockEntity.getPos()) != null) {
// Converts the Sound Id to the item id of the approprieate disc (minecraft:music_disc.cat -> minecraft:music_disc_cat) //
// Converts the Sound Id to the item id of the appropriate disc (minecraft:music_disc.cat -> minecraft:music_disc_cat) //
discItem = new Identifier(String.valueOf(SoundTest.getSound(blockEntity.getPos())).replace(".", "_"));
// Tries to get the disc item from the registry //
if (Registry.ITEM.getOrEmpty(discItem).isPresent()) {
record = new ItemStack(Registry.ITEM.get(discItem));
}
else {
LogManager.getLogger("VisualOverhaul").warn("Error getting music disc item for" + SoundTest.getSound(blockEntity.getPos()));
if (VOConfig.debug) LogManager.getLogger("VisualOverhaul").warn("Error getting music disc item for " + SoundTest.getSound(blockEntity.getPos()));
discItem = null;
record = ItemStack.EMPTY;
}
@@ -80,9 +80,9 @@ public class JukeboxBlockEntityRenderer implements BlockEntityRenderer<JukeboxBl
matrices.push();
matrices.translate(0f, 1f, 0f);
if (record == ItemStack.EMPTY) {
MinecraftClient.getInstance().getBlockRenderManager().renderBlock(VisualOverhaulClient.JukeBoxTop.getDefaultState().with(Properties.HAS_RECORD, false), blockEntity.getPos().up(), blockEntity.getWorld(), matrices, vertexConsumers.getBuffer(RenderLayer.getCutout()), false, new Random());
MinecraftClient.getInstance().getBlockRenderManager().renderBlock(VisualOverhaulClient.JukeBoxTop.getDefaultState().with(Properties.HAS_RECORD, false), blockEntity.getPos().up(), blockEntity.getWorld(), matrices, vertexConsumers.getBuffer(RenderLayer.getCutout()), false, Random.create());
} else {
MinecraftClient.getInstance().getBlockRenderManager().renderBlock(VisualOverhaulClient.JukeBoxTop.getDefaultState().with(Properties.HAS_RECORD, true), blockEntity.getPos().up(), blockEntity.getWorld(), matrices, vertexConsumers.getBuffer(RenderLayer.getCutout()), false, new Random());
MinecraftClient.getInstance().getBlockRenderManager().renderBlock(VisualOverhaulClient.JukeBoxTop.getDefaultState().with(Properties.HAS_RECORD, true), blockEntity.getPos().up(), blockEntity.getWorld(), matrices, vertexConsumers.getBuffer(RenderLayer.getCutout()), false, Random.create());
}
matrices.pop();
}

View File

@@ -12,4 +12,5 @@ public class VOConfig extends MidnightConfig {
@Client @Entry public static boolean coloredItems = true;
@Client @Entry public static boolean coloredLilypad = true;
@Client @Entry public static boolean potionEnchantmentGlint = true;
@Client @Entry(name = "Debug") public static boolean debug = false;
}

View File

@@ -3,7 +3,7 @@ package eu.midnightdust.visualoverhaul.mixin;
import eu.midnightdust.visualoverhaul.VisualOverhaul;
import io.netty.buffer.Unpooled;
import net.fabricmc.fabric.api.networking.v1.PlayerLookup;
import net.fabricmc.fabric.impl.networking.ServerSidePacketRegistryImpl;
import net.fabricmc.fabric.api.networking.v1.ServerPlayNetworking;
import net.minecraft.block.BlockState;
import net.minecraft.block.entity.*;
import net.minecraft.item.ItemStack;
@@ -41,7 +41,7 @@ public abstract class MixinAbstractFurnaceBlockEntity extends LockableContainerB
passedData.writeItemStack(blockEntity.getStack(1));
passedData.writeItemStack(blockEntity.getStack(2));
watchingPlayers.forEach(player -> ServerSidePacketRegistryImpl.INSTANCE.sendToPlayer(player, VisualOverhaul.UPDATE_FURNACE_ITEMS, passedData));
watchingPlayers.forEach(player -> ServerPlayNetworking.send(player, VisualOverhaul.UPDATE_FURNACE_ITEMS, passedData));
invUpdate = false;
}
playerUpdate = world.getPlayers().size();

View File

@@ -7,14 +7,13 @@ import net.minecraft.block.BlockState;
import net.minecraft.particle.ParticleTypes;
import net.minecraft.util.math.BlockPos;
import net.minecraft.util.math.Direction;
import net.minecraft.util.math.random.Random;
import net.minecraft.world.World;
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 java.util.Random;
@Mixin(BlastFurnaceBlock.class)
public abstract class MixinBlastFurnaceBlock extends AbstractFurnaceBlock {
protected MixinBlastFurnaceBlock(Settings settings) {

View File

@@ -3,7 +3,7 @@ package eu.midnightdust.visualoverhaul.mixin;
import eu.midnightdust.visualoverhaul.VisualOverhaul;
import io.netty.buffer.Unpooled;
import net.fabricmc.fabric.api.networking.v1.PlayerLookup;
import net.fabricmc.fabric.impl.networking.ServerSidePacketRegistryImpl;
import net.fabricmc.fabric.api.networking.v1.ServerPlayNetworking;
import net.minecraft.block.BlockState;
import net.minecraft.block.entity.BlockEntityType;
import net.minecraft.block.entity.BrewingStandBlockEntity;
@@ -43,7 +43,7 @@ public abstract class MixinBrewingStandBlockEntity extends LockableContainerBloc
passedData.writeItemStack(blockEntity.getStack(3));
passedData.writeItemStack(blockEntity.getStack(4));
watchingPlayers.forEach(player -> ServerSidePacketRegistryImpl.INSTANCE.sendToPlayer(player, VisualOverhaul.UPDATE_POTION_BOTTLES, passedData));
watchingPlayers.forEach(player -> ServerPlayNetworking.send(player, VisualOverhaul.UPDATE_POTION_BOTTLES, passedData));
invUpdate = false;
}
playerUpdate = world.getPlayers().size();

View File

@@ -4,7 +4,7 @@ import eu.midnightdust.visualoverhaul.VisualOverhaul;
import eu.midnightdust.visualoverhaul.util.JukeboxPacketUpdate;
import io.netty.buffer.Unpooled;
import net.fabricmc.fabric.api.networking.v1.PlayerLookup;
import net.fabricmc.fabric.impl.networking.ServerSidePacketRegistryImpl;
import net.fabricmc.fabric.api.networking.v1.ServerPlayNetworking;
import net.minecraft.block.BlockRenderType;
import net.minecraft.block.BlockState;
import net.minecraft.block.BlockWithEntity;
@@ -47,7 +47,7 @@ public abstract class MixinJukeboxBlock extends BlockWithEntity {
passedData.writeBlockPos(pos);
passedData.writeItemStack(blockEntity.getRecord());
watchingPlayers.forEach(player -> ServerSidePacketRegistryImpl.INSTANCE.sendToPlayer(player, VisualOverhaul.UPDATE_RECORD, passedData));
watchingPlayers.forEach(player -> ServerPlayNetworking.send(player, VisualOverhaul.UPDATE_RECORD, passedData));
JukeboxPacketUpdate.invUpdate = false;
}
JukeboxPacketUpdate.playerUpdate = world.getPlayers().size();

View File

@@ -1,25 +1,15 @@
package eu.midnightdust.visualoverhaul.mixin;
import eu.midnightdust.visualoverhaul.VisualOverhaul;
import eu.midnightdust.visualoverhaul.util.JukeboxPacketUpdate;
import io.netty.buffer.Unpooled;
import net.fabricmc.fabric.api.networking.v1.PlayerLookup;
import net.fabricmc.fabric.impl.networking.ServerSidePacketRegistryImpl;
import net.minecraft.block.BlockState;
import net.minecraft.block.entity.*;
import net.minecraft.item.ItemStack;
import net.minecraft.network.PacketByteBuf;
import net.minecraft.server.network.ServerPlayerEntity;
import net.minecraft.util.math.BlockPos;
import net.minecraft.world.World;
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;
import java.util.stream.Stream;
@Mixin(JukeboxBlockEntity.class)
public abstract class MixinJukeboxBlockEntity extends BlockEntity {
@@ -27,21 +17,7 @@ public abstract class MixinJukeboxBlockEntity extends BlockEntity {
super(type, pos, state);
}
@Unique
private static void tick(World world, BlockPos pos, BlockState state, JukeboxBlockEntity blockEntity) {
if (!world.isClient && (JukeboxPacketUpdate.invUpdate || world.getPlayers().size() == JukeboxPacketUpdate.playerUpdate)) {
Stream<ServerPlayerEntity> watchingPlayers = PlayerLookup.tracking(blockEntity).stream();
PacketByteBuf passedData = new PacketByteBuf(Unpooled.buffer());
passedData.writeBlockPos(pos);
passedData.writeItemStack(blockEntity.getRecord());
watchingPlayers.forEach(player -> ServerSidePacketRegistryImpl.INSTANCE.sendToPlayer(player, VisualOverhaul.UPDATE_RECORD, passedData));
JukeboxPacketUpdate.invUpdate = false;
}
JukeboxPacketUpdate.playerUpdate = world.getPlayers().size();
}
@Inject(at = @At("RETURN"), method = "getRecord", cancellable = true)
@Inject(at = @At("RETURN"), method = "getRecord")
public void getRecord(CallbackInfoReturnable<ItemStack> cir) {
JukeboxPacketUpdate.invUpdate = true;
}

View File

@@ -7,14 +7,13 @@ import net.minecraft.block.SmokerBlock;
import net.minecraft.particle.ParticleTypes;
import net.minecraft.util.math.BlockPos;
import net.minecraft.util.math.Direction;
import net.minecraft.util.math.random.Random;
import net.minecraft.world.World;
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 java.util.Random;
@Mixin(SmokerBlock.class)
public abstract class MixinSmokerBlock extends AbstractFurnaceBlock {
protected MixinSmokerBlock(Settings settings) {

View File

@@ -1,23 +0,0 @@
package eu.midnightdust.visualoverhaul.util.sound;
import com.google.common.collect.Maps;
import net.minecraft.util.Identifier;
import net.minecraft.util.math.BlockPos;
import java.util.Map;
public class SoundTest {
public static Map<BlockPos, Identifier> soundPos = Maps.newHashMap();
/**
* Returns the Sound provided in MixinSoundSystem
* {@link eu.midnightdust.visualoverhaul.mixin.MixinSoundSystem}
*/
public static Identifier getSound(BlockPos pos) {
if (soundPos.containsKey(pos)) {
return soundPos.get(pos);
}
return null;
}
}

View File

@@ -1,6 +1,6 @@
{
"pack": {
"pack_format": 8,
"pack_format": 9,
"description": "§2Makes the water bucket respect biome colors"
}
}

View File

@@ -1,6 +1,6 @@
{
"pack": {
"pack_format": 8,
"pack_format": 9,
"description": "§2Changes the model of the furnace to be 3D"
}
}

View File

@@ -0,0 +1,25 @@
{
"credit": "Made with Blockbench",
"textures": {
"particle": "block/brewing_stand",
"stand": "block/brewing_stand"
},
"elements": [
{
"from": [8, 0, 8],
"to": [11, 16, 8],
"faces": {
"north": {"uv": [5, 0, 8, 16], "texture": "#stand"},
"south": {"uv": [8, 0, 5, 16], "texture": "#stand"}
}
},
{
"from": [11, 9, 8],
"to": [16, 16, 8],
"faces": {
"north": {"uv": [0, 0, 5, 7], "texture": "#stand"},
"south": {"uv": [5, 0, 0, 7], "texture": "#stand"}
}
}
]
}

View File

@@ -0,0 +1,27 @@
{
"credit": "Made with Blockbench",
"textures": {
"particle": "block/brewing_stand",
"stand": "block/brewing_stand"
},
"elements": [
{
"from": [4.59, 0, 8],
"to": [7.59, 16, 8],
"rotation": {"angle": -45, "axis": "y", "origin": [8, 8, 8]},
"faces": {
"north": {"uv": [8, 0, 5, 16], "texture": "#stand"},
"south": {"uv": [5, 0, 8, 16], "texture": "#stand"}
}
},
{
"from": [-0.41, 9, 8],
"to": [4.59, 16, 8],
"rotation": {"angle": -45, "axis": "y", "origin": [8, 8, 8]},
"faces": {
"north": {"uv": [5, 0, 0, 7], "texture": "#stand"},
"south": {"uv": [0, 0, 5, 7], "texture": "#stand"}
}
}
]
}

View File

@@ -0,0 +1,27 @@
{
"credit": "Made with Blockbench",
"textures": {
"particle": "block/brewing_stand",
"stand": "block/brewing_stand"
},
"elements": [
{
"from": [4.59, 0, 8],
"to": [7.59, 16, 8],
"rotation": {"angle": 45, "axis": "y", "origin": [8, 8, 8]},
"faces": {
"north": {"uv": [8, 0, 5, 16], "texture": "#stand"},
"south": {"uv": [5, 0, 8, 16], "texture": "#stand"}
}
},
{
"from": [-0.41, 9, 8],
"to": [4.59, 16, 8],
"rotation": {"angle": 45, "axis": "y", "origin": [8, 8, 8]},
"faces": {
"north": {"uv": [5, 0, 0, 7], "texture": "#stand"},
"south": {"uv": [0, 0, 5, 7], "texture": "#stand"}
}
}
]
}

View File

@@ -1,6 +1,6 @@
{
"pack": {
"pack_format": 8,
"pack_format": 9,
"description": "§2Removes the bottles from the brewing stand"
}
}

View File

@@ -0,0 +1,15 @@
{
"parent": "minecraft:item/generated",
"textures": {
"layer0": "minecraft:item/music_disc_5"
},
"overrides": [
{
"predicate": {
"round": 1
},
"model": "minecraft:item/music_disc_5_round"
}
]
}

View File

@@ -0,0 +1,6 @@
{
"parent": "visualoverhaul:item/round_disc",
"textures": {
"0": "minecraft:item/music_disc_5"
}
}

View File

@@ -0,0 +1,25 @@
{
"parent": "item/generated",
"textures": {
"layer0": "recordable:item/copper_record",
"layer1": "recordable:item/copper_record_engravings",
"layer2": "recordable:item/copper_record_cover_1",
"layer3": "recordable:item/copper_record_cover_2",
"layer4": "recordable:item/copper_record_cover_3",
"layer5": "recordable:item/copper_record_cover_4",
"layer6": "recordable:item/copper_record_cover_5",
"layer7": "recordable:item/copper_record_cover_6",
"layer8": "recordable:item/copper_record_cover_7",
"layer9": "recordable:item/copper_record_cover_8",
"layer10": "recordable:item/copper_record_cover_9",
"layer11": "recordable:item/copper_record_cover_10"
},
"overrides": [
{
"predicate": {
"round": 1
},
"model": "recordable:item/copper_record_round"
}
]
}

View File

@@ -0,0 +1,557 @@
{
"credit": "Made with Blockbench",
"textures": {
"10": "recordable:item/copper_record_cover_10",
"particle": "recordable:item/copper_record",
"base": "recordable:item/copper_record",
"02": "recordable:item/copper_record_cover_2",
"03": "recordable:item/copper_record_cover_3",
"04": "recordable:item/copper_record_cover_4",
"05": "recordable:item/copper_record_cover_5",
"06": "recordable:item/copper_record_cover_6",
"08": "recordable:item/copper_record_cover_8",
"09": "recordable:item/copper_record_cover_9"
},
"elements": [
{
"from": [7.5, 0, 7.5],
"to": [8.5, 1, 8.5],
"faces": {
"up": {"uv": [7, 7, 8, 8], "texture": "#base", "tintindex": 0}
}
},
{
"from": [9.5, 0, 9.5],
"to": [10.5, 1, 10.5],
"rotation": {"angle": 0, "axis": "y", "origin": [10, 8, 10]},
"faces": {
"up": {"uv": [5, 6, 6, 7], "texture": "#base", "tintindex": 0}
}
},
{
"from": [5.5, 0, 9.5],
"to": [6.5, 1, 10.5],
"rotation": {"angle": 0, "axis": "y", "origin": [6, 8, 10]},
"faces": {
"up": {"uv": [9, 6, 10, 7], "texture": "#base", "tintindex": 0}
}
},
{
"from": [5.5, 0, 5.5],
"to": [6.5, 1, 6.5],
"rotation": {"angle": 0, "axis": "y", "origin": [6, 8, 6]},
"faces": {
"up": {"uv": [9, 8, 10, 9], "texture": "#base", "tintindex": 0}
}
},
{
"from": [9.5, 0, 5.5],
"to": [10.5, 1, 6.5],
"rotation": {"angle": 0, "axis": "y", "origin": [10, 8, 6]},
"faces": {
"up": {"uv": [5, 8, 6, 9], "texture": "#base", "tintindex": 0}
}
},
{
"from": [6.5, 0, 5.5],
"to": [7.5, 1, 6.5],
"rotation": {"angle": 0, "axis": "y", "origin": [8, 8, 6]},
"faces": {
"up": {"uv": [6, 8, 7, 9], "texture": "#08", "tintindex": 8}
}
},
{
"from": [7.5, 0, 5.5],
"to": [8.5, 1, 6.5],
"rotation": {"angle": 0, "axis": "y", "origin": [8, 8, 6]},
"faces": {
"up": {"uv": [7, 8, 8, 9], "texture": "#09", "tintindex": 9}
}
},
{
"from": [8.5, 0, 5.5],
"to": [9.5, 1, 6.5],
"rotation": {"angle": 0, "axis": "y", "origin": [8, 8, 6]},
"faces": {
"up": {"uv": [8, 8, 9, 9], "texture": "#10", "tintindex": 10}
}
},
{
"from": [2.5, 0, 4.5],
"to": [13.5, 1, 5.5],
"rotation": {"angle": 0, "axis": "y", "origin": [8, 8, 5]},
"faces": {
"up": {"uv": [2, 9, 13, 10], "texture": "#base", "tintindex": 0}
}
},
{
"from": [4.5, 0.001, 2.5],
"to": [5.5, 1.001, 13.5],
"rotation": {"angle": 0, "axis": "y", "origin": [5, 8, 8]},
"faces": {
"up": {"uv": [2, 9, 13, 10], "rotation": 270, "texture": "#base", "tintindex": 0}
}
},
{
"from": [10.5, 0.001, 2.5],
"to": [11.5, 1.001, 13.5],
"rotation": {"angle": 0, "axis": "y", "origin": [11, 8, 8]},
"faces": {
"up": {"uv": [2, 9, 13, 10], "rotation": 270, "texture": "#base", "tintindex": 0}
}
},
{
"from": [2.5, 0, 10.5],
"to": [13.5, 1, 11.5],
"rotation": {"angle": 0, "axis": "y", "origin": [8, 8, 11]},
"faces": {
"up": {"uv": [2, 5, 13, 6], "texture": "#base", "tintindex": 0}
}
},
{
"from": [6.5, 0, 9.5],
"to": [7.5, 1, 10.5],
"rotation": {"angle": 0, "axis": "y", "origin": [8, 8, 10]},
"faces": {
"up": {"uv": [7, 6, 8, 7], "texture": "#02", "tintindex": 1}
}
},
{
"from": [7.5, 0, 9.5],
"to": [8.5, 1, 10.5],
"rotation": {"angle": 0, "axis": "y", "origin": [8, 8, 10]},
"faces": {
"up": {"uv": [7, 6, 8, 7], "texture": "#02", "tintindex": 2}
}
},
{
"from": [8.5, 0, 9.5],
"to": [9.5, 1, 10.5],
"rotation": {"angle": 0, "axis": "y", "origin": [8, 8, 10]},
"faces": {
"up": {"uv": [8, 6, 9, 7], "texture": "#03", "tintindex": 3}
}
},
{
"from": [5.5, 0, 8.5],
"to": [6.5, 1, 9.5],
"rotation": {"angle": 0, "axis": "y", "origin": [6, 8, 8]},
"faces": {
"up": {"uv": [6, 8, 7, 9], "rotation": 270, "texture": "#08", "tintindex": 8}
}
},
{
"from": [5.5, 0, 7.5],
"to": [6.5, 1, 8.5],
"rotation": {"angle": 0, "axis": "y", "origin": [6, 8, 8]},
"faces": {
"up": {"uv": [8, 7, 9, 8], "rotation": 270, "texture": "#06", "tintindex": 6}
}
},
{
"from": [5.5, 0, 6.5],
"to": [6.5, 1, 7.5],
"rotation": {"angle": 0, "axis": "y", "origin": [6, 8, 8]},
"faces": {
"up": {"uv": [8, 8, 9, 9], "rotation": 270, "texture": "#10", "tintindex": 10}
}
},
{
"from": [5.5, 0, 8.5],
"to": [6.5, 1, 9.5],
"rotation": {"angle": 0, "axis": "y", "origin": [6, 8, 8]},
"faces": {
"up": {"uv": [6, 8, 9, 9], "rotation": 270, "texture": "#08", "tintindex": 8}
}
},
{
"from": [9.5, 0, 8.5],
"to": [10.5, 1, 9.5],
"rotation": {"angle": 0, "axis": "y", "origin": [10, 8, 8]},
"faces": {
"up": {"uv": [7, 6, 8, 7], "rotation": 270, "texture": "#02", "tintindex": 1}
}
},
{
"from": [9.5, 0, 7.5],
"to": [10.5, 1, 8.5],
"rotation": {"angle": 0, "axis": "y", "origin": [10, 8, 8]},
"faces": {
"up": {"uv": [5, 7, 6, 8], "rotation": 270, "texture": "#04", "tintindex": 4}
}
},
{
"from": [9.5, 0, 6.5],
"to": [10.5, 1, 7.5],
"rotation": {"angle": 0, "axis": "y", "origin": [10, 8, 8]},
"faces": {
"up": {"uv": [8, 6, 9, 7], "rotation": 270, "texture": "#03", "tintindex": 3}
}
},
{
"from": [8.5, 0, 6.5],
"to": [9.5, 1, 9.5],
"rotation": {"angle": 0, "axis": "y", "origin": [9, 8, 8]},
"faces": {
"up": {"uv": [6, 7, 7, 8], "texture": "#05", "tintindex": 5}
}
},
{
"from": [6.5, 0, 6.5],
"to": [7.5, 1, 9.5],
"rotation": {"angle": 0, "axis": "y", "origin": [7, 8, 8]},
"faces": {
"up": {"uv": [8, 7, 9, 8], "texture": "#06", "tintindex": 6}
}
},
{
"from": [7.5, 0, 8.5],
"to": [8.5, 1, 9.5],
"faces": {
"up": {"uv": [6, 7, 7, 8], "texture": "#05", "tintindex": 5}
}
},
{
"from": [7.5, 0, 6.5],
"to": [8.5, 1, 7.5],
"rotation": {"angle": 0, "axis": "y", "origin": [8, 8, 6]},
"faces": {
"up": {"uv": [8, 7, 9, 8], "texture": "#06", "tintindex": 6}
}
},
{
"from": [7.5, -0.001, 11.5],
"to": [12.5, 0.999, 12.5],
"rotation": {"angle": 0, "axis": "y", "origin": [10, 8, 12]},
"faces": {
"up": {"uv": [3, 5, 8, 6], "rotation": 180, "texture": "#base", "tintindex": 0}
}
},
{
"from": [3.5, -0.001, 11.5],
"to": [7.5, 0.999, 12.5],
"rotation": {"angle": 0, "axis": "y", "origin": [5, 8, 12]},
"faces": {
"up": {"uv": [8, 5, 12, 6], "rotation": 180, "texture": "#base", "tintindex": 0}
}
},
{
"from": [5.5, 0, 12.5],
"to": [10.5, 1, 13.5],
"rotation": {"angle": 0, "axis": "y", "origin": [8, 8, 13]},
"faces": {
"up": {"uv": [2, 5, 3, 10], "rotation": 90, "texture": "#base", "tintindex": 0}
}
},
{
"from": [6.5, 0, 13.5],
"to": [11.5, 1, 14.5],
"rotation": {"angle": 0, "axis": "y", "origin": [9, 8, 14]},
"faces": {
"east": {"uv": [10, 11, 11, 12], "texture": "#base", "tintindex": 0},
"south": {"uv": [5, 12, 10, 13], "texture": "#base", "tintindex": 0},
"up": {"uv": [5, 3, 10, 4], "texture": "#base", "tintindex": 0}
}
},
{
"from": [4.5, 0, 13.5],
"to": [6.5, 1, 14.5],
"rotation": {"angle": 0, "axis": "y", "origin": [4, 8, 14]},
"faces": {
"south": {"uv": [3, 11, 5, 12], "texture": "#base", "tintindex": 0},
"west": {"uv": [2, 11, 3, 12], "texture": "#base", "tintindex": 0},
"up": {"uv": [8, 3, 10, 4], "texture": "#base", "tintindex": 0}
}
},
{
"from": [3.5, 0, 12.5],
"to": [4.5, 1, 13.5],
"rotation": {"angle": 0, "axis": "y", "origin": [2, 8, 13]},
"faces": {
"south": {"uv": [13, 10, 14, 11], "texture": "#base", "tintindex": 0},
"west": {"uv": [13, 10, 14, 11], "texture": "#base", "tintindex": 0},
"up": {"uv": [10, 4, 11, 5], "texture": "#base", "tintindex": 0}
}
},
{
"from": [2.5, 0, 11.5],
"to": [3.5, 1, 12.5],
"rotation": {"angle": 0, "axis": "y", "origin": [1, 8, 12]},
"faces": {
"south": {"uv": [12, 11, 13, 12], "texture": "#base", "tintindex": 0},
"west": {"uv": [10, 11, 11, 12], "texture": "#base", "tintindex": 0},
"up": {"uv": [11, 4, 12, 5], "texture": "#base", "tintindex": 0}
}
},
{
"from": [12.5, 0, 11.5],
"to": [13.5, 1, 12.5],
"rotation": {"angle": 0, "axis": "y", "origin": [11, 8, 12]},
"faces": {
"east": {"uv": [13, 10, 14, 11], "texture": "#base", "tintindex": 0},
"south": {"uv": [13, 10, 14, 11], "texture": "#base", "tintindex": 0},
"up": {"uv": [2, 4, 3, 5], "texture": "#base", "tintindex": 0}
}
},
{
"from": [11.5, 0, 12.5],
"to": [12.5, 1, 13.5],
"rotation": {"angle": 0, "axis": "y", "origin": [10, 8, 13]},
"faces": {
"east": {"uv": [12, 11, 13, 12], "texture": "#base", "tintindex": 0},
"south": {"uv": [11, 11, 12, 12], "texture": "#base", "tintindex": 0},
"up": {"uv": [4, 4, 5, 5], "texture": "#base", "tintindex": 0}
}
},
{
"from": [11.5, -0.001, 5.5],
"to": [12.5, 0.999, 10.5],
"rotation": {"angle": 0, "axis": "y", "origin": [12, 8, 8]},
"faces": {
"up": {"uv": [5, 4, 10, 5], "rotation": 270, "texture": "#base", "tintindex": 0}
}
},
{
"from": [11.5, -0.001, 3.5],
"to": [12.5, 0.999, 4.5],
"rotation": {"angle": 0, "axis": "y", "origin": [12, 8, 6]},
"faces": {
"up": {"uv": [2, 9, 3, 10], "rotation": 270, "texture": "#base", "tintindex": 0}
}
},
{
"from": [12.5, 0, 5.5],
"to": [13.5, 1, 10.5],
"rotation": {"angle": 0, "axis": "y", "origin": [13, 8, 8]},
"faces": {
"up": {"uv": [2, 5, 3, 10], "texture": "#base", "tintindex": 0}
}
},
{
"from": [13.5, 0, 4.5],
"to": [14.5, 1, 9.5],
"rotation": {"angle": 0, "axis": "y", "origin": [14, 8, 7]},
"faces": {
"north": {"uv": [10, 11, 11, 12], "texture": "#base", "tintindex": 0},
"east": {"uv": [5, 12, 10, 13], "texture": "#base", "tintindex": 0},
"up": {"uv": [5, 3, 10, 4], "rotation": 270, "texture": "#base", "tintindex": 0}
}
},
{
"from": [13.5, 0, 9.5],
"to": [14.5, 1, 11.5],
"rotation": {"angle": 0, "axis": "y", "origin": [14, 8, 12]},
"faces": {
"east": {"uv": [3, 11, 5, 12], "texture": "#base", "tintindex": 0},
"south": {"uv": [2, 11, 3, 12], "texture": "#base", "tintindex": 0},
"up": {"uv": [8, 3, 10, 4], "rotation": 270, "texture": "#base", "tintindex": 0}
}
},
{
"from": [11.5, 0, 2.5],
"to": [12.5, 1, 3.5],
"rotation": {"angle": 0, "axis": "y", "origin": [12, 8, 5]},
"faces": {
"north": {"uv": [11, 11, 12, 12], "texture": "#base", "tintindex": 0},
"east": {"uv": [10, 11, 11, 12], "texture": "#base", "tintindex": 0},
"up": {"uv": [1, 5, 2, 6], "rotation": 270, "texture": "#base", "tintindex": 0}
}
},
{
"from": [12.5, 0, 3.5],
"to": [13.5, 1, 4.5],
"rotation": {"angle": 0, "axis": "y", "origin": [13, 8, 6]},
"faces": {
"north": {"uv": [12, 11, 13, 12], "texture": "#base", "tintindex": 0},
"east": {"uv": [11, 11, 12, 12], "texture": "#base", "tintindex": 0},
"up": {"uv": [2, 4, 3, 5], "rotation": 270, "texture": "#base", "tintindex": 0}
}
},
{
"from": [5.5, -0.001, 3.5],
"to": [10.5, 0.999, 4.5],
"rotation": {"angle": 0, "axis": "y", "origin": [8, 8, 4.1]},
"faces": {
"up": {"uv": [5, 10, 10, 11], "rotation": 180, "texture": "#base", "tintindex": 0}
}
},
{
"from": [3.5, -0.001, 3.5],
"to": [4.5, 0.999, 4.5],
"rotation": {"angle": 0, "axis": "y", "origin": [6, 8, 4]},
"faces": {
"up": {"uv": [12, 9, 13, 10], "rotation": 180, "texture": "#base", "tintindex": 0}
}
},
{
"from": [5.5, 0, 2.5],
"to": [10.5, 1, 3.5],
"rotation": {"angle": 0, "axis": "y", "origin": [8, 8, 3]},
"faces": {
"up": {"uv": [2, 5, 3, 10], "rotation": 270, "texture": "#base", "tintindex": 0}
}
},
{
"from": [6.5, 0, 1.5],
"to": [11.5, 1, 2.5],
"rotation": {"angle": 0, "axis": "y", "origin": [9, 8, 2]},
"faces": {
"north": {"uv": [5, 12, 10, 13], "texture": "#base", "tintindex": 0},
"east": {"uv": [12, 11, 13, 12], "texture": "#base", "tintindex": 0},
"up": {"uv": [5, 3, 10, 4], "rotation": 180, "texture": "#base", "tintindex": 0}
}
},
{
"from": [4.5, 0, 1.5],
"to": [6.5, 1, 2.5],
"rotation": {"angle": 0, "axis": "y", "origin": [7, 8, 2]},
"faces": {
"north": {"uv": [10, 11, 12, 12], "texture": "#base", "tintindex": 0},
"west": {"uv": [9, 12, 10, 13], "texture": "#base", "tintindex": 0},
"up": {"uv": [8, 3, 10, 4], "rotation": 180, "texture": "#base", "tintindex": 0}
}
},
{
"from": [2.5, 0, 3.5],
"to": [3.5, 1, 4.5],
"rotation": {"angle": 0, "axis": "y", "origin": [5, 8, 4]},
"faces": {
"north": {"uv": [12, 11, 13, 12], "texture": "#base", "tintindex": 0},
"west": {"uv": [12, 11, 13, 12], "texture": "#base", "tintindex": 0},
"up": {"uv": [1, 5, 2, 6], "rotation": 180, "texture": "#base", "tintindex": 0}
}
},
{
"from": [3.5, 0, 2.5],
"to": [4.5, 1, 3.5],
"rotation": {"angle": 0, "axis": "y", "origin": [6, 8, 3]},
"faces": {
"north": {"uv": [12, 11, 13, 12], "texture": "#base", "tintindex": 0},
"west": {"uv": [11, 11, 12, 12], "texture": "#base", "tintindex": 0},
"up": {"uv": [12, 10, 13, 11], "rotation": 180, "texture": "#base", "tintindex": 0}
}
},
{
"from": [3.5, -0.001, 5.5],
"to": [4.5, 0.999, 10.5],
"rotation": {"angle": 0, "axis": "y", "origin": [4, 8, 8.1]},
"faces": {
"up": {"uv": [11, 5, 12, 10], "texture": "#base", "tintindex": 0}
}
},
{
"from": [2.5, 0, 5.5],
"to": [3.5, 1, 10.5],
"rotation": {"angle": 0, "axis": "y", "origin": [3, 8, 8]},
"faces": {
"up": {"uv": [12, 5, 13, 10], "rotation": 180, "texture": "#base", "tintindex": 0}
}
},
{
"from": [1.5, 0, 6.5],
"to": [2.5, 1, 11.5],
"rotation": {"angle": 0, "axis": "y", "origin": [2, 8, 9]},
"faces": {
"south": {"uv": [13, 10, 14, 11], "texture": "#base", "tintindex": 0},
"west": {"uv": [5, 12, 10, 13], "texture": "#base", "tintindex": 0},
"up": {"uv": [5, 3, 10, 4], "rotation": 90, "texture": "#base", "tintindex": 0}
}
},
{
"from": [1.5, 0, 4.5],
"to": [2.5, 1, 6.5],
"rotation": {"angle": 0, "axis": "y", "origin": [2, 8, 4]},
"faces": {
"north": {"uv": [13, 10, 14, 11], "texture": "#base", "tintindex": 0},
"west": {"uv": [10, 11, 12, 12], "texture": "#base", "tintindex": 0},
"up": {"uv": [8, 3, 10, 4], "rotation": 90, "texture": "#base", "tintindex": 0}
}
}
],
"gui_light": "front",
"display": {
"thirdperson_righthand": {
"rotation": [38, 0, 0],
"translation": [0, 1.75, 0.75],
"scale": [0.5, 0.5, 0.5]
},
"thirdperson_lefthand": {
"rotation": [38, 0, 0],
"translation": [0, 1.75, 0.75],
"scale": [0.5, 0.5, 0.5]
},
"firstperson_righthand": {
"rotation": [87, -19, 41],
"translation": [0, 4.25, 0]
},
"firstperson_lefthand": {
"rotation": [87, -19, 41],
"translation": [0, 4.25, 0]
},
"ground": {
"translation": [0, 7.5, 0]
},
"gui": {
"rotation": [90, 0, 0]
},
"head": {
"translation": [0, 14.5, 0]
},
"fixed": {
"rotation": [-90, 0, 0],
"translation": [0, 0, -8]
}
},
"groups": [
0,
1,
2,
3,
4,
5,
6,
7,
8,
9,
10,
11,
12,
13,
14,
15,
16,
17,
18,
19,
20,
21,
22,
23,
24,
25,
{
"name": "group",
"origin": [10, 8, 12],
"color": 0,
"children": [26, 27, 28, 29, 30, 31, 32, 33, 34]
},
{
"name": "group",
"origin": [10, 8, 12],
"color": 0,
"children": [35, 36, 37, 38, 39, 40, 41]
},
{
"name": "group",
"origin": [10, 8, 12],
"color": 0,
"children": [42, 43, 44, 45, 46, 47, 48]
},
{
"name": "group",
"origin": [10, 8, 12],
"color": 0,
"children": [49, 50, 51, 52]
}
]
}

View File

@@ -1,6 +1,6 @@
{
"pack": {
"pack_format": 8,
"pack_format": 9,
"description": "§2Makes the spinning discs on Jukeboxes round"
}
}