mirror of
https://github.com/Samsuik/Sakura.git
synced 2026-01-04 15:31:43 +00:00
Upstream has released updates that appear to apply and compile correctly Paper Changes: PaperMC/Paper@c0a3d51 Start update, apply API patches PaperMC/Paper@172c7dc Work PaperMC/Paper@ab9a3db More work PaperMC/Paper@c60e47f More more work PaperMC/Paper@bd55e32 More more more work PaperMC/Paper@5265287 More more more more work PaperMC/Paper@4601dc9 Some fixes, start updating CustomModelData API PaperMC/Paper@2331dad Even more work PaperMC/Paper@dc74c6f moonrise PaperMC/Paper@d7d2f88 Apply remaining patches, fix API PaperMC/Paper@f863bb7 Update generated classes PaperMC/Paper@71a4ef8 Set java launcher for api generate task PaperMC/Paper@b8aeecb Compilation fixes PaperMC/Paper@6c35392 Tests succeed (by removing one) PaperMC/Paper@b0603da Fix jd gson version, move back mc util diff PaperMC/Paper@e2dd1d5 Add back post_teleport chunk ticket PaperMC/Paper@7045b2a Update DataConverter PaperMC/Paper@65633e3 Update Moonrise
89 lines
4.0 KiB
Diff
89 lines
4.0 KiB
Diff
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
|
From: Samsuik <kfian294ma4@gmail.com>
|
|
Date: Fri, 23 Feb 2024 14:40:32 +0000
|
|
Subject: [PATCH] Old enchanted golden apples
|
|
|
|
|
|
diff --git a/src/main/java/me/samsuik/sakura/player/combat/CustomGoldenApple.java b/src/main/java/me/samsuik/sakura/player/combat/CustomGoldenApple.java
|
|
new file mode 100644
|
|
index 0000000000000000000000000000000000000000..18cb28a9bdfcb9a421bc001f057b4be54c1550be
|
|
--- /dev/null
|
|
+++ b/src/main/java/me/samsuik/sakura/player/combat/CustomGoldenApple.java
|
|
@@ -0,0 +1,64 @@
|
|
+package me.samsuik.sakura.player.combat;
|
|
+
|
|
+import net.minecraft.core.component.DataComponents;
|
|
+import net.minecraft.world.InteractionHand;
|
|
+import net.minecraft.world.InteractionResult;
|
|
+import net.minecraft.world.effect.MobEffectInstance;
|
|
+import net.minecraft.world.effect.MobEffects;
|
|
+import net.minecraft.world.entity.LivingEntity;
|
|
+import net.minecraft.world.entity.player.Player;
|
|
+import net.minecraft.world.item.Item;
|
|
+import net.minecraft.world.item.ItemStack;
|
|
+import net.minecraft.world.item.component.Consumable;
|
|
+import net.minecraft.world.item.component.Consumables;
|
|
+import net.minecraft.world.item.consume_effects.ApplyStatusEffectsConsumeEffect;
|
|
+import net.minecraft.world.level.Level;
|
|
+import org.jspecify.annotations.NullMarked;
|
|
+
|
|
+import java.util.List;
|
|
+import java.util.Optional;
|
|
+
|
|
+@NullMarked
|
|
+@SuppressWarnings("OptionalAssignedToNull")
|
|
+public final class CustomGoldenApple extends Item {
|
|
+ private static final Consumable LEGACY_ENCHANTED_GOLDEN_APPLE = Consumables.defaultFood()
|
|
+ .onConsume(
|
|
+ new ApplyStatusEffectsConsumeEffect(
|
|
+ List.of(
|
|
+ new MobEffectInstance(MobEffects.REGENERATION, 600, 4),
|
|
+ new MobEffectInstance(MobEffects.DAMAGE_RESISTANCE, 6000, 0),
|
|
+ new MobEffectInstance(MobEffects.FIRE_RESISTANCE, 6000, 0),
|
|
+ new MobEffectInstance(MobEffects.ABSORPTION, 2400, 0)
|
|
+ )
|
|
+ )
|
|
+ )
|
|
+ .build();
|
|
+
|
|
+ public CustomGoldenApple(Properties settings) {
|
|
+ super(settings);
|
|
+ }
|
|
+
|
|
+ @Override
|
|
+ public InteractionResult use(Level level, Player player, InteractionHand hand) {
|
|
+ ItemStack stack = player.getItemInHand(hand);
|
|
+ if (this.itemHasConsumableComponent(stack, level)) {
|
|
+ return super.use(level, player, hand);
|
|
+ } else {
|
|
+ return LEGACY_ENCHANTED_GOLDEN_APPLE.startConsuming(player, stack, hand);
|
|
+ }
|
|
+ }
|
|
+
|
|
+ @Override
|
|
+ public ItemStack finishUsingItem(ItemStack stack, Level level, LivingEntity entity) {
|
|
+ if (this.itemHasConsumableComponent(stack, level)) {
|
|
+ return super.finishUsingItem(stack, level, entity);
|
|
+ } else {
|
|
+ return LEGACY_ENCHANTED_GOLDEN_APPLE.onConsume(level, entity, stack);
|
|
+ }
|
|
+ }
|
|
+
|
|
+ private boolean itemHasConsumableComponent(ItemStack stack, Level level) {
|
|
+ Optional<?> consumable = stack.getComponentsPatch().get(DataComponents.CONSUMABLE);
|
|
+ return consumable != null || !level.sakuraConfig().players.combat.oldEnchantedGoldenApple;
|
|
+ }
|
|
+}
|
|
diff --git a/src/main/java/net/minecraft/world/item/Items.java b/src/main/java/net/minecraft/world/item/Items.java
|
|
index 6d16b4433e79eca0ff8008941f0b9b807b1db9db..5aeb780535d6ab8010e544cade33fa2b20f9068c 100644
|
|
--- a/src/main/java/net/minecraft/world/item/Items.java
|
|
+++ b/src/main/java/net/minecraft/world/item/Items.java
|
|
@@ -1183,6 +1183,7 @@ public class Items {
|
|
public static final Item GOLDEN_APPLE = registerItem("golden_apple", new Item.Properties().food(Foods.GOLDEN_APPLE, Consumables.GOLDEN_APPLE));
|
|
public static final Item ENCHANTED_GOLDEN_APPLE = registerItem(
|
|
"enchanted_golden_apple",
|
|
+ me.samsuik.sakura.player.combat.CustomGoldenApple::new, // Sakura - old enchanted golden apples
|
|
new Item.Properties()
|
|
.rarity(Rarity.RARE)
|
|
.food(Foods.ENCHANTED_GOLDEN_APPLE, Consumables.ENCHANTED_GOLDEN_APPLE)
|