SteamWar/BauSystem
Archiviert
13
0

Fix Loader Redstone #89

Manuell gemergt
Lixfel hat 7 Commits von loaderfix nach master 2020-08-29 11:33:04 +02:00 zusammengeführt

Datei anzeigen

@ -3,12 +3,15 @@ package de.steamwar.bausystem.world;
import org.bukkit.Location; import org.bukkit.Location;
import org.bukkit.Material; import org.bukkit.Material;
import org.bukkit.block.Block; import org.bukkit.block.Block;
import org.bukkit.block.BlockFace;
import org.bukkit.block.data.BlockData; import org.bukkit.block.data.BlockData;
import org.bukkit.block.data.Powerable; import org.bukkit.block.data.Powerable;
import org.bukkit.block.data.type.Switch;
import org.bukkit.event.block.Action; import org.bukkit.event.block.Action;
import org.bukkit.event.player.PlayerInteractEvent; import org.bukkit.event.player.PlayerInteractEvent;
class AutoLoader_15 { class AutoLoader_15 {
private AutoLoader_15() { private AutoLoader_15() {
} }
@ -30,10 +33,32 @@ class AutoLoader_15 {
Powerable powerable = (Powerable) data; Powerable powerable = (Powerable) data;
powerable.setPowered(active); powerable.setPowered(active);
block.setBlockData(powerable); block.setBlockData(powerable);
block.getState().update(true);
if (data instanceof Switch){
Switch swtch = (Switch) data;
Block relative;
switch(swtch.getFace()){
case FLOOR:
relative = block.getRelative(BlockFace.DOWN);
break;
case CEILING:
relative = block.getRelative(BlockFace.UP);
break;
default:
relative = block.getRelative(swtch.getFacing());
break;
}
updateBlock(relative);
}
return true; return true;
} }
static void updateBlock(Block block) {
BlockData data = block.getBlockData();
block.setType(Material.BARRIER, true);
block.setBlockData(data, true);
}
static void onPlayerInteract(IAutoLoader loader, PlayerInteractEvent event) { static void onPlayerInteract(IAutoLoader loader, PlayerInteractEvent event) {
if (event.getAction() != Action.RIGHT_CLICK_BLOCK && event.getAction() != Action.PHYSICAL) if (event.getAction() != Action.RIGHT_CLICK_BLOCK && event.getAction() != Action.PHYSICAL)
return; return;