Skip to content

Commit d991484

Browse files
committed
feat: Add has_empty_inventory and is_wearing_any_armor
1 parent 8139c38 commit d991484

4 files changed

Lines changed: 43 additions & 15 deletions

File tree

common/src/main/java/net/blay09/mods/shogi/common/ShogiDefaults.java

Lines changed: 15 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -1,30 +1,28 @@
11
package net.blay09.mods.shogi.common;
22

3-
import net.blay09.mods.shogi.common.effect.compose.*;
3+
import net.blay09.mods.shogi.common.effect.compose.AggregateEffect;
4+
import net.blay09.mods.shogi.common.effect.compose.AndEffect;
5+
import net.blay09.mods.shogi.common.effect.compose.AnyEffect;
6+
import net.blay09.mods.shogi.common.effect.compose.ConditionEffect;
47
import net.blay09.mods.shogi.common.effect.condition.context.player.AnyHand;
5-
import net.blay09.mods.shogi.common.effect.condition.entity.HasEntityTag;
6-
import net.blay09.mods.shogi.common.effect.condition.entity.IsOnAnyVehicle;
7-
import net.blay09.mods.shogi.common.effect.condition.entity.IsOnVehicle;
8+
import net.blay09.mods.shogi.common.effect.condition.entity.*;
89
import net.blay09.mods.shogi.common.effect.condition.item.HasEnchantment;
910
import net.blay09.mods.shogi.common.effect.condition.item.IsItem;
1011
import net.blay09.mods.shogi.common.effect.condition.player.HasItem;
11-
import net.blay09.mods.shogi.common.effect.condition.player.HasMobEffect;
12-
import net.blay09.mods.shogi.common.effect.condition.player.IsPlayer;
12+
import net.blay09.mods.shogi.common.effect.condition.player.SimplePlayerEffects;
1313
import net.blay09.mods.shogi.common.effect.condition.pos.*;
14-
import net.blay09.mods.shogi.common.effect.condition.pos.CanSeeSky;
15-
import net.blay09.mods.shogi.common.effect.condition.pos.IsDimension;
1614
import net.blay09.mods.shogi.common.effect.context.player.OffHand;
15+
import net.blay09.mods.shogi.common.effect.cost.DamageItem;
1716
import net.blay09.mods.shogi.common.effect.cost.ExperienceLevelCost;
1817
import net.blay09.mods.shogi.common.effect.cost.ExperiencePointsCost;
1918
import net.blay09.mods.shogi.common.effect.cost.ItemCost;
20-
import net.blay09.mods.shogi.common.effect.cost.DamageItem;
2119
import net.blay09.mods.shogi.common.effect.failure.Failure;
20+
import net.blay09.mods.shogi.common.effect.player.Dismount;
2221
import net.blay09.mods.shogi.common.effect.server.condition.player.HasAdvancement;
2322
import net.blay09.mods.shogi.common.effect.server.condition.pos.IsNearPoi;
2423
import net.blay09.mods.shogi.common.effect.server.cooldown.AddCooldown;
2524
import net.blay09.mods.shogi.common.effect.server.cooldown.CooldownCost;
2625
import net.blay09.mods.shogi.common.effect.server.cooldown.HasCooldown;
27-
import net.blay09.mods.shogi.common.effect.player.Dismount;
2826
import net.blay09.mods.shogi.common.effect.server.cooldown.IsCooldownAbove;
2927
import net.blay09.mods.shogi.common.effect.variable.*;
3028
import net.blay09.mods.shogi.common.network.ShogiNetworkCacheImpl;
@@ -33,7 +31,9 @@
3331
import net.blay09.mods.shogi.effect.EmptyEffect;
3432
import net.blay09.mods.shogi.scope.ShogiScope;
3533

36-
import java.util.*;
34+
import java.util.List;
35+
36+
import static net.blay09.mods.shogi.common.ShogiCommon.id;
3737

3838
public class ShogiDefaults {
3939

@@ -63,15 +63,17 @@ private static void registerEffects(ShogiScope scope) {
6363
scope.registerEffect(OffHand.IDENTIFIER, OffHand.mapCodec(scope), List.of("effect"));
6464

6565
scope.registerEffect(HasEntityTag.IDENTIFIER, HasEntityTag.MAP_CODEC, List.of("tag"));
66+
scope.registerEffect(HasMobEffect.IDENTIFIER, HasMobEffect.MAP_CODEC, List.of("effect"));
6667
scope.registerEffect(IsOnAnyVehicle.IDENTIFIER, IsOnAnyVehicle.MAP_CODEC);
6768
scope.registerEffect(IsOnVehicle.IDENTIFIER, IsOnVehicle.MAP_CODEC, List.of("vehicle"));
69+
scope.registerEffect(IsPlayer.IDENTIFIER, IsPlayer.MAP_CODEC);
6870

6971
scope.registerEffect(HasEnchantment.IDENTIFIER, HasEnchantment.MAP_CODEC, List.of("enchantment", "level"));
7072
scope.registerEffect(IsItem.IDENTIFIER, IsItem.MAP_CODEC, List.of("item"));
7173

7274
scope.registerEffect(HasItem.IDENTIFIER, HasItem.mapCodec(scope), List.of("item", "count"));
73-
scope.registerEffect(HasMobEffect.IDENTIFIER, HasMobEffect.MAP_CODEC, List.of("effect"));
74-
scope.registerEffect(IsPlayer.IDENTIFIER, IsPlayer.MAP_CODEC);
75+
scope.registerSimpleEffect(id("has_empty_inventory"), SimplePlayerEffects::hasEmptyInventory);
76+
scope.registerSimpleEffect(id("is_wearing_any_armor"), SimplePlayerEffects::isWearingAnyArmor);
7577

7678
scope.registerEffect(CanSeeSky.IDENTIFIER, CanSeeSky.MAP_CODEC);
7779
scope.registerEffect(IsAboveY.IDENTIFIER, IsAboveY.MAP_CODEC, List.of("y"));

common/src/main/java/net/blay09/mods/shogi/common/effect/condition/player/HasMobEffect.java renamed to common/src/main/java/net/blay09/mods/shogi/common/effect/condition/entity/HasMobEffect.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
package net.blay09.mods.shogi.common.effect.condition.player;
1+
package net.blay09.mods.shogi.common.effect.condition.entity;
22

33
import com.mojang.datafixers.util.Either;
44
import com.mojang.serialization.MapCodec;

common/src/main/java/net/blay09/mods/shogi/common/effect/condition/player/IsPlayer.java renamed to common/src/main/java/net/blay09/mods/shogi/common/effect/condition/entity/IsPlayer.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
package net.blay09.mods.shogi.common.effect.condition.player;
1+
package net.blay09.mods.shogi.common.effect.condition.entity;
22

33
import com.mojang.datafixers.util.Either;
44
import com.mojang.serialization.MapCodec;
Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
package net.blay09.mods.shogi.common.effect.condition.player;
2+
3+
import net.blay09.mods.shogi.context.ShogiContext;
4+
import net.minecraft.world.entity.EquipmentSlot;
5+
import net.minecraft.world.entity.EquipmentSlotGroup;
6+
import net.minecraft.world.entity.LivingEntity;
7+
8+
public class SimplePlayerEffects {
9+
public static boolean hasEmptyInventory(ShogiContext context) {
10+
return context.requirePlayer().getInventory().isEmpty();
11+
}
12+
13+
public static boolean isWearingAnyArmor(ShogiContext context) {
14+
if (context.entity() instanceof LivingEntity livingEntity) {
15+
for (final var equipmentSlot : EquipmentSlotGroup.ARMOR) {
16+
if (equipmentSlot.getType() == EquipmentSlot.Type.HUMANOID_ARMOR) {
17+
final var stack = livingEntity.getItemBySlot(equipmentSlot);
18+
if (!stack.isEmpty()) {
19+
return true;
20+
}
21+
}
22+
}
23+
}
24+
return false;
25+
}
26+
}

0 commit comments

Comments
 (0)