Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Hats Off! Cosmetic system for familiars restored and upgraded #1432

Merged
merged 2 commits into from
Oct 6, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
10 changes: 5 additions & 5 deletions build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ plugins {
id 'eclipse'
id 'idea'
id 'maven-publish'
id 'net.neoforged.gradle.userdev' version '7.0.145'
id 'net.neoforged.gradle.userdev' version '7.0.+'
}

version = mod_version
Expand All @@ -24,7 +24,7 @@ java.withSourcesJar()

subsystems {
parchment {
minecraftVersion = "1.20.6"
minecraftVersion = "1.21"
mappingsVersion = project.parchment_version
}
}
Expand All @@ -43,7 +43,7 @@ runs {
}

data {
programArguments.addAll '--mod', mod_id, '--all', '--output', file('src/generated/resources/').getAbsolutePath(), '--existing', file('src/main/resources/').getAbsolutePath()
getArguments().addAll '--mod', mod_id, '--all', '--output', file('src/generated/resources/').getAbsolutePath(), '--existing', file('src/main/resources/').getAbsolutePath()
}
}

Expand Down Expand Up @@ -104,7 +104,7 @@ dependencies {
// jarJar(group: 'software.bernie.geckolib', name: "geckolib-neoforge-${minecraft_version}", version: "[4.5,)") {
// jarJar.pin(it, "${geckolib_version}")
// }
implementation "software.bernie.geckolib:geckolib-neoforge-1.21:${geckolib_version}"
implementation "software.bernie.geckolib:geckolib-neoforge-1.21.1:${geckolib_version}"
//
implementation(jarJar(group: 'vazkii.patchouli', name: 'Patchouli', version: '[1.21,)') {
jarJar.pin(it, patchouli_version)
Expand All @@ -117,7 +117,7 @@ dependencies {
implementation "mezz.jei:jei-1.21-neoforge:${jei_version}"
implementation 'com.github.glitchfiend:TerraBlender-neoforge:1.21-4.0.0.0'
implementation "curse.maven:jade-324717:5444008"
implementation 'top.theillusivec4.curios:curios-neoforge:9.0.4+1.21'
implementation "top.theillusivec4.curios:curios-neoforge:${curios_version}+1.21"

implementation "curse.maven:ars-additions-974408:5698511"
}
Expand Down
21 changes: 11 additions & 10 deletions gradle.properties
Original file line number Diff line number Diff line change
Expand Up @@ -3,15 +3,16 @@
org.gradle.jvmargs=-Xmx4G
org.gradle.daemon=false
org.gradle.debug=false

neogradle.subsystems.parchment.minecraftVersion=1.20.6
neogradle.subsystems.parchment.mappingsVersion=2024.05.01
neogradle.subsystems.decompiler.maxMemory=4G
neogradle.subsystems.recompiler.maxMemory=4G
neogradle.subsystems.parchment.minecraftVersion=1.21.0
neogradle.subsystems.parchment.mappingsVersion=2024.07.28

minecraft_version=1.21.0
parchment_version=2024.05.01
minecraft_version_range=[1.20.6,1.21)
neo_version=21.1.13
neo_version_range=[20.6,)
parchment_version=2024.07.28
minecraft_version_range=[1.20.6,1.21.2)
neo_version=21.1.66
neo_version_range=[21,)
loader_version_range=[2,)

mod_id=ars_nouveau
Expand All @@ -23,7 +24,7 @@ mod_authors=Bailey Hollingsworth
mod_description=Craft spells, create powerful baubles, and summon magical creatures!

jei_version=19.5.0.44
curios_version=8.0.0-beta
geckolib_version=4.5.7
patchouli_version=87-NEOFORGE-SNAPSHOT
curios_version=9.0.12
geckolib_version=4.6.6
patchouli_version=88-NEOFORGE-SNAPSHOT
caelus_version=7.0.0+1.21
2 changes: 1 addition & 1 deletion gradle/wrapper/gradle-wrapper.properties
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
distributionUrl=https\://services.gradle.org/distributions/gradle-8.7-bin.zip
distributionUrl=https\://services.gradle.org/distributions/gradle-8.8-bin.zip
networkTimeout=10000
validateDistributionUrl=true
zipStoreBase=GRADLE_USER_HOME
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,18 +8,28 @@

public interface ICosmeticItem {

Vec3 defaultScaling = new Vec3(1.0, 1.0, 1.0);

//bone model where the item is renderer, all animations that include the bone will be synced with the item
default String getBone() {
default String getBone(LivingEntity entity) {
return "head";
}

//translate relative to bone pivot
Vec3 getTranslations();
/**
* translate relative to bone pivot specified by {@link ICosmeticItem#getBone}
*/
default Vec3 getTranslations() {
return Vec3.ZERO;
}

Vec3 getScaling();
default Vec3 getScaling() {
return defaultScaling;
}

//Entity Sensitive
//translate relative to bone pivot
/**
* Entity Sensitive
* translate relative to bone pivot specified by {@link ICosmeticItem#getBone}
*/
default Vec3 getTranslations(LivingEntity entity) {
return getTranslations();
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -11,20 +11,15 @@
import com.hollingsworth.arsnouveau.client.gui.GuiSpellHUD;
import com.hollingsworth.arsnouveau.client.particle.ParticleColor;
import com.hollingsworth.arsnouveau.client.renderer.entity.*;
import com.hollingsworth.arsnouveau.client.renderer.entity.familiar.AnimSkullRenderer;
import com.hollingsworth.arsnouveau.client.renderer.entity.familiar.FamiliarBookwyrmRenderer;
import com.hollingsworth.arsnouveau.client.renderer.entity.familiar.FamiliarStarbyModel;
import com.hollingsworth.arsnouveau.client.renderer.entity.familiar.FamiliarWhirlisprigRenderer;
import com.hollingsworth.arsnouveau.client.renderer.entity.familiar.*;
import com.hollingsworth.arsnouveau.client.renderer.tile.*;
import com.hollingsworth.arsnouveau.common.block.tile.MageBlockTile;
import com.hollingsworth.arsnouveau.common.block.tile.PotionJarTile;
import com.hollingsworth.arsnouveau.common.block.tile.PotionMelderTile;
import com.hollingsworth.arsnouveau.common.entity.EntityDrygmy;
import com.hollingsworth.arsnouveau.common.entity.EntityWixie;
import com.hollingsworth.arsnouveau.common.entity.Whirlisprig;
import com.hollingsworth.arsnouveau.common.entity.familiar.FamiliarDrygmy;
import com.hollingsworth.arsnouveau.common.entity.familiar.FamiliarStarbuncle;
import com.hollingsworth.arsnouveau.common.entity.familiar.FamiliarWixie;
import com.hollingsworth.arsnouveau.common.items.data.ArmorPerkHolder;
import com.hollingsworth.arsnouveau.common.items.data.BlockFillContents;
import com.hollingsworth.arsnouveau.common.items.data.PotionJarData;
Expand All @@ -37,6 +32,8 @@
import net.minecraft.client.gui.Font;
import net.minecraft.client.gui.LayeredDraw;
import net.minecraft.client.multiplayer.ClientLevel;
import net.minecraft.client.renderer.MultiBufferSource;
import net.minecraft.client.renderer.RenderType;
import net.minecraft.client.renderer.entity.*;
import net.minecraft.client.renderer.item.ClampedItemPropertyFunction;
import net.minecraft.client.renderer.item.ItemProperties;
Expand Down Expand Up @@ -122,13 +119,13 @@ public static void registerRenderers(final EntityRenderersEvent.RegisterRenderer
event.registerEntityRenderer(ModEntities.ALLY_VEX.get(), VexRenderer::new);

event.registerEntityRenderer(ModEntities.STARBUNCLE_TYPE.get(), StarbuncleRenderer::new);
event.registerEntityRenderer(ModEntities.WHIRLISPRIG_TYPE.get(), (t) -> new GeoEntityRenderer<>(t, new WhirlisprigModel<>()){
event.registerEntityRenderer(ModEntities.WHIRLISPRIG_TYPE.get(), (t) -> new GeoEntityRenderer<>(t, new WhirlisprigModel<>()) {
@Override
public @NotNull ResourceLocation getTextureLocation(@NotNull Whirlisprig animatable) {
return animatable.getTexture();
}
});
event.registerEntityRenderer(ModEntities.ENTITY_WIXIE_TYPE.get(), (t) -> new GeoEntityRenderer<>(t, new WixieModel<>()){
event.registerEntityRenderer(ModEntities.ENTITY_WIXIE_TYPE.get(), (t) -> new GeoEntityRenderer<>(t, new WixieModel<>()) {
@Override
public @NotNull ResourceLocation getTextureLocation(@NotNull EntityWixie animatable) {
return animatable.getTexture();
Expand All @@ -146,14 +143,14 @@ public static void registerRenderers(final EntityRenderersEvent.RegisterRenderer
event.registerEntityRenderer(ModEntities.ENTITY_RITUAL.get(),
renderManager -> new RenderBlank(renderManager, ArsNouveau.prefix("textures/entity/spell_proj.png")));
event.registerEntityRenderer(ModEntities.ENTITY_SPELL_ARROW.get(), TippableArrowRenderer::new);
event.registerEntityRenderer(ModEntities.ENTITY_WIXIE_TYPE.get(), (t) -> new GeoEntityRenderer<>(t, new WixieModel<>()){
event.registerEntityRenderer(ModEntities.ENTITY_WIXIE_TYPE.get(), (t) -> new GeoEntityRenderer<>(t, new WixieModel<>()) {
@Override
public @NotNull ResourceLocation getTextureLocation(@NotNull EntityWixie animatable) {
return animatable.getTexture();
}
});
event.registerEntityRenderer(ModEntities.ENTITY_DUMMY.get(), DummyRenderer::new);
event.registerEntityRenderer(ModEntities.ENTITY_DRYGMY.get(), (t) -> new GeoEntityRenderer<>(t, new DrygmyModel<>()){
event.registerEntityRenderer(ModEntities.ENTITY_DRYGMY.get(), (t) -> new GeoEntityRenderer<>(t, new DrygmyModel<>()) {
@Override
public @NotNull ResourceLocation getTextureLocation(@NotNull EntityDrygmy animatable) {
return animatable.getTexture();
Expand All @@ -162,48 +159,38 @@ public static void registerRenderers(final EntityRenderersEvent.RegisterRenderer
event.registerEntityRenderer(ModEntities.ORBIT_SPELL.get(), renderManager -> new RenderBlank(renderManager, ArsNouveau.prefix("textures/entity/spell_proj.png")));
event.registerEntityRenderer(ModEntities.WILDEN_BOSS.get(), rendermanager -> new GeoEntityRenderer<>(rendermanager, new WildenChimeraModel()));
event.registerEntityRenderer(ModEntities.ENTITY_CHIMERA_SPIKE.get(), ChimeraProjectileRenderer::new);
event.registerEntityRenderer(ModEntities.ENTITY_FAMILIAR_STARBUNCLE.get(), (t) -> new GeoEntityRenderer<>(t, new FamiliarStarbyModel<>()){
event.registerEntityRenderer(ModEntities.ENTITY_FAMILIAR_STARBUNCLE.get(), (t) -> new GenericFamiliarRenderer<>(t, new FamiliarStarbyModel<>()) {
@Override
public @NotNull ResourceLocation getTextureLocation(@NotNull FamiliarStarbuncle animatable) {
return animatable.getTexture();
}
});
event.registerEntityRenderer(ModEntities.ENTITY_FAMILIAR_DRYGMY.get(), (t) -> new GeoEntityRenderer<>(t, new DrygmyModel<>()){
@Override
public @NotNull ResourceLocation getTextureLocation(@NotNull FamiliarDrygmy animatable) {
return animatable.getTexture();
public @Nullable RenderType getRenderType(FamiliarStarbuncle animatable, ResourceLocation texture, @Nullable MultiBufferSource bufferSource, float partialTick) {
return StarbuncleRenderer.specialShaders.getOrDefault(animatable.getName().getString(), RenderType::entityCutoutNoCull).apply(texture);
}
});
event.registerEntityRenderer(ModEntities.ENTITY_FAMILIAR_DRYGMY.get(), (t) -> new GenericFamiliarRenderer<>(t, new DrygmyModel<>()));
event.registerEntityRenderer(ModEntities.ENTITY_FAMILIAR_SYLPH.get(), FamiliarWhirlisprigRenderer::new);
event.registerEntityRenderer(ModEntities.ENTITY_FAMILIAR_WIXIE.get(), (t) -> new GeoEntityRenderer<>(t, new WixieModel<>()){
@Override
public ResourceLocation getTextureLocation(FamiliarWixie animatable) {
return animatable.getTexture();
}
});
event.registerEntityRenderer(ModEntities.ENTITY_FAMILIAR_WIXIE.get(), (t) -> new GenericFamiliarRenderer<>(t, new WixieModel<>()));
event.registerEntityRenderer(ModEntities.ENTITY_BOOKWYRM_TYPE.get(), BookwyrmRenderer::new);
event.registerEntityRenderer(ModEntities.FAMILIAR_AMETHYST_GOLEM.get(), AmethystGolemRenderer::new);
event.registerEntityRenderer(ModEntities.ENTITY_FAMILIAR_BOOKWYRM.get(), FamiliarBookwyrmRenderer::new);
event.registerEntityRenderer(ModEntities.LINGER_SPELL.get(),
renderManager -> new RenderBlank(renderManager, ArsNouveau.prefix("textures/entity/spell_proj.png")));
event.registerEntityRenderer(ModEntities.ENTITY_CASCADING_WEALD.get(), (v) -> new GeoEntityRenderer<>(v, new WealdWalkerModel<>("cascading_weald")));
event.registerEntityRenderer(ModEntities.ENTITY_BLAZING_WEALD.get(), (v) -> new GeoEntityRenderer<>(v, new WealdWalkerModel<>("blazing_weald")));
event.registerEntityRenderer(ModEntities.ENTITY_FLOURISHING_WEALD.get(), (v) -> new GeoEntityRenderer<>(v, new WealdWalkerModel<>("flourishing_weald")));
event.registerEntityRenderer(ModEntities.ENTITY_VEXING_WEALD.get(), (v) -> new GeoEntityRenderer<>(v, new WealdWalkerModel<>("vexing_weald")));
event.registerEntityRenderer(ModEntities.ENTITY_BLAZING_WEALD.get(), (v) -> new GeoEntityRenderer<>(v, new WealdWalkerModel<>("blazing_weald")));
event.registerEntityRenderer(ModEntities.ENTITY_FLOURISHING_WEALD.get(), (v) -> new GeoEntityRenderer<>(v, new WealdWalkerModel<>("flourishing_weald")));
event.registerEntityRenderer(ModEntities.ENTITY_VEXING_WEALD.get(), (v) -> new GeoEntityRenderer<>(v, new WealdWalkerModel<>("vexing_weald")));

event.registerEntityRenderer(ModEntities.AMETHYST_GOLEM.get(), AmethystGolemRenderer::new);
event.registerEntityRenderer(ModEntities.SCRYER_CAMERA.get(), renderManager -> new RenderBlank(renderManager, ArsNouveau.prefix("textures/entity/spell_proj.png")));
event.registerEntityRenderer(ModEntities.ENCHANTED_FALLING_BLOCK.get(), EnchantedFallingBlockRenderer::new);
event.registerEntityRenderer(ModEntities.ICE_SHARD.get(), EnchantedFallingBlockRenderer::new);
event.registerEntityRenderer(ModEntities.ENCHANTED_MAGE_BLOCK.get(), MageBlockRenderer::new);
event.registerEntityRenderer(ModEntities.ENCHANTED_HEAD_BLOCK.get(), EnchantedSkullRenderer::new);
event.registerEntityRenderer(ModEntities.GIFT_STARBY.get(),(renderer) -> new GeoEntityRenderer<>(renderer, new GiftStarbyModel()));
event.registerEntityRenderer(ModEntities.GIFT_STARBY.get(), (renderer) -> new GeoEntityRenderer<>(renderer, new GiftStarbyModel()));
event.registerEntityRenderer(ModEntities.ANIMATED_BLOCK.get(), AnimBlockRenderer::new);
event.registerEntityRenderer(ModEntities.ANIMATED_HEAD.get(), AnimSkullRenderer::new);
event.registerEntityRenderer(ModEntities.CINDER.get(), CinderRenderer::new);
event.registerEntityRenderer(ModEntities.WALL_SPELL.get(),
renderManager -> new RenderBlank(renderManager, ArsNouveau.prefix("textures/entity/spell_proj.png")));
event.registerEntityRenderer(ModEntities.LILY.get(), (v) -> new GeoEntityRenderer<>(v, new LilyModel()));
event.registerEntityRenderer(ModEntities.LILY.get(), (v) -> new GeoEntityRenderer<>(v, new LilyModel()));
}

public static LayeredDraw.Layer cameraOverlay = (gui, tracker) -> {
Expand Down Expand Up @@ -249,7 +236,7 @@ public static void init(final FMLClientSetupEvent evt) {
});
ItemProperties.register(ItemsRegistry.DOWSING_ROD.get(), ArsNouveau.prefix("uses"), new ClampedItemPropertyFunction() {
@Override
public float unclampedCall(ItemStack pStack, @Nullable ClientLevel pLevel, @Nullable LivingEntity pEntity, int pSeed) {
public float unclampedCall(@NotNull ItemStack pStack, @Nullable ClientLevel pLevel, @Nullable LivingEntity pEntity, int pSeed) {
return switch (pStack.getDamageValue()) {
case 1 -> 0.75f;
case 2 -> 0.50f;
Expand Down Expand Up @@ -379,7 +366,7 @@ public static int colorFromArmor(ItemStack stack) {
public static int colorFromFlask(ItemStack stack) {
PotionContents contents = PotionUtil.getContents(stack);
var provider = PotionProviderRegistry.from(stack);
if(provider != null){
if (provider != null) {
return provider.usesRemaining(stack) <= 0 ? 0 : provider.getPotionData(stack).getColor();
}
return contents == PotionContents.EMPTY ? -1 : contents.getColor();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -14,13 +14,14 @@
public class StarbuncleModel extends GeoModel<Starbuncle> {

@Override
public void setCustomAnimations(Starbuncle entity, long uniqueID, @Nullable AnimationState customPredicate) {
public void setCustomAnimations(Starbuncle entity, long uniqueID, @Nullable AnimationState<Starbuncle> customPredicate) {
super.setCustomAnimations(entity, uniqueID, customPredicate);
if (entity.partyCarby)
return;
if (customPredicate == null)
return;
this.getBone("basket").get().setHidden(!entity.isTamed());
if (this.getBone("basket").isPresent())
this.getBone("basket").get().setHidden(!entity.isTamed());

GeoBone head = this.getAnimationProcessor().getBone("head");
EntityModelData extraData = (EntityModelData) customPredicate.getExtraData().get(DataTickets.ENTITY_MODEL_DATA);
Expand All @@ -35,11 +36,11 @@ public ResourceLocation getModelResource(Starbuncle carbuncle) {

@Override
public ResourceLocation getTextureResource(Starbuncle carbuncle) {
return carbuncle.getTexture(carbuncle);
return carbuncle.getTexture();
}

@Override
public ResourceLocation getAnimationResource(Starbuncle carbuncle) {
return ArsNouveau.prefix( "animations/starbuncle_animations.json");
return ArsNouveau.prefix("animations/starbuncle_animations.json");
}
}
Loading