Skip to content

Commit

Permalink
Implemented commands
Browse files Browse the repository at this point in the history
  • Loading branch information
Adubbz committed Jan 19, 2024
1 parent 486c92f commit e2076b4
Show file tree
Hide file tree
Showing 9 changed files with 90 additions and 29 deletions.
14 changes: 13 additions & 1 deletion common/src/main/java/sereneseasons/api/season/Season.java
Original file line number Diff line number Diff line change
Expand Up @@ -4,11 +4,16 @@
******************************************************************************/
package sereneseasons.api.season;

import com.mojang.serialization.Codec;
import net.minecraft.util.StringRepresentable;

import java.util.Locale;

public enum Season
{
SPRING, SUMMER, AUTUMN, WINTER;

public enum SubSeason implements ISeasonColorProvider
public enum SubSeason implements ISeasonColorProvider, StringRepresentable
{
EARLY_SPRING(SPRING, 0x778087, 0.85F, 0x6F818F, 0.85F, 0x869A68),
MID_SPRING(SPRING, 0x678297, 0x4F86AF, 0x6EB283),
Expand All @@ -23,6 +28,7 @@ public enum SubSeason implements ISeasonColorProvider
MID_WINTER(WINTER, 0xAF4F4F, 0.45F, 0xDB3030, 0.45F, 0xA0824D),
LATE_WINTER(WINTER, 0x8E8181, 0.60F, 0xA57070, 0.60F, 0x8F925F);

public static final Codec<SubSeason> CODEC = StringRepresentable.fromEnum(SubSeason::values);
public static final SubSeason[] VALUES = SubSeason.values();

private Season season;
Expand Down Expand Up @@ -76,6 +82,12 @@ public int getBirchColor()
{
return this.birchColor;
}

@Override
public String getSerializedName()
{
return this.name().toLowerCase(Locale.ROOT);
}
}

public enum TropicalSeason implements ISeasonColorProvider
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
* Copyright 2021, the Glitchfiend Team.
* All rights reserved.
******************************************************************************/
package sereneseasons.forge.command;
package sereneseasons.command;

import com.mojang.brigadier.builder.ArgumentBuilder;
import net.minecraft.commands.CommandSourceStack;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,14 +2,13 @@
* Copyright 2021, the Glitchfiend Team.
* All rights reserved.
******************************************************************************/
package sereneseasons.forge.command;
package sereneseasons.command;

import com.mojang.brigadier.builder.ArgumentBuilder;
import net.minecraft.commands.CommandSourceStack;
import net.minecraft.commands.Commands;
import net.minecraft.network.chat.Component;
import net.minecraft.world.level.Level;
import net.minecraftforge.server.command.EnumArgument;
import sereneseasons.api.season.Season;
import sereneseasons.season.SeasonHandler;
import sereneseasons.season.SeasonSavedData;
Expand All @@ -22,10 +21,10 @@ public class CommandSetSeason
static ArgumentBuilder<CommandSourceStack, ?> register()
{
return Commands.literal("set")
.then(Commands.argument("season", EnumArgument.enumArgument(Season.SubSeason.class))
.then(Commands.argument("season", SeasonArgument.season())
.executes(ctx -> {
Level world = ctx.getSource().getLevel();
return setSeason(ctx.getSource(), world, ctx.getArgument("season", Season.SubSeason.class));
return setSeason(ctx.getSource(), world, SeasonArgument.getSeason(ctx, "season"));
}));
}

Expand Down
27 changes: 27 additions & 0 deletions common/src/main/java/sereneseasons/command/SeasonArgument.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
/*******************************************************************************
* Copyright 2024, the Glitchfiend Team.
* All rights reserved.
******************************************************************************/
package sereneseasons.command;

import com.mojang.brigadier.context.CommandContext;
import net.minecraft.commands.CommandSourceStack;
import net.minecraft.commands.arguments.StringRepresentableArgument;
import sereneseasons.api.season.Season;

public class SeasonArgument extends StringRepresentableArgument<Season.SubSeason>
{
private SeasonArgument() {
super(Season.SubSeason.CODEC, Season.SubSeason::values);
}

public static StringRepresentableArgument<Season.SubSeason> season()
{
return new SeasonArgument();
}

public static Season.SubSeason getSeason(CommandContext<CommandSourceStack> context, String s) {
return context.getArgument(s, Season.SubSeason.class);
}
}

39 changes: 39 additions & 0 deletions common/src/main/java/sereneseasons/command/SeasonCommands.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,39 @@
package sereneseasons.command;

import com.mojang.brigadier.builder.LiteralArgumentBuilder;
import glitchcore.event.server.RegisterCommandsEvent;
import net.minecraft.commands.CommandSourceStack;
import net.minecraft.commands.arguments.TemplateMirrorArgument;
import net.minecraft.commands.synchronization.ArgumentTypeInfo;
import net.minecraft.commands.synchronization.ArgumentTypeInfos;
import net.minecraft.commands.synchronization.SingletonArgumentInfo;
import net.minecraft.resources.ResourceLocation;
import net.minecraft.world.level.block.Block;
import sereneseasons.core.SereneSeasons;

import java.util.function.BiConsumer;

public class SeasonCommands
{
public static void onRegisterCommands(RegisterCommandsEvent event)
{
event.getDispatcher().register(
LiteralArgumentBuilder.<CommandSourceStack>literal("season")
.requires(cs -> cs.hasPermission(2))
.then(CommandSetSeason.register())
.then(CommandGetSeason.register())
);
}

public static void registerArguments(BiConsumer<ResourceLocation, ArgumentTypeInfo<?, ?>> func)
{
register(func, "season", SeasonArgument.class, SingletonArgumentInfo.contextFree(SeasonArgument::season));
}

private static ArgumentTypeInfo<?, ?> register(BiConsumer<ResourceLocation, ArgumentTypeInfo<?, ?>> func, String name, Class<?> clazz, ArgumentTypeInfo<?, ?> typeInfo)
{
func.accept(new ResourceLocation(SereneSeasons.MOD_ID, name), typeInfo);
ArgumentTypeInfos.BY_CLASS.put(clazz, typeInfo);
return typeInfo;
}
}
3 changes: 3 additions & 0 deletions common/src/main/java/sereneseasons/core/SereneSeasons.java
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@
import net.minecraft.core.registries.Registries;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
import sereneseasons.command.SeasonCommands;
import sereneseasons.init.*;
import sereneseasons.season.RandomUpdateHandler;
import sereneseasons.season.SeasonHandler;
Expand Down Expand Up @@ -37,13 +38,15 @@ private static void addRegistrars()
regHelper.addRegistrar(Registries.BLOCK_ENTITY_TYPE, ModBlockEntities::registerBlockEntities);
regHelper.addRegistrar(Registries.ITEM, ModItems::setup);
regHelper.addRegistrar(Registries.CREATIVE_MODE_TAB, ModCreativeTab::registerCreativeTabs);
regHelper.addRegistrar(Registries.COMMAND_ARGUMENT_TYPE, SeasonCommands::registerArguments);
}

private static void addHandlers()
{
EventManager.addListener(SeasonHandler::onLevelTick);
EventManager.addListener(SeasonHandler::onJoinLevel);
EventManager.addListener(RandomUpdateHandler::onWorldTick);
EventManager.addListener(SeasonCommands::onRegisterCommands);

if (Environment.isClient())
{
Expand Down
3 changes: 3 additions & 0 deletions common/src/main/resources/sereneseasons.accesswidener
Original file line number Diff line number Diff line change
Expand Up @@ -22,3 +22,6 @@ accessible field net/minecraft/server/level/ChunkMap level Lnet/minecraft/server
accessible method net/minecraft/server/level/ChunkMap getChunks ()Ljava/lang/Iterable;
accessible method net/minecraft/server/level/ChunkMap anyPlayerCloseEnoughForSpawning (Lnet/minecraft/world/level/ChunkPos;)Z
accessible method net/minecraft/world/level/block/IceBlock melt (Lnet/minecraft/world/level/block/state/BlockState;Lnet/minecraft/world/level/Level;Lnet/minecraft/core/BlockPos;)V

# Commands
accessible field net/minecraft/commands/synchronization/ArgumentTypeInfos BY_CLASS Ljava/util/Map;

This file was deleted.

2 changes: 1 addition & 1 deletion gradle.properties
Original file line number Diff line number Diff line change
Expand Up @@ -40,4 +40,4 @@ org.gradle.daemon=false

# Dependencies
nightconfig_version=3.6.7
glitchcore_version=1.0.0.52
glitchcore_version=1.0.0.53

0 comments on commit e2076b4

Please sign in to comment.