mirror of
https://github.com/plexusorg/Plex-FAWE.git
synced 2024-12-22 17:27:38 +00:00
Added a permission node to set NBT data, allowing servers to disallow NBT interactions.
This commit is contained in:
parent
59447c6ee3
commit
38607f387a
@ -232,6 +232,9 @@ public class LocalSession {
|
||||
newEditSession.enableStandardMode();
|
||||
newEditSession.setReorderMode(reorderMode);
|
||||
newEditSession.setFastMode(fastMode);
|
||||
if (newEditSession.getSurvivalExtent() != null) {
|
||||
newEditSession.getSurvivalExtent().setStripNbt(!player.hasPermission("worldedit.setnbt"));
|
||||
}
|
||||
editSession.undo(newEditSession);
|
||||
}
|
||||
return editSession;
|
||||
@ -257,6 +260,9 @@ public class LocalSession {
|
||||
newEditSession.enableStandardMode();
|
||||
newEditSession.setReorderMode(reorderMode);
|
||||
newEditSession.setFastMode(fastMode);
|
||||
if (newEditSession.getSurvivalExtent() != null) {
|
||||
newEditSession.getSurvivalExtent().setStripNbt(!player.hasPermission("worldedit.setnbt"));
|
||||
}
|
||||
editSession.redo(newEditSession);
|
||||
}
|
||||
++historyPointer;
|
||||
@ -887,6 +893,9 @@ public class LocalSession {
|
||||
editSession.setFastMode(fastMode);
|
||||
editSession.setReorderMode(reorderMode);
|
||||
editSession.setMask(mask);
|
||||
if (editSession.getSurvivalExtent() != null) {
|
||||
editSession.getSurvivalExtent().setStripNbt(!player.hasPermission("worldedit.setnbt"));
|
||||
}
|
||||
|
||||
return editSession;
|
||||
}
|
||||
|
@ -40,6 +40,7 @@ public class SurvivalModeExtent extends AbstractDelegateExtent {
|
||||
|
||||
private final World world;
|
||||
private boolean toolUse = false;
|
||||
private boolean stripNbt = false;
|
||||
|
||||
/**
|
||||
* Create a new instance.
|
||||
@ -78,13 +79,26 @@ public class SurvivalModeExtent extends AbstractDelegateExtent {
|
||||
this.toolUse = toolUse;
|
||||
}
|
||||
|
||||
public boolean hasStripNbt() {
|
||||
return stripNbt;
|
||||
}
|
||||
|
||||
public void setStripNbt(boolean stripNbt) {
|
||||
this.stripNbt = stripNbt;
|
||||
}
|
||||
|
||||
@Override
|
||||
public <B extends BlockStateHolder<B>> boolean setBlock(BlockVector3 location, B block) throws WorldEditException {
|
||||
if (toolUse && block.getBlockType().getMaterial().isAir()) {
|
||||
world.simulateBlockMine(location);
|
||||
return true;
|
||||
} else {
|
||||
return super.setBlock(location, block);
|
||||
// Can't be an inlined check due to inconsistent generic return type
|
||||
if (stripNbt) {
|
||||
return super.setBlock(location, block.toBaseBlock(null));
|
||||
} else {
|
||||
return super.setBlock(location, block);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user