add spawner state info

This commit is contained in:
dfsek
2021-01-05 01:23:54 -07:00
parent aa406d9b8b
commit d0a24f7041
2 changed files with 130 additions and 0 deletions

View File

@@ -6,6 +6,7 @@ import com.dfsek.terra.api.platform.block.state.BlockState;
import com.dfsek.terra.bukkit.world.block.BukkitBlock;
import com.dfsek.terra.bukkit.world.block.data.BukkitBlockData;
import org.bukkit.block.Container;
import org.bukkit.block.CreatureSpawner;
import org.bukkit.block.Sign;
public class BukkitBlockState implements BlockState {
@@ -18,6 +19,7 @@ public class BukkitBlockState implements BlockState {
public static BukkitBlockState newInstance(org.bukkit.block.BlockState block) {
if(block instanceof Container) return new BukkitContainer((Container) block);
if(block instanceof Sign) return new BukkitSign((Sign) block);
if(block instanceof CreatureSpawner) return new BukkitMobSpawner((CreatureSpawner) block);
return new BukkitBlockState(block);
}

View File

@@ -0,0 +1,128 @@
package com.dfsek.terra.bukkit.world.block.state;
import com.dfsek.terra.api.platform.block.state.MobSpawner;
import com.dfsek.terra.api.platform.block.state.SerialState;
import com.dfsek.terra.api.platform.world.entity.EntityType;
import com.dfsek.terra.bukkit.world.entity.BukkitEntityType;
import org.bukkit.block.CreatureSpawner;
import org.jetbrains.annotations.NotNull;
public class BukkitMobSpawner extends BukkitBlockState implements MobSpawner {
protected BukkitMobSpawner(CreatureSpawner block) {
super(block);
}
@Override
public EntityType getSpawnedType() {
return new BukkitEntityType(((CreatureSpawner) getHandle()).getSpawnedType());
}
@Override
public void setSpawnedType(@NotNull EntityType creatureType) {
((CreatureSpawner) getHandle()).setSpawnedType(((BukkitEntityType) creatureType).getHandle());
}
@Override
public int getDelay() {
return ((CreatureSpawner) getHandle()).getDelay();
}
@Override
public void setDelay(int delay) {
((CreatureSpawner) getHandle()).setDelay(delay);
}
@Override
public int getMinSpawnDelay() {
return ((CreatureSpawner) getHandle()).getMinSpawnDelay();
}
@Override
public void setMinSpawnDelay(int delay) {
((CreatureSpawner) getHandle()).setMinSpawnDelay(delay);
}
@Override
public int getMaxSpawnDelay() {
return ((CreatureSpawner) getHandle()).getMaxSpawnDelay();
}
@Override
public void setMaxSpawnDelay(int delay) {
((CreatureSpawner) getHandle()).setMaxSpawnDelay(delay);
}
@Override
public int getSpawnCount() {
return ((CreatureSpawner) getHandle()).getSpawnCount();
}
@Override
public void setSpawnCount(int spawnCount) {
((CreatureSpawner) getHandle()).setSpawnCount(spawnCount);
}
@Override
public int getMaxNearbyEntities() {
return ((CreatureSpawner) getHandle()).getMaxNearbyEntities();
}
@Override
public void setMaxNearbyEntities(int maxNearbyEntities) {
((CreatureSpawner) getHandle()).setMaxNearbyEntities(maxNearbyEntities);
}
@Override
public int getRequiredPlayerRange() {
return ((CreatureSpawner) getHandle()).getRequiredPlayerRange();
}
@Override
public void setRequiredPlayerRange(int requiredPlayerRange) {
((CreatureSpawner) getHandle()).setRequiredPlayerRange(requiredPlayerRange);
}
@Override
public int getSpawnRange() {
return ((CreatureSpawner) getHandle()).getSpawnRange();
}
@Override
public void setSpawnRange(int spawnRange) {
((CreatureSpawner) getHandle()).setSpawnRange(spawnRange);
}
@Override
public void applyState(String state) {
SerialState.parse(state).forEach((k, v) -> {
switch(k) {
case "type":
setSpawnedType(new BukkitEntityType(org.bukkit.entity.EntityType.valueOf(v)));
return;
case "delay":
setDelay(Integer.parseInt(v));
return;
case "min_delay":
setMinSpawnDelay(Integer.parseInt(v));
return;
case "max_delay":
setMaxSpawnDelay(Integer.parseInt(v));
return;
case "count":
setSpawnCount(Integer.parseInt(v));
return;
case "range":
setSpawnRange(Integer.parseInt(v));
return;
case "max_nearby":
setMaxNearbyEntities(Integer.parseInt(v));
return;
case "activate":
setRequiredPlayerRange(Integer.parseInt(v));
return;
default:
throw new IllegalArgumentException("Invalid property: " + k);
}
});
}
}