1
0
mirror of https://github.com/GeyserMC/PackConverter.git synced 2025-12-19 14:59:21 +00:00

Add support for flipbook texture map creation

This commit is contained in:
rtm516
2025-05-24 01:03:13 +01:00
parent 8ff9894894
commit 986da97892
5 changed files with 87 additions and 11 deletions

2
.gitignore vendored
View File

@@ -239,3 +239,5 @@ gradle-app.setting
# Copyright header files
.idea/*
!.idea/copyright/
test/

View File

@@ -1,2 +1,2 @@
group = org.geysermc.pack
version = 3.3.1-SNAPSHOT
version = 3.3.2-SNAPSHOT

View File

@@ -1,5 +1,5 @@
/*
* Copyright (c) 2019-2024 GeyserMC. http://geysermc.org
* Copyright (c) 2019-2025 GeyserMC. http://geysermc.org
*
* Permission is hereby granted, free of charge, to any person obtaining a copy
* of this software and associated documentation files (the "Software"), to deal
@@ -33,6 +33,7 @@ import org.geysermc.pack.bedrock.resource.models.entity.ModelEntity;
import org.geysermc.pack.bedrock.resource.render_controllers.RenderControllers;
import org.geysermc.pack.bedrock.resource.sounds.SoundDefinitions;
import org.geysermc.pack.bedrock.resource.sounds.sounddefinitions.Sounds;
import org.geysermc.pack.bedrock.resource.textures.FlipbookTexture;
import org.geysermc.pack.bedrock.resource.textures.ItemTexture;
import org.geysermc.pack.bedrock.resource.textures.TerrainTexture;
import org.geysermc.pack.bedrock.resource.textures.itemtexture.TextureData;
@@ -45,6 +46,7 @@ import org.jetbrains.annotations.Nullable;
import java.io.IOException;
import java.nio.file.Files;
import java.nio.file.Path;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Map;
@@ -72,6 +74,7 @@ public class BedrockResourcePack {
private SoundDefinitions soundDefinitions;
private Languages languages;
private Map<String, RenderControllers> renderControllers;
private Map<String, FlipbookTexture> flipbookTextures;
private Map<String, ModelEntity> blockModels;
private Map<String, ModelEntity> entityModels;
@@ -163,6 +166,26 @@ public class BedrockResourcePack {
this.terrainTexture = terrainTexture;
}
/**
* Get the flipbook textures of the resource pack.
*
* @return the flipbook textures of the resource pack
*/
@Nullable
public Map<String, FlipbookTexture> flipbookTextures() {
return this.flipbookTextures;
}
/**
* Set the flipbook textures of the resource pack.
*
* @param flipbookTextures the flipbook textures of the resource pack
*/
public void flipbookTextures(@Nullable Map<String, FlipbookTexture> flipbookTextures) {
this.flipbookTextures = flipbookTextures;
}
/**
* Get the attachables of the resource pack.
*
@@ -338,6 +361,19 @@ public class BedrockResourcePack {
this.terrainTexture.textureData().put(id, data);
}
public void addFlipbookTexture(@NotNull String id, @NotNull String textureLocation, @NotNull int ticksPerFrame) {
if (this.flipbookTextures == null) {
this.flipbookTextures = new HashMap<>();
}
FlipbookTexture texture = new FlipbookTexture();
texture.atlasTile(id);
texture.flipbookTexture(textureLocation);
texture.ticksPerFrame(ticksPerFrame);
this.flipbookTextures.put(id, texture);
}
/**
* Add an attachable to the resource pack.
*
@@ -487,6 +523,10 @@ public class BedrockResourcePack {
exportJson(GSON, this.directory.resolve("textures/terrain_texture.json"), this.terrainTexture);
}
if (this.flipbookTextures != null) {
exportJson(GSON, this.directory.resolve("textures/flipbook_textures.json"), this.flipbookTextures.values());
}
if (this.attachables != null) {
for (Map.Entry<String, Attachables> attachable : this.attachables.entrySet()) {
exportJson(GSON, this.directory.resolve(attachable.getKey()), attachable.getValue());

View File

@@ -0,0 +1,43 @@
package org.geysermc.pack.bedrock.resource.textures;
import com.google.gson.annotations.SerializedName;
/**
* Flipbook Texture Entry
* <p>
* An entry in the flipbook texture file that specifies an animated texture.
*/
public class FlipbookTexture {
@SerializedName("atlas_tile")
public String atlasTile;
@SerializedName("flipbook_texture")
public String flipbookTexture;
@SerializedName("ticks_per_frame")
public int ticksPerFrame;
public String atlasTile() {
return this.atlasTile;
}
public void atlasTile(String atlasTile) {
this.atlasTile = atlasTile;
}
public String flipbookTexture() {
return this.flipbookTexture;
}
public void flipbookTexture(String flipbookTexture) {
this.flipbookTexture = flipbookTexture;
}
public int ticksPerFrame() {
return this.ticksPerFrame;
}
public void ticksPerFrame(int ticksPerFrame) {
this.ticksPerFrame = ticksPerFrame;
}
}

View File

@@ -1,9 +0,0 @@
package org.geysermc.pack.bedrock.resource.textures;
/**
* Flipbook Texture File
* <p>
* The file that specifies animated textures.
*/
public class FlipbookTextures {
}