mirror of
https://github.com/TeamMidnightDust/VisualOverhaul.git
synced 2025-12-15 13:45:09 +01:00
Merge pull request #88 from TeamMidnightDust/dev
VisualOverhaul 6.0.0 for 1.21.4
This commit is contained in:
@@ -1,6 +1,6 @@
|
||||
plugins {
|
||||
id "architectury-plugin" version "3.4-SNAPSHOT"
|
||||
id "dev.architectury.loom" version "1.6-SNAPSHOT" apply false
|
||||
id "dev.architectury.loom" version "1.7-SNAPSHOT" apply false
|
||||
id "me.shedaniel.unified-publishing" version "0.1.+" apply false
|
||||
id 'com.github.johnrengelman.shadow' version '8.1.1' apply false
|
||||
}
|
||||
@@ -16,7 +16,8 @@ repositories {
|
||||
}
|
||||
|
||||
subprojects {
|
||||
apply plugin: "dev.architectury.loom"
|
||||
apply plugin: 'dev.architectury.loom'
|
||||
apply plugin: 'architectury-plugin'
|
||||
|
||||
dependencies {
|
||||
minecraft "com.mojang:minecraft:${rootProject.minecraft_version}"
|
||||
|
||||
@@ -0,0 +1,69 @@
|
||||
package eu.midnightdust.visualoverhaul;
|
||||
|
||||
import eu.midnightdust.visualoverhaul.config.VOConfig;
|
||||
import net.minecraft.block.Blocks;
|
||||
import net.minecraft.client.MinecraftClient;
|
||||
import net.minecraft.client.model.ModelNameSupplier;
|
||||
import net.minecraft.client.model.SpriteGetter;
|
||||
import net.minecraft.client.render.OverlayTexture;
|
||||
import net.minecraft.client.render.VertexConsumer;
|
||||
import net.minecraft.client.render.block.BlockRenderManager;
|
||||
import net.minecraft.client.render.model.*;
|
||||
import net.minecraft.client.render.model.json.JsonUnbakedModel;
|
||||
import net.minecraft.client.texture.Sprite;
|
||||
import net.minecraft.client.util.SpriteIdentifier;
|
||||
import net.minecraft.client.util.math.MatrixStack;
|
||||
import net.minecraft.resource.ResourceManager;
|
||||
import net.minecraft.util.Identifier;
|
||||
import net.minecraft.util.math.BlockPos;
|
||||
import net.minecraft.util.math.random.Random;
|
||||
import net.minecraft.world.BlockRenderView;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.util.HashMap;
|
||||
import java.util.Map;
|
||||
|
||||
import static eu.midnightdust.visualoverhaul.VisualOverhaulCommon.LOGGER;
|
||||
|
||||
public class FakeBlocks {
|
||||
private static final Baker BAKER = new FakeBaker();
|
||||
private static final Map<Identifier, BakedModel> FAKE_MODELS = new HashMap<>();
|
||||
private static final BlockRenderManager renderManager = MinecraftClient.getInstance().getBlockRenderManager();
|
||||
|
||||
public static void reload(ResourceManager manager) {
|
||||
manager.findResources("models", path -> path.getPath().startsWith("models/fakeblock") && path.getPath().endsWith(".json")).forEach((id, resource) -> {
|
||||
try {
|
||||
JsonUnbakedModel unbaked = JsonUnbakedModel.deserialize(resource.getReader());
|
||||
BakedModel baked = unbaked.bake(new ModelTextures.Builder().addFirst(unbaked.getTextures()).build(() -> "#fakeblock"), BAKER,
|
||||
new ModelBakeSettings(){}, Boolean.TRUE.equals(unbaked.getAmbientOcclusion()), unbaked.getGuiLight() != null && unbaked.getGuiLight().isSide(), unbaked.getTransformation());
|
||||
Identifier fakeId = Identifier.of(id.getNamespace(), id.getPath().replace("models/fakeblock/", "").replace(".json", ""));
|
||||
FAKE_MODELS.put(fakeId, baked);
|
||||
if (VOConfig.debug) LOGGER.info("Successfully loaded fake block model: {}", fakeId);
|
||||
} catch (IOException e) {
|
||||
LOGGER.error("Error occurred while loading fake block model {}", id.toString(), e);
|
||||
}
|
||||
});
|
||||
}
|
||||
public static void renderFakeBlock(Identifier id, BlockPos pos, BlockRenderView world, MatrixStack matrices, VertexConsumer vertexConsumer) {
|
||||
renderManager.getModelRenderer().render(world, FAKE_MODELS.get(id), Blocks.DIRT.getDefaultState(), // State is just needed for a few generic checks
|
||||
pos, matrices, vertexConsumer, false, Random.create(), 0, OverlayTexture.DEFAULT_UV);
|
||||
}
|
||||
|
||||
public static class FakeBaker implements Baker {
|
||||
public BakedModel bake(Identifier id, ModelBakeSettings settings) {
|
||||
return null; // Not used in Json models, so we just leave ít like this and cross our fingers.
|
||||
}
|
||||
|
||||
@Override
|
||||
public SpriteGetter getSpriteGetter() {
|
||||
return new SpriteGetter() {
|
||||
static final SpriteIdentifier MISSING = new SpriteIdentifier(Identifier.ofVanilla("textures/atlas/blocks.png"), Identifier.ofVanilla("missingno"));
|
||||
|
||||
@Override public Sprite get(SpriteIdentifier spriteId) { return spriteId.getSprite(); }
|
||||
@Override public Sprite getMissing(String textureId) { return MISSING.getSprite(); }
|
||||
};
|
||||
}
|
||||
|
||||
public ModelNameSupplier getModelNameSupplier() { return () -> "#fakeblock"; }
|
||||
}
|
||||
}
|
||||
@@ -4,24 +4,39 @@ import com.mojang.blaze3d.systems.RenderSystem;
|
||||
import eu.midnightdust.visualoverhaul.config.VOConfig;
|
||||
import eu.midnightdust.visualoverhaul.mixin.TextureManagerAccessor;
|
||||
import eu.midnightdust.visualoverhaul.util.ModIconUtil;
|
||||
import eu.midnightdust.visualoverhaul.util.VOColorUtil;
|
||||
import net.minecraft.client.MinecraftClient;
|
||||
import net.minecraft.client.gui.DrawContext;
|
||||
import net.minecraft.client.gui.widget.ClickableWidget;
|
||||
import net.minecraft.client.texture.*;
|
||||
import net.minecraft.client.render.RenderLayer;
|
||||
import net.minecraft.client.texture.NativeImageBackedTexture;
|
||||
import net.minecraft.client.texture.ResourceTexture;
|
||||
import net.minecraft.client.texture.TextureManager;
|
||||
import net.minecraft.resource.ResourceManager;
|
||||
import net.minecraft.text.Text;
|
||||
import net.minecraft.text.TranslatableTextContent;
|
||||
import net.minecraft.util.Identifier;
|
||||
import net.minecraft.util.math.ColorHelper;
|
||||
import net.minecraft.util.math.MathHelper;
|
||||
import org.apache.logging.log4j.LogManager;
|
||||
|
||||
import java.io.InputStream;
|
||||
import java.util.HashMap;
|
||||
import java.util.Map;
|
||||
import java.util.Properties;
|
||||
import java.util.function.Function;
|
||||
|
||||
import static eu.midnightdust.visualoverhaul.VisualOverhaulCommon.LOGGER;
|
||||
import static eu.midnightdust.visualoverhaul.util.VOColorUtil.alphaAndBrightness;
|
||||
|
||||
public class IconicButtons {
|
||||
MinecraftClient client = MinecraftClient.getInstance();
|
||||
TextureManager textureManager = client.getTextureManager();
|
||||
private String buttonId;
|
||||
private Text prevText;
|
||||
private Identifier iconId;
|
||||
private static final Map<Identifier, Identifier> ICONS = new HashMap<>();
|
||||
|
||||
public IconicButtons() {}
|
||||
public void init(ClickableWidget widget) {
|
||||
if (widget == null || widget.getMessage() == null || widget.getMessage().getContent() == null) return;
|
||||
@@ -30,57 +45,63 @@ public class IconicButtons {
|
||||
if (VOConfig.buttonIcons && !buttonId.isEmpty()) {
|
||||
if (VOConfig.debug) System.out.println(buttonId);
|
||||
iconId = Identifier.tryParse("iconic:textures/gui/icons/" + buttonId.toLowerCase()+".png");
|
||||
if (buttonId.endsWith(".midnightconfig.title"))
|
||||
{
|
||||
// Show mod icons in MidnightConfig overview
|
||||
if (buttonId.endsWith(".midnightconfig.title")) {
|
||||
iconId = Identifier.of("modid", buttonId.replace(".midnightconfig.title", "") + "_icon");
|
||||
NativeImageBackedTexture icon = new ModIconUtil(buttonId.replace(".midnightconfig.title", "")).createModIcon();
|
||||
if (icon != null) {
|
||||
client.getTextureManager().registerTexture(iconId, icon);
|
||||
ICONS.put(iconId, iconId);
|
||||
} else {
|
||||
iconId = null;
|
||||
}
|
||||
}
|
||||
if (iconId == null) return;
|
||||
TextureManager textureManager = client.getTextureManager();
|
||||
AbstractTexture abstractTexture = textureManager.getOrDefault(iconId, null);
|
||||
if (abstractTexture == null) {
|
||||
abstractTexture = new ResourceTexture(iconId);
|
||||
try { abstractTexture.load(((TextureManagerAccessor)textureManager).getResourceContainer());
|
||||
} catch (Exception e) {iconId = null; return;}
|
||||
// Handle dynamic icons
|
||||
else if (iconId != null && !ICONS.containsKey(iconId)) {
|
||||
if (((TextureManagerAccessor)textureManager).getResourceContainer().getResource(iconId).isEmpty())
|
||||
return; // If no icon is present, don't load it
|
||||
|
||||
ResourceTexture abstractTexture = new ResourceTexture(iconId);
|
||||
if (VOConfig.debug) System.out.println("Loading dynamic icon: "+iconId);
|
||||
try {
|
||||
abstractTexture.loadContents(((TextureManagerAccessor)textureManager).getResourceContainer());
|
||||
} catch (Exception e) {e.fillInStackTrace();}
|
||||
textureManager.registerTexture(iconId, abstractTexture);
|
||||
ICONS.put(iconId, iconId);
|
||||
}
|
||||
if (abstractTexture == MissingSprite.getMissingSpriteTexture()) iconId = null;
|
||||
}
|
||||
}
|
||||
public void renderIcons(DrawContext context, ClickableWidget widget, float alpha) {
|
||||
if (widget.getMessage() == null || widget.getWidth() <= 20) return;
|
||||
if (prevText != widget.getMessage()) init(widget);
|
||||
if (VOConfig.buttonIcons && !buttonId.equals("") && iconId != null) {
|
||||
if (VOConfig.buttonIcons && !buttonId.isEmpty() && iconId != null && ICONS.containsKey(iconId)) {
|
||||
int scaledWidth = client.getWindow().getScaledWidth();
|
||||
|
||||
boolean limitedSpace = client.textRenderer.getWidth(widget.getMessage()) > (widget.getWidth() * 0.75f);
|
||||
boolean showLeftWhenBoth = (VOConfig.buttonIconPosition.equals(VOConfig.IconPosition.BOTH) && !limitedSpace) || (VOConfig.buttonIconPosition.equals(VOConfig.IconPosition.BOTH) && widget.getX() < scaledWidth/2);
|
||||
boolean showRightWhenBoth = (VOConfig.buttonIconPosition.equals(VOConfig.IconPosition.BOTH) && !limitedSpace) || (VOConfig.buttonIconPosition.equals(VOConfig.IconPosition.BOTH) && widget.getX() > scaledWidth/2);
|
||||
|
||||
RenderSystem.setShaderColor(1.0F, 1.0F, 1.0F, alpha);
|
||||
if (!widget.active) RenderSystem.setShaderColor(0.3F, 0.3F, 0.3F, alpha);
|
||||
int color = widget.active ? alphaAndBrightness(alpha, 1.0F) : alphaAndBrightness(alpha, 0.3F);
|
||||
RenderSystem.enableBlend();
|
||||
RenderSystem.enableDepthTest();
|
||||
int inset = 2;
|
||||
if (VOConfig.zoomIconOnHover && widget.isSelected()) inset = 1;
|
||||
if (VOConfig.zoomIconOnHover && widget.isSelected() && widget.active) inset = 1;
|
||||
int size = 20-inset*2;
|
||||
|
||||
Identifier textureId = ICONS.get(iconId);
|
||||
|
||||
if (VOConfig.buttonIconPosition.equals(VOConfig.IconPosition.LEFT) || showLeftWhenBoth || (VOConfig.buttonIconPosition.equals(VOConfig.IconPosition.LOCATION) && widget.getX() < scaledWidth/2))
|
||||
context.drawTexture(iconId, widget.getX()+inset, widget.getY()+inset, 0, 0, size, size, size, size);
|
||||
context.drawTexture(RenderLayer::getGuiTextured, textureId, widget.getX()+inset, widget.getY()+inset, 0, 0, size, size, size, size, size, size, color);
|
||||
|
||||
if (VOConfig.buttonIconPosition.equals(VOConfig.IconPosition.RIGHT) || showRightWhenBoth || (VOConfig.buttonIconPosition.equals(VOConfig.IconPosition.LOCATION) && widget.getX()+widget.getWidth() > scaledWidth/2))
|
||||
context.drawTexture(iconId, widget.getX()+widget.getWidth()-20+inset, widget.getY()+inset, 0, 0, size, size, size, size);
|
||||
context.drawTexture(RenderLayer::getGuiTextured, textureId, widget.getX()+widget.getWidth()-20+inset, widget.getY()+inset, 0, 0, size, size, size, size, size, size, color);
|
||||
|
||||
RenderSystem.setShaderColor(1.0F, 1.0F, 1.0F, 1.0F);
|
||||
RenderSystem.disableBlend();
|
||||
RenderSystem.disableDepthTest();
|
||||
}
|
||||
}
|
||||
public static void reload(ResourceManager manager) {
|
||||
manager.findResources("textures", path -> path.getPath().contains(".properties")).forEach((id, resource) -> {
|
||||
manager.findResources("textures", path -> path.getNamespace().equals("iconic") && path.getPath().contains(".properties")).forEach((id, resource) -> {
|
||||
if (manager.getResource(id).isEmpty()) return;
|
||||
try (InputStream stream = manager.getResource(id).get().getInputStream()) {
|
||||
Identifier iconId = Identifier.of(id.getNamespace(), id.getPath().replace(".properties", ".png"));
|
||||
@@ -102,16 +123,11 @@ public class IconicButtons {
|
||||
}
|
||||
|
||||
if (properties.get("texture") != null) {
|
||||
Identifier textureId = Identifier.of(properties.getProperty("texture"));
|
||||
TextureManager textureManager = MinecraftClient.getInstance().getTextureManager();
|
||||
AbstractTexture abstractTexture = textureManager.getOrDefault(iconId, null);
|
||||
if (abstractTexture == null) {
|
||||
abstractTexture = new ResourceTexture(textureId);
|
||||
textureManager.registerTexture(iconId, abstractTexture);
|
||||
}
|
||||
Identifier textureId = Identifier.tryParse(properties.getProperty("texture"));
|
||||
ICONS.put(iconId, textureId);
|
||||
}
|
||||
} catch (Exception e) {
|
||||
LogManager.getLogger("Iconic").error("Error occurred while loading texture.properties " + id.toString(), e);
|
||||
LOGGER.error("Error occurred while loading texture.properties for button icon {}", id.toString(), e);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
@@ -1,7 +1,6 @@
|
||||
package eu.midnightdust.visualoverhaul;
|
||||
|
||||
import eu.midnightdust.visualoverhaul.config.VOConfig;
|
||||
import net.minecraft.block.Block;
|
||||
|
||||
import static eu.midnightdust.visualoverhaul.VisualOverhaulCommon.MOD_ID;
|
||||
|
||||
@@ -11,8 +10,6 @@ public class VisualOverhaulClient {
|
||||
public static int grassColor = -8934609;
|
||||
public static int potionColor = -13083194;
|
||||
|
||||
public static Block JukeBoxTop;
|
||||
|
||||
public static void onInitializeClient() {
|
||||
VOConfig.init(MOD_ID, VOConfig.class);
|
||||
}
|
||||
|
||||
@@ -3,6 +3,8 @@ package eu.midnightdust.visualoverhaul;
|
||||
import net.minecraft.item.ItemStack;
|
||||
import net.minecraft.util.Identifier;
|
||||
import net.minecraft.util.math.BlockPos;
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.ArrayList;
|
||||
@@ -12,6 +14,7 @@ import java.util.UUID;
|
||||
|
||||
public class VisualOverhaulCommon {
|
||||
public static final String MOD_ID = "visualoverhaul";
|
||||
public static final Logger LOGGER = LoggerFactory.getLogger("VisualOverhaul");
|
||||
public static final List<UUID> playersWithMod = new ArrayList<>();
|
||||
public static final Map<BlockPos, ItemStack> jukeboxItems = new HashMap<>();
|
||||
|
||||
|
||||
@@ -1,22 +0,0 @@
|
||||
package eu.midnightdust.visualoverhaul.block;
|
||||
|
||||
import net.minecraft.block.AbstractBlock;
|
||||
import net.minecraft.block.Block;
|
||||
import net.minecraft.block.BlockState;
|
||||
import net.minecraft.block.Blocks;
|
||||
import net.minecraft.state.StateManager;
|
||||
import net.minecraft.state.property.BooleanProperty;
|
||||
import net.minecraft.state.property.Properties;
|
||||
|
||||
public class JukeboxTop extends Block {
|
||||
private static final BooleanProperty HAS_RECORD = Properties.HAS_RECORD;
|
||||
|
||||
public JukeboxTop() {
|
||||
super(AbstractBlock.Settings.copy(Blocks.JUKEBOX));
|
||||
this.setDefaultState(this.stateManager.getDefaultState().with(HAS_RECORD,false));
|
||||
}
|
||||
@Override
|
||||
protected void appendProperties(StateManager.Builder<Block, BlockState> builder) {
|
||||
builder.add(HAS_RECORD);
|
||||
}
|
||||
}
|
||||
@@ -13,7 +13,7 @@ public class FurnaceWoodenPlanksModel extends Model {
|
||||
public static final EntityModelLayer WOODEN_PLANKS_MODEL_LAYER = new EntityModelLayer(id("wooden_planks"), "main");
|
||||
|
||||
public FurnaceWoodenPlanksModel(ModelPart root) {
|
||||
super(RenderLayer::getEntitySolid);
|
||||
super(root, RenderLayer::getEntitySolid);
|
||||
bb_main = root;
|
||||
bb_main.setPivot(0.0F, 24.0F, 0.0F);
|
||||
}
|
||||
@@ -34,7 +34,7 @@ public class FurnaceWoodenPlanksModel extends Model {
|
||||
return modelData;
|
||||
}
|
||||
|
||||
public void render(MatrixStack matrices, VertexConsumer vertices, int light, int overlay, int color) {
|
||||
bb_main.render(matrices, vertices, light, overlay);
|
||||
}
|
||||
// public void render(MatrixStack matrices, VertexConsumer vertices, int light, int overlay, int color) {
|
||||
// bb_main.render(matrices, vertices, light, overlay);
|
||||
// }
|
||||
}
|
||||
|
||||
@@ -9,9 +9,9 @@ import net.minecraft.client.render.VertexConsumerProvider;
|
||||
import net.minecraft.client.render.WorldRenderer;
|
||||
import net.minecraft.client.render.block.entity.BlockEntityRenderer;
|
||||
import net.minecraft.client.render.block.entity.BlockEntityRendererFactory;
|
||||
import net.minecraft.client.render.model.json.ModelTransformationMode;
|
||||
import net.minecraft.client.util.math.MatrixStack;
|
||||
import net.minecraft.item.ItemStack;
|
||||
import net.minecraft.item.ModelTransformationMode;
|
||||
import org.joml.AxisAngle4f;
|
||||
import org.joml.Math;
|
||||
import org.joml.Quaternionf;
|
||||
|
||||
@@ -13,10 +13,10 @@ import net.minecraft.client.render.VertexConsumerProvider;
|
||||
import net.minecraft.client.render.WorldRenderer;
|
||||
import net.minecraft.client.render.block.entity.BlockEntityRenderer;
|
||||
import net.minecraft.client.render.block.entity.BlockEntityRendererFactory;
|
||||
import net.minecraft.client.render.model.json.ModelTransformationMode;
|
||||
import net.minecraft.client.texture.Sprite;
|
||||
import net.minecraft.client.util.math.MatrixStack;
|
||||
import net.minecraft.item.ItemStack;
|
||||
import net.minecraft.item.ModelTransformationMode;
|
||||
import net.minecraft.registry.tag.ItemTags;
|
||||
import net.minecraft.util.Identifier;
|
||||
import org.joml.AxisAngle4f;
|
||||
@@ -41,7 +41,7 @@ public class FurnaceBlockEntityRenderer<E extends AbstractFurnaceBlockEntity> im
|
||||
ItemStack input = blockEntity.getStack(0);
|
||||
ItemStack fuel = blockEntity.getStack(1);
|
||||
ItemStack output = blockEntity.getStack(2);
|
||||
float angle = (blockState.get(AbstractFurnaceBlock.FACING)).asRotation();
|
||||
float angle = (blockState.get(AbstractFurnaceBlock.FACING)).getRotationQuaternion().angle();
|
||||
|
||||
if(!input.isEmpty() || !output.isEmpty()) {
|
||||
matrices.push();
|
||||
|
||||
@@ -1,97 +1,73 @@
|
||||
package eu.midnightdust.visualoverhaul.block.renderer;
|
||||
|
||||
import eu.midnightdust.visualoverhaul.FakeBlocks;
|
||||
import eu.midnightdust.visualoverhaul.VisualOverhaulClient;
|
||||
import eu.midnightdust.visualoverhaul.config.VOConfig;
|
||||
import eu.midnightdust.visualoverhaul.util.SoundTest;
|
||||
import net.fabricmc.api.EnvType;
|
||||
import net.fabricmc.api.Environment;
|
||||
import net.minecraft.block.BlockState;
|
||||
import net.minecraft.block.SideShapeType;
|
||||
import net.minecraft.block.entity.JukeboxBlockEntity;
|
||||
import net.minecraft.client.MinecraftClient;
|
||||
import net.minecraft.client.render.RenderLayer;
|
||||
import net.minecraft.client.render.VertexConsumerProvider;
|
||||
import net.minecraft.client.render.WorldRenderer;
|
||||
import net.minecraft.client.render.*;
|
||||
import net.minecraft.client.render.block.BlockRenderManager;
|
||||
import net.minecraft.client.render.block.entity.BlockEntityRenderer;
|
||||
import net.minecraft.client.render.block.entity.BlockEntityRendererFactory;
|
||||
import net.minecraft.client.render.model.json.ModelTransformationMode;
|
||||
import net.minecraft.client.util.math.MatrixStack;
|
||||
import net.minecraft.component.ComponentMap;
|
||||
import net.minecraft.component.DataComponentTypes;
|
||||
import net.minecraft.component.type.CustomModelDataComponent;
|
||||
import net.minecraft.item.ItemStack;
|
||||
import net.minecraft.registry.Registries;
|
||||
import net.minecraft.state.property.Properties;
|
||||
import net.minecraft.util.Identifier;
|
||||
import net.minecraft.util.Util;
|
||||
import net.minecraft.util.math.BlockPos;
|
||||
import net.minecraft.util.math.Direction;
|
||||
import net.minecraft.util.math.random.Random;
|
||||
import org.apache.logging.log4j.LogManager;
|
||||
import net.minecraft.world.BlockRenderView;
|
||||
import org.joml.AxisAngle4f;
|
||||
import org.joml.Math;
|
||||
import org.joml.Quaternionf;
|
||||
|
||||
import java.util.Objects;
|
||||
|
||||
import static eu.midnightdust.visualoverhaul.VisualOverhaulCommon.id;
|
||||
import static eu.midnightdust.visualoverhaul.VisualOverhaulCommon.jukeboxItems;
|
||||
|
||||
@Environment(EnvType.CLIENT)
|
||||
public class JukeboxBlockEntityRenderer implements BlockEntityRenderer<JukeboxBlockEntity> {
|
||||
private ItemStack record;
|
||||
private Identifier discItem;
|
||||
|
||||
public JukeboxBlockEntityRenderer(BlockEntityRendererFactory.Context ctx) {
|
||||
}
|
||||
public JukeboxBlockEntityRenderer(BlockEntityRendererFactory.Context ctx) {}
|
||||
|
||||
@Override
|
||||
public void render(JukeboxBlockEntity blockEntity, float tickDelta, MatrixStack matrices, VertexConsumerProvider vertexConsumers, int light, int overlay) {
|
||||
if (VOConfig.jukebox) {
|
||||
int lightAbove = WorldRenderer.getLightmapCoordinates(Objects.requireNonNull(blockEntity.getWorld()), blockEntity.getPos().up());
|
||||
|
||||
Identifier discModel = null; // If the sound is stopped or no sound is playing, no model is set //
|
||||
|
||||
// Tries to get the disc using the serverside method
|
||||
if (jukeboxItems.containsKey(blockEntity.getPos()) && !jukeboxItems.get(blockEntity.getPos()).isEmpty()) {
|
||||
record = jukeboxItems.get(blockEntity.getPos()).copy();
|
||||
discModel = RoundDiscRenderer.getModelId(jukeboxItems.get(blockEntity.getPos()));
|
||||
}
|
||||
// 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 appropriate disc (minecraft:music_disc.cat -> minecraft:music_disc_cat) //
|
||||
discItem = Identifier.of(String.valueOf(SoundTest.getSound(blockEntity.getPos())).replace(".", "_"));
|
||||
|
||||
// Tries to get the disc item from the registry //
|
||||
if (Registries.ITEM.getOrEmpty(discItem).isPresent()) {
|
||||
record = new ItemStack(Registries.ITEM.get(discItem));
|
||||
}
|
||||
else {
|
||||
if (VOConfig.debug) LogManager.getLogger("VisualOverhaul").warn("Error getting music disc item for " + SoundTest.getSound(blockEntity.getPos()));
|
||||
discItem = null;
|
||||
record = ItemStack.EMPTY;
|
||||
}
|
||||
}
|
||||
// If the sound is stopped or no sound is playing, the stack is set to an empty stack //
|
||||
else {
|
||||
discItem = null;
|
||||
record = ItemStack.EMPTY;
|
||||
discModel = Identifier.of(String.valueOf(SoundTest.getSound(blockEntity.getPos())).replace(".", "_"));
|
||||
}
|
||||
|
||||
if (!record.isEmpty()) {
|
||||
//record.setCount(2);
|
||||
record.applyComponentsFrom(ComponentMap.builder().add(DataComponentTypes.CUSTOM_MODEL_DATA, new CustomModelDataComponent(710)).build());
|
||||
if (discModel != null) {
|
||||
matrices.push();
|
||||
|
||||
matrices.translate(0.5f, 1.03f, 0.5f);
|
||||
matrices.scale(0.75f, 0.75f, 0.75f);
|
||||
matrices.multiply(new Quaternionf(new AxisAngle4f(Math.toRadians(Util.getMeasuringTimeMs() / 9.0f), 0, 1, 0)));
|
||||
MinecraftClient.getInstance().getItemRenderer().renderItem(record, ModelTransformationMode.GROUND, lightAbove, overlay, matrices, vertexConsumers, blockEntity.getWorld(), 0);
|
||||
|
||||
RoundDiscRenderer.render(discModel, lightAbove, overlay, matrices, vertexConsumers);
|
||||
matrices.pop();
|
||||
}
|
||||
if (VOConfig.jukebox_fake_block && !blockEntity.getWorld().getBlockState(blockEntity.getPos().up()).isSideSolid(blockEntity.getWorld(),blockEntity.getPos().up(), Direction.DOWN, SideShapeType.FULL)) {
|
||||
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, 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, Random.create());
|
||||
}
|
||||
Identifier blockId = discModel != null ? id("jukebox_top_playing") : id("jukebox_top_stopped");
|
||||
FakeBlocks.renderFakeBlock(blockId, blockEntity.getPos().up(), blockEntity.getWorld(), matrices, vertexConsumers.getBuffer(RenderLayer.getCutout()));
|
||||
matrices.pop();
|
||||
}
|
||||
}
|
||||
|
||||
File diff suppressed because one or more lines are too long
@@ -0,0 +1,12 @@
|
||||
package eu.midnightdust.visualoverhaul.mixin;
|
||||
|
||||
import net.minecraft.client.render.item.ItemRenderState;
|
||||
import net.minecraft.item.ModelTransformationMode;
|
||||
import org.spongepowered.asm.mixin.Mixin;
|
||||
import org.spongepowered.asm.mixin.gen.Accessor;
|
||||
|
||||
@Mixin(ItemRenderState.class)
|
||||
public interface ItemRenderStateAccessor {
|
||||
@Accessor("modelTransformationMode")
|
||||
void setModelTransformationMode(ModelTransformationMode modelTransformationMode);
|
||||
}
|
||||
@@ -0,0 +1,25 @@
|
||||
package eu.midnightdust.visualoverhaul.mixin;
|
||||
|
||||
import eu.midnightdust.visualoverhaul.VisualOverhaulClient;
|
||||
import eu.midnightdust.visualoverhaul.config.VOConfig;
|
||||
import net.minecraft.client.render.item.tint.ConstantTintSource;
|
||||
import net.minecraft.client.world.ClientWorld;
|
||||
import net.minecraft.entity.LivingEntity;
|
||||
import net.minecraft.item.ItemStack;
|
||||
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;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
@Mixin(ConstantTintSource.class)
|
||||
public abstract class MixinConstantTintSource {
|
||||
@Inject(at = @At("RETURN"), method = "getTint", cancellable = true)
|
||||
public void vo$modifyLeafTint(ItemStack stack, ClientWorld world, LivingEntity user, CallbackInfoReturnable<Integer> cir) {
|
||||
// Dynamic Leaf Item colors
|
||||
if (VOConfig.coloredItems && List.of(-12012264).contains(cir.getReturnValue())) {
|
||||
cir.setReturnValue(VisualOverhaulClient.foliageColor);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,23 @@
|
||||
package eu.midnightdust.visualoverhaul.mixin;
|
||||
|
||||
import eu.midnightdust.visualoverhaul.VisualOverhaulClient;
|
||||
import eu.midnightdust.visualoverhaul.config.VOConfig;
|
||||
import net.minecraft.client.render.item.tint.GrassTintSource;
|
||||
import net.minecraft.client.world.ClientWorld;
|
||||
import net.minecraft.entity.LivingEntity;
|
||||
import net.minecraft.item.ItemStack;
|
||||
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(GrassTintSource.class)
|
||||
public abstract class MixinGrassTintSource {
|
||||
@Inject(at = @At("RETURN"), method = "getTint", cancellable = true)
|
||||
public void vo$modifyGrassTint(ItemStack stack, ClientWorld world, LivingEntity user, CallbackInfoReturnable<Integer> cir) {
|
||||
// Dynamic Grass Item colors
|
||||
if (VOConfig.coloredItems) {
|
||||
cir.setReturnValue(VisualOverhaulClient.grassColor);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,39 @@
|
||||
package eu.midnightdust.visualoverhaul.mixin;
|
||||
|
||||
import eu.midnightdust.visualoverhaul.VisualOverhaulClient;
|
||||
import eu.midnightdust.visualoverhaul.config.VOConfig;
|
||||
import net.minecraft.client.render.item.tint.PotionTintSource;
|
||||
import net.minecraft.client.world.ClientWorld;
|
||||
import net.minecraft.component.DataComponentTypes;
|
||||
import net.minecraft.entity.LivingEntity;
|
||||
import net.minecraft.item.ItemStack;
|
||||
import net.minecraft.potion.Potion;
|
||||
import net.minecraft.potion.Potions;
|
||||
import net.minecraft.registry.entry.RegistryEntry;
|
||||
import net.minecraft.util.math.ColorHelper;
|
||||
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.List;
|
||||
|
||||
@Mixin(PotionTintSource.class)
|
||||
public class MixinPotionTintSource {
|
||||
@Unique private static final List<RegistryEntry<Potion>> WATER_POTIONS = List.of(Potions.WATER, Potions.MUNDANE, Potions.THICK, Potions.AWKWARD);
|
||||
|
||||
@Inject(at = @At("RETURN"), method = "getTint", cancellable = true)
|
||||
public void vo$modifyWaterTint(ItemStack stack, ClientWorld world, LivingEntity user, CallbackInfoReturnable<Integer> cir) {
|
||||
// Dynamic Potion Item colors
|
||||
if (VOConfig.coloredItems) {
|
||||
var contents = stack.getComponents().get(DataComponentTypes.POTION_CONTENTS);
|
||||
if (contents != null && contents.potion().isPresent()) {
|
||||
if (!WATER_POTIONS.contains(contents.potion().get()))
|
||||
return; // Skip all potions with effects
|
||||
}
|
||||
if (cir.getReturnValue() == -1) cir.setReturnValue(ColorHelper.fullAlpha(VisualOverhaulClient.potionColor));
|
||||
else cir.setReturnValue(VisualOverhaulClient.potionColor);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,12 +1,19 @@
|
||||
package eu.midnightdust.visualoverhaul.mixin;
|
||||
|
||||
import net.minecraft.client.texture.AbstractTexture;
|
||||
import net.minecraft.client.texture.TextureManager;
|
||||
import net.minecraft.resource.ResourceManager;
|
||||
import net.minecraft.util.Identifier;
|
||||
import org.spongepowered.asm.mixin.Mixin;
|
||||
import org.spongepowered.asm.mixin.gen.Accessor;
|
||||
|
||||
import java.util.Map;
|
||||
|
||||
@Mixin(TextureManager.class)
|
||||
public interface TextureManagerAccessor {
|
||||
@Accessor
|
||||
ResourceManager getResourceContainer();
|
||||
|
||||
@Accessor
|
||||
Map<Identifier, AbstractTexture> getTextures();
|
||||
}
|
||||
|
||||
@@ -1,12 +1,17 @@
|
||||
package eu.midnightdust.visualoverhaul.util;
|
||||
|
||||
import net.minecraft.util.math.ColorHelper;
|
||||
import net.minecraft.util.math.MathHelper;
|
||||
|
||||
public class VOColorUtil {
|
||||
public static int convertRgbToArgb(int rgb) {
|
||||
public static int convertRgbToArgb(int rgb, int alpha) {
|
||||
int red = 0xFF & (rgb >> 16);
|
||||
int green = 0xFF & (rgb >> 8);
|
||||
int blue = 0xFF & (rgb);
|
||||
int alpha = 200; // Makes water bottles transparent, 255 would be opaque
|
||||
|
||||
return (alpha << 24) | (red << 16) | (green << 8) | blue;
|
||||
}
|
||||
public static int alphaAndBrightness(float alpha, float brightness) {
|
||||
return ColorHelper.getArgb(MathHelper.floor(alpha*255), MathHelper.floor(brightness*255), MathHelper.floor(brightness*255), MathHelper.floor(brightness*255));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,10 +0,0 @@
|
||||
{
|
||||
"variants": {
|
||||
"has_record=true": {
|
||||
"model": "visualoverhaul:block/jukebox_top_playing"
|
||||
},
|
||||
"has_record=false": {
|
||||
"model": "visualoverhaul:block/jukebox_top_stopped"
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,44 +0,0 @@
|
||||
{
|
||||
"variants": {
|
||||
"playing=true,channel=0": {"model": "visualoverhaul:block/phonos/jukebox_top_playing_0"},
|
||||
"playing=false,channel=0": {"model": "visualoverhaul:block/phonos/jukebox_top_stopped_0"},
|
||||
"playing=true,channel=1": {"model": "visualoverhaul:block/phonos/jukebox_top_playing_1"},
|
||||
"playing=false,channel=1": {"model": "visualoverhaul:block/phonos/jukebox_top_stopped_1"},
|
||||
"playing=true,channel=2": {"model": "visualoverhaul:block/phonos/jukebox_top_playing_2"},
|
||||
"playing=false,channel=2": {"model": "visualoverhaul:block/phonos/jukebox_top_stopped_2"},
|
||||
"playing=true,channel=3": {"model": "visualoverhaul:block/phonos/jukebox_top_playing_3"},
|
||||
"playing=false,channel=3": {"model": "visualoverhaul:block/phonos/jukebox_top_stopped_3"},
|
||||
"playing=true,channel=4": {"model": "visualoverhaul:block/phonos/jukebox_top_playing_4"},
|
||||
"playing=false,channel=4": {"model": "visualoverhaul:block/phonos/jukebox_top_stopped_4"},
|
||||
"playing=true,channel=5": {"model": "visualoverhaul:block/phonos/jukebox_top_playing_5"},
|
||||
"playing=false,channel=5": {"model": "visualoverhaul:block/phonos/jukebox_top_stopped_5"},
|
||||
"playing=true,channel=6": {"model": "visualoverhaul:block/phonos/jukebox_top_playing_6"},
|
||||
"playing=false,channel=6": {"model": "visualoverhaul:block/phonos/jukebox_top_stopped_6"},
|
||||
"playing=true,channel=7": {"model": "visualoverhaul:block/phonos/jukebox_top_playing_7"},
|
||||
"playing=false,channel=7": {"model": "visualoverhaul:block/phonos/jukebox_top_stopped_7"},
|
||||
"playing=true,channel=8": {"model": "visualoverhaul:block/phonos/jukebox_top_playing_8"},
|
||||
"playing=false,channel=8": {"model": "visualoverhaul:block/phonos/jukebox_top_stopped_8"},
|
||||
"playing=true,channel=9": {"model": "visualoverhaul:block/phonos/jukebox_top_playing_9"},
|
||||
"playing=false,channel=9": {"model": "visualoverhaul:block/phonos/jukebox_top_stopped_9"},
|
||||
"playing=true,channel=10": {"model": "visualoverhaul:block/phonos/jukebox_top_playing_10"},
|
||||
"playing=false,channel=10": {"model": "visualoverhaul:block/phonos/jukebox_top_stopped_10"},
|
||||
"playing=true,channel=11": {"model": "visualoverhaul:block/phonos/jukebox_top_playing_11"},
|
||||
"playing=false,channel=11": {"model": "visualoverhaul:block/phonos/jukebox_top_stopped_11"},
|
||||
"playing=true,channel=12": {"model": "visualoverhaul:block/phonos/jukebox_top_playing_12"},
|
||||
"playing=false,channel=12": {"model": "visualoverhaul:block/phonos/jukebox_top_stopped_12"},
|
||||
"playing=true,channel=13": {"model": "visualoverhaul:block/phonos/jukebox_top_playing_13"},
|
||||
"playing=false,channel=13": {"model": "visualoverhaul:block/phonos/jukebox_top_stopped_13"},
|
||||
"playing=true,channel=14": {"model": "visualoverhaul:block/phonos/jukebox_top_playing_14"},
|
||||
"playing=false,channel=14": {"model": "visualoverhaul:block/phonos/jukebox_top_stopped_14"},
|
||||
"playing=true,channel=15": {"model": "visualoverhaul:block/phonos/jukebox_top_playing_15"},
|
||||
"playing=false,channel=15": {"model": "visualoverhaul:block/phonos/jukebox_top_stopped_15"},
|
||||
"playing=true,channel=16": {"model": "visualoverhaul:block/phonos/jukebox_top_playing_16"},
|
||||
"playing=false,channel=16": {"model": "visualoverhaul:block/phonos/jukebox_top_stopped_16"},
|
||||
"playing=true,channel=17": {"model": "visualoverhaul:block/phonos/jukebox_top_playing_17"},
|
||||
"playing=false,channel=17": {"model": "visualoverhaul:block/phonos/jukebox_top_stopped_17"},
|
||||
"playing=true,channel=18": {"model": "visualoverhaul:block/phonos/jukebox_top_playing_18"},
|
||||
"playing=false,channel=18": {"model": "visualoverhaul:block/phonos/jukebox_top_stopped_18"},
|
||||
"playing=true,channel=19": {"model": "visualoverhaul:block/phonos/jukebox_top_playing_19"},
|
||||
"playing=false,channel=19": {"model": "visualoverhaul:block/phonos/jukebox_top_stopped_19"}
|
||||
}
|
||||
}
|
||||
Binary file not shown.
|
After Width: | Height: | Size: 373 B |
@@ -0,0 +1,16 @@
|
||||
{
|
||||
"model": {
|
||||
"type": "minecraft:model",
|
||||
"model": "minecraft:item/axolotl_bucket",
|
||||
"tints": [
|
||||
{
|
||||
"type": "minecraft:constant",
|
||||
"value": -1
|
||||
},
|
||||
{
|
||||
"type": "minecraft:potion",
|
||||
"default": -1
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,16 @@
|
||||
{
|
||||
"model": {
|
||||
"type": "minecraft:model",
|
||||
"model": "minecraft:item/cod_bucket",
|
||||
"tints": [
|
||||
{
|
||||
"type": "minecraft:constant",
|
||||
"value": -1
|
||||
},
|
||||
{
|
||||
"type": "minecraft:potion",
|
||||
"default": -1
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,16 @@
|
||||
{
|
||||
"model": {
|
||||
"type": "minecraft:model",
|
||||
"model": "minecraft:item/pufferfish_bucket",
|
||||
"tints": [
|
||||
{
|
||||
"type": "minecraft:constant",
|
||||
"value": -1
|
||||
},
|
||||
{
|
||||
"type": "minecraft:potion",
|
||||
"default": -1
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,16 @@
|
||||
{
|
||||
"model": {
|
||||
"type": "minecraft:model",
|
||||
"model": "minecraft:item/salmon_bucket",
|
||||
"tints": [
|
||||
{
|
||||
"type": "minecraft:constant",
|
||||
"value": -1
|
||||
},
|
||||
{
|
||||
"type": "minecraft:potion",
|
||||
"default": -1
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,16 @@
|
||||
{
|
||||
"model": {
|
||||
"type": "minecraft:model",
|
||||
"model": "minecraft:item/tropical_fish_bucket",
|
||||
"tints": [
|
||||
{
|
||||
"type": "minecraft:constant",
|
||||
"value": -1
|
||||
},
|
||||
{
|
||||
"type": "minecraft:potion",
|
||||
"default": -1
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,16 @@
|
||||
{
|
||||
"model": {
|
||||
"type": "minecraft:model",
|
||||
"model": "minecraft:item/water_bucket",
|
||||
"tints": [
|
||||
{
|
||||
"type": "minecraft:constant",
|
||||
"value": -1
|
||||
},
|
||||
{
|
||||
"type": "minecraft:potion",
|
||||
"default": -1
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
@@ -1,15 +0,0 @@
|
||||
{
|
||||
"parent": "minecraft:item/generated",
|
||||
"textures": {
|
||||
"layer0": "biomemakeover:item/music_disk_button_mushrooms"
|
||||
},
|
||||
|
||||
"overrides": [
|
||||
{
|
||||
"predicate": {
|
||||
"round": 1
|
||||
},
|
||||
"model": "biomemakeover:item/button_mushrooms_music_disk_round"
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -1,6 +0,0 @@
|
||||
{
|
||||
"parent": "visualoverhaul:item/round_disc",
|
||||
"textures": {
|
||||
"0": "biomemakeover:item/music_disk_button_mushrooms"
|
||||
}
|
||||
}
|
||||
@@ -1,15 +0,0 @@
|
||||
{
|
||||
"parent": "minecraft:item/generated",
|
||||
"textures": {
|
||||
"layer0": "biomemakeover:item/music_disc_ghost_town"
|
||||
},
|
||||
|
||||
"overrides": [
|
||||
{
|
||||
"predicate": {
|
||||
"round": 1
|
||||
},
|
||||
"model": "biomemakeover:item/ghost_town_music_disk_round"
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -1,6 +0,0 @@
|
||||
{
|
||||
"parent": "visualoverhaul:item/round_disc",
|
||||
"textures": {
|
||||
"0": "biomemakeover:item/music_disc_ghost_town"
|
||||
}
|
||||
}
|
||||
@@ -1,15 +0,0 @@
|
||||
{
|
||||
"parent": "minecraft:item/generated",
|
||||
"textures": {
|
||||
"layer0": "biomemakeover:item/music_disc_swamp_jives"
|
||||
},
|
||||
|
||||
"overrides": [
|
||||
{
|
||||
"predicate": {
|
||||
"round": 1
|
||||
},
|
||||
"model": "biomemakeover:item/swamp_jives_music_disk_round"
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -1,6 +0,0 @@
|
||||
{
|
||||
"parent": "visualoverhaul:item/round_disc",
|
||||
"textures": {
|
||||
"0": "biomemakeover:item/music_disc_swamp_jives"
|
||||
}
|
||||
}
|
||||
@@ -1,15 +0,0 @@
|
||||
{
|
||||
"parent": "minecraft:item/generated",
|
||||
"textures": {
|
||||
"layer0": "desolation:item/music_disc_ashes"
|
||||
},
|
||||
|
||||
"overrides": [
|
||||
{
|
||||
"predicate": {
|
||||
"round": 1
|
||||
},
|
||||
"model": "desolation:item/music_disc_ashes_round"
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -1,6 +0,0 @@
|
||||
{
|
||||
"parent": "visualoverhaul:item/round_disc",
|
||||
"textures": {
|
||||
"0": "desolation:item/music_disc_ashes"
|
||||
}
|
||||
}
|
||||
@@ -1,15 +0,0 @@
|
||||
{
|
||||
"parent": "minecraft:item/generated",
|
||||
"textures": {
|
||||
"layer0": "minecraft:item/music_disc_13"
|
||||
},
|
||||
|
||||
"overrides": [
|
||||
{
|
||||
"predicate": {
|
||||
"round": 1
|
||||
},
|
||||
"model": "minecraft:item/music_disc_13_round"
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -1,15 +0,0 @@
|
||||
{
|
||||
"parent": "minecraft:item/generated",
|
||||
"textures": {
|
||||
"layer0": "extra_discs:item/music_disc_0x10c"
|
||||
},
|
||||
|
||||
"overrides": [
|
||||
{
|
||||
"predicate": {
|
||||
"round": 1
|
||||
},
|
||||
"model": "extra_discs:item/music_disc_0x10c_round"
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -1,6 +0,0 @@
|
||||
{
|
||||
"parent": "visualoverhaul:item/round_disc",
|
||||
"textures": {
|
||||
"0": "extra_discs:item/music_disc_0x10c"
|
||||
}
|
||||
}
|
||||
@@ -1,15 +0,0 @@
|
||||
{
|
||||
"parent": "minecraft:item/generated",
|
||||
"textures": {
|
||||
"layer0": "extra_discs:item/music_disc_cliffside_hinson"
|
||||
},
|
||||
|
||||
"overrides": [
|
||||
{
|
||||
"predicate": {
|
||||
"round": 1
|
||||
},
|
||||
"model": "extra_discs:item/music_disc_cliffside_hinson_round"
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -1,6 +0,0 @@
|
||||
{
|
||||
"parent": "visualoverhaul:item/round_disc",
|
||||
"textures": {
|
||||
"0": "extra_discs:item/music_disc_cliffside_hinson"
|
||||
}
|
||||
}
|
||||
@@ -1,15 +0,0 @@
|
||||
{
|
||||
"parent": "minecraft:item/generated",
|
||||
"textures": {
|
||||
"layer0": "extra_discs:item/music_disc_i_jate_my_hob"
|
||||
},
|
||||
|
||||
"overrides": [
|
||||
{
|
||||
"predicate": {
|
||||
"round": 1
|
||||
},
|
||||
"model": "extra_discs:item/music_disc_i_jate_my_hob_round"
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -1,6 +0,0 @@
|
||||
{
|
||||
"parent": "visualoverhaul:item/round_disc",
|
||||
"textures": {
|
||||
"0": "extra_discs:item/music_disc_i_jate_my_hob"
|
||||
}
|
||||
}
|
||||
@@ -1,15 +0,0 @@
|
||||
{
|
||||
"parent": "minecraft:item/generated",
|
||||
"textures": {
|
||||
"layer0": "extra_discs:item/music_disc_peanuts"
|
||||
},
|
||||
|
||||
"overrides": [
|
||||
{
|
||||
"predicate": {
|
||||
"round": 1
|
||||
},
|
||||
"model": "extra_discs:item/music_disc_peanuts_round"
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -1,6 +0,0 @@
|
||||
{
|
||||
"parent": "visualoverhaul:item/round_disc",
|
||||
"textures": {
|
||||
"0": "extra_discs:item/music_disc_peanuts"
|
||||
}
|
||||
}
|
||||
@@ -1,15 +0,0 @@
|
||||
{
|
||||
"parent": "minecraft:item/generated",
|
||||
"textures": {
|
||||
"layer0": "extra_discs:item/music_disc_repetition"
|
||||
},
|
||||
|
||||
"overrides": [
|
||||
{
|
||||
"predicate": {
|
||||
"round": 1
|
||||
},
|
||||
"model": "extra_discs:item/music_disc_repetition_round"
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -1,6 +0,0 @@
|
||||
{
|
||||
"parent": "visualoverhaul:item/round_disc",
|
||||
"textures": {
|
||||
"0": "extra_discs:item/music_disc_repetition"
|
||||
}
|
||||
}
|
||||
@@ -1,15 +0,0 @@
|
||||
{
|
||||
"parent": "minecraft:item/generated",
|
||||
"textures": {
|
||||
"layer0": "extra_discs:item/music_disc_sometimes_i_make_video_game_music"
|
||||
},
|
||||
|
||||
"overrides": [
|
||||
{
|
||||
"predicate": {
|
||||
"round": 1
|
||||
},
|
||||
"model": "extra_discs:item/music_disc_sometimes_i_make_video_game_music_round"
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -1,6 +0,0 @@
|
||||
{
|
||||
"parent": "visualoverhaul:item/round_disc",
|
||||
"textures": {
|
||||
"0": "extra_discs:item/music_disc_sometimes_i_make_video_game_music"
|
||||
}
|
||||
}
|
||||
@@ -1,15 +0,0 @@
|
||||
{
|
||||
"parent": "minecraft:item/generated",
|
||||
"textures": {
|
||||
"layer0": "minecraft:item/music_disc_11"
|
||||
},
|
||||
|
||||
"overrides": [
|
||||
{
|
||||
"predicate": {
|
||||
"round": 1
|
||||
},
|
||||
"model": "minecraft:item/music_disc_11_round"
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -1,6 +0,0 @@
|
||||
{
|
||||
"parent": "visualoverhaul:item/round_disc",
|
||||
"textures": {
|
||||
"0": "minecraft:item/music_disc_11"
|
||||
}
|
||||
}
|
||||
@@ -1,15 +0,0 @@
|
||||
{
|
||||
"parent": "minecraft:item/generated",
|
||||
"textures": {
|
||||
"layer0": "minecraft:item/music_disc_13"
|
||||
},
|
||||
|
||||
"overrides": [
|
||||
{
|
||||
"predicate": {
|
||||
"round": 1
|
||||
},
|
||||
"model": "minecraft:item/music_disc_13_round"
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -1,6 +0,0 @@
|
||||
{
|
||||
"parent": "visualoverhaul:item/round_disc",
|
||||
"textures": {
|
||||
"0": "minecraft:item/music_disc_13"
|
||||
}
|
||||
}
|
||||
@@ -1,15 +0,0 @@
|
||||
{
|
||||
"parent": "minecraft:item/generated",
|
||||
"textures": {
|
||||
"layer0": "minecraft:item/music_disc_5"
|
||||
},
|
||||
|
||||
"overrides": [
|
||||
{
|
||||
"predicate": {
|
||||
"round": 1
|
||||
},
|
||||
"model": "minecraft:item/music_disc_5_round"
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -1,6 +0,0 @@
|
||||
{
|
||||
"parent": "visualoverhaul:item/round_disc",
|
||||
"textures": {
|
||||
"0": "minecraft:item/music_disc_5"
|
||||
}
|
||||
}
|
||||
@@ -1,15 +0,0 @@
|
||||
{
|
||||
"parent": "minecraft:item/generated",
|
||||
"textures": {
|
||||
"layer0": "minecraft:item/music_disc_blocks"
|
||||
},
|
||||
|
||||
"overrides": [
|
||||
{
|
||||
"predicate": {
|
||||
"round": 1
|
||||
},
|
||||
"model": "minecraft:item/music_disc_blocks_round"
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -1,6 +0,0 @@
|
||||
{
|
||||
"parent": "visualoverhaul:item/round_disc",
|
||||
"textures": {
|
||||
"0": "minecraft:item/music_disc_blocks"
|
||||
}
|
||||
}
|
||||
@@ -1,15 +0,0 @@
|
||||
{
|
||||
"parent": "minecraft:item/generated",
|
||||
"textures": {
|
||||
"layer0": "minecraft:item/music_disc_cat"
|
||||
},
|
||||
|
||||
"overrides": [
|
||||
{
|
||||
"predicate": {
|
||||
"round": 1
|
||||
},
|
||||
"model": "minecraft:item/music_disc_cat_round"
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -1,6 +0,0 @@
|
||||
{
|
||||
"parent": "visualoverhaul:item/round_disc",
|
||||
"textures": {
|
||||
"0": "minecraft:item/music_disc_cat"
|
||||
}
|
||||
}
|
||||
@@ -1,15 +0,0 @@
|
||||
{
|
||||
"parent": "minecraft:item/generated",
|
||||
"textures": {
|
||||
"layer0": "minecraft:item/music_disc_chirp"
|
||||
},
|
||||
|
||||
"overrides": [
|
||||
{
|
||||
"predicate": {
|
||||
"round": 1
|
||||
},
|
||||
"model": "minecraft:item/music_disc_chirp_round"
|
||||
}
|
||||
]
|
||||
}
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user