SPIGOT-7043: EnderChest does not implement Lidded

By: md_5 <git@md-5.net>
This commit is contained in:
CraftBukkit/Spigot
2022-06-10 10:57:43 +10:00
parent 29db051e6e
commit d9d74754ba
4 changed files with 66 additions and 8 deletions

View File

@@ -1,6 +1,5 @@
package org.bukkit.craftbukkit.block;
import net.minecraft.sounds.SoundEffects;
import net.minecraft.world.ITileInventory;
import net.minecraft.world.level.block.BlockChest;
import net.minecraft.world.level.block.Blocks;
@@ -58,8 +57,10 @@ public class CraftChest extends CraftLootable<TileEntityChest> implements Chest
requirePlaced();
if (!getTileEntity().openersCounter.opened && getWorldHandle() instanceof net.minecraft.world.level.World) {
IBlockData block = getTileEntity().getBlockState();
getTileEntity().getLevel().blockEvent(getPosition(), block.getBlock(), 1, getTileEntity().openersCounter.getOpenerCount() + 1);
TileEntityChest.playSound(getTileEntity().getLevel(), getPosition(), block, SoundEffects.CHEST_OPEN);
int openCount = getTileEntity().openersCounter.getOpenerCount();
getTileEntity().openersCounter.onAPIOpen((net.minecraft.world.level.World) getWorldHandle(), getPosition(), block);
getTileEntity().openersCounter.openerAPICountChanged((net.minecraft.world.level.World) getWorldHandle(), getPosition(), block, openCount, openCount + 1);
}
getTileEntity().openersCounter.opened = true;
}
@@ -69,8 +70,10 @@ public class CraftChest extends CraftLootable<TileEntityChest> implements Chest
requirePlaced();
if (getTileEntity().openersCounter.opened && getWorldHandle() instanceof net.minecraft.world.level.World) {
IBlockData block = getTileEntity().getBlockState();
getTileEntity().getLevel().blockEvent(getPosition(), block.getBlock(), 1, 0);
TileEntityChest.playSound(getTileEntity().getLevel(), getPosition(), block, SoundEffects.CHEST_CLOSE);
int openCount = getTileEntity().openersCounter.getOpenerCount();
getTileEntity().openersCounter.onAPIClose((net.minecraft.world.level.World) getWorldHandle(), getPosition(), block);
getTileEntity().openersCounter.openerAPICountChanged((net.minecraft.world.level.World) getWorldHandle(), getPosition(), block, openCount, 0);
}
getTileEntity().openersCounter.opened = false;
}

View File

@@ -1,6 +1,7 @@
package org.bukkit.craftbukkit.block;
import net.minecraft.world.level.block.entity.TileEntityEnderChest;
import net.minecraft.world.level.block.state.IBlockData;
import org.bukkit.World;
import org.bukkit.block.EnderChest;
@@ -9,4 +10,30 @@ public class CraftEnderChest extends CraftBlockEntityState<TileEntityEnderChest>
public CraftEnderChest(World world, TileEntityEnderChest tileEntity) {
super(world, tileEntity);
}
@Override
public void open() {
requirePlaced();
if (!getTileEntity().openersCounter.opened && getWorldHandle() instanceof net.minecraft.world.level.World) {
IBlockData block = getTileEntity().getBlockState();
int openCount = getTileEntity().openersCounter.getOpenerCount();
getTileEntity().openersCounter.onAPIOpen((net.minecraft.world.level.World) getWorldHandle(), getPosition(), block);
getTileEntity().openersCounter.openerAPICountChanged((net.minecraft.world.level.World) getWorldHandle(), getPosition(), block, openCount, openCount + 1);
}
getTileEntity().openersCounter.opened = true;
}
@Override
public void close() {
requirePlaced();
if (getTileEntity().openersCounter.opened && getWorldHandle() instanceof net.minecraft.world.level.World) {
IBlockData block = getTileEntity().getBlockState();
int openCount = getTileEntity().openersCounter.getOpenerCount();
getTileEntity().openersCounter.onAPIClose((net.minecraft.world.level.World) getWorldHandle(), getPosition(), block);
getTileEntity().openersCounter.openerAPICountChanged((net.minecraft.world.level.World) getWorldHandle(), getPosition(), block, openCount, 0);
}
getTileEntity().openersCounter.opened = false;
}
}