添加了MM怪物刷新的代码
This commit is contained in:
parent
f2e77098e9
commit
76d2724786
@ -0,0 +1,111 @@
|
||||
package com.yuyu.srwildentity.conditionCheck;
|
||||
|
||||
import com.yuyu.srwildentity.config.condition.EntityCondition;
|
||||
import com.yuyu.srwildentity.config.condition.EntitySite;
|
||||
import org.bukkit.Location;
|
||||
import org.bukkit.Material;
|
||||
import org.bukkit.World;
|
||||
import org.bukkit.block.Block;
|
||||
|
||||
/**
|
||||
* @BelongsProject: SrWildEntity
|
||||
* @BelongsPackage: com.yuyu.srwildentity.conditionCheck
|
||||
* @FileName: ConditionCheck
|
||||
* @Author: 峰。
|
||||
* @Date: 2024/4/4-14:50
|
||||
* @Version: 1.0
|
||||
* @Description: 用于检查是否通过
|
||||
*/
|
||||
public class ConditionCheck {
|
||||
/**
|
||||
* 检查entity生成位置是否符合
|
||||
* 1.位置
|
||||
* 2.亮度
|
||||
* 3.刷新的世界的时间
|
||||
* 4.高度
|
||||
* @param world
|
||||
* @param location
|
||||
* @param entityCondition
|
||||
* @return
|
||||
*/
|
||||
public static boolean checkEntityRefresh(World world, Location location, EntityCondition entityCondition){
|
||||
|
||||
return checkLocation(world,location,entityCondition.getEntitySite())
|
||||
&& checkLight(world,location,entityCondition.getLight())
|
||||
&& checkTimed(world,entityCondition.getStartTiming(), entityCondition.getEndTimeing())
|
||||
&& checkY(location,entityCondition.getyMax(), entityCondition.getyMin());
|
||||
}
|
||||
|
||||
/**
|
||||
* 检查刷新位置
|
||||
* @param world
|
||||
* @param location
|
||||
* @param entitySite
|
||||
* @return
|
||||
*/
|
||||
public static boolean checkLocation(World world, Location location, EntitySite entitySite){
|
||||
|
||||
if (entitySite == null || world == null || location == null){
|
||||
throw new RuntimeException("checkLocation接收的参数错误");
|
||||
}
|
||||
|
||||
if (entitySite == EntitySite.ON_GROUND){
|
||||
Block blockAt = world.getBlockAt(location);
|
||||
return blockAt.getType().name().equals(Material.AIR.name());
|
||||
|
||||
}
|
||||
if (entitySite == EntitySite.NULL){
|
||||
return true;
|
||||
}
|
||||
if (entitySite == EntitySite.ON_WATER){
|
||||
Block blockAt = world.getBlockAt(location);
|
||||
return blockAt.getType().name().equals(Material.WATER.name());
|
||||
}
|
||||
if (entitySite == EntitySite.ON_MAGMA){
|
||||
Block blockAt = world.getBlockAt(location);
|
||||
return blockAt.getType().name().equals(Material.MAGMA.name());
|
||||
}
|
||||
if (entitySite == EntitySite.UNDER_GROUND){
|
||||
Block blockAt = world.getBlockAt(location);
|
||||
Block block = world.getBlockAt(new Location(world,location.getX(),location.getY()+1,location.getZ()));
|
||||
return blockAt.getType().name().equals(Material.AIR.name()) && block.getType().name().equals(Material.AIR.name());
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
/**
|
||||
* 检查亮度
|
||||
* @param world
|
||||
* @param location
|
||||
* @param light
|
||||
* @return
|
||||
*/
|
||||
public static boolean checkLight(World world, Location location, int light){
|
||||
|
||||
if (world == null || location == null || location == null){
|
||||
throw new RuntimeException("checkLight接收的参数错误");
|
||||
}
|
||||
|
||||
Block blockAt = world.getBlockAt(location);
|
||||
int lightLevel = blockAt.getLightLevel();
|
||||
return lightLevel <= light;//若方块位置的亮度小于或者等于设定值,则通过
|
||||
}
|
||||
|
||||
public static boolean checkTimed(World world ,long stimed,long etimed){
|
||||
if (world == null ){
|
||||
throw new RuntimeException("checkTime参数错误");
|
||||
}
|
||||
long time = world.getTime();
|
||||
|
||||
return time > stimed && time < etimed;
|
||||
}
|
||||
|
||||
public static boolean checkY(Location location,int yMax,int yMin){
|
||||
if (location == null){
|
||||
throw new RuntimeException("checkY接收参数错误");
|
||||
}
|
||||
int blockY = location.getBlockY();
|
||||
return blockY >= yMin && blockY <= yMax;
|
||||
}
|
||||
|
||||
}
|
@ -0,0 +1,24 @@
|
||||
package com.yuyu.srwildentity.config.condition;
|
||||
|
||||
public enum SpawnEntityType {
|
||||
PROTOGENESIS(0),//mc原生实体
|
||||
MMENTITY(1),//MM怪物
|
||||
GERMENTITY(2),
|
||||
NULL(199999);//萌芽怪物
|
||||
|
||||
private final int id;
|
||||
public int getId() {
|
||||
return id;
|
||||
}
|
||||
SpawnEntityType(int id) {
|
||||
this.id = id;
|
||||
}
|
||||
public static SpawnEntityType fromId(int id) {
|
||||
for (SpawnEntityType type : SpawnEntityType.values()) {
|
||||
if (type.getId() == id) {
|
||||
return type;
|
||||
}
|
||||
}
|
||||
return NULL;
|
||||
}
|
||||
}
|
@ -0,0 +1,54 @@
|
||||
package com.yuyu.srwildentity.pojo;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.UUID;
|
||||
|
||||
/**
|
||||
* @BelongsProject: SrWildEntity
|
||||
* @BelongsPackage: com.yuyu.srwildentity.pojo
|
||||
* @FileName: PlayerRefreshinfo
|
||||
* @Author: 峰。
|
||||
* @Date: 2024/4/4-17:35
|
||||
* @Version: 1.0
|
||||
* @Description: 储存玩家相关的刷新信息
|
||||
*/
|
||||
public class PlayerRefreshinfo {
|
||||
private final String playerName;
|
||||
private Integer nums;
|
||||
private List<UUID> entityList;
|
||||
|
||||
public void addEntityList(UUID uuid){
|
||||
this.entityList.add(uuid);
|
||||
}
|
||||
|
||||
public void delEntityList(UUID uuid){
|
||||
|
||||
this.entityList.remove(uuid);
|
||||
}
|
||||
|
||||
public String getPlayerName() {
|
||||
return playerName;
|
||||
}
|
||||
|
||||
public Integer getNums() {
|
||||
return nums;
|
||||
}
|
||||
|
||||
public void setNums(Integer nums) {
|
||||
this.nums = nums;
|
||||
}
|
||||
|
||||
public List<UUID> getEntityList() {
|
||||
return entityList;
|
||||
}
|
||||
|
||||
public void setEntityList(List<UUID> entityList) {
|
||||
this.entityList = entityList;
|
||||
}
|
||||
|
||||
public PlayerRefreshinfo(String playerName, Integer nums,List<UUID> uuids) {
|
||||
this.playerName = playerName;
|
||||
this.nums = nums;
|
||||
this.entityList = uuids;
|
||||
}
|
||||
}
|
63
target/classes/biome.yml
Normal file
63
target/classes/biome.yml
Normal file
@ -0,0 +1,63 @@
|
||||
biome:
|
||||
- OCEAN
|
||||
- PLAINS
|
||||
- DESERT
|
||||
- EXTREME_HILLS
|
||||
- FOREST
|
||||
- TAIGA
|
||||
- SWAMPLAND
|
||||
- RIVER
|
||||
- HELL
|
||||
- SKY
|
||||
- FROZEN_OCEAN
|
||||
- FROZEN_RIVER
|
||||
- ICE_FLATS
|
||||
- ICE_MOUNTAINS
|
||||
- MUSHROOM_ISLAND
|
||||
- MUSHROOM_ISLAND_SHORE
|
||||
- BEACHES
|
||||
- DESERT_HILLS
|
||||
- FOREST_HILLS
|
||||
- TAIGA_HILLS
|
||||
- SMALLER_EXTREME_HILLS
|
||||
- JUNGLE
|
||||
- JUNGLE_HILLS
|
||||
- JUNGLE_EDGE
|
||||
- DEEP_OCEAN
|
||||
- STONE_BEACH
|
||||
- COLD_BEACH
|
||||
- BIRCH_FOREST
|
||||
- BIRCH_FOREST_HILLS
|
||||
- ROOFED_FOREST
|
||||
- TAIGA_COLD
|
||||
- TAIGA_COLD_HILLS
|
||||
- REDWOOD_TAIGA
|
||||
- REDWOOD_TAIGA_HILLS
|
||||
- EXTREME_HILLS_WITH_TREES
|
||||
- SAVANNA
|
||||
- SAVANNA_ROCK
|
||||
- MESA
|
||||
- MESA_ROCK
|
||||
- MESA_CLEAR_ROCK
|
||||
- VOID
|
||||
- MUTATED_PLAINS
|
||||
- MUTATED_DESERT
|
||||
- MUTATED_EXTREME_HILLS
|
||||
- MUTATED_FOREST
|
||||
- MUTATED_TAIGA
|
||||
- MUTATED_SWAMPLAND
|
||||
- MUTATED_ICE_FLATS
|
||||
- MUTATED_JUNGLE
|
||||
- MUTATED_JUNGLE_EDGE
|
||||
- MUTATED_BIRCH_FOREST
|
||||
- MUTATED_BIRCH_FOREST_HILLS
|
||||
- MUTATED_ROOFED_FOREST
|
||||
- MUTATED_TAIGA_COLD
|
||||
- MUTATED_REDWOOD_TAIGA
|
||||
- MUTATED_REDWOOD_TAIGA_HILLS
|
||||
- MUTATED_EXTREME_HILLS_WITH_TREES
|
||||
- MUTATED_SAVANNA
|
||||
- MUTATED_SAVANNA_ROCK
|
||||
- MUTATED_MESA
|
||||
- MUTATED_MESA_ROCK
|
||||
- MUTATED_MESA_CLEAR_ROCK
|
6
target/classes/biomeEntity.yml
Normal file
6
target/classes/biomeEntity.yml
Normal file
@ -0,0 +1,6 @@
|
||||
DESERT: #群系名称,下方标出该群系需要刷新的entity
|
||||
ENTITY: [ZOMBIE,PIG_ZOMBIE] #该群系刷新的entity,具体的怪物刷新配置需要去entityConfig.yml中配置,!!注意此处的实体配置一定要在实体配置文件中存在,否则会不会刷新!
|
||||
|
||||
|
||||
ROOFED_FOREST: #群系名称,下方标出该群系需要刷新的entity
|
||||
ENTITY: [ZOMBIE,PIG_ZOMBIE] #该群系刷新的entity,具体的怪物刷新配置需要去entityConfig.yml中配置,!!注意此处的实体配置一定要在实体配置文件中存在,否则会不会刷新!
|
3
target/classes/config.yml
Normal file
3
target/classes/config.yml
Normal file
@ -0,0 +1,3 @@
|
||||
RefreshTime: 10 #刷新时间,单位为s
|
||||
total: 12 #每个玩家每次刷新的实体数量
|
||||
num: 4 #单次刷新的数量,每RefreshTime秒刷新的数量
|
17
target/classes/plugin.yml
Normal file
17
target/classes/plugin.yml
Normal file
@ -0,0 +1,17 @@
|
||||
name: SrWildEntity
|
||||
version: '1.0-SNAPSHOT'
|
||||
main: com.yuyu.srwildentity.SrWildEntity
|
||||
description: 实体刷新插件
|
||||
authors: [Yuyu]
|
||||
commands:
|
||||
despawn:
|
||||
usage: /<command>
|
||||
aliases: [dsp]
|
||||
description: 只有op能使用的插件
|
||||
permission: op
|
||||
permission-message: 你没有使用权限!
|
||||
srwildentity:
|
||||
usage: /<command>
|
||||
description: 只有op能使用的插件
|
||||
permission: op
|
||||
permission-message: 你没有使用权限!
|
Loading…
x
Reference in New Issue
Block a user