Skip to content

Commit 52c1235

Browse files
authored
Merge pull request #2122 from stellanera98/1.20-anointment-charges
Explosive charges n olonger lose their Anointments if held in hand when breaking a block.
2 parents 22195c1 + 451e6db commit 52c1235

8 files changed

Lines changed: 54 additions & 3 deletions

File tree

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
{
2+
"parent": "bloodmagic:block/dungeon_brick_stairs"
3+
}
Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
{
2+
"values": [
3+
"bloodmagic:shaped_charge",
4+
"bloodmagic:shaped_charge_deep",
5+
"bloodmagic:aug_shaped_charge",
6+
"bloodmagic:deforester_charge",
7+
"bloodmagic:deforester_charge_2",
8+
"bloodmagic:fungal_charge",
9+
"bloodmagic:fungal_charge_2",
10+
"bloodmagic:veinmine_charge",
11+
"bloodmagic:veinmine_charge_2"
12+
]
13+
}
Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
{
2+
"values": [
3+
"bloodmagic:soulpickaxe"
4+
]
5+
}

src/main/java/wayoftime/bloodmagic/common/data/GeneratorItemModels.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -53,6 +53,7 @@ protected void registerModels() {
5353
for (RegistryObject<Block> block : BloodMagicBlocks.DECORATIVE_STAIR.getEntries()) {
5454
registerBlockModel(block.get());
5555
}
56+
registerBlockModel(BloodMagicBlocks.DUNGEON_BRICK_STAIRS.get());
5657

5758
for (RegistryObject<Block> block : BloodMagicBlocks.DECORATIVE_GATE.getEntries()) {
5859
registerBlockModel(block.get());

src/main/java/wayoftime/bloodmagic/common/data/GeneratorItemTags.java

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -56,6 +56,12 @@ public void addTags(HolderLookup.Provider provider)
5656
this.tag(BloodMagicTags.ARC_TOOL).addTag(BloodMagicTags.ARC_TOOL_CUTTINGFLUID);
5757
this.tag(BloodMagicTags.ARC_TOOL).add(BloodMagicItems.ALCHEMY_FLASK_LINGERING.get());
5858

59+
this.tag(BloodMagicTags.CHARGES)
60+
.add(BloodMagicItems.SHAPED_CHARGE_ITEM.get(), BloodMagicItems.SHAPED_CHARGE_DEEP_ITEM.get(), BloodMagicItems.AUG_SHAPED_CHARGE_ITEM.get())
61+
.add(BloodMagicItems.DEFORESTER_CHARGE_ITEM.get(), BloodMagicItems.DEFORESTER_CHARGE_2_ITEM.get())
62+
.add(BloodMagicItems.FUNGAL_CHARGE_ITEM.get(), BloodMagicItems.FUNGAL_CHARGE_2_ITEM.get())
63+
.add(BloodMagicItems.VEINMINE_CHARGE_ITEM.get(), BloodMagicItems.VEINMINE_CHARGE_2_ITEM.get());
64+
5965
this.tag(BloodMagicTags.CRYSTAL_DEMON).add(BloodMagicItems.RAW_CRYSTAL.get());
6066
this.tag(BloodMagicTags.CRYSTAL_DEMON).add(BloodMagicItems.CORROSIVE_CRYSTAL.get());
6167
this.tag(BloodMagicTags.CRYSTAL_DEMON).add(BloodMagicItems.DESTRUCTIVE_CRYSTAL.get());
@@ -205,6 +211,7 @@ private void registerVanillaTools()
205211
tag(BloodMagicTags.PICKAXES).add(Items.DIAMOND_PICKAXE, Items.GOLDEN_PICKAXE, Items.IRON_PICKAXE, Items.NETHERITE_PICKAXE, Items.STONE_PICKAXE, Items.WOODEN_PICKAXE, BloodMagicItems.SENTIENT_PICKAXE.get());
206212
tag(BloodMagicTags.HOES).add(Items.DIAMOND_HOE, Items.GOLDEN_HOE, Items.IRON_HOE, Items.NETHERITE_HOE, Items.STONE_HOE, Items.WOODEN_HOE, BloodMagicItems.SENTIENT_SCYTHE.get());
207213
tag(BloodMagicTags.SCYTHES).add(BloodMagicItems.SENTIENT_SCYTHE.get());
214+
tag(ItemTags.CLUSTER_MAX_HARVESTABLES).add(BloodMagicItems.SENTIENT_PICKAXE.get());
208215

209216
tag(Tags.Items.ARMORS_HELMETS).add(BloodMagicItems.LIVING_HELMET.get());
210217
tag(Tags.Items.ARMORS_CHESTPLATES).add(BloodMagicItems.LIVING_PLATE.get());

src/main/java/wayoftime/bloodmagic/common/tags/BloodMagicTags.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -137,8 +137,9 @@ public class BloodMagicTags
137137
// Modded (for meteor rituals)
138138
public static final TagKey<Item> ADVANCED_ALLOY = getForgeAlloyTag("advanced");
139139
public static final TagKey<Item> DRAGON_BONE = ItemTags.create(new ResourceLocation("forge:bones"));
140+
public static final TagKey<Item> CHARGES = ItemTags.create(BloodMagic.rl("charges"));
140141

141-
public static class Blocks
142+
public static class Blocks
142143
{
143144
public static final TagKey<Block> MUSHROOM_STEM = BlockTags.create(new ResourceLocation("minecraft:mushroom_stem"));
144145
public static final TagKey<Block> MUSHROOM_HYPHAE = BlockTags.create(new ResourceLocation("minecraft:mushroom_hyphae"));

src/main/java/wayoftime/bloodmagic/loot/GlobalLootModifier.java

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,7 @@
2929
import net.minecraftforge.registries.RegistryObject;
3030
import org.jetbrains.annotations.NotNull;
3131
import wayoftime.bloodmagic.BloodMagic;
32+
import wayoftime.bloodmagic.anointment.AnointmentData;
3233
import wayoftime.bloodmagic.anointment.AnointmentHolder;
3334
import wayoftime.bloodmagic.common.tags.BloodMagicTags;
3435
import wayoftime.bloodmagic.core.AnointmentRegistrar;
@@ -60,6 +61,9 @@ public SilkTouchTestModifier(LootItemCondition[] conditionsIn)
6061
@Override
6162
protected @NotNull ObjectArrayList<ItemStack> doApply(ObjectArrayList<ItemStack> generatedLoot, LootContext context) {
6263
ItemStack ctxTool = context.getParamOrNull(LootContextParams.TOOL);
64+
if (ctxTool.is(BloodMagicTags.CHARGES)) {
65+
return generatedLoot;
66+
}
6367
// return early if silk-touch is already applied (otherwise we'll get stuck in
6468
// an infinite loop).
6569
if (EnchantmentHelper.getEnchantments(ctxTool).containsKey(Enchantments.SILK_TOUCH))
@@ -69,6 +73,7 @@ public SilkTouchTestModifier(LootItemCondition[] conditionsIn)
6973
{
7074
return generatedLoot;
7175
}
76+
7277
ItemStack fakeTool = ctxTool.copy();
7378
fakeTool.enchant(Enchantments.SILK_TOUCH, 1);
7479
LootParams.Builder builder = new LootParams.Builder(context.getLevel());
@@ -115,6 +120,9 @@ public FortuneModifier(LootItemCondition[] conditionsIn)
115120
{
116121
return generatedLoot;
117122
}
123+
if (ctxTool.is(BloodMagicTags.CHARGES)) {
124+
return generatedLoot;
125+
}
118126

119127
if (EnchantmentHelper.getEnchantments(ctxTool).containsKey(Enchantments.SILK_TOUCH))
120128
return generatedLoot;
@@ -252,6 +260,9 @@ public SmeltingModifier(LootItemCondition[] conditionsIn)
252260
{
253261
return generatedLoot;
254262
}
263+
if (ctxTool.is(BloodMagicTags.CHARGES)) {
264+
return generatedLoot;
265+
}
255266

256267
AnointmentHolder holder = AnointmentHolder.fromItemStack(ctxTool);
257268
if (holder == null)
@@ -314,6 +325,9 @@ public VoidingModifier(LootItemCondition[] conditionsIn)
314325
{
315326
return generatedLoot;
316327
}
328+
if (ctxTool.is(BloodMagicTags.CHARGES)) {
329+
return generatedLoot;
330+
}
317331

318332
AnointmentHolder holder = AnointmentHolder.fromItemStack(ctxTool);
319333
if (holder == null)

src/main/java/wayoftime/bloodmagic/util/handler/event/GenericHandler.java

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -35,8 +35,11 @@
3535
import net.minecraftforge.eventbus.api.SubscribeEvent;
3636
import net.minecraftforge.fml.common.Mod;
3737
import wayoftime.bloodmagic.BloodMagic;
38+
import wayoftime.bloodmagic.anointment.Anointment;
39+
import wayoftime.bloodmagic.anointment.AnointmentData;
3840
import wayoftime.bloodmagic.anointment.AnointmentHolder;
3941
import wayoftime.bloodmagic.common.item.*;
42+
import wayoftime.bloodmagic.common.tags.BloodMagicTags;
4043
import wayoftime.bloodmagic.core.AnointmentRegistrar;
4144
import wayoftime.bloodmagic.core.LivingArmorRegistrar;
4245
import wayoftime.bloodmagic.core.data.Binding;
@@ -917,8 +920,12 @@ public void onBreakBlock(BlockEvent.BreakEvent event)
917920
}
918921
}
919922

920-
if (holder.consumeAnointmentDurabilityOnHarvest(heldStack, EquipmentSlot.MAINHAND, player) || hasAnointmentChanged)
921-
holder.toItemStack(heldStack);
923+
if (heldStack.is(BloodMagicTags.CHARGES)) {
924+
return;
925+
}
926+
if (holder.consumeAnointmentDurabilityOnHarvest(heldStack, EquipmentSlot.MAINHAND, player) || hasAnointmentChanged) {
927+
holder.toItemStack(heldStack);
928+
}
922929
}
923930
}
924931
}

0 commit comments

Comments
 (0)