Skip to content

Commit

Permalink
1.21.3
Browse files Browse the repository at this point in the history
  • Loading branch information
ThatGravyBoat committed Oct 26, 2024
1 parent fc5db32 commit ac80f39
Show file tree
Hide file tree
Showing 25 changed files with 103 additions and 115 deletions.
2 changes: 1 addition & 1 deletion build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@ import net.fabricmc.loom.task.RemapJarTask
plugins {
java
id("com.teamresourceful.resourcefulgradle") version "0.0.+"
id("dev.architectury.loom") version "1.6-SNAPSHOT" apply false
id("dev.architectury.loom") version "1.7-SNAPSHOT" apply false
id("architectury-plugin") version "3.4-SNAPSHOT"
id("com.github.johnrengelman.shadow") version "7.1.2" apply false
id("maven-publish")
Expand Down
2 changes: 1 addition & 1 deletion changelog.md
Original file line number Diff line number Diff line change
@@ -1 +1 @@
- Fix issues where pillars weren't using appearances correctly causing issues with mods like Framed Blocks, thanks to XFactHD for the fixes.
- Update to 1.21.3
Original file line number Diff line number Diff line change
@@ -1,35 +1,40 @@
package earth.terrarium.athena.impl.loading;

import com.google.gson.Gson;
import com.google.gson.JsonElement;
import com.google.gson.JsonObject;
import earth.terrarium.athena.impl.client.DefaultModels;
import net.minecraft.client.resources.model.BlockStateModelLoader;
import net.minecraft.resources.ResourceLocation;
import net.minecraft.server.packs.resources.ResourceManager;
import net.minecraft.server.packs.resources.SimpleJsonResourceReloadListener;
import net.minecraft.util.ExtraCodecs;
import net.minecraft.util.GsonHelper;
import net.minecraft.util.profiling.ProfilerFiller;

import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Objects;
import java.util.function.Function;
import java.util.concurrent.ConcurrentHashMap;

public class AthenaResourceLoader extends SimpleJsonResourceReloadListener {
public class AthenaResourceLoader extends SimpleJsonResourceReloadListener<JsonElement> {

private static final String KEY = DefaultModels.MODID + ":loader";

public static final AthenaResourceLoader INSTANCE = new AthenaResourceLoader();

private Function<ResourceLocation, List<BlockStateModelLoader.LoadedJson>> getter = id -> null;
private final Map<ResourceLocation, JsonObject> blockstateData = new ConcurrentHashMap<>();
private final Map<ResourceLocation, JsonElement> data = new HashMap<>();

public AthenaResourceLoader() {
super(new Gson(), "athena");
super(ExtraCodecs.JSON, "athena");
}

public static void clearBlockstateData() {
INSTANCE.blockstateData.clear();
}

public void setGetter(Function<ResourceLocation, List<BlockStateModelLoader.LoadedJson>> getter) {
this.getter = Objects.requireNonNullElse(getter, id -> null);
public static void addBlockstateData(ResourceLocation stateId, JsonObject data) {
if (data == null) return;
if (!data.has(KEY)) return;
INSTANCE.blockstateData.put(stateId, data);
}

@Override
Expand All @@ -43,20 +48,16 @@ public static JsonObject getData(ResourceLocation modelType, ResourceLocation mo
if (modelData != null) {
return checkObject(modelType, modelData);
}
List<BlockStateModelLoader.LoadedJson> jsons = INSTANCE.getter.apply(convertModelIdToBlockStatePath(modelId));
if (jsons == null) return null;
for (BlockStateModelLoader.LoadedJson json : jsons) {
JsonObject object = checkObject(modelType, json.data());
if (object != null) {
return object;
}
var blockstateData = INSTANCE.blockstateData.get(convertModelIdToBlockStatePath(modelId));
if (blockstateData != null) {
return checkObject(modelType, blockstateData);
}
return null;
}

private static JsonObject checkObject(ResourceLocation modelType, JsonElement data) {
if (data instanceof JsonObject object) {
String type = GsonHelper.getAsString(object, DefaultModels.MODID + ":loader", "");
String type = GsonHelper.getAsString(object, KEY, "");
if (modelType.toString().equals(type)) {
return object;
}
Expand Down

This file was deleted.

Original file line number Diff line number Diff line change
@@ -0,0 +1,44 @@
package earth.terrarium.athena.mixins;

import com.google.gson.JsonObject;
import com.llamalad7.mixinextras.sugar.Local;
import earth.terrarium.athena.impl.loading.AthenaResourceLoader;
import net.minecraft.client.resources.model.BlockStateModelLoader;
import net.minecraft.client.resources.model.ModelManager;
import net.minecraft.resources.ResourceLocation;
import net.minecraft.server.packs.resources.Resource;
import net.minecraft.server.packs.resources.ResourceManager;
import net.minecraft.world.level.block.Block;
import net.minecraft.world.level.block.state.BlockState;
import net.minecraft.world.level.block.state.StateDefinition;
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;
import java.util.Map;
import java.util.concurrent.CompletableFuture;
import java.util.concurrent.Executor;
import java.util.function.Function;

@Mixin(ModelManager.class)
public class ModelManagerMixin {

@Inject(method = "loadBlockStates", at = @At("HEAD"))
private static void onBlockStatesLoad(BlockStateModelLoader blockStateModelLoader, ResourceManager resourceManager, Executor executor, CallbackInfoReturnable<CompletableFuture<BlockStateModelLoader.LoadedModels>> cir) {
AthenaResourceLoader.clearBlockstateData();
}

@Inject(method = "method_62660", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/renderer/block/model/BlockModelDefinition;fromJsonElement(Lcom/google/gson/JsonElement;)Lnet/minecraft/client/renderer/block/model/BlockModelDefinition;"))
private static void onBlockModelLoad(
Map.Entry<ResourceLocation, List<Resource>> entry,
Function<ResourceLocation, StateDefinition<Block, BlockState>> function,
BlockStateModelLoader blockStateModelLoader,
CallbackInfoReturnable<BlockStateModelLoader.LoadedModels> cir,
@Local JsonObject json
) {
AthenaResourceLoader.addBlockstateData(entry.getKey(), json);
}

}
2 changes: 1 addition & 1 deletion common/src/main/resources/athena.mixins.json
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@
"package": "earth.terrarium.athena.mixins",
"compatibilityLevel": "JAVA_17",
"client": [
"ModelBakeryMixin"
"ModelManagerMixin"
],
"injectors": {
"defaultRequire": 1
Expand Down
2 changes: 1 addition & 1 deletion fabric/gradle.properties
Original file line number Diff line number Diff line change
@@ -1 +1 @@
fabricApiVersion=0.100.1
fabricApiVersion=0.106.1
Original file line number Diff line number Diff line change
Expand Up @@ -10,8 +10,8 @@
import net.fabricmc.fabric.api.renderer.v1.model.ModelHelper;
import net.fabricmc.fabric.api.renderer.v1.render.RenderContext;
import net.minecraft.client.Minecraft;
import net.minecraft.client.renderer.block.model.BakedOverrides;
import net.minecraft.client.renderer.block.model.BakedQuad;
import net.minecraft.client.renderer.block.model.ItemOverrides;
import net.minecraft.client.renderer.block.model.ItemTransforms;
import net.minecraft.client.renderer.texture.MissingTextureAtlasSprite;
import net.minecraft.client.renderer.texture.TextureAtlasSprite;
Expand Down Expand Up @@ -149,7 +149,7 @@ public boolean isCustomRenderer() {
}

@Override
public @NotNull ItemOverrides getOverrides() {
return ItemOverrides.EMPTY;
public @NotNull BakedOverrides overrides() {
return BakedOverrides.EMPTY;
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -25,12 +25,10 @@ private static class Listener implements IdentifiableResourceReloadListener {
@Override
public @NotNull CompletableFuture<Void> reload(
PreparationBarrier preparationBarrier, ResourceManager resourceManager,
ProfilerFiller profilerFiller, ProfilerFiller profilerFiller2,
Executor executor, Executor executor2
) {
return AthenaResourceLoader.INSTANCE.reload(
preparationBarrier, resourceManager,
profilerFiller, profilerFiller2,
executor, executor2
);
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,11 +8,11 @@
public class AthenaModelLoadingPlugin implements ModelLoadingPlugin {

@Override
public void onInitializeModelLoader(Context context) {
public void initialize(Context context) {
FactoryManagerImpl.LOADERS.forEach((id, loader) ->
context.modifyModelBeforeBake().register((model, ctx) ->
Objects.requireNonNullElse(loader.loadModel(ctx.topLevelId()), model)
)
context.modifyModelBeforeBake().register((model, ctx) ->
Objects.requireNonNullElse(loader.loadModel(ctx.topLevelId()), model)
)
);
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -21,12 +21,7 @@ public AthenaUnbakedModel(Supplier<AthenaBlockModel> model) {
}

@Override
public @NotNull Collection<ResourceLocation> getDependencies() {
return List.of();
}

@Override
public void resolveParents(Function<ResourceLocation, UnbakedModel> function) {
public void resolveDependencies(Resolver resolver) {

}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -55,8 +55,8 @@ public int getHeight() {
}

@Override
public int getMinBuildHeight() {
return getter.getMinBuildHeight();
public int getMinY() {
return getter.getMinY();
}

@Override
Expand Down
2 changes: 1 addition & 1 deletion fabric/src/main/resources/fabric.mod.json
Original file line number Diff line number Diff line change
Expand Up @@ -35,6 +35,6 @@
},
"depends": {
"fabric": "*",
"minecraft": ">=1.21"
"minecraft": ">=1.21.3"
}
}
6 changes: 3 additions & 3 deletions gradle.properties
Original file line number Diff line number Diff line change
@@ -1,9 +1,9 @@
org.gradle.jvmargs=-Xmx3G

minecraftVersion=1.21
minecraftVersion=1.21.3
enabledPlatforms=fabric,neoforge

version=4.0.1
version=4.1.0
group=earth.terrarium.athena

fabricLoaderVersion=0.15.11
fabricLoaderVersion=0.16.7
2 changes: 1 addition & 1 deletion gradle/wrapper/gradle-wrapper.properties
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
distributionUrl=https\://services.gradle.org/distributions/gradle-8.6-bin.zip
distributionUrl=https\://services.gradle.org/distributions/gradle-8.8-bin.zip
zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists
2 changes: 1 addition & 1 deletion neoforge/gradle.properties
Original file line number Diff line number Diff line change
@@ -1,3 +1,3 @@
loom.platform=neoforge

neoforgeVersion=21.0.0-beta
neoforgeVersion=21.3.3-beta
Original file line number Diff line number Diff line change
Expand Up @@ -8,8 +8,8 @@
import net.minecraft.Optionull;
import net.minecraft.client.Minecraft;
import net.minecraft.client.renderer.RenderType;
import net.minecraft.client.renderer.block.model.BakedOverrides;
import net.minecraft.client.renderer.block.model.BakedQuad;
import net.minecraft.client.renderer.block.model.ItemOverrides;
import net.minecraft.client.renderer.texture.MissingTextureAtlasSprite;
import net.minecraft.client.renderer.texture.TextureAtlasSprite;
import net.minecraft.client.resources.model.Material;
Expand Down Expand Up @@ -125,8 +125,8 @@ public boolean isCustomRenderer() {
}

@Override
public @NotNull ItemOverrides getOverrides() {
return ItemOverrides.EMPTY;
public @NotNull BakedOverrides overrides() {
return BakedOverrides.EMPTY;
}

@Override
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -21,12 +21,7 @@ public AthenaUnbakedModel(Supplier<AthenaBlockModel> model) {
}

@Override
public @NotNull Collection<ResourceLocation> getDependencies() {
return List.of();
}

@Override
public void resolveParents(@NotNull Function<ResourceLocation, UnbakedModel> function) {
public void resolveDependencies(@NotNull Resolver arg) {

}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,7 @@ public static List<BakedQuad> bakeQuad(AthenaQuad quad, Direction direction, Tex
final Vector3f start = getStartPos(quad, direction);
final Vector3f end = getEndPos(quad, direction);
final BlockElementFace face = AthenaBlockElementFace.of(quad, direction, start, end);
final BlockElement element = new BlockElement(start, end, Map.of(direction.getOpposite(), face), null, true);
final BlockElement element = new BlockElement(start, end, Map.of(direction.getOpposite(), face));
return UnbakedGeometryHelper.bakeElements(
List.of(element),
mat -> sprite,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -54,8 +54,8 @@ public int getHeight() {
}

@Override
public int getMinBuildHeight() {
return getter.getMinBuildHeight();
public int getMinY() {
return getter.getMinY();
}

@Override
Expand Down

This file was deleted.

Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@
import earth.terrarium.athena.api.client.models.neoforge.FactoryManagerImpl;
import earth.terrarium.athena.api.client.utils.AthenaUnbakedModelLoader;
import earth.terrarium.athena.impl.client.DefaultModels;
import net.minecraft.client.renderer.block.model.ItemOverrides;
import net.minecraft.client.renderer.block.model.ItemOverride;
import net.minecraft.client.renderer.texture.TextureAtlasSprite;
import net.minecraft.client.resources.model.BakedModel;
import net.minecraft.client.resources.model.Material;
Expand All @@ -19,6 +19,7 @@
import net.neoforged.neoforge.client.model.geometry.IUnbakedGeometry;
import org.jetbrains.annotations.NotNull;

import java.util.List;
import java.util.function.Function;

public class AthenaGeometryLoader implements IGeometryLoader<AthenaGeometryLoader.Unbaked> {
Expand All @@ -41,7 +42,7 @@ public record Unbaked(AthenaUnbakedModelLoader loader, JsonObject json) implemen
@NotNull ModelBaker baker,
@NotNull Function<Material, TextureAtlasSprite> spriteGetter,
@NotNull ModelState modelState,
@NotNull ItemOverrides arg3
@NotNull List<ItemOverride> overrides
) {
return loader.loadModel(json).bake(baker, spriteGetter, modelState);
}
Expand Down
Loading

0 comments on commit ac80f39

Please sign in to comment.