mirror of
https://github.com/TheWhiteDog9487/RandomTeleporter.git
synced 2025-10-15 07:55:05 +08:00
将命令参数文本抽离到各个文字的翻译文件内,现在只会显示当前语言的提示文字了
但是单人游戏内切换语言后必须重进世界才能完成游戏内热更新,并且独立服务器用不了这个特性,开放局域网的话应该是跟随主机的语言配置
This commit is contained in:
@@ -9,7 +9,7 @@ yarn_mappings=1.21.9+build.1
|
||||
loader_version=0.17.2
|
||||
|
||||
# Mod Properties
|
||||
mod_version=0.3.6
|
||||
mod_version=0.4.0
|
||||
maven_group=xyz.thewhitedog9487
|
||||
archives_base_name=RandomTeleporter
|
||||
|
||||
|
@@ -24,6 +24,7 @@ import java.util.SplittableRandom;
|
||||
import static net.minecraft.server.command.CommandManager.argument;
|
||||
import static net.minecraft.server.command.CommandManager.literal;
|
||||
import static net.minecraft.world.Heightmap.Type.MOTION_BLOCKING_NO_LEAVES;
|
||||
import static xyz.thewhitedog9487.ResourceReloaderListener.*;
|
||||
|
||||
public class CommandRegister {
|
||||
|
||||
@@ -77,6 +78,7 @@ public class CommandRegister {
|
||||
* @see <a href="https://wiki.fabricmc.net/tutorial:commands">Fabric Wiki (Old style,English)</a>
|
||||
*/
|
||||
public static void Register(String Name){
|
||||
|
||||
CommandRegistrationCallback.EVENT
|
||||
.register((dispatcher, registryAccess, environment) ->{
|
||||
dispatcher.register(literal(Name)
|
||||
@@ -85,38 +87,38 @@ public class CommandRegister {
|
||||
.executes(context -> ExecuteCommand(
|
||||
context.getSource(),null,null, null))
|
||||
// /rtp <Radius(半径)>
|
||||
.then(argument("Radius(半径)", IntegerArgumentType.integer(0))
|
||||
.then(argument(CommandArgumentName_Radius, IntegerArgumentType.integer(0))
|
||||
.requires(source -> source.hasPermissionLevel(PermissionLevel))
|
||||
.executes(context -> ExecuteCommand(
|
||||
context.getSource(),
|
||||
IntegerArgumentType.getInteger(context, "Radius(半径)"),
|
||||
IntegerArgumentType.getInteger(context, CommandArgumentName_Radius),
|
||||
null,
|
||||
null)))
|
||||
// /rtp <被传送玩家名(PlayerID)>
|
||||
.then(argument("被传送玩家名(PlayerID)", EntityArgumentType.entity())
|
||||
.then(argument(CommandArgumentName_Target, EntityArgumentType.entity())
|
||||
.requires(source -> source.hasPermissionLevel(PermissionLevel))
|
||||
.executes(context -> ExecuteCommand(
|
||||
context.getSource(),
|
||||
null,
|
||||
EntityArgumentType.getEntity(context,"被传送玩家名(PlayerID)"),
|
||||
EntityArgumentType.getEntity(context,CommandArgumentName_Target),
|
||||
null)))
|
||||
// /rtp <Radius(半径)> <被传送玩家名(PlayerID)>
|
||||
.then(argument("Radius(半径)", IntegerArgumentType.integer(0))
|
||||
.then(argument("被传送玩家名(PlayerID)", EntityArgumentType.entity())
|
||||
.then(argument(CommandArgumentName_Radius, IntegerArgumentType.integer(0))
|
||||
.then(argument(CommandArgumentName_Target, EntityArgumentType.entity())
|
||||
.requires(source -> source.hasPermissionLevel(PermissionLevel))
|
||||
.executes(context -> ExecuteCommand(
|
||||
context.getSource(),
|
||||
IntegerArgumentType.getInteger(context, "Radius(半径)"),
|
||||
EntityArgumentType.getEntity(context,"被传送玩家名(PlayerID)"),
|
||||
IntegerArgumentType.getInteger(context, CommandArgumentName_Radius),
|
||||
EntityArgumentType.getEntity(context,CommandArgumentName_Target),
|
||||
null))))
|
||||
// /rtp <被传送玩家名(PlayerID)> <Radius(半径)>
|
||||
.then(argument("被传送玩家名(PlayerID)", EntityArgumentType.entity())
|
||||
.then(argument("Radius(半径)", IntegerArgumentType.integer(0))
|
||||
.then(argument(CommandArgumentName_Target, EntityArgumentType.entity())
|
||||
.then(argument(CommandArgumentName_Radius, IntegerArgumentType.integer(0))
|
||||
.requires(source -> source.hasPermissionLevel(PermissionLevel))
|
||||
.executes(context -> ExecuteCommand(
|
||||
context.getSource(),
|
||||
IntegerArgumentType.getInteger(context, "Radius(半径)"),
|
||||
EntityArgumentType.getEntity(context,"被传送玩家名(PlayerID)"),
|
||||
IntegerArgumentType.getInteger(context, CommandArgumentName_Radius),
|
||||
EntityArgumentType.getEntity(context,CommandArgumentName_Target),
|
||||
null))))
|
||||
// // /rtp <Radius(半径)> <Origin(随机中心)>
|
||||
// .then(argument("Radius(半径)", LongArgumentType.longArg())
|
||||
@@ -128,56 +130,56 @@ public class CommandRegister {
|
||||
// null,
|
||||
// EntityArgumentType.getEntity(context,"Origin(随机中心)")))))
|
||||
// /rtp <Radius(半径)> <OriginPos(随机中心,坐标)>
|
||||
.then(argument("Radius(半径)", IntegerArgumentType.integer(0))
|
||||
.then(argument("OriginPos(随机中心,坐标)",Vec2ArgumentType.vec2())
|
||||
.then(argument(CommandArgumentName_Radius, IntegerArgumentType.integer(0))
|
||||
.then(argument(CommandArgumentName_OriginPosition,Vec2ArgumentType.vec2())
|
||||
.requires(source -> source.hasPermissionLevel(PermissionLevel))
|
||||
.executes(context -> ExecuteCommand(
|
||||
context.getSource(),
|
||||
IntegerArgumentType.getInteger(context, "Radius(半径)"),
|
||||
IntegerArgumentType.getInteger(context, CommandArgumentName_Radius),
|
||||
null,
|
||||
Vec2ArgumentType.getVec2(context,"OriginPos(随机中心,坐标)")))))
|
||||
Vec2ArgumentType.getVec2(context,CommandArgumentName_OriginPosition)))))
|
||||
// /rtp <Radius(半径)> <被传送玩家名(PlayerID)> <OriginEntity(随机中心,实体)>
|
||||
.then(argument("Radius(半径)", IntegerArgumentType.integer(0))
|
||||
.then(argument("被传送玩家名(PlayerID)", EntityArgumentType.entity())
|
||||
.then(argument("OriginEntity(随机中心,实体)",EntityArgumentType.entity())
|
||||
.then(argument(CommandArgumentName_Radius, IntegerArgumentType.integer(0))
|
||||
.then(argument(CommandArgumentName_Target, EntityArgumentType.entity())
|
||||
.then(argument(CommandArgumentName_OriginEntity,EntityArgumentType.entity())
|
||||
.requires(source -> source.hasPermissionLevel(PermissionLevel))
|
||||
.executes(context -> ExecuteCommand(
|
||||
context.getSource(),
|
||||
IntegerArgumentType.getInteger(context, "Radius(半径)"),
|
||||
EntityArgumentType.getEntity(context,"被传送玩家名(PlayerID)"),
|
||||
new Vec2f( (float) EntityArgumentType.getEntity( context,"OriginEntity(随机中心,实体)").getEntityPos().x,
|
||||
(float) EntityArgumentType.getEntity( context,"OriginEntity(随机中心,实体)").getEntityPos().z ))))))
|
||||
IntegerArgumentType.getInteger(context, CommandArgumentName_Radius),
|
||||
EntityArgumentType.getEntity(context,CommandArgumentName_Target),
|
||||
new Vec2f( (float) EntityArgumentType.getEntity( context,CommandArgumentName_OriginEntity).getEntityPos().x,
|
||||
(float) EntityArgumentType.getEntity( context,CommandArgumentName_OriginEntity).getEntityPos().z ))))))
|
||||
// /rtp <Radius(半径)> <被传送玩家名(PlayerID)> <OriginPos(随机中心,坐标)>
|
||||
.then(argument("Radius(半径)", IntegerArgumentType.integer(0))
|
||||
.then(argument("被传送玩家名(PlayerID)", EntityArgumentType.entity())
|
||||
.then(argument("OriginPos(随机中心,坐标)",Vec2ArgumentType.vec2())
|
||||
.then(argument(CommandArgumentName_Radius, IntegerArgumentType.integer(0))
|
||||
.then(argument(CommandArgumentName_Target, EntityArgumentType.entity())
|
||||
.then(argument(CommandArgumentName_OriginPosition,Vec2ArgumentType.vec2())
|
||||
.requires(source -> source.hasPermissionLevel(PermissionLevel))
|
||||
.executes(context -> ExecuteCommand(
|
||||
context.getSource(),
|
||||
IntegerArgumentType.getInteger(context, "Radius(半径)"),
|
||||
EntityArgumentType.getEntity(context,"被传送玩家名(PlayerID)"),
|
||||
Vec2ArgumentType.getVec2(context,"OriginPos(随机中心,坐标)"))))))
|
||||
IntegerArgumentType.getInteger(context, CommandArgumentName_Radius),
|
||||
EntityArgumentType.getEntity(context,CommandArgumentName_Target),
|
||||
Vec2ArgumentType.getVec2(context,CommandArgumentName_OriginPosition))))))
|
||||
// /rtp <被传送玩家名(PlayerID)> <Radius(半径)> <OriginEntity(随机中心,实体)>
|
||||
.then(argument("被传送玩家名(PlayerID)", EntityArgumentType.entity())
|
||||
.then(argument("Radius(半径)", IntegerArgumentType.integer(0))
|
||||
.then(argument("OriginEntity(随机中心,实体)",EntityArgumentType.entity())
|
||||
.then(argument(CommandArgumentName_Target, EntityArgumentType.entity())
|
||||
.then(argument(CommandArgumentName_Radius, IntegerArgumentType.integer(0))
|
||||
.then(argument(CommandArgumentName_OriginEntity,EntityArgumentType.entity())
|
||||
.requires(source -> source.hasPermissionLevel(PermissionLevel))
|
||||
.executes(context -> ExecuteCommand(
|
||||
context.getSource(),
|
||||
IntegerArgumentType.getInteger(context, "Radius(半径)"),
|
||||
EntityArgumentType.getEntity(context,"被传送玩家名(PlayerID)"),
|
||||
new Vec2f( (float) EntityArgumentType.getEntity( context,"OriginEntity(随机中心,实体)").getEntityPos().x,
|
||||
(float) EntityArgumentType.getEntity( context,"OriginEntity(随机中心,实体)").getEntityPos().z ))))))
|
||||
IntegerArgumentType.getInteger(context, CommandArgumentName_Radius),
|
||||
EntityArgumentType.getEntity(context,CommandArgumentName_Target),
|
||||
new Vec2f( (float) EntityArgumentType.getEntity( context,CommandArgumentName_OriginEntity).getEntityPos().x,
|
||||
(float) EntityArgumentType.getEntity( context,CommandArgumentName_OriginEntity).getEntityPos().z ))))))
|
||||
// /rtp <被传送玩家名(PlayerID)> <Radius(半径)> <OriginPos(随机中心,坐标)>
|
||||
.then(argument("被传送玩家名(PlayerID)", EntityArgumentType.entity())
|
||||
.then(argument("Radius(半径)", IntegerArgumentType.integer(0))
|
||||
.then(argument("OriginPos(随机中心,坐标)",Vec2ArgumentType.vec2())
|
||||
.then(argument(CommandArgumentName_Target, EntityArgumentType.entity())
|
||||
.then(argument(CommandArgumentName_Radius, IntegerArgumentType.integer(0))
|
||||
.then(argument(CommandArgumentName_OriginPosition,Vec2ArgumentType.vec2())
|
||||
.requires(source -> source.hasPermissionLevel(PermissionLevel))
|
||||
.executes(context -> ExecuteCommand(
|
||||
context.getSource(),
|
||||
IntegerArgumentType.getInteger(context, "Radius(半径)"),
|
||||
EntityArgumentType.getEntity(context,"被传送玩家名(PlayerID)"),
|
||||
Vec2ArgumentType.getVec2(context,"OriginPos(随机中心,坐标)")))))) );});}
|
||||
IntegerArgumentType.getInteger(context, CommandArgumentName_Radius),
|
||||
EntityArgumentType.getEntity(context,CommandArgumentName_Target),
|
||||
Vec2ArgumentType.getVec2(context,CommandArgumentName_OriginPosition)))))) );});}
|
||||
|
||||
/**
|
||||
* 向游戏内注册命令
|
||||
|
@@ -9,17 +9,17 @@ public class RandomTeleporter implements ModInitializer {
|
||||
// This logger is used to write text to the console and the log file.
|
||||
// It is considered best practice to use your mod id as the logger's name.
|
||||
// That way, it's clear which mod wrote info, warnings, and errors.
|
||||
public static final Logger LOGGER = LoggerFactory.getLogger("randomteleporter");
|
||||
public static final String MOD_ID = "randomteleporter";
|
||||
public static final Logger LOGGER = LoggerFactory.getLogger(MOD_ID);
|
||||
|
||||
@Override
|
||||
public void onInitialize() {
|
||||
// This code runs as soon as Minecraft is in a mod-load-ready state.
|
||||
// However, some things (like resources) may still be uninitialized.
|
||||
// Proceed with mild caution.
|
||||
LOGGER.info("RandomTeleporter Loading!");
|
||||
|
||||
ResourceReloaderListener.Register();
|
||||
CommandRegister.Register();
|
||||
|
||||
LOGGER.info("RandomTeleporter Loaded!");
|
||||
LOGGER.info("RandomTeleporter已写入命令注册回调,目标命令将会在该注册的时候被注册");
|
||||
}
|
||||
}
|
@@ -0,0 +1,34 @@
|
||||
package xyz.thewhitedog9487;
|
||||
|
||||
import net.fabricmc.fabric.api.resource.v1.ResourceLoader;
|
||||
import net.fabricmc.fabric.api.resource.v1.reloader.SimpleResourceReloader;
|
||||
import net.minecraft.text.Text;
|
||||
import net.minecraft.util.Identifier;
|
||||
|
||||
import static net.minecraft.resource.ResourceType.CLIENT_RESOURCES;
|
||||
import static xyz.thewhitedog9487.RandomTeleporter.MOD_ID;
|
||||
|
||||
/**
|
||||
* 在游戏资源重新加载之后刷新翻译文本
|
||||
*/
|
||||
public class ResourceReloaderListener {
|
||||
public static String CommandArgumentName_Radius = "Radius(半径)";
|
||||
public static String CommandArgumentName_Target = "被传送玩家名(PlayerID)";
|
||||
public static String CommandArgumentName_OriginPosition = "OriginPos(随机中心,坐标)";
|
||||
public static String CommandArgumentName_OriginEntity = "OriginEntity(随机中心,实体)";
|
||||
|
||||
public static void Register(){
|
||||
ResourceLoader.get(CLIENT_RESOURCES).registerReloader(Identifier.of(MOD_ID, "translate_text_apply"), new SimpleResourceReloader<Void>() {
|
||||
/**
|
||||
* 用不到,不用管
|
||||
*/
|
||||
@Override
|
||||
protected Void prepare(Store store) {
|
||||
return null; }
|
||||
|
||||
@Override
|
||||
protected void apply(Void prepared, Store store) {
|
||||
CommandArgumentName_Radius = Text.translatableWithFallback("command.argument.radius", "Radius(半径)").getString();
|
||||
CommandArgumentName_Target = Text.translatableWithFallback("command.argument.target", "被传送玩家名(PlayerID)").getString();
|
||||
CommandArgumentName_OriginPosition = Text.translatableWithFallback("command.argument.origin_pos", "OriginPos(随机中心,坐标)").getString();
|
||||
CommandArgumentName_OriginEntity = Text.translatableWithFallback("command.argument.origin_entity", "OriginEntity(随机中心,实体)").getString(); } } ); } }
|
@@ -5,5 +5,9 @@
|
||||
"error.no_target": "There is no teleported target, and the teleported player ID is explicitly specified when executed by a non-player object",
|
||||
"warning.radius_equal_zero": "Warning: Since you set a random radius of 0, selecting the right height will teleport you directly to %d %d",
|
||||
"warning.radius_equal_zero_no_target": "Warning: Since you set a random radius of 0 and you don't set a random center point coordinates, nothing happens",
|
||||
"bilibili": "Bilibili"
|
||||
"bilibili": "Bilibili",
|
||||
"command.argument.radius": "radius",
|
||||
"command.argument.target": "teleported entity",
|
||||
"command.argument.origin_pos": "origin(pos)",
|
||||
"command.argument.origin_entity": "origin(entity)"
|
||||
}
|
@@ -5,5 +5,9 @@
|
||||
"error.no_target": "不存在被传送目标,由非玩家物体执行命令时请显式指定被传送玩家ID",
|
||||
"warning.radius_equal_zero": "警告:由于你设置的随机半径为0,因此在选择出合适高度之后将直接把你传送至%d %d",
|
||||
"warning.radius_equal_zero_no_target": "警告:由于你设置的随机半径为0,并且未设置随机中心点坐标,因此什么都不会发生",
|
||||
"bilibili": "TheWhiteDog9487的哔哩哔哩主页"
|
||||
"bilibili": "TheWhiteDog9487的哔哩哔哩主页",
|
||||
"command.argument.radius": "半径",
|
||||
"command.argument.target": "被传送实体",
|
||||
"command.argument.origin_pos": "随机中心(坐标)",
|
||||
"command.argument.origin_entity": "随机中心(实体)"
|
||||
}
|
Reference in New Issue
Block a user