From 30ff342756a841f1cea6b34dd30e862222bb71e1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ales=CC=8C=20Fabia=CC=81nek?= Date: Mon, 10 Apr 2023 19:43:30 +0200 Subject: [PATCH] Ported fixed, tuff golem unglue --- .github/versions.json | 8 ++-- CHANGELOG.md | 9 ++++ .../context/AnimationContextTracker.java | 2 - .../entity/TuffGolemEntity.java | 43 ++++++++++++++++-- .../init/FriendsAndFoesSoundEvents.java | 6 ++- .../assets/friendsandfoes/lang/en_us.json | 3 +- .../assets/friendsandfoes/sounds.json | 12 +++-- .../sounds/entity/tuff_golem/glue_off.ogg | Bin 0 -> 29144 bytes .../tuff_golem/{glue.ogg => glue_on.ogg} | Bin fabric/build.gradle | 1 + .../fabric/AddCustomRaidMemberMixin.java | 37 ++++++++------- gradle.properties | 2 +- .../mixin/quilt/AddCustomRaidMemberMixin.java | 37 ++++++++------- 13 files changed, 110 insertions(+), 50 deletions(-) create mode 100644 common/src/main/resources/assets/friendsandfoes/sounds/entity/tuff_golem/glue_off.ogg rename common/src/main/resources/assets/friendsandfoes/sounds/entity/tuff_golem/{glue.ogg => glue_on.ogg} (100%) diff --git a/.github/versions.json b/.github/versions.json index 9674e8aef..d71bcd938 100644 --- a/.github/versions.json +++ b/.github/versions.json @@ -1,8 +1,8 @@ { - "1.19.2": "1.8.0", - "1.19.1": "1.8.0", - "1.19": "1.8.0", - "1.18.2": "1.4.6", + "1.19.2": "1.8.1", + "1.19.1": "1.8.1", + "1.19": "1.8.1", + "1.18.2": "1.4.7", "1.18.1": "1.2.5", "1.18": "1.2.5" } \ No newline at end of file diff --git a/CHANGELOG.md b/CHANGELOG.md index a9c47713f..a0b1dde48 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,8 @@ +## mc1.19.2-1.8.1, April 10, 2023 + +- Tuff Golem can now be unglued with axe +- Fixed iceologer and illusioner spawns in raid based on the config + ## mc1.19.2-1.8.0, March 08, 2023 - Added Tuff Golem @@ -112,6 +117,10 @@ - Fixed bug when copper blocks can not be waxed +## mc1.18.2-1.4.7, April 10, 2023 + +- Fixed iceologer and illusioner spawns in raid based on the config + ## mc1.18.2-1.4.6, December 16, 2022 - Backported important fixes from 1.5.x/1.6.x mod versions diff --git a/common/src/main/java/com/faboslav/friendsandfoes/client/render/entity/animation/animator/context/AnimationContextTracker.java b/common/src/main/java/com/faboslav/friendsandfoes/client/render/entity/animation/animator/context/AnimationContextTracker.java index ae1c750b2..2f7b6716c 100644 --- a/common/src/main/java/com/faboslav/friendsandfoes/client/render/entity/animation/animator/context/AnimationContextTracker.java +++ b/common/src/main/java/com/faboslav/friendsandfoes/client/render/entity/animation/animator/context/AnimationContextTracker.java @@ -2,8 +2,6 @@ import com.faboslav.friendsandfoes.client.render.entity.animation.KeyframeAnimation; import com.faboslav.friendsandfoes.client.render.entity.animation.animator.ModelPartAnimationType; -import net.fabricmc.api.EnvType; -import net.fabricmc.api.Environment; import java.util.HashMap; import java.util.Map; diff --git a/common/src/main/java/com/faboslav/friendsandfoes/entity/TuffGolemEntity.java b/common/src/main/java/com/faboslav/friendsandfoes/entity/TuffGolemEntity.java index d45abc77d..f837d248f 100644 --- a/common/src/main/java/com/faboslav/friendsandfoes/entity/TuffGolemEntity.java +++ b/common/src/main/java/com/faboslav/friendsandfoes/entity/TuffGolemEntity.java @@ -220,12 +220,20 @@ public void readCustomDataFromNbt(NbtCompound nbt) { } } - private SoundEvent getGlueSound() { - return FriendsAndFoesSoundEvents.ENTITY_TUFF_GOLEM_GLUE.get(); + private SoundEvent getGlueOnSound() { + return FriendsAndFoesSoundEvents.ENTITY_TUFF_GOLEM_GLUE_ON.get(); } - private void playGlueSound() { - this.playSound(this.getGlueSound(), 1.0F, 1.0F); + private void playGlueOnSound() { + this.playSound(this.getGlueOnSound(), 1.0F, 1.0F); + } + + private SoundEvent getGlueOffSound() { + return FriendsAndFoesSoundEvents.ENTITY_TUFF_GOLEM_GLUE_OFF.get(); + } + + private void playGlueOffSound() { + this.playSound(this.getGlueOffSound(), 1.0F, 1.0F); } public SoundEvent getMoveSound() { @@ -303,6 +311,8 @@ public ActionResult interactMob( interactionResult = this.tryToInteractMobWithDye(player, itemStack); } else if (itemInHand instanceof HoneycombItem) { interactionResult = this.tryToInteractMobWithHoneycomb(player, itemStack); + } else if (itemInHand instanceof AxeItem) { + interactionResult = this.tryToInteractMobWithAxe(player, hand, itemStack); } if (interactionResult == false) { @@ -371,12 +381,35 @@ private boolean tryToInteractMobWithHoneycomb( itemStack.decrement(1); } - this.playGlueSound(); + this.playGlueOnSound(); this.spawnParticles(ParticleTypes.WAX_ON, 7); return true; } + private boolean tryToInteractMobWithAxe( + PlayerEntity player, + Hand hand, + ItemStack itemStack + ) { + if (!this.isGlued()) { + return false; + } + + this.setGlued(false); + + this.playGlueOffSound(); + this.spawnParticles(ParticleTypes.WAX_OFF, 7); + + if (this.getWorld().isClient() == false && !player.getAbilities().creativeMode) { + itemStack.damage(1, player, (playerEntity) -> { + player.sendToolBreakStatus(hand); + }); + } + + return true; + } + private boolean tryToInteractMobWithItem( PlayerEntity player, ItemStack itemStack diff --git a/common/src/main/java/com/faboslav/friendsandfoes/init/FriendsAndFoesSoundEvents.java b/common/src/main/java/com/faboslav/friendsandfoes/init/FriendsAndFoesSoundEvents.java index cdf51877e..5069b3c71 100644 --- a/common/src/main/java/com/faboslav/friendsandfoes/init/FriendsAndFoesSoundEvents.java +++ b/common/src/main/java/com/faboslav/friendsandfoes/init/FriendsAndFoesSoundEvents.java @@ -38,7 +38,8 @@ public final class FriendsAndFoesSoundEvents public static final Supplier ENTITY_MAULER_GROWL; public static final Supplier ENTITY_MAULER_HURT; public static final Supplier ENTITY_MOOBLOOM_CONVERT; - public static final Supplier ENTITY_TUFF_GOLEM_GLUE; + public static final Supplier ENTITY_TUFF_GOLEM_GLUE_ON; + public static final Supplier ENTITY_TUFF_GOLEM_GLUE_OFF; public static final Supplier ENTITY_TUFF_GOLEM_HURT; public static final Supplier ENTITY_TUFF_GOLEM_MOVE; public static final Supplier ENTITY_TUFF_GOLEM_REPAIR; @@ -82,7 +83,8 @@ public final class FriendsAndFoesSoundEvents ENTITY_MAULER_GROWL = register("entity", "mauler.growl"); ENTITY_MAULER_HURT = register("entity", "mauler.hurt"); ENTITY_MOOBLOOM_CONVERT = register("entity", "moobloom.convert"); - ENTITY_TUFF_GOLEM_GLUE = register("entity", "tuff_golem.glue"); + ENTITY_TUFF_GOLEM_GLUE_ON = register("entity", "tuff_golem.glue_on"); + ENTITY_TUFF_GOLEM_GLUE_OFF = register("entity", "tuff_golem.glue_off"); ENTITY_TUFF_GOLEM_HURT = register("entity", "tuff_golem.hurt"); ENTITY_TUFF_GOLEM_MOVE = register("entity", "tuff_golem.move"); ENTITY_TUFF_GOLEM_REPAIR = register("entity", "tuff_golem.repair"); diff --git a/common/src/main/resources/assets/friendsandfoes/lang/en_us.json b/common/src/main/resources/assets/friendsandfoes/lang/en_us.json index f9c40229b..a16d59030 100644 --- a/common/src/main/resources/assets/friendsandfoes/lang/en_us.json +++ b/common/src/main/resources/assets/friendsandfoes/lang/en_us.json @@ -96,7 +96,8 @@ "subtitle.entity.friendsandfoes.mauler.hurt": "Mauler hurts", "subtitle.entity.friendsandfoes.moobloom.convert": "Moobloom transforms", "subtitle.entity.friendsandfoes.shield_debris.impact": "Shield debris impacted", - "subtitle.entity.friendsandfoes.tuff_golem.glue": "Tuff Golem glued", + "subtitle.entity.friendsandfoes.tuff_golem.glue_on": "Tuff Golem glued", + "subtitle.entity.friendsandfoes.tuff_golem.glue_off": "Tuff Golem unglued", "subtitle.entity.friendsandfoes.tuff_golem.hurt": "Tuff Golem hurts", "subtitle.entity.friendsandfoes.tuff_golem.move": "Tuff Golem moves", "subtitle.entity.friendsandfoes.tuff_golem.repair": "Tuff Golem repaired", diff --git a/common/src/main/resources/assets/friendsandfoes/sounds.json b/common/src/main/resources/assets/friendsandfoes/sounds.json index 031adaa94..8e906e8c8 100644 --- a/common/src/main/resources/assets/friendsandfoes/sounds.json +++ b/common/src/main/resources/assets/friendsandfoes/sounds.json @@ -176,11 +176,17 @@ ], "subtitle": "subtitle.entity.friendsandfoes.moobloom.convert" }, - "entity.tuff_golem.glue": { + "entity.tuff_golem.glue_on": { "sounds": [ - "friendsandfoes:entity/tuff_golem/glue" + "friendsandfoes:entity/tuff_golem/glue_on" ], - "subtitle": "subtitle.entity.friendsandfoes.tuff_golem.glue" + "subtitle": "subtitle.entity.friendsandfoes.tuff_golem.glue_on" + }, + "entity.tuff_golem.glue_off": { + "sounds": [ + "friendsandfoes:entity/tuff_golem/glue_off" + ], + "subtitle": "subtitle.entity.friendsandfoes.tuff_golem.glue_off" }, "entity.tuff_golem.hurt": { "sounds": [ diff --git a/common/src/main/resources/assets/friendsandfoes/sounds/entity/tuff_golem/glue_off.ogg b/common/src/main/resources/assets/friendsandfoes/sounds/entity/tuff_golem/glue_off.ogg new file mode 100644 index 0000000000000000000000000000000000000000..818c7302dfe0a30bb4392ff190324a023411d065 GIT binary patch literal 29144 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 literal 0 HcmV?d00001 diff --git a/common/src/main/resources/assets/friendsandfoes/sounds/entity/tuff_golem/glue.ogg b/common/src/main/resources/assets/friendsandfoes/sounds/entity/tuff_golem/glue_on.ogg similarity index 100% rename from common/src/main/resources/assets/friendsandfoes/sounds/entity/tuff_golem/glue.ogg rename to common/src/main/resources/assets/friendsandfoes/sounds/entity/tuff_golem/glue_on.ogg diff --git a/fabric/build.gradle b/fabric/build.gradle index 6aa26b687..d2717140c 100644 --- a/fabric/build.gradle +++ b/fabric/build.gradle @@ -42,6 +42,7 @@ dependencies { modRuntimeOnly "curse.maven:lazydfu-433518:3821870" modRuntimeOnly "curse.maven:starlight-521783:3835973" modRuntimeOnly "curse.maven:disablecustomworldsadvice-401978:3827588" + modRuntimeOnly "curse.maven:structureessentialsforgefabric-832882:4429721" common(project(path: ":common", configuration: "namedElements")) { transitive false } shadowCommon(project(path: ":common", configuration: "transformProductionFabric")) { transitive false } diff --git a/fabric/src/main/java/com/faboslav/friendsandfoes/mixin/fabric/AddCustomRaidMemberMixin.java b/fabric/src/main/java/com/faboslav/friendsandfoes/mixin/fabric/AddCustomRaidMemberMixin.java index 241d69c88..e374dde1c 100644 --- a/fabric/src/main/java/com/faboslav/friendsandfoes/mixin/fabric/AddCustomRaidMemberMixin.java +++ b/fabric/src/main/java/com/faboslav/friendsandfoes/mixin/fabric/AddCustomRaidMemberMixin.java @@ -1,5 +1,6 @@ package com.faboslav.friendsandfoes.mixin.fabric; +import com.faboslav.friendsandfoes.FriendsAndFoes; import com.faboslav.friendsandfoes.init.FriendsAndFoesEntityTypes; import com.faboslav.friendsandfoes.util.CustomRaidMember; import net.minecraft.entity.EntityType; @@ -50,23 +51,27 @@ private static void friendsandfoes_addCustomRaidMembers(CallbackInfo ci) { var raidMembers = new ArrayList<>(Arrays.asList(field_16632)); var lastRaidMember = raidMembers.get(raidMembers.size() - 1); - var iceologerRaidMember = newRaidMember( - CustomRaidMember.ICEOLOGER_INTERNAL_NAME, - lastRaidMember.ordinal() + 1, - FriendsAndFoesEntityTypes.ICEOLOGER.get(), - CustomRaidMember.ICEOLOGER_COUNT_IN_WAVE - ); - CustomRaidMember.ICEOLOGER = iceologerRaidMember; - raidMembers.add(iceologerRaidMember); + if(FriendsAndFoes.getConfig().enableIceologerInRaids) { + var iceologerRaidMember = newRaidMember( + CustomRaidMember.ICEOLOGER_INTERNAL_NAME, + lastRaidMember.ordinal() + 1, + FriendsAndFoesEntityTypes.ICEOLOGER.get(), + CustomRaidMember.ICEOLOGER_COUNT_IN_WAVE + ); + CustomRaidMember.ICEOLOGER = iceologerRaidMember; + raidMembers.add(iceologerRaidMember); + } - var illusionerRaidMember = newRaidMember( - CustomRaidMember.ILLUSIONER_INTERNAL_NAME, - lastRaidMember.ordinal() + 2, - EntityType.ILLUSIONER, - CustomRaidMember.ILLUSIONER_COUNT_IN_WAVE - ); - CustomRaidMember.ILLUSIONER = illusionerRaidMember; - raidMembers.add(illusionerRaidMember); + if(FriendsAndFoes.getConfig().enableIllusionerInRaids) { + var illusionerRaidMember = newRaidMember( + CustomRaidMember.ILLUSIONER_INTERNAL_NAME, + lastRaidMember.ordinal() + 2, + EntityType.ILLUSIONER, + CustomRaidMember.ILLUSIONER_COUNT_IN_WAVE + ); + CustomRaidMember.ILLUSIONER = illusionerRaidMember; + raidMembers.add(illusionerRaidMember); + } field_16632 = raidMembers.toArray(new Raid.Member[0]); } diff --git a/gradle.properties b/gradle.properties index 839e49c18..eced863f0 100644 --- a/gradle.properties +++ b/gradle.properties @@ -8,7 +8,7 @@ org.gradle.configureondemand=false # Mod mod_name=Friends&Foes mod_id=friendsandfoes -mod_version=1.8.0 +mod_version=1.8.1 mod_author=Faboslav mod_description=Adds outvoted and forgotten mobs from the mob votes in a believable vanilla plus style. maven_group=com.faboslav.friendsandfoes diff --git a/quilt/src/main/java/com/faboslav/friendsandfoes/mixin/quilt/AddCustomRaidMemberMixin.java b/quilt/src/main/java/com/faboslav/friendsandfoes/mixin/quilt/AddCustomRaidMemberMixin.java index 19ae1f238..7a9995075 100644 --- a/quilt/src/main/java/com/faboslav/friendsandfoes/mixin/quilt/AddCustomRaidMemberMixin.java +++ b/quilt/src/main/java/com/faboslav/friendsandfoes/mixin/quilt/AddCustomRaidMemberMixin.java @@ -1,5 +1,6 @@ package com.faboslav.friendsandfoes.mixin.quilt; +import com.faboslav.friendsandfoes.FriendsAndFoes; import com.faboslav.friendsandfoes.init.FriendsAndFoesEntityTypes; import com.faboslav.friendsandfoes.util.CustomRaidMember; import net.minecraft.entity.EntityType; @@ -50,23 +51,27 @@ private static void friendsandfoes_addCustomRaidMembers(CallbackInfo ci) { var raidMembers = new ArrayList<>(Arrays.asList(field_16632)); var lastRaidMember = raidMembers.get(raidMembers.size() - 1); - var iceologerRaidMember = newRaidMember( - CustomRaidMember.ICEOLOGER_INTERNAL_NAME, - lastRaidMember.ordinal() + 1, - FriendsAndFoesEntityTypes.ICEOLOGER.get(), - CustomRaidMember.ICEOLOGER_COUNT_IN_WAVE - ); - CustomRaidMember.ICEOLOGER = iceologerRaidMember; - raidMembers.add(iceologerRaidMember); + if(FriendsAndFoes.getConfig().enableIceologerInRaids) { + var iceologerRaidMember = newRaidMember( + CustomRaidMember.ICEOLOGER_INTERNAL_NAME, + lastRaidMember.ordinal() + 1, + FriendsAndFoesEntityTypes.ICEOLOGER.get(), + CustomRaidMember.ICEOLOGER_COUNT_IN_WAVE + ); + CustomRaidMember.ICEOLOGER = iceologerRaidMember; + raidMembers.add(iceologerRaidMember); + } - var illusionerRaidMember = newRaidMember( - CustomRaidMember.ILLUSIONER_INTERNAL_NAME, - lastRaidMember.ordinal() + 2, - EntityType.ILLUSIONER, - CustomRaidMember.ILLUSIONER_COUNT_IN_WAVE - ); - CustomRaidMember.ILLUSIONER = illusionerRaidMember; - raidMembers.add(illusionerRaidMember); + if(FriendsAndFoes.getConfig().enableIllusionerInRaids) { + var illusionerRaidMember = newRaidMember( + CustomRaidMember.ILLUSIONER_INTERNAL_NAME, + lastRaidMember.ordinal() + 2, + EntityType.ILLUSIONER, + CustomRaidMember.ILLUSIONER_COUNT_IN_WAVE + ); + CustomRaidMember.ILLUSIONER = illusionerRaidMember; + raidMembers.add(illusionerRaidMember); + } field_16632 = raidMembers.toArray(new Raid.Member[0]); }