Update upstream
This commit is contained in:
parent
e1c399c048
commit
7a29402e9e
|
@ -17,14 +17,17 @@ import org.bukkit.craftbukkit.v.block.CraftBlock;
|
||||||
import org.bukkit.craftbukkit.v.entity.CraftHumanEntity;
|
import org.bukkit.craftbukkit.v.entity.CraftHumanEntity;
|
||||||
import org.bukkit.craftbukkit.v.inventory.CraftItemStack;
|
import org.bukkit.craftbukkit.v.inventory.CraftItemStack;
|
||||||
import org.bukkit.entity.HumanEntity;
|
import org.bukkit.entity.HumanEntity;
|
||||||
|
import org.bukkit.event.block.BrewingStartEvent;
|
||||||
import org.bukkit.event.inventory.BrewEvent;
|
import org.bukkit.event.inventory.BrewEvent;
|
||||||
import org.bukkit.event.inventory.BrewingStandFuelEvent;
|
import org.bukkit.event.inventory.BrewingStandFuelEvent;
|
||||||
import org.bukkit.inventory.BrewerInventory;
|
import org.bukkit.inventory.BrewerInventory;
|
||||||
import org.bukkit.inventory.InventoryHolder;
|
import org.bukkit.inventory.InventoryHolder;
|
||||||
|
import org.objectweb.asm.Opcodes;
|
||||||
import org.spongepowered.asm.mixin.Mixin;
|
import org.spongepowered.asm.mixin.Mixin;
|
||||||
import org.spongepowered.asm.mixin.Overwrite;
|
import org.spongepowered.asm.mixin.Overwrite;
|
||||||
import org.spongepowered.asm.mixin.Shadow;
|
import org.spongepowered.asm.mixin.Shadow;
|
||||||
import org.spongepowered.asm.mixin.injection.At;
|
import org.spongepowered.asm.mixin.injection.At;
|
||||||
|
import org.spongepowered.asm.mixin.injection.Inject;
|
||||||
import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
|
import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
|
||||||
|
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
|
@ -55,6 +58,13 @@ public abstract class BrewingStandBlockEntityMixin extends LockableBlockEntityMi
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Inject(method = "serverTick", at = @At(value = "FIELD", opcode = Opcodes.PUTFIELD, target = "Lnet/minecraft/world/level/block/entity/BrewingStandBlockEntity;ingredient:Lnet/minecraft/world/item/Item;"))
|
||||||
|
private static void arclight$brewBegin(Level level, BlockPos pos, BlockState p_155288_, BrewingStandBlockEntity entity, CallbackInfo ci) {
|
||||||
|
var event = new BrewingStartEvent(CraftBlock.at(level, pos), CraftItemStack.asCraftMirror(entity.getItem(3)), entity.brewTime);
|
||||||
|
Bukkit.getPluginManager().callEvent(event);
|
||||||
|
entity.brewTime = event.getTotalBrewTime();
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @author Izzel_Aliz
|
* @author Izzel_Aliz
|
||||||
* @reason
|
* @reason
|
||||||
|
|
|
@ -1,9 +1,11 @@
|
||||||
package io.izzel.arclight.common.mixin.core.world.level.block.entity;
|
package io.izzel.arclight.common.mixin.core.world.level.block.entity;
|
||||||
|
|
||||||
|
import io.izzel.arclight.common.bridge.core.item.crafting.IRecipeBridge;
|
||||||
import net.minecraft.core.BlockPos;
|
import net.minecraft.core.BlockPos;
|
||||||
import net.minecraft.world.Container;
|
import net.minecraft.world.Container;
|
||||||
import net.minecraft.world.Containers;
|
import net.minecraft.world.Containers;
|
||||||
import net.minecraft.world.SimpleContainer;
|
import net.minecraft.world.SimpleContainer;
|
||||||
|
import net.minecraft.world.entity.Entity;
|
||||||
import net.minecraft.world.item.ItemStack;
|
import net.minecraft.world.item.ItemStack;
|
||||||
import net.minecraft.world.item.crafting.CampfireCookingRecipe;
|
import net.minecraft.world.item.crafting.CampfireCookingRecipe;
|
||||||
import net.minecraft.world.item.crafting.RecipeManager;
|
import net.minecraft.world.item.crafting.RecipeManager;
|
||||||
|
@ -15,16 +17,29 @@ import org.bukkit.Bukkit;
|
||||||
import org.bukkit.craftbukkit.v.block.CraftBlock;
|
import org.bukkit.craftbukkit.v.block.CraftBlock;
|
||||||
import org.bukkit.craftbukkit.v.inventory.CraftItemStack;
|
import org.bukkit.craftbukkit.v.inventory.CraftItemStack;
|
||||||
import org.bukkit.event.block.BlockCookEvent;
|
import org.bukkit.event.block.BlockCookEvent;
|
||||||
|
import org.bukkit.event.block.CampfireStartEvent;
|
||||||
|
import org.bukkit.inventory.CampfireRecipe;
|
||||||
import org.spongepowered.asm.mixin.Final;
|
import org.spongepowered.asm.mixin.Final;
|
||||||
import org.spongepowered.asm.mixin.Mixin;
|
import org.spongepowered.asm.mixin.Mixin;
|
||||||
import org.spongepowered.asm.mixin.Overwrite;
|
import org.spongepowered.asm.mixin.Overwrite;
|
||||||
import org.spongepowered.asm.mixin.Shadow;
|
import org.spongepowered.asm.mixin.Shadow;
|
||||||
|
import org.spongepowered.asm.mixin.injection.At;
|
||||||
|
import org.spongepowered.asm.mixin.injection.Inject;
|
||||||
|
import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable;
|
||||||
|
import org.spongepowered.asm.mixin.injection.callback.LocalCapture;
|
||||||
|
|
||||||
|
import java.util.Optional;
|
||||||
|
|
||||||
@Mixin(CampfireBlockEntity.class)
|
@Mixin(CampfireBlockEntity.class)
|
||||||
public abstract class CampfireBlockEntityMixin extends BlockEntityMixin {
|
public abstract class CampfireBlockEntityMixin extends BlockEntityMixin {
|
||||||
|
|
||||||
@Shadow @Final private RecipeManager.CachedCheck<Container, CampfireCookingRecipe> quickCheck;
|
@Shadow @Final private RecipeManager.CachedCheck<Container, CampfireCookingRecipe> quickCheck;
|
||||||
|
|
||||||
|
@Shadow
|
||||||
|
public abstract Optional<CampfireCookingRecipe> getCookableRecipe(ItemStack p_59052_);
|
||||||
|
|
||||||
|
@Shadow @Final public int[] cookingTime;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @author IzzelAliz
|
* @author IzzelAliz
|
||||||
* @reason
|
* @reason
|
||||||
|
@ -71,4 +86,12 @@ public abstract class CampfireBlockEntityMixin extends BlockEntityMixin {
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Inject(method = "placeFood", locals = LocalCapture.CAPTURE_FAILHARD,
|
||||||
|
at = @At(value = "FIELD", target = "Lnet/minecraft/world/level/block/entity/CampfireBlockEntity;cookingProgress:[I"))
|
||||||
|
private void arclight$cookStart(Entity p_238285_, ItemStack stack, int p_238287_, CallbackInfoReturnable<Boolean> cir, int i) {
|
||||||
|
var event = new CampfireStartEvent(CraftBlock.at(this.level, this.worldPosition), CraftItemStack.asCraftMirror(stack), (CampfireRecipe) ((IRecipeBridge) getCookableRecipe(stack).get()).bridge$toBukkitRecipe());
|
||||||
|
Bukkit.getPluginManager().callEvent(event);
|
||||||
|
this.cookingTime[i] = event.getTotalCookTime();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue
Block a user