mirror of
https://github.com/bloodmc/GriefDefender.git
synced 2024-09-24 04:02:48 +02:00
Fix claim create limit checks not using type.
* Fix lava/water not forming cobblestone.
This commit is contained in:
parent
9221f7f50f
commit
823fc88a21
@ -913,7 +913,7 @@ public ClaimResult transferOwner(UUID newOwnerID, boolean checkEconomy, boolean
|
||||
// Check limits
|
||||
final Player currentOwner = ownerData.getSubject() instanceof Player ? (Player) ownerData.getSubject() : null;
|
||||
final int createClaimLimit = GDPermissionManager.getInstance().getInternalOptionValue(TypeToken.of(Integer.class), newOwnerData.getSubject(), Options.CREATE_LIMIT, this);
|
||||
if (createClaimLimit > -1 && (newOwnerData.getInternalClaims().size() + 1) > createClaimLimit) {
|
||||
if (createClaimLimit > -1 && (newOwnerData.getClaimTypeCount(this.getType()) + 1) > createClaimLimit) {
|
||||
if (currentOwner != null) {
|
||||
GriefDefenderPlugin.sendMessage(currentOwner, MessageStorage.MESSAGE_DATA.getMessage(MessageStorage.CLAIM_TRANSFER_EXCEEDS_LIMIT));
|
||||
}
|
||||
|
@ -109,7 +109,7 @@ public void onBlockFadeEvent(BlockFadeEvent event) {
|
||||
|
||||
@EventHandler(priority = EventPriority.LOWEST)
|
||||
public void onBlockForm(BlockFormEvent event) {
|
||||
CommonBlockEventHandler.getInstance().handleBlockPlace(event, event.getBlock(), event.getNewState());
|
||||
CommonBlockEventHandler.getInstance().handleBlockModify(event, event.getBlock(), event.getNewState());
|
||||
}
|
||||
|
||||
@EventHandler(priority = EventPriority.LOWEST)
|
||||
|
@ -93,6 +93,11 @@ public void handleBlockModify(Event event, Object source, BlockState newState) {
|
||||
Block fromBlock = null;
|
||||
if (source instanceof Block) {
|
||||
fromBlock = (Block) source;
|
||||
// Air -> block should always be recorded as place
|
||||
if (fromBlock.isEmpty()) {
|
||||
handleBlockPlace(event, source, newState);
|
||||
return;
|
||||
}
|
||||
}
|
||||
if (!(event instanceof BlockBurnEvent) && fromBlock != null && newState != null && !fromBlock.getLocation().equals(newState.getLocation())) {
|
||||
handleBlockSpread(event, fromBlock, newState);
|
||||
@ -136,13 +141,11 @@ public void handleBlockPlace(Event event, Object source, BlockState newState) {
|
||||
return;
|
||||
}
|
||||
|
||||
// TODO - remove this when flag definition defaults are finished
|
||||
if (player == null) {
|
||||
// BlockFormEvent's are triggered based on world conditions and should not be caused by a player
|
||||
if (!(source instanceof Entity) && !(event instanceof BlockFormEvent)) {
|
||||
final GDPermissionUser user = CauseContextHelper.getEventUser(location);
|
||||
player = user != null ? user.getOnlinePlayer() : null;
|
||||
}
|
||||
}
|
||||
|
||||
GDClaim targetClaim = this.storage.getClaimAt(location);
|
||||
|
||||
|
@ -1055,6 +1055,7 @@ private void createClaimStart(PlayerInteractEvent event, Player player, Location
|
||||
return;
|
||||
}
|
||||
|
||||
final ClaimType type = PlayerUtil.getInstance().getClaimTypeFromShovel(playerData.shovelMode);
|
||||
if (!player.hasPermission(GDPermissions.BYPASS_CLAIM_LIMIT)) {
|
||||
int createClaimLimit = -1;
|
||||
if (playerData.shovelMode == ShovelTypes.BASIC && (claim.isAdminClaim() || claim.isTown() || claim.isWilderness())) {
|
||||
@ -1065,7 +1066,7 @@ private void createClaimStart(PlayerInteractEvent event, Player player, Location
|
||||
createClaimLimit = GDPermissionManager.getInstance().getInternalOptionValue(TypeToken.of(Integer.class), player, Options.CREATE_LIMIT, claim).intValue();
|
||||
}
|
||||
|
||||
if (createClaimLimit > 0 && createClaimLimit < (playerData.getInternalClaims().size() + 1)) {
|
||||
if (createClaimLimit > 0 && createClaimLimit < (playerData.getClaimTypeCount(type) + 1)) {
|
||||
GriefDefenderPlugin.sendMessage(player, GriefDefenderPlugin.getInstance().messageData.getMessage(MessageStorage.CREATE_FAILED_CLAIM_LIMIT));
|
||||
return;
|
||||
}
|
||||
@ -1093,7 +1094,6 @@ private void createClaimStart(PlayerInteractEvent event, Player player, Location
|
||||
return;
|
||||
}
|
||||
|
||||
final ClaimType type = PlayerUtil.getInstance().getClaimTypeFromShovel(playerData.shovelMode);
|
||||
if ((type == ClaimTypes.BASIC || type == ClaimTypes.TOWN) && GriefDefenderPlugin.getGlobalConfig().getConfig().economy.economyMode) {
|
||||
// Check current economy mode cost
|
||||
final Double economyBlockCost = playerData.getInternalEconomyBlockCost();
|
||||
|
@ -923,7 +923,7 @@ public ClaimResult transferOwner(UUID newOwnerID, boolean checkEconomy, boolean
|
||||
// Check limits
|
||||
final Player currentOwner = ownerData.getSubject() instanceof Player ? (Player) ownerData.getSubject() : null;
|
||||
final int createClaimLimit = GDPermissionManager.getInstance().getInternalOptionValue(TypeToken.of(Integer.class), newOwnerData.getSubject(), Options.CREATE_LIMIT, this);
|
||||
if (createClaimLimit > -1 && (newOwnerData.getInternalClaims().size() + 1) > createClaimLimit) {
|
||||
if (createClaimLimit > -1 && (newOwnerData.getClaimTypeCount(this.getType()) + 1) > createClaimLimit) {
|
||||
if (currentOwner != null) {
|
||||
GriefDefenderPlugin.sendMessage(currentOwner, MessageStorage.MESSAGE_DATA.getMessage(MessageStorage.CLAIM_TRANSFER_EXCEEDS_LIMIT));
|
||||
}
|
||||
|
@ -1323,6 +1323,7 @@ private void onPlayerHandleClaimCreateAction(InteractEvent event, BlockSnapshot
|
||||
}
|
||||
|
||||
private void createClaimStart(InteractEvent event, Player player, ItemStack itemInHand, Location<World> location, GDPlayerData playerData, GDClaim claim) {
|
||||
final ClaimType type = PlayerUtil.getInstance().getClaimTypeFromShovel(playerData.shovelMode);
|
||||
if (!player.hasPermission(GDPermissions.BYPASS_CLAIM_LIMIT)) {
|
||||
int createClaimLimit = -1;
|
||||
if (playerData.shovelMode == ShovelTypes.BASIC && (claim.isAdminClaim() || claim.isTown() || claim.isWilderness())) {
|
||||
@ -1333,7 +1334,7 @@ private void createClaimStart(InteractEvent event, Player player, ItemStack item
|
||||
createClaimLimit = GDPermissionManager.getInstance().getInternalOptionValue(TypeToken.of(Integer.class), player, Options.CREATE_LIMIT, claim).intValue();
|
||||
}
|
||||
|
||||
if (createClaimLimit > 0 && createClaimLimit < (playerData.getInternalClaims().size() + 1)) {
|
||||
if (createClaimLimit > 0 && createClaimLimit < (playerData.getClaimTypeCount(type) + 1)) {
|
||||
GriefDefenderPlugin.sendMessage(player, GriefDefenderPlugin.getInstance().messageData.getMessage(MessageStorage.CREATE_FAILED_CLAIM_LIMIT));
|
||||
return;
|
||||
}
|
||||
@ -1361,7 +1362,6 @@ private void createClaimStart(InteractEvent event, Player player, ItemStack item
|
||||
return;
|
||||
}
|
||||
|
||||
final ClaimType type = PlayerUtil.getInstance().getClaimTypeFromShovel(playerData.shovelMode);
|
||||
if ((type == ClaimTypes.BASIC || type == ClaimTypes.TOWN) && GriefDefenderPlugin.getGlobalConfig().getConfig().economy.economyMode) {
|
||||
// Check current economy mode cost
|
||||
final Double economyBlockCost = playerData.getInternalEconomyBlockCost();
|
||||
|
Loading…
Reference in New Issue
Block a user