Added /slimechunk command
This commit is contained in:
@ -27,7 +27,7 @@ As a challenge I'm trying to make it as user-friendly as possible. (It ain't the
|
|||||||
|
|
||||||
### Commands
|
### Commands
|
||||||
|
|
||||||
- [ ] /slimechunk (/sc) | See if you're currently in a slimechunk
|
- [x] /slimechunk (/sc) | See if you're currently in a slimechunk
|
||||||
|
|
||||||
### Misc
|
### Misc
|
||||||
- [x] Updated icon
|
- [x] Updated icon
|
||||||
|
@ -6,6 +6,7 @@ import net.fabricmc.fabric.api.command.v2.CommandRegistrationCallback;
|
|||||||
import org.slf4j.Logger;
|
import org.slf4j.Logger;
|
||||||
import org.slf4j.LoggerFactory;
|
import org.slf4j.LoggerFactory;
|
||||||
import wtf.hak.survivalfabric.commands.ReloadConfigCommand;
|
import wtf.hak.survivalfabric.commands.ReloadConfigCommand;
|
||||||
|
import wtf.hak.survivalfabric.commands.SlimeChunkCommand;
|
||||||
import wtf.hak.survivalfabric.commands.SpectatorCommand;
|
import wtf.hak.survivalfabric.commands.SpectatorCommand;
|
||||||
import wtf.hak.survivalfabric.sharedenderchest.SharedEnderChest;
|
import wtf.hak.survivalfabric.sharedenderchest.SharedEnderChest;
|
||||||
|
|
||||||
@ -21,6 +22,7 @@ public class SurvivalFabric implements ModInitializer {
|
|||||||
public void onInitialize() {
|
public void onInitialize() {
|
||||||
CommandRegistrationCallback.EVENT.register((dispatcher, registryAccess, environment) -> SpectatorCommand.register(dispatcher, new String[] { "spectator", "s", "S", "camera", "c", "C", }));
|
CommandRegistrationCallback.EVENT.register((dispatcher, registryAccess, environment) -> SpectatorCommand.register(dispatcher, new String[] { "spectator", "s", "S", "camera", "c", "C", }));
|
||||||
CommandRegistrationCallback.EVENT.register((dispatcher, registryAccess, environment) -> ReloadConfigCommand.register(dispatcher, new String[] { "reloadsurvivalconfig" }));
|
CommandRegistrationCallback.EVENT.register((dispatcher, registryAccess, environment) -> ReloadConfigCommand.register(dispatcher, new String[] { "reloadsurvivalconfig" }));
|
||||||
|
CommandRegistrationCallback.EVENT.register((dispatcher, registryAccess, environment) -> SlimeChunkCommand.register(dispatcher, new String[] { "slimechunk", "sc" }));
|
||||||
|
|
||||||
if(getConfig().sharedEnderChestEnabled)
|
if(getConfig().sharedEnderChestEnabled)
|
||||||
new SharedEnderChest().onInitialize();
|
new SharedEnderChest().onInitialize();
|
||||||
|
@ -0,0 +1,40 @@
|
|||||||
|
package wtf.hak.survivalfabric.commands;
|
||||||
|
|
||||||
|
import com.mojang.brigadier.CommandDispatcher;
|
||||||
|
import com.mojang.brigadier.context.CommandContext;
|
||||||
|
import net.minecraft.server.command.CommandManager;
|
||||||
|
import net.minecraft.server.command.ServerCommandSource;
|
||||||
|
import net.minecraft.server.network.ServerPlayerEntity;
|
||||||
|
import net.minecraft.text.Text;
|
||||||
|
import net.minecraft.util.math.random.CheckedRandom;
|
||||||
|
import net.minecraft.util.math.random.ChunkRandom;
|
||||||
|
import net.minecraft.util.math.random.Random;
|
||||||
|
import net.minecraft.world.chunk.Chunk;
|
||||||
|
import wtf.hak.survivalfabric.config.ConfigManager;
|
||||||
|
|
||||||
|
import static wtf.hak.survivalfabric.config.ConfigManager.getConfig;
|
||||||
|
|
||||||
|
public class SlimeChunkCommand {
|
||||||
|
|
||||||
|
public static void register(CommandDispatcher<ServerCommandSource> dispatcher, String... aliases) {
|
||||||
|
for (String str : aliases)
|
||||||
|
dispatcher.register(CommandManager.literal(str)
|
||||||
|
.executes(SlimeChunkCommand::execute));
|
||||||
|
}
|
||||||
|
|
||||||
|
private static int execute(CommandContext<ServerCommandSource> context) {
|
||||||
|
ServerCommandSource source = context.getSource();
|
||||||
|
if (source.getEntity() == null) {
|
||||||
|
source.sendMessage(Text.literal("Console cannot go into spectator mode!"));
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
ServerPlayerEntity p = (ServerPlayerEntity) source.getEntity();
|
||||||
|
Chunk chunk = p.getServerWorld().getChunk(p.getBlockPos());
|
||||||
|
Random slimeRandom = ChunkRandom.getSlimeRandom(chunk.getPos().x, chunk.getPos().z, p.getServerWorld().getSeed(), 987234911L);
|
||||||
|
if(slimeRandom.nextInt(10) == 0) {
|
||||||
|
p.sendMessage(Text.literal(getConfig().inSlimeChunkMessage));
|
||||||
|
} else
|
||||||
|
p.sendMessage(Text.literal(getConfig().notInSlimeChunkMessage));
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
}
|
@ -32,6 +32,9 @@ public class Config {
|
|||||||
public boolean sharedEnderChestLimitedAccess = true;
|
public boolean sharedEnderChestLimitedAccess = true;
|
||||||
public List<String> sharedEnderChestNames = Lists.newArrayList("AlwaysHAK", "LunaticFox");
|
public List<String> sharedEnderChestNames = Lists.newArrayList("AlwaysHAK", "LunaticFox");
|
||||||
|
|
||||||
|
public String inSlimeChunkMessage = "§aYou're currently in a slime chunk";
|
||||||
|
public String notInSlimeChunkMessage = "§cYou're currently not in a slime chunk";
|
||||||
|
|
||||||
public ScreenHandlerType<GenericContainerScreenHandler> screenHandlerType() {
|
public ScreenHandlerType<GenericContainerScreenHandler> screenHandlerType() {
|
||||||
return switch (sharedEnderChestRows) {
|
return switch (sharedEnderChestRows) {
|
||||||
case 1 -> ScreenHandlerType.GENERIC_9X1;
|
case 1 -> ScreenHandlerType.GENERIC_9X1;
|
||||||
|
@ -28,6 +28,7 @@ import net.minecraft.util.collection.DefaultedList;
|
|||||||
import net.minecraft.util.math.BlockPos;
|
import net.minecraft.util.math.BlockPos;
|
||||||
import net.minecraft.world.World;
|
import net.minecraft.world.World;
|
||||||
|
|
||||||
|
import static wtf.hak.survivalfabric.SurvivalFabric.LOGGER;
|
||||||
import static wtf.hak.survivalfabric.config.ConfigManager.getConfig;
|
import static wtf.hak.survivalfabric.config.ConfigManager.getConfig;
|
||||||
|
|
||||||
public class SharedEnderChest implements ServerLifecycleEvents.ServerStopping, ServerLifecycleEvents.ServerStarted, ServerTickEvents.EndTick {
|
public class SharedEnderChest implements ServerLifecycleEvents.ServerStopping, ServerLifecycleEvents.ServerStarted, ServerTickEvents.EndTick {
|
||||||
@ -46,7 +47,7 @@ public class SharedEnderChest implements ServerLifecycleEvents.ServerStopping, S
|
|||||||
Inventories.readNbt(nbt, inventoryItemStacks, server.getRegistryManager());
|
Inventories.readNbt(nbt, inventoryItemStacks, server.getRegistryManager());
|
||||||
sharedInventory = new SharedInventory(inventoryItemStacks);
|
sharedInventory = new SharedInventory(inventoryItemStacks);
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
System.out.println("[ShareEnderChest] Error while loading inventory: " + e);
|
LOGGER.error("Error while loading Shared Ender Chest: " + e);
|
||||||
sharedInventory = new SharedInventory(getConfig().sharedEnderChestRows);
|
sharedInventory = new SharedInventory(getConfig().sharedEnderChestRows);
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
@ -64,10 +65,9 @@ public class SharedEnderChest implements ServerLifecycleEvents.ServerStopping, S
|
|||||||
inventoryFile.createNewFile();
|
inventoryFile.createNewFile();
|
||||||
NbtIo.writeCompressed(nbt, inventoryFileDataOutput);
|
NbtIo.writeCompressed(nbt, inventoryFileDataOutput);
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
System.out.println("[ShareEnderChest] Error while saving inventory: " + e);
|
LOGGER.error("Error while saving Shared Ender Chest: " + e);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public void onServerStopping(MinecraftServer server) {
|
public void onServerStopping(MinecraftServer server) {
|
||||||
saveInventory(server);
|
saveInventory(server);
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user