Fixed Herobrine's Graveyard getting generated above ground level in Minecraft 1.18 and newer.

This commit is contained in:
David Berdik 2022-03-10 19:17:08 -05:00
parent c0db064b4f
commit 45ecd1aef9
5 changed files with 35 additions and 11 deletions

View File

@ -66,7 +66,7 @@ public class Graveyard extends Core {
cachePreGraveyardPositionToDisk(loc, player);
loc.setWorld(Bukkit.getServer().getWorld(Herobrine.getPluginCore().getConfigDB().HerobrineWorldName));
loc.setX(-2.49);
loc.setY(4);
loc.setY(Herobrine.getPluginCore().getConfigDB().graveyardYCoord);
loc.setZ(10.69);
loc.setYaw(-179.85f);
loc.setPitch(0.44999f);
@ -88,7 +88,8 @@ public class Graveyard extends Core {
public void Start() {
ticks = 0;
PluginCore.HerobrineNPC.moveTo(new Location(Bukkit.getServer().getWorld(Herobrine.getPluginCore().getConfigDB().HerobrineWorldName), -2.49, 4, -4.12));
PluginCore.HerobrineNPC.moveTo(new Location(Bukkit.getServer().getWorld(Herobrine.getPluginCore().getConfigDB().HerobrineWorldName),
-2.49, Herobrine.getPluginCore().getConfigDB().graveyardYCoord, -4.12));
HandlerInterval();
}
@ -138,17 +139,21 @@ public class Graveyard extends Core {
PluginCore.HerobrineNPC.lookAtPoint(ploc);
if (ticks == 1) {
PluginCore.HerobrineNPC.moveTo(
new Location(Bukkit.getServer().getWorld(Herobrine.getPluginCore().getConfigDB().HerobrineWorldName), -2.49, 4, -4.12));
new Location(Bukkit.getServer().getWorld(Herobrine.getPluginCore().getConfigDB().HerobrineWorldName), -2.49,
Herobrine.getPluginCore().getConfigDB().graveyardYCoord, -4.12));
} else if (ticks == 40) {
PluginCore.HerobrineNPC.moveTo(
new Location(Bukkit.getServer().getWorld(Herobrine.getPluginCore().getConfigDB().HerobrineWorldName), -2.49, 4, -0.5));
new Location(Bukkit.getServer().getWorld(Herobrine.getPluginCore().getConfigDB().HerobrineWorldName), -2.49,
Herobrine.getPluginCore().getConfigDB().graveyardYCoord, -0.5));
} else if (ticks == 60) {
PluginCore.HerobrineNPC.moveTo(
new Location(Bukkit.getServer().getWorld(Herobrine.getPluginCore().getConfigDB().HerobrineWorldName), -2.49, 4, 5.1));
new Location(Bukkit.getServer().getWorld(Herobrine.getPluginCore().getConfigDB().HerobrineWorldName), -2.49,
Herobrine.getPluginCore().getConfigDB().graveyardYCoord, 5.1));
} else if (ticks == 84) {
PluginCore.HerobrineNPC.moveTo(
new Location(Bukkit.getServer().getWorld(Herobrine.getPluginCore().getConfigDB().HerobrineWorldName), -2.49, 4, 7.5));
new Location(Bukkit.getServer().getWorld(Herobrine.getPluginCore().getConfigDB().HerobrineWorldName), -2.49,
Herobrine.getPluginCore().getConfigDB().graveyardYCoord, 7.5));
}

View File

@ -11,18 +11,18 @@ public class GraveyardWorld {
public static void Create() {
Location loc = new Location(Bukkit.getServer().getWorld(Herobrine.getPluginCore().getConfigDB().HerobrineWorldName), 0, 3, 0);
Location loc = new Location(Bukkit.getServer().getWorld(Herobrine.getPluginCore().getConfigDB().HerobrineWorldName), 0, -61, 0);
for (int x = -50; x <= 50; x++) {
for (int z = -50; z <= 50; z++) {
loc.getWorld().getBlockAt(x, 3, z).setType(Material.MYCELIUM);
loc.getWorld().getBlockAt(x, -61, z).setType(Material.MYCELIUM);
}
}
int MainX = -10;
int MainY = 3;
int MainY = -61;
int MainZ = -10;
StructureLoader structLoader = new StructureLoader(Herobrine.getPluginCore().getInputStreamData("/res/graveyard_world.yml"));

View File

@ -89,6 +89,15 @@ public class ConfigDB {
public boolean newVersionFound = false;
/* Starting with Minecraft 1.18, the Y coordinate used for the flat world generated for Herobrine's Graveyard is -61 instead of 3.
* This elevation change required graveyard generation as well as Herobrine and player location management to be shifted down to
* accommodate it. This change is only applied to graveyard worlds generated on 1.18 or newer, however, and would cause graveyards
* generated on older versions to not show Herobrine or the player in the right place. To work around this, we now use the
* "graveyardYCoord" variable to indicate the Y coordinate that should be used for Herobrine and the player when in the graveyard
* world. The default stored value is the one used for graveyard generated on 1.18 or newer. A conditional check will be used
* to change this value to 4 as part of the server launch process if doing so is appropriate. */
public double graveyardYCoord = -60;
private boolean isStartupDone = false;
final public String pluginVersionString = Bukkit.getServer().getPluginManager().getPlugin("Herobrine")

View File

@ -145,6 +145,16 @@ public class Herobrine extends JavaPlugin implements Listener {
wc.createWorld();
GraveyardWorld.Create();
/* Starting with Minecraft 1.18, the Y coordinate used for the flat world generated for Herobrine's Graveyard is -61 instead of 3.
* This elevation change required graveyard generation as well as Herobrine and player location management to be shifted down to
* accommodate it. This change is only applied to graveyard worlds generated on 1.18 or newer, however, and would cause graveyards
* generated on older versions to not show Herobrine or the player in the right place. To work around this, we use this conditional
* to set a "graveyardYCoord" configuration variable. By default, the value is set for a graveyard generated by 1.18 or newer. This
* conditional will check the position of the graveyard to determine if the value should be set for a pre-1.18 graveyard. */
if (Bukkit.getServer().getWorld(configdb.HerobrineWorldName).getBlockAt(0, 3, 0).getType() == Material.MYCELIUM) {
configdb.graveyardYCoord = 4;
}
}
// Spawn Herobrine

View File

@ -302,8 +302,8 @@ public class PlayerListener implements Listener {
if (event.getPlayer().getEntityId() != PluginCore.HerobrineEntityID) {
if (event.getPlayer().getWorld() == Bukkit.getServer().getWorld(Herobrine.getPluginCore().getConfigDB().HerobrineWorldName)) {
Player player = (Player) event.getPlayer();
player.teleport(new Location(Bukkit.getServer().getWorld(Herobrine.getPluginCore().getConfigDB().HerobrineWorldName), -2.49f, 4.f,
10.69f, -179.85f, 0.44999f));
player.teleport(new Location(Bukkit.getServer().getWorld(Herobrine.getPluginCore().getConfigDB().HerobrineWorldName), -2.49f,
Herobrine.getPluginCore().getConfigDB().graveyardYCoord, 10.69f, -179.85f, 0.44999f));
}
}