mirror of
https://github.com/Melledy/Grasscutter.git
synced 2024-11-26 03:42:55 +00:00
Merge pull request #84 from yarik0chka/development
Add a changing weather id
This commit is contained in:
commit
4431469334
@ -66,7 +66,7 @@ There is a dummy user named "Server" in every player's friends list that you can
|
|||||||
|
|
||||||
`!pos` - Gets your current coordinate.
|
`!pos` - Gets your current coordinate.
|
||||||
|
|
||||||
`!weather [weather id]` - Changes the current weather.
|
`!weather [weather id] [climate id]` - Changes the current weather.
|
||||||
|
|
||||||
*More commands will be updated in the [wiki](https://github.com/Melledy/Grasscutter/wiki/).*
|
*More commands will be updated in the [wiki](https://github.com/Melledy/Grasscutter/wiki/).*
|
||||||
|
|
||||||
|
@ -8,7 +8,7 @@ import emu.grasscutter.server.packet.send.PacketSceneAreaWeatherNotify;
|
|||||||
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
@Command(label = "weather", usage = "weather <weatherId>",
|
@Command(label = "weather", usage = "weather <weatherId> [climateId]",
|
||||||
description = "Changes the weather.", aliases = {"w"}, permission = "player.weather")
|
description = "Changes the weather.", aliases = {"w"}, permission = "player.weather")
|
||||||
public final class WeatherCommand implements CommandHandler {
|
public final class WeatherCommand implements CommandHandler {
|
||||||
|
|
||||||
@ -20,20 +20,22 @@ public final class WeatherCommand implements CommandHandler {
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (args.size() < 1) {
|
if (args.size() < 1) {
|
||||||
CommandHandler.sendMessage(sender, "Usage: weather <weatherId>");
|
CommandHandler.sendMessage(sender, "Usage: weather <weatherId> [climateId]");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
try {
|
try {
|
||||||
int weatherId = Integer.parseInt(args.get(0));
|
int weatherId = Integer.parseInt(args.get(0));
|
||||||
|
int climateId = args.size() > 1 ? Integer.parseInt(args.get(1)) : 1;
|
||||||
|
|
||||||
ClimateType climate = ClimateType.getTypeByValue(weatherId);
|
ClimateType climate = ClimateType.getTypeByValue(climateId);
|
||||||
|
|
||||||
|
sender.getScene().setWeather(weatherId);
|
||||||
sender.getScene().setClimate(climate);
|
sender.getScene().setClimate(climate);
|
||||||
sender.getScene().broadcastPacket(new PacketSceneAreaWeatherNotify(sender));
|
sender.getScene().broadcastPacket(new PacketSceneAreaWeatherNotify(sender));
|
||||||
CommandHandler.sendMessage(sender, "Changed weather to " + weatherId);
|
CommandHandler.sendMessage(sender, "Changed weather to " + weatherId + " with climate " + climateId);
|
||||||
} catch (NumberFormatException ignored) {
|
} catch (NumberFormatException ignored) {
|
||||||
CommandHandler.sendMessage(sender, "Invalid weather ID.");
|
CommandHandler.sendMessage(sender, "Invalid ID.");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -34,7 +34,8 @@ public class GenshinScene {
|
|||||||
|
|
||||||
private int time;
|
private int time;
|
||||||
private ClimateType climate;
|
private ClimateType climate;
|
||||||
|
private int weather;
|
||||||
|
|
||||||
public GenshinScene(World world, SceneData sceneData) {
|
public GenshinScene(World world, SceneData sceneData) {
|
||||||
this.world = world;
|
this.world = world;
|
||||||
this.sceneData = sceneData;
|
this.sceneData = sceneData;
|
||||||
@ -89,10 +90,18 @@ public class GenshinScene {
|
|||||||
return climate;
|
return climate;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public int getWeather() {
|
||||||
|
return weather;
|
||||||
|
}
|
||||||
|
|
||||||
public void setClimate(ClimateType climate) {
|
public void setClimate(ClimateType climate) {
|
||||||
this.climate = climate;
|
this.climate = climate;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void setWeather(int weather) {
|
||||||
|
this.weather = weather;
|
||||||
|
}
|
||||||
|
|
||||||
public boolean isInScene(GenshinEntity entity) {
|
public boolean isInScene(GenshinEntity entity) {
|
||||||
return this.entities.containsKey(entity.getId());
|
return this.entities.containsKey(entity.getId());
|
||||||
}
|
}
|
||||||
|
@ -12,7 +12,7 @@ public class PacketSceneAreaWeatherNotify extends GenshinPacket {
|
|||||||
super(PacketOpcodes.SceneAreaWeatherNotify);
|
super(PacketOpcodes.SceneAreaWeatherNotify);
|
||||||
|
|
||||||
SceneAreaWeatherNotify proto = SceneAreaWeatherNotify.newBuilder()
|
SceneAreaWeatherNotify proto = SceneAreaWeatherNotify.newBuilder()
|
||||||
.setWeatherAreaId(1)
|
.setWeatherAreaId(player.getScene().getWeather())
|
||||||
.setClimateType(player.getScene().getClimate().getValue())
|
.setClimateType(player.getScene().getClimate().getValue())
|
||||||
.build();
|
.build();
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user