Skip to content

Commit a743a51

Browse files
author
YTGLD
committed
修改物品的for判断为Handler.has()
1 parent 21962d0 commit a743a51

18 files changed

Lines changed: 271 additions & 296 deletions

File tree

build.gradle

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -116,7 +116,7 @@ repositories {
116116
}
117117
}
118118
dependencies {
119-
implementation "curse.maven:chest-curio-items-1323819:7349522"
119+
implementation "curse.maven:chest-curio-items-1323819:8167509"
120120
}
121121

122122
// This block of code expands all declared replace properties in the specified resource targets.

src/main/java/com/ytgld/chest_curio_items_add/TheConfig.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,6 @@
44

55
public class TheConfig {
66
public static final ModConfigSpec.Builder BUILDER = new ModConfigSpec.Builder();
7-
87
static final ModConfigSpec SPEC = BUILDER.build();
8+
99
}

src/main/java/com/ytgld/chest_curio_items_add/effect/ADDEffects.java

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
11
package com.ytgld.chest_curio_items_add.effect;
22

33
import com.ytgld.chest_curio_items_add.ChestAddMod;
4-
import com.ytgld.chest_item.effect.IncreasingMeat;
54
import net.minecraft.core.registries.BuiltInRegistries;
65
import net.minecraft.world.effect.MobEffect;
76
import net.neoforged.neoforge.registries.DeferredHolder;

src/main/java/com/ytgld/chest_curio_items_add/event/CIAEvent.java

Lines changed: 32 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,7 @@
11
package com.ytgld.chest_curio_items_add.event;
22

3+
import com.ytgld.chest_curio_items_add.ChestAddMod;
4+
import com.ytgld.chest_curio_items_add.item.InItems;
35
import com.ytgld.chest_curio_items_add.item.things.FissionEmblem;
46
import com.ytgld.chest_curio_items_add.item.things.days.LifeTree;
57
import com.ytgld.chest_curio_items_add.item.things.days.OldHatred;
@@ -9,8 +11,13 @@
911
import com.ytgld.chest_curio_items_add.item.things.yilezi.DevilRinging;
1012
import com.ytgld.chest_curio_items_add.item.things.yilezi.ThunderDrum;
1113
import com.ytgld.chest_item.event.activated.ci.ItemStackTickEvent;
14+
import net.minecraft.world.level.storage.loot.LootPool;
15+
import net.minecraft.world.level.storage.loot.LootTable;
16+
import net.minecraft.world.level.storage.loot.entries.LootItem;
17+
import net.minecraft.world.level.storage.loot.predicates.LootItemRandomChanceCondition;
18+
import net.minecraft.world.level.storage.loot.providers.number.ConstantValue;
1219
import net.neoforged.bus.api.SubscribeEvent;
13-
import net.neoforged.neoforge.event.ItemAttributeModifierEvent;
20+
import net.neoforged.neoforge.event.LootTableLoadEvent;
1421
import net.neoforged.neoforge.event.entity.living.LivingDamageEvent;
1522
import net.neoforged.neoforge.event.entity.living.LivingDeathEvent;
1623
import net.neoforged.neoforge.event.entity.living.LivingDropsEvent;
@@ -50,4 +57,28 @@ public void LivingDeathEvent(LivingDeathEvent evt){
5057
TheRemnantsOfTheHunt.attack(evt);
5158

5259
}
60+
@SubscribeEvent
61+
public void ItemTooltipEventASD(LootTableLoadEvent event) {
62+
LootTable table = event.getTable();
63+
if (event.getName().toString().contains("chests/") && event.getName().toString().contains("trial_chambers")) {
64+
table.addPool(LootPool.lootPool().name(ChestAddMod.MODID + "trial_chambers")
65+
.setRolls(ConstantValue.exactly(1.0F))
66+
67+
68+
.add(LootItem.lootTableItem(InItems.FissionEmblem_).when(LootItemRandomChanceCondition.randomChance(0.01F)))
69+
.add(LootItem.lootTableItem(InItems.LifeTree_).when(LootItemRandomChanceCondition.randomChance(0.01F)))
70+
.add(LootItem.lootTableItem(InItems.OldHatred_).when(LootItemRandomChanceCondition.randomChance(0.01F)))
71+
.add(LootItem.lootTableItem(InItems.Bell_).when(LootItemRandomChanceCondition.randomChance(0.01F)))
72+
.add(LootItem.lootTableItem(InItems.ThunderDrum_).when(LootItemRandomChanceCondition.randomChance(0.01F)))
73+
.add(LootItem.lootTableItem(InItems.DevilRinging_).when(LootItemRandomChanceCondition.randomChance(0.01F)))
74+
.add(LootItem.lootTableItem(InItems.TheRemnantsOfTheHunt_).when(LootItemRandomChanceCondition.randomChance(0.01F)))
75+
.add(LootItem.lootTableItem(InItems.TheEctopicDivineBlood_).when(LootItemRandomChanceCondition.randomChance(0.01F)))
76+
77+
78+
79+
80+
81+
.build());
82+
}
83+
}
5384
}

src/main/java/com/ytgld/chest_curio_items_add/item/InItems.java

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@
99
import com.ytgld.chest_curio_items_add.item.things.yilezi.Bell;
1010
import com.ytgld.chest_curio_items_add.item.things.yilezi.DevilRinging;
1111
import com.ytgld.chest_curio_items_add.item.things.yilezi.ThunderDrum;
12+
import com.ytgld.chest_curio_items_add.item.things.ytgld.IsGone;
1213
import net.minecraft.core.registries.Registries;
1314
import net.minecraft.network.chat.Component;
1415
import net.minecraft.resources.ResourceLocation;
@@ -47,12 +48,15 @@ public class InItems {
4748
public static final DeferredItem<Item> TheEctopicDivineBlood_ = register("ectopic_blood", (resourceLocation) -> {
4849
return new TheEctopicDivineBlood((new Item.Properties()).stacksTo(1));
4950
});
51+
public static final DeferredItem<Item> IsGone_ = register("is_gone", (resourceLocation) -> {
52+
return new IsGone((new Item.Properties()).stacksTo(1));
53+
});
5054
public static final DeferredRegister<CreativeModeTab> CREATIVE_MODE_TABS = DeferredRegister.create(Registries.CREATIVE_MODE_TAB, ChestAddMod.MODID);;
5155
public static final DeferredHolder<CreativeModeTab, CreativeModeTab> tab = CREATIVE_MODE_TABS.register(ChestAddMod.MODID, () -> {
5256
return CreativeModeTab.builder().title(Component.translatable("itemGroup.chest_curio_items_add"))
5357
.icon(Items.ENDER_CHEST::getDefaultInstance).displayItems((parameters, output) -> {
54-
5558
output.accept(OldHatred_);
59+
output.accept(IsGone_);
5660

5761
output.accept(FissionEmblem_);
5862
output.accept(LifeTree_);

src/main/java/com/ytgld/chest_curio_items_add/item/things/FissionEmblem.java

Lines changed: 5 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -13,8 +13,6 @@
1313
import net.minecraft.core.Holder;
1414
import net.minecraft.nbt.CompoundTag;
1515
import net.minecraft.network.chat.Component;
16-
import net.minecraft.network.chat.Style;
17-
import net.minecraft.network.chat.TextColor;
1816
import net.minecraft.resources.ResourceLocation;
1917
import net.minecraft.sounds.SoundEvents;
2018
import net.minecraft.sounds.SoundSource;
@@ -25,7 +23,6 @@
2523
import net.minecraft.world.item.ItemStack;
2624
import net.minecraft.world.item.TooltipFlag;
2725
import net.neoforged.neoforge.event.entity.living.LivingDamageEvent;
28-
import org.jetbrains.annotations.Nullable;
2926

3027
import java.util.List;
3128

@@ -123,15 +120,15 @@ public static void tick(ItemStackTickEvent event) {
123120
}else {
124121
stack.set(DataReg.tag,new CompoundTag());
125122
}
126-
player.getAttributes().addTransientAttributeModifiers(attributeModifierMultimap(stack));
127123
break;
128124
}
129-
player.getAttributes().removeAttributeModifiers(attributeModifierMultimap(stack));
130125
}
131126
}
132127

133128
}
134-
public static Multimap<Holder<Attribute>, AttributeModifier> attributeModifierMultimap(ItemStack stack) {
129+
130+
@Override
131+
public Multimap<Holder<Attribute>, AttributeModifier> doAttribute(ItemStack stack, Player player) {
135132
Multimap<Holder<Attribute>, AttributeModifier> modifiers = HashMultimap.create();
136133
float damage = 2;
137134
float armor = 0.05f;
@@ -171,7 +168,7 @@ public void appendHoverText(ItemStack stack, TooltipContext context, List<Compon
171168
.withStyle(ChatFormatting.LIGHT_PURPLE));
172169
if (tooltipFlag.hasShiftDown()) {
173170
tooltipComponents.add(Component.literal(""));
174-
tooltipComponents.add(Component.translatable("item.chest_curio_items_add.fission_emblem.string.1").withStyle(ChatFormatting.GOLD));
171+
tooltipComponents.add(Component.translatable("item.chest_curio_items_add.fission_emblem.string.1").withStyle(ChatFormatting.GOLD));
175172
tooltipComponents.add(Component.literal(""));
176173
tooltipComponents.add(Component.translatable("item.chest_curio_items_add.fission_emblem.string.2").withStyle(ChatFormatting.GOLD));
177174
tooltipComponents.add(Component.translatable("item.chest_curio_items_add.fission_emblem.string.3").withStyle(ChatFormatting.GOLD));
@@ -182,7 +179,5 @@ public void appendHoverText(ItemStack stack, TooltipContext context, List<Compon
182179
tooltipComponents.add(Component.translatable("key.keyboard.left.shift").withStyle(ChatFormatting.YELLOW));
183180
}
184181
}
185-
public @Nullable Multimap<Holder<Attribute>, AttributeModifier> muAttribute(Player player, ItemStack stack) {
186-
return attributeModifierMultimap(stack);
187-
}
182+
188183
}

src/main/java/com/ytgld/chest_curio_items_add/item/things/days/LifeTree.java

Lines changed: 39 additions & 46 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@
1717
import net.minecraft.world.item.TooltipFlag;
1818
import net.minecraft.world.phys.AABB;
1919
import net.minecraft.world.phys.Vec3;
20+
import org.objectweb.asm.Handle;
2021

2122
import java.util.List;
2223

@@ -43,58 +44,50 @@ public LifeTree(Properties properties) {
4344
}
4445

4546
public static void tick(ItemStackTickEvent event) {
46-
ChestInventory chestInventory = event.chestInventory;
4747
Player player = event.player;
48-
if (!player.level().isClientSide()) {
49-
for(int i = 0; i < chestInventory.getContainerSize(); ++i) {
50-
ItemStack stack = chestInventory.getItem(i);
51-
if (player.tickCount % 20 == 1) {
52-
if (stack.is(InItems.LifeTree_)) {
53-
Vec3 playerPos = player.position();
54-
int range = 8;
55-
List<LivingEntity> entities = player.level().getEntitiesOfClass(LivingEntity.class, new AABB(playerPos.x - (double) range,
56-
playerPos.y - (double) range, playerPos.z - (double) range,
57-
playerPos.x + (double) range, playerPos.y + (double) range,
58-
playerPos.z + (double) range));
59-
float modify = player.getMaxHealth() * 0.05f;
60-
float health = player.getHealth();
61-
float maxHealth = player.getMaxHealth();
62-
float s = 1 + (1 - health / maxHealth);
63-
modify *= s;
64-
for (LivingEntity living : entities) {
65-
if (!living.is(player)) {
66-
if (living.isAlive()) {
67-
if (living instanceof Targeting targeting) {
68-
LivingEntity entity = targeting.getTarget();
69-
if (entity != null) {
70-
if (entity.is(player)) {
71-
if (living.getMaxHealth() > 1 + modify) {
72-
living.hurt(living.damageSources().genericKill(), modify);
73-
player.heal(modify / entities.size());
74-
}
75-
} else {
76-
if (!entity.is(player)) {
77-
living.heal(modify / entities.size());
78-
}
79-
}
80-
}
48+
if (Handler.has(player, InItems.LifeTree_.asItem())) {
49+
Vec3 playerPos = player.position();
50+
int range = 8;
51+
List<LivingEntity> entities = player.level().getEntitiesOfClass(LivingEntity.class, new AABB(playerPos.x - (double) range,
52+
playerPos.y - (double) range, playerPos.z - (double) range,
53+
playerPos.x + (double) range, playerPos.y + (double) range,
54+
playerPos.z + (double) range));
55+
float modify = player.getMaxHealth() * 0.05f;
56+
float health = player.getHealth();
57+
float maxHealth = player.getMaxHealth();
58+
float s = 1 + (1 - health / maxHealth);
59+
modify *= s;
60+
for (LivingEntity living : entities) {
61+
if (!living.is(player)) {
62+
if (living.isAlive()) {
63+
if (living instanceof Targeting targeting) {
64+
LivingEntity entity = targeting.getTarget();
65+
if (entity != null) {
66+
if (entity.is(player)) {
67+
if (living.getMaxHealth() > 1 + modify) {
68+
living.hurt(living.damageSources().genericKill(), modify);
69+
player.heal(modify / entities.size());
8170
}
82-
if (living instanceof OwnableEntity ownableEntity) {
83-
LivingEntity entity = ownableEntity.getOwner();
84-
if (entity != null) {
85-
if (entity.is(player)) {
86-
float h = modify / entities.size();
87-
if (h < 1) {
88-
h = 1;
89-
}
90-
living.heal(h);
91-
break;
92-
}
93-
}
71+
} else {
72+
if (!entity.is(player)) {
73+
living.heal(modify / entities.size());
9474
}
9575
}
9676
}
9777
}
78+
if (living instanceof OwnableEntity ownableEntity) {
79+
LivingEntity entity = ownableEntity.getOwner();
80+
if (entity != null) {
81+
if (entity.is(player)) {
82+
float h = modify / entities.size();
83+
if (h < 1) {
84+
h = 1;
85+
}
86+
living.heal(h);
87+
break;
88+
}
89+
}
90+
}
9891
}
9992
}
10093
}

0 commit comments

Comments
 (0)