mirror of
https://github.com/barkeser2002/CatServer.git
synced 2026-09-25 09:26:08 +03:00
37 lines
1.8 KiB
Diff
37 lines
1.8 KiB
Diff
--- ../src-base/minecraft/net/minecraft/block/BlockDoor.java
|
|
+++ ../src-work/minecraft/net/minecraft/block/BlockDoor.java
|
|
@@ -2,6 +2,9 @@
|
|
|
|
import java.util.Random;
|
|
import javax.annotation.Nullable;
|
|
+
|
|
+import org.bukkit.event.block.BlockRedstoneEvent;
|
|
+
|
|
import net.minecraft.block.material.EnumPushReaction;
|
|
import net.minecraft.block.material.MapColor;
|
|
import net.minecraft.block.material.Material;
|
|
@@ -196,10 +199,20 @@
|
|
}
|
|
else
|
|
{
|
|
- boolean flag = worldIn.isBlockPowered(pos) || worldIn.isBlockPowered(blockpos1);
|
|
+ org.bukkit.World bworld = worldIn.getWorld();
|
|
+ org.bukkit.block.Block bukkitBlock = bworld.getBlockAt(pos.getX(), pos.getY(), pos.getZ());
|
|
+ org.bukkit.block.Block blockTop = bworld.getBlockAt(blockpos1.getX(), blockpos1.getY(), blockpos1.getZ());
|
|
|
|
- if (blockIn != this && (flag || blockIn.getDefaultState().canProvidePower()) && flag != ((Boolean)iblockstate1.getValue(POWERED)).booleanValue())
|
|
- {
|
|
+ int power = bukkitBlock.getBlockPower();
|
|
+ int powerTop = blockTop.getBlockPower();
|
|
+ if (powerTop > power) power = powerTop;
|
|
+ int oldPower = iblockstate1.getValue(BlockDoor.POWERED) ? 15 : 0;
|
|
+
|
|
+ if (oldPower == 0 ^ power == 0) {
|
|
+ BlockRedstoneEvent eventRedstone = new BlockRedstoneEvent(bukkitBlock, oldPower, power);
|
|
+ worldIn.getServer().getPluginManager().callEvent(eventRedstone);
|
|
+
|
|
+ boolean flag = eventRedstone.getNewCurrent() > 0;
|
|
worldIn.setBlockState(blockpos1, iblockstate1.withProperty(POWERED, Boolean.valueOf(flag)), 2);
|
|
|
|
if (flag != ((Boolean)state.getValue(OPEN)).booleanValue())
|