extends ILogger {
return getInjector().getInstance(ChunkManager.class);
}
+ /**
+ * Get the {@link PermissionHandler} implementation for the platform
+ *
+ * @return Permission handler
+ */
+ @Nonnull default PermissionHandler getPermissionHandler() {
+ return getInjector().getInstance(PermissionHandler.class);
+ }
+
}
diff --git a/Core/src/main/java/com/plotsquared/core/permissions/ConsolePermissionProfile.java b/Core/src/main/java/com/plotsquared/core/permissions/ConsolePermissionProfile.java
new file mode 100644
index 000000000..09857628c
--- /dev/null
+++ b/Core/src/main/java/com/plotsquared/core/permissions/ConsolePermissionProfile.java
@@ -0,0 +1,37 @@
+/*
+ * _____ _ _ _____ _
+ * | __ \| | | | / ____| | |
+ * | |__) | | ___ | |_| (___ __ _ _ _ __ _ _ __ ___ __| |
+ * | ___/| |/ _ \| __|\___ \ / _` | | | |/ _` | '__/ _ \/ _` |
+ * | | | | (_) | |_ ____) | (_| | |_| | (_| | | | __/ (_| |
+ * |_| |_|\___/ \__|_____/ \__, |\__,_|\__,_|_| \___|\__,_|
+ * | |
+ * |_|
+ * PlotSquared plot management system for Minecraft
+ * Copyright (C) 2020 IntellectualSites
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see implements CommandCaller, OfflinePlotPlayer
private final PlotAreaManager plotAreaManager;
private final EventDispatcher eventDispatcher;
private final EconHandler econHandler;
+ private final PermissionProfile permissionProfile;
- public PlotPlayer(@Nonnull final PlotAreaManager plotAreaManager, @Nonnull final EventDispatcher eventDispatcher, @Nullable final EconHandler econHandler) {
+ public PlotPlayer(@Nonnull final PlotAreaManager plotAreaManager, @Nonnull final EventDispatcher eventDispatcher, @Nullable final EconHandler econHandler,
+ @Nonnull final PermissionHandler permissionHandler) {
this.plotAreaManager = plotAreaManager;
this.eventDispatcher = eventDispatcher;
this.econHandler = econHandler;
+ this.permissionProfile = permissionHandler.getPermissionProfile(this).orElse(
+ NullPermissionProfile.INSTANCE);
}
public static implements CommandCaller, OfflinePlotPlayer
return PlotSquared.platform().wrapPlayer(player);
}
+ @Override public final boolean hasPermission(@Nonnull final String permission) {
+ return this.permissionProfile.hasPermission(permission);
+ }
+
public abstract Actor toActor();
public abstract P getPlatformPlayer();
diff --git a/Core/src/main/java/com/plotsquared/core/util/ChunkUtil.java b/Core/src/main/java/com/plotsquared/core/util/ChunkUtil.java
index 3e89c630a..6c1a1415d 100644
--- a/Core/src/main/java/com/plotsquared/core/util/ChunkUtil.java
+++ b/Core/src/main/java/com/plotsquared/core/util/ChunkUtil.java
@@ -1,3 +1,28 @@
+/*
+ * _____ _ _ _____ _
+ * | __ \| | | | / ____| | |
+ * | |__) | | ___ | |_| (___ __ _ _ _ __ _ _ __ ___ __| |
+ * | ___/| |/ _ \| __|\___ \ / _` | | | |/ _` | '__/ _ \/ _` |
+ * | | | | (_) | |_ ____) | (_| | |_| | (_| | | | __/ (_| |
+ * |_| |_|\___/ \__|_____/ \__, |\__,_|\__,_|_| \___|\__,_|
+ * | |
+ * |_|
+ * PlotSquared plot management system for Minecraft
+ * Copyright (C) 2020 IntellectualSites
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see
+ * - Used for efficient world generation
+ */
+ public static short[][] x_loc;
+ public static short[][] y_loc;
+ public static short[][] z_loc;
+ public static short[][][] CACHE_I = null;
+ public static short[][][] CACHE_J = null;
+
+ /**
+ * This cache is used for world generation and just saves a bit of calculation time when checking if something is in the plot area.
+ */
+ public static void initCache() {
+ if (x_loc == null) {
+ x_loc = new short[16][4096];
+ y_loc = new short[16][4096];
+ z_loc = new short[16][4096];
+ for (int i = 0; i < 16; i++) {
+ int i4 = i << 4;
+ for (int j = 0; j < 4096; j++) {
+ int y = i4 + (j >> 8);
+ int a = j - ((y & 0xF) << 8);
+ int z1 = a >> 4;
+ int x1 = a - (z1 << 4);
+ x_loc[i][j] = (short) x1;
+ y_loc[i][j] = (short) y;
+ z_loc[i][j] = (short) z1;
+ }
+ }
+ }
+ if (CACHE_I == null) {
+ CACHE_I = new short[256][16][16];
+ CACHE_J = new short[256][16][16];
+ for (int x = 0; x < 16; x++) {
+ for (int z = 0; z < 16; z++) {
+ for (int y = 0; y < 256; y++) {
+ short i = (short) (y >> 4);
+ short j = (short) ((y & 0xF) << 8 | z << 4 | x);
+ CACHE_I[y][x][z] = i;
+ CACHE_J[y][x][z] = j;
+ }
+ }
+ }
+ }
+ }
+
/**
* Send a message to the player.
*