Skip to content

Commit

Permalink
demodulize switch command logic
Browse files Browse the repository at this point in the history
  • Loading branch information
mcmonkey4eva committed May 28, 2019
1 parent d74124e commit 267151c
Show file tree
Hide file tree
Showing 5 changed files with 46 additions and 79 deletions.
Expand Up @@ -177,12 +177,4 @@ public void forceAttachMove(Entity a, Entity b, Vector offset, boolean matchRota
attachmentRotations.add(a.getUniqueId());
}
}

public Boolean getSwitchState(Block b) {
return null;
}

public boolean setSwitchState(Location interactLocation, boolean state) {
return false;
}
}
Expand Up @@ -5,6 +5,9 @@
import org.bukkit.block.Block;
import org.bukkit.block.BlockState;
import org.bukkit.block.data.BlockData;
import org.bukkit.block.data.Openable;
import org.bukkit.block.data.Powerable;
import org.bukkit.block.data.type.Dispenser;

/**
* Helper for 1.13+ block data.
Expand Down Expand Up @@ -40,4 +43,37 @@ public BlockState getBlockState() {
state.setBlockData(data);
return state;
}

public Boolean getSwitchState() {
if (data instanceof Openable) {
return ((Openable) data).isOpen();
}
else if (data instanceof Powerable) {
return ((Powerable) data).isPowered();
}
else if (data instanceof Dispenser) {
return ((Dispenser) data).isTriggered();
}
return null;
}

public boolean setSwitchState(Block block, boolean state) {
if (data instanceof Openable) {
((Openable) data).setOpen(state);
}
else if (data instanceof Powerable) {
((Powerable) data).setPowered(true);
}
else if (data instanceof Dispenser) {
((Dispenser) data).setTriggered(true);
}
else {
return false;
}
NMSHandler.getInstance().getChunkHelper().changeChunkServerThread(block.getWorld());
block.setBlockData(data, true);
block.getState().update(true, true);
NMSHandler.getInstance().getChunkHelper().restoreServerThread(block.getWorld());
return true;
}
}
Expand Up @@ -3,6 +3,7 @@
import net.aufdemrand.denizen.BukkitScriptEntryData;
import net.aufdemrand.denizen.nms.NMSHandler;
import net.aufdemrand.denizen.nms.NMSVersion;
import net.aufdemrand.denizen.nms.abstracts.ModernBlockData;
import net.aufdemrand.denizen.nms.interfaces.BlockData;
import net.aufdemrand.denizen.objects.dLocation;
import net.aufdemrand.denizen.utilities.DenizenAPI;
Expand Down Expand Up @@ -103,9 +104,12 @@ public void run() {
}

public static boolean switchState(Block b) {
Boolean switchState = NMSHandler.getInstance().getSwitchState(b);
if (switchState != null) {
return switchState;
if (NMSHandler.getVersion().isAtLeast(NMSVersion.v1_13_R2)) {
ModernBlockData mbd = new ModernBlockData(b);
Boolean switchState = mbd.getSwitchState();
if (switchState != null) {
return switchState;
}
}
//return (b.getData() & 0x8) > 0;
Material type = b.getType();
Expand Down Expand Up @@ -147,7 +151,8 @@ public void switchBlock(ScriptEntry scriptEntry, Location interactLocation, Swit
switchState.equals(SwitchState.TOGGLE)) {

if (NMSHandler.getVersion().isAtLeast(NMSVersion.v1_13_R2)) {
NMSHandler.getInstance().setSwitchState(interactLocation, !currentState);
ModernBlockData mbd = new ModernBlockData(interactLocation.getBlock());
mbd.setSwitchState(interactLocation.getBlock(), !currentState);
}
else {
try {
Expand Down
Expand Up @@ -246,34 +246,4 @@ public ProfileEditor getProfileEditor() {
public BiomeNMS getBiomeNMS(Biome biome) {
return new BiomeNMS_v1_13_R2(biome);
}

@Override
public Boolean getSwitchState(Block b) {
if (b.getBlockData() instanceof Openable) {
return ((Openable) b.getBlockData()).isOpen();
}
else if (b.getBlockData() instanceof Powerable) {
return ((Powerable) b.getBlockData()).isPowered();
}
return null;
}

@Override
public boolean setSwitchState(Location interactLocation, boolean state) {
if (interactLocation.getBlock().getBlockData() instanceof Openable) {
Openable newState = ((Openable) interactLocation.getBlock().getBlockData());
newState.setOpen(state);
interactLocation.getBlock().setBlockData(newState, true);
interactLocation.getBlock().getState().update(true, true);
return true;
}
else if (interactLocation.getBlock().getBlockData() instanceof Powerable) {
Powerable newState = ((Powerable) interactLocation.getBlock().getBlockData());
newState.setPowered(state);
interactLocation.getBlock().setBlockData(newState, true);
interactLocation.getBlock().getState().update(true, true);
return true;
}
return false;
}
}
Expand Up @@ -27,6 +27,7 @@
import org.bukkit.block.Block;
import org.bukkit.block.data.Openable;
import org.bukkit.block.data.Powerable;
import org.bukkit.block.data.type.Dispenser;
import org.bukkit.craftbukkit.v1_14_R1.CraftServer;
import org.bukkit.craftbukkit.v1_14_R1.entity.CraftPlayer;
import org.bukkit.craftbukkit.v1_14_R1.inventory.CraftInventory;
Expand Down Expand Up @@ -283,41 +284,4 @@ public ProfileEditor getProfileEditor() {
public BiomeNMS getBiomeNMS(Biome biome) {
return new BiomeNMS_v1_14_R1(biome);
}

@Override
public Boolean getSwitchState(Block b) {
ModernBlockData mbd = new ModernBlockData(b);
if (mbd.data instanceof Openable) {
return ((Openable) mbd.data).isOpen();
}
else if (mbd.data instanceof Powerable) {
return ((Powerable) mbd.data).isPowered();
}
return null;
}

@Override
public boolean setSwitchState(Location interactLocation, boolean state) {
Block block = interactLocation.getBlock();
ModernBlockData mbd = new ModernBlockData(block);
if (mbd.data instanceof Openable) {
Openable newState = ((Openable) mbd.data);
newState.setOpen(state);
NMSHandler.getInstance().getChunkHelper().changeChunkServerThread(block.getWorld());
interactLocation.getBlock().setBlockData(newState, true);
interactLocation.getBlock().getState().update(true, true);
NMSHandler.getInstance().getChunkHelper().restoreServerThread(block.getWorld());
return true;
}
else if (mbd.data instanceof Powerable) {
Powerable newState = ((Powerable) mbd.data);
newState.setPowered(state);
NMSHandler.getInstance().getChunkHelper().changeChunkServerThread(block.getWorld());
interactLocation.getBlock().setBlockData(newState, true);
interactLocation.getBlock().getState().update(true, true);
NMSHandler.getInstance().getChunkHelper().restoreServerThread(block.getWorld());
return true;
}
return false;
}
}

0 comments on commit 267151c

Please sign in to comment.