This commit is contained in:
parent
f13d855955
commit
99b2235621
2 changed files with 53 additions and 0 deletions
|
@ -0,0 +1,52 @@
|
|||
package net.pietru.cookie_utils.mixins;
|
||||
|
||||
import com.llamalad7.mixinextras.sugar.Local;
|
||||
import finalforeach.cosmicreach.accounts.Account;
|
||||
import finalforeach.cosmicreach.blocks.BlockPosition;
|
||||
import finalforeach.cosmicreach.blocks.BlockState;
|
||||
import finalforeach.cosmicreach.blocks.BlockStateMissing;
|
||||
import finalforeach.cosmicreach.networking.NetworkIdentity;
|
||||
import finalforeach.cosmicreach.networking.NetworkSide;
|
||||
import finalforeach.cosmicreach.networking.packets.MessagePacket;
|
||||
import finalforeach.cosmicreach.networking.packets.blocks.BlockReplacePacket;
|
||||
import finalforeach.cosmicreach.networking.packets.blocks.PlaceBlockPacket;
|
||||
import finalforeach.cosmicreach.networking.server.ServerSingletons;
|
||||
import finalforeach.cosmicreach.world.Zone;
|
||||
import io.netty.channel.ChannelHandlerContext;
|
||||
import net.pietru.cookie_utils.permissions.Permissions;
|
||||
import org.spongepowered.asm.mixin.Mixin;
|
||||
import org.spongepowered.asm.mixin.Shadow;
|
||||
import org.spongepowered.asm.mixin.injection.At;
|
||||
import org.spongepowered.asm.mixin.injection.Inject;
|
||||
import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
|
||||
|
||||
import static net.pietru.cookie_utils.api.Region.can_edit_block;
|
||||
import static net.pietru.cookie_utils.api.Region.is_not_reloading;
|
||||
|
||||
@Mixin(BlockReplacePacket.class)
|
||||
public class BlockReplaceMixin {
|
||||
@Shadow
|
||||
Zone zone;
|
||||
@Shadow
|
||||
BlockPosition blockPos;
|
||||
@Shadow
|
||||
BlockState targetBlockState;
|
||||
|
||||
@Inject(method = "handle", at = @At("HEAD"), cancellable = true)
|
||||
private void event_block_place(CallbackInfo ci, @Local NetworkIdentity identity, @Local ChannelHandlerContext ctx){
|
||||
if (identity.getSide() != NetworkSide.CLIENT) {
|
||||
if (targetBlockState instanceof BlockStateMissing)
|
||||
ci.cancel();
|
||||
}
|
||||
if (identity.getSide() != NetworkSide.CLIENT && ci.isCancelled()) {
|
||||
Account account = ServerSingletons.getAccount(identity);
|
||||
if (!Permissions.has_user_special_perm(account.getUniqueId()) && !can_edit_block(blockPos,"place",account.getUniqueId())) {
|
||||
ci.cancel();
|
||||
|
||||
MessagePacket packet = new MessagePacket("[Server] " + (is_not_reloading ? "Sorry, but this area is under protection." : "Sorry but you can't do this action right now. [Config Reload In Progress]"));
|
||||
packet.playerUniqueId=account.getUniqueId();
|
||||
packet.setupAndSend(ctx);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
|
@ -7,6 +7,7 @@
|
|||
"BlockActionExplodeMixin",
|
||||
"BlockBreakMixin",
|
||||
"BlockPlaceMixin",
|
||||
"BlockReplaceMixin",
|
||||
"InteractBlockMixin",
|
||||
"LoginPacketMixin",
|
||||
"MessagePacketMixin",
|
||||
|
|
Loading…
Reference in a new issue