protect against item useItem block edit
Some checks failed
/ Auto-Build-App (push) Has been cancelled
Some checks failed
/ Auto-Build-App (push) Has been cancelled
This commit is contained in:
parent
8b377e21cb
commit
8d4cbbea70
2 changed files with 43 additions and 2 deletions
|
@ -9,9 +9,9 @@ group=net.pietru
|
|||
id=cookie_utils
|
||||
|
||||
# Dependency Versions
|
||||
cosmic_reach_version=0.3.15
|
||||
cosmic_reach_version=0.3.16
|
||||
# If unspecified, will use the version above
|
||||
cosmic_reach_server_version=0.3.15
|
||||
cosmic_reach_server_version=0.3.16
|
||||
cosmic_quilt_version=2.3.1
|
||||
#2.2.0
|
||||
|
||||
|
|
|
@ -0,0 +1,41 @@
|
|||
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.entities.player.Player;
|
||||
import finalforeach.cosmicreach.items.ItemSlot;
|
||||
import finalforeach.cosmicreach.items.ItemThing;
|
||||
import finalforeach.cosmicreach.networking.NetworkIdentity;
|
||||
import finalforeach.cosmicreach.networking.NetworkSide;
|
||||
import finalforeach.cosmicreach.networking.packets.MessagePacket;
|
||||
import finalforeach.cosmicreach.networking.packets.blocks.InteractBlockPacket;
|
||||
import finalforeach.cosmicreach.networking.server.ServerSingletons;
|
||||
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(ItemThing.class)
|
||||
public class ItemThingMixin {
|
||||
|
||||
@Inject(method = "handle", at = @At("HEAD"), cancellable = true)
|
||||
private void event_item_useItem(CallbackInfo ci, @Local ItemSlot itemSlot, @Local Player player, @Local BlockPosition targetBlockPos){
|
||||
Account account = player.getAccount();
|
||||
if (targetBlockPos!=null) {
|
||||
if (!Permissions.has_user_special_perm(account.getUniqueId()) && !can_edit_block(targetBlockPos, "interact", 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.setupAndSend(ServerSingletons.getConnection(player));
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
Loading…
Reference in a new issue