Skip to content

Commit

Permalink
Fix up armor skins make em cleaner RUNS on THE SERVER and the CODE do…
Browse files Browse the repository at this point in the history
…esnt BLOW ASS
  • Loading branch information
SammySemicolon committed Jul 15, 2023
1 parent cf29f0b commit 68f799e
Show file tree
Hide file tree
Showing 17 changed files with 153 additions and 103 deletions.
Original file line number Diff line number Diff line change
@@ -1,12 +1,18 @@
package com.sammy.malum.client.cosmetic;

import com.sammy.malum.common.cosmetic.*;
import net.minecraft.*;
import net.minecraft.client.player.*;
import net.minecraft.resources.*;
import net.minecraft.world.entity.*;
import team.lodestar.lodestone.systems.model.*;

import java.util.function.*;

public abstract class ArmorSkinRenderingData {

public static Function<ArmorSkin, ArmorSkinRenderingData> RENDERING_DATA = Util.memoize(ArmorSkin::getRenderingData);

public abstract ResourceLocation getTexture(LivingEntity livingEntity, boolean slim);

public abstract LodestoneArmorModel getModel(LivingEntity livingEntity, boolean slim);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -13,8 +13,8 @@ public class PrideArmorSkinRenderingData extends ArmorSkinRenderingData {
private final ResourceLocation standardTexture;

public PrideArmorSkinRenderingData(String type) {
this.slimTexture = malumPath("textures/armor/cosmetic/pride/" + type + "_slim.png");
this.standardTexture = malumPath("textures/armor/cosmetic/pride/" + type + ".png");
this.slimTexture = malumPath("textures/armor/cosmetic/pride/" + type + "_drip_slim.png");
this.standardTexture = malumPath("textures/armor/cosmetic/pride/" + type + "_drip.png");
}
@Override
public ResourceLocation getTexture(LivingEntity livingEntity, boolean slim) {
Expand Down
11 changes: 9 additions & 2 deletions src/main/java/com/sammy/malum/common/cosmetic/ArmorSkin.java
Original file line number Diff line number Diff line change
@@ -1,24 +1,31 @@
package com.sammy.malum.common.cosmetic;

import com.sammy.malum.client.cosmetic.*;
import com.sammy.malum.registry.common.item.*;
import net.minecraft.world.item.*;
import net.minecraftforge.api.distmarker.*;
import team.lodestar.lodestone.systems.item.*;

import java.util.*;

public class ArmorSkin {
public abstract class ArmorSkin {
public static final String MALUM_SKIN_TAG = "malum:item_skin";

public final String id;
public final Class<? extends LodestoneArmorItem> validArmorClass;
public final Item weaveItem;
public final int index;

public ArmorSkin(Class<? extends LodestoneArmorItem> validArmorClass, Item weaveItem) {
public ArmorSkin(String id, Class<? extends LodestoneArmorItem> validArmorClass, Item weaveItem) {
this.id = id;
this.validArmorClass = validArmorClass;
this.weaveItem = weaveItem;
this.index = ArmorSkinRegistry.SKINS.size();
}

@OnlyIn(Dist.CLIENT)
public abstract ArmorSkinRenderingData getRenderingData();

public static String getApplicableItemSkinTag(ItemStack target, ItemStack weave) {
for (Map.Entry<String, ArmorSkin> entry : ArmorSkinRegistry.SKINS.entrySet()) {
if (entry.getValue().validArmorClass.isInstance(target.getItem()) && entry.getValue().weaveItem.equals(weave.getItem())) {
Expand Down
12 changes: 10 additions & 2 deletions src/main/java/com/sammy/malum/common/cosmetic/PrideArmorSkin.java
Original file line number Diff line number Diff line change
@@ -1,10 +1,18 @@
package com.sammy.malum.common.cosmetic;

import com.sammy.malum.client.cosmetic.*;
import net.minecraft.world.item.*;
import net.minecraftforge.api.distmarker.*;
import team.lodestar.lodestone.systems.item.*;

public class PrideArmorSkin extends ArmorSkin {
public PrideArmorSkin(Class<? extends LodestoneArmorItem> validArmorClass, Item weaveItem) {
super(validArmorClass, weaveItem);
public PrideArmorSkin(String id, Class<? extends LodestoneArmorItem> validArmorClass, Item weaveItem) {
super(id, validArmorClass, weaveItem);
}

@OnlyIn(Dist.CLIENT)
@Override
public ArmorSkinRenderingData getRenderingData() {
return new PrideArmorSkinRenderingData(id);
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
package com.sammy.malum.common.cosmetic;

import com.sammy.malum.client.cosmetic.*;
import com.sammy.malum.registry.client.*;
import net.minecraft.world.item.*;
import net.minecraftforge.api.distmarker.*;
import team.lodestar.lodestone.systems.item.*;

import static com.sammy.malum.MalumMod.malumPath;

public class UltrakillArmorSkin extends ArmorSkin {
public UltrakillArmorSkin(String id, Class<? extends LodestoneArmorItem> validArmorClass, Item weaveItem) {
super(id, validArmorClass, weaveItem);
}

@OnlyIn(Dist.CLIENT)
@Override
public ArmorSkinRenderingData getRenderingData() {
return new SimpleArmorSkinRenderingData(malumPath("textures/armor/cosmetic/" + id + ".png"), ModelRegistry.ULTRAKILL_MACHINE);
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
package com.sammy.malum.common.cosmetic.ancient;

import com.sammy.malum.client.cosmetic.*;
import com.sammy.malum.common.cosmetic.*;
import com.sammy.malum.common.item.curiosities.armor.*;
import com.sammy.malum.registry.client.*;
import net.minecraft.world.item.*;
import net.minecraftforge.api.distmarker.*;

import static com.sammy.malum.MalumMod.*;

public class AncientClothArmorSkin extends ArmorSkin {
public AncientClothArmorSkin(String id, Item weaveItem) {
super(id, SoulHunterArmorItem.class, weaveItem);
}

@OnlyIn(Dist.CLIENT)
@Override
public ArmorSkinRenderingData getRenderingData() {
return new SimpleArmorSkinRenderingData(malumPath("textures/armor/cosmetic/ancient_soul_hunter.png"), ModelRegistry.ANCIENT_SOUL_HUNTER_ARMOR);
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
package com.sammy.malum.common.cosmetic.ancient;

import com.sammy.malum.client.cosmetic.*;
import com.sammy.malum.common.cosmetic.*;
import com.sammy.malum.common.item.curiosities.armor.*;
import com.sammy.malum.registry.client.*;
import net.minecraft.world.item.*;
import net.minecraftforge.api.distmarker.*;

import static com.sammy.malum.MalumMod.*;

public class AncientMetalArmorSkin extends ArmorSkin {
public AncientMetalArmorSkin(String id, Item weaveItem) {
super(id, SoulStainedSteelArmorItem.class, weaveItem);
}

@OnlyIn(Dist.CLIENT)
@Override
public ArmorSkinRenderingData getRenderingData() {
return new SimpleArmorSkinRenderingData(malumPath("textures/armor/cosmetic/ancient_soul_stained_steel.png"), ModelRegistry.ANCIENT_SOUL_STAINED_STEEL_ARMOR);
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
package com.sammy.malum.common.cosmetic.risk_of_rain;

import com.sammy.malum.client.cosmetic.*;
import com.sammy.malum.common.cosmetic.*;
import com.sammy.malum.registry.client.*;
import net.minecraft.world.item.*;
import net.minecraftforge.api.distmarker.*;
import team.lodestar.lodestone.systems.item.*;

import static com.sammy.malum.MalumMod.*;

public class CommandoArmorSkin extends ArmorSkin {
public CommandoArmorSkin(String id, Class<? extends LodestoneArmorItem> validArmorClass, Item weaveItem) {
super(id, validArmorClass, weaveItem);
}

@OnlyIn(Dist.CLIENT)
@Override
public ArmorSkinRenderingData getRenderingData() {
return new SimpleArmorSkinRenderingData(malumPath("textures/armor/cosmetic/risk_of_rain/commando.png"), ModelRegistry.COMMANDO);
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
package com.sammy.malum.common.cosmetic.risk_of_rain;

import com.sammy.malum.client.cosmetic.*;
import com.sammy.malum.common.cosmetic.*;
import com.sammy.malum.registry.client.*;
import net.minecraft.world.item.*;
import net.minecraftforge.api.distmarker.*;
import team.lodestar.lodestone.systems.item.*;

import static com.sammy.malum.MalumMod.*;

public class ExecutionerArmorSkin extends ArmorSkin {
public ExecutionerArmorSkin(String id, Class<? extends LodestoneArmorItem> validArmorClass, Item weaveItem) {
super(id, validArmorClass, weaveItem);
}

@OnlyIn(Dist.CLIENT)
@Override
public ArmorSkinRenderingData getRenderingData() {
return new SimpleArmorSkinRenderingData(malumPath("textures/armor/cosmetic/risk_of_rain/executioner.png"), ModelRegistry.EXECUTIONER);
}
}
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
package com.sammy.malum.common.item.curiosities.armor;

import com.sammy.malum.client.cosmetic.*;
import com.sammy.malum.common.cosmetic.*;
import com.sammy.malum.registry.common.item.*;
import net.minecraft.world.entity.*;
import net.minecraft.world.item.*;
import team.lodestar.lodestone.systems.item.*;
Expand All @@ -15,7 +15,7 @@ public MalumArmorItem(ArmorMaterial materialIn, EquipmentSlot slot, Properties b
public String getArmorTexture(ItemStack stack, Entity entity, EquipmentSlot slot, String type) {
ArmorSkin skin = ArmorSkin.getAppliedItemSkin(stack);
if (skin != null && entity instanceof LivingEntity livingEntity) {
return ArmorSkinRegistry.ClientOnly.SKIN_RENDERING_DATA.get(skin).getTexture(livingEntity).toString();
return ArmorSkinRenderingData.RENDERING_DATA.apply(skin).getTexture(livingEntity).toString();
}
return super.getArmorTexture(stack, entity, slot, type);
}
Expand Down
Original file line number Diff line number Diff line change
@@ -1,9 +1,9 @@
package com.sammy.malum.common.item.curiosities.armor;

import com.google.common.collect.*;
import com.sammy.malum.client.cosmetic.*;
import com.sammy.malum.common.cosmetic.*;
import com.sammy.malum.registry.client.*;
import com.sammy.malum.registry.common.item.*;
import net.minecraft.client.*;
import net.minecraft.client.model.*;
import net.minecraft.util.*;
Expand Down Expand Up @@ -56,7 +56,7 @@ public LodestoneArmorModel getArmorModel(LivingEntity entity, ItemStack itemStac
ArmorSkin skin = ArmorSkin.getAppliedItemSkin(itemStack);
LodestoneArmorModel model = ModelRegistry.SOUL_HUNTER_ARMOR;
if (skin != null) {
model = ArmorSkinRegistry.ClientOnly.SKIN_RENDERING_DATA.get(skin).getModel(entity);
model = ArmorSkinRenderingData.RENDERING_DATA.apply(skin).getModel(entity);
}
model.slot = slot;
model.copyFromDefault(_default);
Expand Down
Original file line number Diff line number Diff line change
@@ -1,10 +1,10 @@
package com.sammy.malum.common.item.curiosities.armor;

import com.google.common.collect.*;
import com.sammy.malum.client.cosmetic.*;
import com.sammy.malum.common.cosmetic.*;
import com.sammy.malum.registry.client.*;
import com.sammy.malum.registry.common.*;
import com.sammy.malum.registry.common.item.*;
import net.minecraft.client.*;
import net.minecraft.client.model.*;
import net.minecraft.util.*;
Expand Down Expand Up @@ -56,7 +56,7 @@ public LodestoneArmorModel getArmorModel(LivingEntity entity, ItemStack itemStac
ArmorSkin skin = ArmorSkin.getAppliedItemSkin(itemStack);
LodestoneArmorModel model = ModelRegistry.SOUL_STAINED_ARMOR;
if (skin != null) {
model = ArmorSkinRegistry.ClientOnly.SKIN_RENDERING_DATA.get(skin).getModel(entity);
model = ArmorSkinRenderingData.RENDERING_DATA.apply(skin).getModel(entity);
}
model.slot = slot;
model.copyFromDefault(_default);
Expand Down
Loading

0 comments on commit 68f799e

Please sign in to comment.