mirror of
				https://github.com/IntellectualSites/PlotSquared.git
				synced 2025-11-04 11:13:45 +01:00 
			
		
		
		
	Merge branch '3.4.5'
This commit is contained in:
		@@ -41,7 +41,6 @@ import com.plotsquared.sponge.util.SpongeEconHandler;
 | 
			
		||||
import com.plotsquared.sponge.util.SpongeEventUtil;
 | 
			
		||||
import com.plotsquared.sponge.util.SpongeHybridUtils;
 | 
			
		||||
import com.plotsquared.sponge.util.SpongeInventoryUtil;
 | 
			
		||||
import com.plotsquared.sponge.util.SpongeMetrics;
 | 
			
		||||
import com.plotsquared.sponge.util.SpongeSchematicHandler;
 | 
			
		||||
import com.plotsquared.sponge.util.SpongeSetupUtils;
 | 
			
		||||
import com.plotsquared.sponge.util.SpongeTaskManager;
 | 
			
		||||
@@ -51,13 +50,7 @@ import com.plotsquared.sponge.util.block.SpongeLocalQueue;
 | 
			
		||||
import com.plotsquared.sponge.uuid.SpongeLowerOfflineUUIDWrapper;
 | 
			
		||||
import com.plotsquared.sponge.uuid.SpongeOnlineUUIDWrapper;
 | 
			
		||||
import com.plotsquared.sponge.uuid.SpongeUUIDHandler;
 | 
			
		||||
import java.io.File;
 | 
			
		||||
import java.nio.file.Path;
 | 
			
		||||
import java.util.ArrayList;
 | 
			
		||||
import java.util.Collection;
 | 
			
		||||
import java.util.List;
 | 
			
		||||
import java.util.UUID;
 | 
			
		||||
import java.util.stream.Collectors;
 | 
			
		||||
import net.minecrell.mcstats.SpongeStatsLite;
 | 
			
		||||
import org.slf4j.Logger;
 | 
			
		||||
import org.spongepowered.api.Game;
 | 
			
		||||
import org.spongepowered.api.Server;
 | 
			
		||||
@@ -66,6 +59,7 @@ import org.spongepowered.api.config.ConfigDir;
 | 
			
		||||
import org.spongepowered.api.entity.living.player.Player;
 | 
			
		||||
import org.spongepowered.api.event.Listener;
 | 
			
		||||
import org.spongepowered.api.event.game.state.GameAboutToStartServerEvent;
 | 
			
		||||
import org.spongepowered.api.event.game.state.GamePreInitializationEvent;
 | 
			
		||||
import org.spongepowered.api.plugin.Plugin;
 | 
			
		||||
import org.spongepowered.api.plugin.PluginContainer;
 | 
			
		||||
import org.spongepowered.api.profile.GameProfileManager;
 | 
			
		||||
@@ -74,8 +68,16 @@ import org.spongepowered.api.world.gen.GenerationPopulator;
 | 
			
		||||
import org.spongepowered.api.world.gen.WorldGenerator;
 | 
			
		||||
import org.spongepowered.api.world.gen.WorldGeneratorModifier;
 | 
			
		||||
 | 
			
		||||
import java.io.File;
 | 
			
		||||
import java.nio.file.Path;
 | 
			
		||||
import java.util.ArrayList;
 | 
			
		||||
import java.util.Collection;
 | 
			
		||||
import java.util.List;
 | 
			
		||||
import java.util.UUID;
 | 
			
		||||
import java.util.stream.Collectors;
 | 
			
		||||
 | 
			
		||||
@Plugin(id = "plotsquared", name = "PlotSquared", description = "Easy, yet powerful Plot World generation and management.",
 | 
			
		||||
        url = "https://github.com/IntellectualSites/PlotSquared", version = "3.3.3")
 | 
			
		||||
        url = "https://github.com/IntellectualSites/PlotSquared", version = "3.5.0-SNAPSHOT")
 | 
			
		||||
public class SpongeMain implements IPlotMain {
 | 
			
		||||
 | 
			
		||||
    public static SpongeMain THIS;
 | 
			
		||||
@@ -89,6 +91,9 @@ public class SpongeMain implements IPlotMain {
 | 
			
		||||
    @Inject
 | 
			
		||||
    private Game game;
 | 
			
		||||
 | 
			
		||||
    @Inject
 | 
			
		||||
    public SpongeStatsLite stats;
 | 
			
		||||
 | 
			
		||||
    private Server server;
 | 
			
		||||
 | 
			
		||||
    @Inject
 | 
			
		||||
@@ -97,8 +102,7 @@ public class SpongeMain implements IPlotMain {
 | 
			
		||||
 | 
			
		||||
    private GameProfileManager resolver;
 | 
			
		||||
 | 
			
		||||
    //    @Override
 | 
			
		||||
    public Logger getLogger() {
 | 
			
		||||
    private Logger getLogger() {
 | 
			
		||||
        return this.logger;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
@@ -121,6 +125,12 @@ public class SpongeMain implements IPlotMain {
 | 
			
		||||
        return THIS;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    @Listener
 | 
			
		||||
    public void onPreInitialize(GamePreInitializationEvent event) {
 | 
			
		||||
        getLogger().info("The metrics section in PlotSquared is ignored in favor of the actual metrics reporter configurations.");
 | 
			
		||||
        this.stats.start();
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    @Listener
 | 
			
		||||
    public void onServerAboutToStart(GameAboutToStartServerEvent event) {
 | 
			
		||||
        THIS = this;
 | 
			
		||||
@@ -241,14 +251,11 @@ public class SpongeMain implements IPlotMain {
 | 
			
		||||
 | 
			
		||||
    @Override
 | 
			
		||||
    public void registerPlotPlusEvents() {
 | 
			
		||||
        // TODO Auto-generated method stub
 | 
			
		||||
        PS.log("registerPlotPlusEvents is not implemented!");
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    @Override
 | 
			
		||||
    public void registerForceFieldEvents() {
 | 
			
		||||
        // TODO Auto-generated method stub
 | 
			
		||||
        PS.log("registerForceFieldEvents is not implemented!");
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    @Override
 | 
			
		||||
@@ -292,16 +299,8 @@ public class SpongeMain implements IPlotMain {
 | 
			
		||||
        Sponge.getEventManager().registerListeners(this, new WorldEvents());
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    @Override
 | 
			
		||||
    public String getServerName() {
 | 
			
		||||
        throw new UnsupportedOperationException("NOT IMPLEMENTED YET");
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    @Override
 | 
			
		||||
    public void startMetrics() {
 | 
			
		||||
        SpongeMetrics metrics = new SpongeMetrics(this.game, this.plugin);
 | 
			
		||||
        metrics.start();
 | 
			
		||||
        PS.log(C.PREFIX.s() + "&6Metrics enabled.");
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    @Override
 | 
			
		||||
 
 | 
			
		||||
@@ -5,7 +5,6 @@ import com.intellectualcrafters.plot.generator.AugmentedUtils;
 | 
			
		||||
import com.intellectualcrafters.plot.object.PlotBlock;
 | 
			
		||||
import com.intellectualcrafters.plot.util.block.DelegateLocalBlockQueue;
 | 
			
		||||
import com.plotsquared.sponge.util.SpongeUtil;
 | 
			
		||||
import java.util.List;
 | 
			
		||||
import org.spongepowered.api.block.BlockState;
 | 
			
		||||
import org.spongepowered.api.world.World;
 | 
			
		||||
import org.spongepowered.api.world.extent.ImmutableBiomeArea;
 | 
			
		||||
@@ -13,6 +12,8 @@ import org.spongepowered.api.world.extent.MutableBlockVolume;
 | 
			
		||||
import org.spongepowered.api.world.gen.GenerationPopulator;
 | 
			
		||||
import org.spongepowered.api.world.gen.WorldGenerator;
 | 
			
		||||
 | 
			
		||||
import java.util.List;
 | 
			
		||||
 | 
			
		||||
public class SpongeAugmentedGenerator implements GenerationPopulator {
 | 
			
		||||
    
 | 
			
		||||
    private static SpongeAugmentedGenerator generator;
 | 
			
		||||
@@ -51,7 +52,7 @@ public class SpongeAugmentedGenerator implements GenerationPopulator {
 | 
			
		||||
            @Override
 | 
			
		||||
            public PlotBlock getBlock(int x, int y, int z) {
 | 
			
		||||
                BlockState block = terrain.getBlock(bx + x, y, bz + z);
 | 
			
		||||
                return block == null ? PlotBlock.get(0, 0) : SpongeUtil.getPlotBlock(block);
 | 
			
		||||
                return SpongeUtil.getPlotBlock(block);
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
            @Override
 | 
			
		||||
 
 | 
			
		||||
@@ -0,0 +1,97 @@
 | 
			
		||||
package com.plotsquared.sponge.listener;
 | 
			
		||||
 | 
			
		||||
import com.flowpowered.math.vector.Vector3d;
 | 
			
		||||
import com.intellectualcrafters.plot.flag.Flags;
 | 
			
		||||
import com.intellectualcrafters.plot.object.Location;
 | 
			
		||||
import com.intellectualcrafters.plot.object.Plot;
 | 
			
		||||
import com.intellectualcrafters.plot.object.PlotPlayer;
 | 
			
		||||
import com.plotsquared.sponge.object.SpongePlayer;
 | 
			
		||||
import com.plotsquared.sponge.util.SpongeUtil;
 | 
			
		||||
import org.spongepowered.api.entity.Entity;
 | 
			
		||||
import org.spongepowered.api.entity.EntityTypes;
 | 
			
		||||
import org.spongepowered.api.entity.living.player.Player;
 | 
			
		||||
 | 
			
		||||
import java.util.HashSet;
 | 
			
		||||
import java.util.Set;
 | 
			
		||||
import java.util.UUID;
 | 
			
		||||
 | 
			
		||||
public class ForceFieldListener {
 | 
			
		||||
 | 
			
		||||
    private static Set<PlotPlayer> getNearbyPlayers(Player player, Plot plot) {
 | 
			
		||||
        Set<PlotPlayer> players = new HashSet<>();
 | 
			
		||||
        for (Entity nearbyEntity : player.getNearbyEntities(entity -> entity.getType().equals(EntityTypes.PLAYER))) {
 | 
			
		||||
            Player nearbyPlayer = (Player) nearbyEntity;
 | 
			
		||||
            PlotPlayer plotPlayer;
 | 
			
		||||
            if ((plotPlayer = SpongeUtil.getPlayer(nearbyPlayer)) == null || !plot.equals(plotPlayer.getCurrentPlot())) {
 | 
			
		||||
                continue;
 | 
			
		||||
            }
 | 
			
		||||
            if (!plot.isAdded(plotPlayer.getUUID())) {
 | 
			
		||||
                players.add(plotPlayer);
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
        }
 | 
			
		||||
        return players;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    private static PlotPlayer hasNearbyPermitted(Player player, Plot plot) {
 | 
			
		||||
        for (Entity nearbyEntity : player.getNearbyEntities(entity -> entity.getType().equals(EntityTypes.PLAYER))) {
 | 
			
		||||
            Player nearbyPlayer = (Player) nearbyEntity;
 | 
			
		||||
            PlotPlayer plotPlayer;
 | 
			
		||||
            if ((plotPlayer = SpongeUtil.getPlayer(nearbyPlayer)) == null || !plot.equals(plotPlayer.getCurrentPlot())) {
 | 
			
		||||
                continue;
 | 
			
		||||
            }
 | 
			
		||||
            if (plot.isAdded(plotPlayer.getUUID())) {
 | 
			
		||||
                return plotPlayer;
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
        return null;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    private static Vector3d calculateVelocity(PlotPlayer player, PlotPlayer e) {
 | 
			
		||||
        Location playerLocation = player.getLocationFull();
 | 
			
		||||
        Location oPlayerLocation = e.getLocation();
 | 
			
		||||
        double playerX = playerLocation.getX();
 | 
			
		||||
        double playerY = playerLocation.getY();
 | 
			
		||||
        double playerZ = playerLocation.getZ();
 | 
			
		||||
        double oPlayerX = oPlayerLocation.getX();
 | 
			
		||||
        double oPlayerY = oPlayerLocation.getY();
 | 
			
		||||
        double oPlayerZ = oPlayerLocation.getZ();
 | 
			
		||||
        double x = 0d;
 | 
			
		||||
        if (playerX < oPlayerX) {
 | 
			
		||||
            x = 1.0d;
 | 
			
		||||
        } else if (playerX > oPlayerX) {
 | 
			
		||||
            x = -1.0d;
 | 
			
		||||
        }
 | 
			
		||||
        double y = 0d;
 | 
			
		||||
        if (playerY < oPlayerY) {
 | 
			
		||||
            y = 0.5d;
 | 
			
		||||
        } else if (playerY > oPlayerY) {
 | 
			
		||||
            y = -0.5d;
 | 
			
		||||
        }
 | 
			
		||||
        double z = 0d;
 | 
			
		||||
        if (playerZ < oPlayerZ) {
 | 
			
		||||
            z = 1.0d;
 | 
			
		||||
        } else if (playerZ > oPlayerZ) {
 | 
			
		||||
            z = -1.0d;
 | 
			
		||||
        }
 | 
			
		||||
        return new Vector3d(x, y, z);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public static void handleForcefield(Player player, PlotPlayer plotPlayer, Plot plot) {
 | 
			
		||||
        if (Flags.FORCEFIELD.isTrue(plot)) {
 | 
			
		||||
            UUID uuid = plotPlayer.getUUID();
 | 
			
		||||
            if (plot.isAdded(uuid)) {
 | 
			
		||||
                Set<PlotPlayer> players = getNearbyPlayers(player, plot);
 | 
			
		||||
                for (PlotPlayer oPlayer : players) {
 | 
			
		||||
                    ((SpongePlayer) oPlayer).player.setVelocity(calculateVelocity(plotPlayer, oPlayer));
 | 
			
		||||
                }
 | 
			
		||||
            } else {
 | 
			
		||||
                PlotPlayer oPlayer = hasNearbyPermitted(player, plot);
 | 
			
		||||
                if (oPlayer == null) {
 | 
			
		||||
                    return;
 | 
			
		||||
                }
 | 
			
		||||
                player.setVelocity(calculateVelocity(oPlayer, plotPlayer));
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
@@ -662,6 +662,7 @@ public class MainListener {
 | 
			
		||||
                    return;
 | 
			
		||||
                }
 | 
			
		||||
            } else if (now.equals(lastPlot)) {
 | 
			
		||||
                ForceFieldListener.handleForcefield(player, pp, now);
 | 
			
		||||
                return;
 | 
			
		||||
            } else if (!PlotListener.plotEntry(pp, now)) {
 | 
			
		||||
                MainUtil.sendMessage(pp, C.NO_PERMISSION_EVENT, C.PERMISSION_ADMIN_ENTRY_DENIED);
 | 
			
		||||
@@ -711,6 +712,7 @@ public class MainListener {
 | 
			
		||||
                    return;
 | 
			
		||||
                }
 | 
			
		||||
            } else if (now.equals(lastPlot)) {
 | 
			
		||||
                ForceFieldListener.handleForcefield(player, pp, now);
 | 
			
		||||
                return;
 | 
			
		||||
            } else if (!PlotListener.plotEntry(pp, now)) {
 | 
			
		||||
                MainUtil.sendMessage(pp, C.NO_PERMISSION_EVENT, C.PERMISSION_ADMIN_ENTRY_DENIED);
 | 
			
		||||
 
 | 
			
		||||
@@ -1,6 +1,7 @@
 | 
			
		||||
package com.plotsquared.sponge.object;
 | 
			
		||||
 | 
			
		||||
import com.flowpowered.math.vector.Vector3d;
 | 
			
		||||
import com.intellectualcrafters.plot.PS;
 | 
			
		||||
import com.intellectualcrafters.plot.commands.RequiredType;
 | 
			
		||||
import com.intellectualcrafters.plot.object.Location;
 | 
			
		||||
import com.intellectualcrafters.plot.object.PlotPlayer;
 | 
			
		||||
@@ -111,8 +112,12 @@ public class SpongePlayer extends PlotPlayer {
 | 
			
		||||
    
 | 
			
		||||
    @Override
 | 
			
		||||
    public void setCompassTarget(Location location) {
 | 
			
		||||
        TargetedLocationData target = this.player.getOrCreate(TargetedLocationData.class).get();
 | 
			
		||||
        target.set(Keys.TARGETED_LOCATION, SpongeUtil.getLocation(location).getPosition());
 | 
			
		||||
        Optional<TargetedLocationData> target = this.player.getOrCreate(TargetedLocationData.class);
 | 
			
		||||
        if (target.isPresent()) {
 | 
			
		||||
            target.get().set(Keys.TARGETED_LOCATION, SpongeUtil.getLocation(location).getPosition());
 | 
			
		||||
        } else {
 | 
			
		||||
            PS.debug("Failed to set compass target.");
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    @Override
 | 
			
		||||
 
 | 
			
		||||
@@ -26,7 +26,7 @@ import java.util.Objects;
 | 
			
		||||
import java.util.Optional;
 | 
			
		||||
 | 
			
		||||
public class SpongeSetupUtils extends SetupUtils {
 | 
			
		||||
    
 | 
			
		||||
 | 
			
		||||
    @Override
 | 
			
		||||
    public void updateGenerators() {
 | 
			
		||||
        if (!SetupUtils.generators.isEmpty()) {
 | 
			
		||||
@@ -48,7 +48,7 @@ public class SpongeSetupUtils extends SetupUtils {
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
    
 | 
			
		||||
 | 
			
		||||
    @Override
 | 
			
		||||
    public String getGenerator(PlotArea plotArea) {
 | 
			
		||||
        if (SetupUtils.generators.isEmpty()) {
 | 
			
		||||
@@ -61,7 +61,7 @@ public class SpongeSetupUtils extends SetupUtils {
 | 
			
		||||
        WorldGenerator generator = world.getWorldGenerator();
 | 
			
		||||
        throw new UnsupportedOperationException("NOT IMPLEMENTED YET");
 | 
			
		||||
    }
 | 
			
		||||
    
 | 
			
		||||
 | 
			
		||||
    @Override
 | 
			
		||||
    public String setupWorld(SetupObject object) {
 | 
			
		||||
        SetupUtils.manager.updateGenerators();
 | 
			
		||||
@@ -146,7 +146,7 @@ public class SpongeSetupUtils extends SetupUtils {
 | 
			
		||||
            .loadsOnStartup(true)
 | 
			
		||||
            .keepsSpawnLoaded(true)
 | 
			
		||||
            .dimension(DimensionTypes.OVERWORLD)
 | 
			
		||||
            .generator(GeneratorTypes.OVERWORLD)
 | 
			
		||||
            .generator(GeneratorTypes.FLAT)
 | 
			
		||||
            .usesMapFeatures(false)
 | 
			
		||||
            .enabled(true)
 | 
			
		||||
            .generatorModifiers(wgm)
 | 
			
		||||
 
 | 
			
		||||
@@ -17,16 +17,6 @@ import com.intellectualcrafters.plot.util.UUIDHandler;
 | 
			
		||||
import com.intellectualcrafters.plot.util.WorldUtil;
 | 
			
		||||
import com.plotsquared.sponge.SpongeMain;
 | 
			
		||||
import com.plotsquared.sponge.object.SpongePlayer;
 | 
			
		||||
import java.io.IOException;
 | 
			
		||||
import java.lang.reflect.Field;
 | 
			
		||||
import java.lang.reflect.InvocationTargetException;
 | 
			
		||||
import java.lang.reflect.Method;
 | 
			
		||||
import java.util.ArrayList;
 | 
			
		||||
import java.util.Collection;
 | 
			
		||||
import java.util.HashMap;
 | 
			
		||||
import java.util.List;
 | 
			
		||||
import java.util.Locale;
 | 
			
		||||
import java.util.Optional;
 | 
			
		||||
import net.minecraft.block.Block;
 | 
			
		||||
import net.minecraft.world.biome.Biome;
 | 
			
		||||
import org.spongepowered.api.Sponge;
 | 
			
		||||
@@ -51,6 +41,17 @@ import org.spongepowered.api.world.biome.BiomeType;
 | 
			
		||||
import org.spongepowered.api.world.biome.BiomeTypes;
 | 
			
		||||
import org.spongepowered.api.world.extent.Extent;
 | 
			
		||||
 | 
			
		||||
import java.io.IOException;
 | 
			
		||||
import java.lang.reflect.Field;
 | 
			
		||||
import java.lang.reflect.InvocationTargetException;
 | 
			
		||||
import java.lang.reflect.Method;
 | 
			
		||||
import java.util.ArrayList;
 | 
			
		||||
import java.util.Collection;
 | 
			
		||||
import java.util.HashMap;
 | 
			
		||||
import java.util.List;
 | 
			
		||||
import java.util.Locale;
 | 
			
		||||
import java.util.Optional;
 | 
			
		||||
 | 
			
		||||
public class SpongeUtil extends WorldUtil {
 | 
			
		||||
 | 
			
		||||
    public static Cause CAUSE = Cause.of(NamedCause.source(Sponge.getPluginManager().fromInstance(SpongeMain.THIS).get()));
 | 
			
		||||
@@ -303,7 +304,8 @@ public class SpongeUtil extends WorldUtil {
 | 
			
		||||
            StringComparison<PlotBlock> outer = new StringComparison<PlotBlock>();
 | 
			
		||||
            return outer.new ComparisonResult(match, block);
 | 
			
		||||
 | 
			
		||||
        } catch (NumberFormatException ignored) {}
 | 
			
		||||
        } catch (NumberFormatException ignored) {
 | 
			
		||||
        }
 | 
			
		||||
        return null;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -4,6 +4,7 @@ import com.intellectualcrafters.plot.object.ChunkWrapper;
 | 
			
		||||
import com.intellectualcrafters.plot.object.Location;
 | 
			
		||||
import com.intellectualcrafters.plot.object.PlotBlock;
 | 
			
		||||
import com.intellectualcrafters.plot.util.block.ScopedLocalBlockQueue;
 | 
			
		||||
import com.plotsquared.sponge.SpongeMain;
 | 
			
		||||
import com.plotsquared.sponge.util.SpongeUtil;
 | 
			
		||||
import org.spongepowered.api.world.biome.BiomeType;
 | 
			
		||||
import org.spongepowered.api.world.extent.MutableBiomeArea;
 | 
			
		||||
 
 | 
			
		||||
@@ -7,9 +7,6 @@ import com.intellectualcrafters.plot.util.StringMan;
 | 
			
		||||
import com.intellectualcrafters.plot.util.TaskManager;
 | 
			
		||||
import com.intellectualcrafters.plot.util.block.BasicLocalBlockQueue;
 | 
			
		||||
import com.plotsquared.sponge.util.SpongeUtil;
 | 
			
		||||
import java.lang.reflect.Field;
 | 
			
		||||
import java.util.Arrays;
 | 
			
		||||
import java.util.HashSet;
 | 
			
		||||
import net.minecraft.block.Block;
 | 
			
		||||
import net.minecraft.block.state.IBlockState;
 | 
			
		||||
import net.minecraft.entity.Entity;
 | 
			
		||||
@@ -33,6 +30,10 @@ import org.spongepowered.api.block.BlockTypes;
 | 
			
		||||
import org.spongepowered.api.world.World;
 | 
			
		||||
import org.spongepowered.api.world.biome.BiomeType;
 | 
			
		||||
 | 
			
		||||
import java.lang.reflect.Field;
 | 
			
		||||
import java.util.Arrays;
 | 
			
		||||
import java.util.HashSet;
 | 
			
		||||
 | 
			
		||||
public class SpongeLocalQueue extends BasicLocalBlockQueue<char[]> {
 | 
			
		||||
 | 
			
		||||
    public SpongeLocalQueue(String world) {
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user