Add an advancement for killing a mob with a rock

This commit is contained in:
Sollace 2023-09-03 21:51:50 +01:00
parent 849e47b905
commit 236f8afb02
No known key found for this signature in database
GPG key ID: E52FACE7B5C773DB
5 changed files with 62 additions and 0 deletions

View file

@ -29,6 +29,7 @@ public interface UDamageTypes {
RegistryKey<DamageType> SUN = register("sun");
RegistryKey<DamageType> SUNLIGHT = register("sunlight");
RegistryKey<DamageType> PETRIFIED = register("petrified");
RegistryKey<DamageType> ROCK = register("rock");
private static RegistryKey<DamageType> register(String name) {
var key = RegistryKey.of(RegistryKeys.DAMAGE_TYPE, Unicopia.id(name));

View file

@ -5,6 +5,7 @@ import org.jetbrains.annotations.Nullable;
import com.minelittlepony.unicopia.USounds;
import com.minelittlepony.unicopia.UTags;
import com.minelittlepony.unicopia.ability.magic.Caster;
import com.minelittlepony.unicopia.entity.damage.UDamageTypes;
import com.minelittlepony.unicopia.entity.mob.UEntities;
import net.minecraft.block.BlockState;
@ -12,10 +13,13 @@ import net.minecraft.block.ButtonBlock;
import net.minecraft.block.HopperBlock;
import net.minecraft.block.LeverBlock;
import net.minecraft.block.entity.BlockEntity;
import net.minecraft.entity.Entity;
import net.minecraft.entity.EntityType;
import net.minecraft.entity.FlyingItemEntity;
import net.minecraft.entity.LivingEntity;
import net.minecraft.entity.MovementType;
import net.minecraft.entity.damage.DamageSource;
import net.minecraft.entity.damage.DamageSources;
import net.minecraft.entity.data.DataTracker;
import net.minecraft.entity.data.TrackedData;
import net.minecraft.entity.data.TrackedDataHandlerRegistry;
@ -131,6 +135,16 @@ public class PhysicsBodyProjectileEntity extends PersistentProjectileEntity impl
super.onEntityHit(hit);
}
@Override
public DamageSources getDamageSources() {
return new DamageSources(getWorld().getRegistryManager()) {
@Override
public DamageSource arrow(PersistentProjectileEntity source, @Nullable Entity attacker) {
return create(UDamageTypes.ROCK, source, attacker);
}
};
}
@Override
protected void onBlockHit(BlockHitResult hit) {
BlockPos buttonPos = hit.getBlockPos().offset(hit.getSide());

View file

@ -734,6 +734,9 @@
"death.attack.unicopia.steamroller.player": "%2$s steamrolled %1$s",
"death.attack.unicopia.stalagmite.pegasus": "%1$s tried to perch on a stalagmite",
"death.attack.unicopia.stalagmite.pegasus.player": "%1$s flew into a stalagmite whilst fighting %2$s",
"death.attack.unicopia.rock": "%1$s was pummeled",
"death.attack.unicopia.rock.item": "%1$s was pummelled by %2$s using %3$s",
"death.attack.unicopia.rock.player": "%1$s was pummelled by %2$s",
"death.fell.accident.ladder.pegasus": "%1$s forgot they could fly and fell off a ladder",
"death.fell.accident.vines.pegasus": "%1$s forgot they could fly and fell off some vines",
@ -879,6 +882,8 @@
"advancements.unicopia.earth_route.title": "Path of the Pony",
"advancements.unicopia.earth_route.description": "Join the Apple Clan",
"advancements.unicopia.sticks_and_stones.title": "Sticks and Stones",
"advancements.unicopia.sticks_and_stones.description": "Kill an mob by throwing rocks at it",
"advancements.unicopia.born_on_a_rock_farm.title": "Born on a Rock Farm",
"advancements.unicopia.born_on_a_rock_farm.description": "Successfully farm your first rock",
"advancements.unicopia.thats_unusual.title": "That's Unusual",

View file

@ -0,0 +1,36 @@
{
"parent": "unicopia:unicopia/earth/born_on_a_rock_farm",
"display": {
"icon": {
"item": "unicopia:rock"
},
"title": {
"translate": "advancements.unicopia.sticks_and_stones.title"
},
"description": {
"translate": "advancements.unicopia.sticks_and_stones.description"
},
"frame": "task",
"show_toast": true,
"announce_to_chat": true,
"hidden": true
},
"criteria": {
"killed_entity_with_rock": {
"trigger": "minecraft:player_killed_entity",
"conditions": {
"killing_blow": {
"tags": [
{
"id": "unicopia:from_rocks",
"expected": true
}
]
}
}
}
},
"requirements": [
[ "killed_entity_with_rock" ]
]
}

View file

@ -0,0 +1,6 @@
{
"replace": false,
"values": [
"unicopia:rock"
]
}