diff --git a/src/main/java/net/minecraft/command/server/CommandBroadcast.java b/src/main/java/net/minecraft/command/server/CommandBroadcast.java index ef4b69c..4ec7eed 100644 --- a/src/main/java/net/minecraft/command/server/CommandBroadcast.java +++ b/src/main/java/net/minecraft/command/server/CommandBroadcast.java @@ -1,11 +1,13 @@ package net.minecraft.command.server; import java.util.List; + import net.minecraft.command.CommandBase; import net.minecraft.command.ICommandSender; import net.minecraft.command.WrongUsageException; import net.minecraft.server.MinecraftServer; import net.minecraft.util.ChatComponentTranslation; +import net.minecraft.util.EnumChatFormatting; import net.minecraft.util.IChatComponent; public class CommandBroadcast extends CommandBase @@ -32,7 +34,9 @@ if (p_71515_2_.length > 0 && p_71515_2_[0].length() > 0) { IChatComponent ichatcomponent = func_147176_a(p_71515_1_, p_71515_2_, 0, true); - MinecraftServer.getServer().getConfigurationManager().sendChatMsg(new ChatComponentTranslation("chat.type.announcement", new Object[] {p_71515_1_.getCommandSenderName(), ichatcomponent})); + ChatComponentTranslation text = new ChatComponentTranslation("chat.type.announcement", new Object[] {"Сервер", ichatcomponent}); + text.getChatStyle().setColor(EnumChatFormatting.DARK_PURPLE); + MinecraftServer.getServer().getConfigurationManager().sendChatMsg(text); } else { diff --git a/src/main/java/org/ultramine/commands/basic/BasicCommands.java b/src/main/java/org/ultramine/commands/basic/BasicCommands.java index 441ce06..0856b43 100644 --- a/src/main/java/org/ultramine/commands/basic/BasicCommands.java +++ b/src/main/java/org/ultramine/commands/basic/BasicCommands.java @@ -5,6 +5,7 @@ import static net.minecraft.util.EnumChatFormatting.*; import net.minecraft.entity.player.EntityPlayerMP; +import net.minecraft.event.ClickEvent; import net.minecraft.item.ItemStack; import net.minecraft.util.ChatComponentTranslation; import net.minecraft.util.ChatStyle; @@ -54,8 +55,10 @@ group = cmd.getGroup(); ctx.sendMessage("%s:", group); } - ChatComponentTranslation usage = new ChatComponentTranslation(cmd.getCommandUsage(ctx.getSender())); + String usageS = cmd.getCommandUsage(ctx.getSender()); + ChatComponentTranslation usage = new ChatComponentTranslation(usageS != null ? usageS : '/' + cmd.getCommandName()); ChatComponentTranslation desc = new ChatComponentTranslation(cmd.getDescription()); + usage.getChatStyle().setChatClickEvent(new ClickEvent(ClickEvent.Action.SUGGEST_COMMAND, "/" + cmd.getCommandName() + " ")); usage.getChatStyle().setColor(YELLOW); desc.getChatStyle().setColor(DARK_AQUA); ctx.sendMessage(DARK_GRAY, YELLOW, " - %s <- %s", usage, desc); diff --git a/src/main/java/org/ultramine/commands/basic/TechCommands.java b/src/main/java/org/ultramine/commands/basic/TechCommands.java index 3b27655..c4ed478 100644 --- a/src/main/java/org/ultramine/commands/basic/TechCommands.java +++ b/src/main/java/org/ultramine/commands/basic/TechCommands.java @@ -14,15 +14,22 @@ import net.minecraft.world.chunk.Chunk; import net.minecraftforge.common.DimensionManager; +import org.apache.logging.log4j.LogManager; +import org.apache.logging.log4j.Logger; import org.ultramine.commands.Command; import org.ultramine.commands.CommandContext; import org.ultramine.server.MultiWorld; import org.ultramine.server.Teleporter; +import cpw.mods.fml.common.FMLCommonHandler; +import cpw.mods.fml.common.eventhandler.SubscribeEvent; import cpw.mods.fml.common.functions.GenericIterableFactory; +import cpw.mods.fml.common.gameevent.TickEvent; public class TechCommands { + private static final Logger log = LogManager.getLogger(); + @Command( name = "id", group = "technical", @@ -229,7 +236,7 @@ @Command( name = "clearentity", group = "technical", - permissions = {"command.countentity"}, + permissions = {"command.clearentity"}, syntax = { "", "[all mobs items] " @@ -279,4 +286,58 @@ ctx.sendMessage("command.clearentity.success", count, mobcount, itemcount); } + + private static LagGenerator laghandler; + + @Command( + name = "startlags", + group = "technical", + permissions = {"command.startlags"}, + syntax = { + "", + "[stop]" + } + ) + public static void startlags(CommandContext ctx) + { + if(laghandler != null) + { + FMLCommonHandler.instance().bus().unregister(laghandler); + laghandler = null; + } + + if(ctx.getAction().equals("stop")) + { + ctx.sendMessage("command.startlags.stop"); + return; + } + + int percent = ctx.get("percent").asInt(1); + FMLCommonHandler.instance().bus().register(laghandler = new LagGenerator(percent)); + ctx.sendMessage("command.startlags.start", percent); + + } + + public static class LagGenerator + { + private final int percent; + private int counter; + + public LagGenerator(int percent){this.percent = percent;} + + @SubscribeEvent + public void inTick(TickEvent.ServerTickEvent e) + { + if(e.phase == TickEvent.Phase.START) + { + if(++counter%600 == 0) + log.warn("Startlags command enabled! It loads server by {}%", percent); + + try + { + Thread.sleep(percent/2); //100% = 50ms (1 tick) + } catch(InterruptedException ignored){} + } + } + } } diff --git a/src/main/resources/assets/ultramine/lang/en_US.lang b/src/main/resources/assets/ultramine/lang/en_US.lang index 8086dec..276e90b 100644 --- a/src/main/resources/assets/ultramine/lang/en_US.lang +++ b/src/main/resources/assets/ultramine/lang/en_US.lang @@ -174,3 +174,8 @@ command.clearentity.usage=/clearentity [all|mobs|items] command.clearentity.description=All multiworld commands command.clearentity.success=Cleared %s Entity. Mobs: %s, Items: %s + +command.startlags.usage=/startlags percents OR /startlags stop +command.startlags.description=Simulruet server overload on a specified percentage +command.startlags.start=Start lagging on %s%% +command.startlags.stop=Stop lagging