Fixed Herobrine's Graveyard getting generated above ground level in Minecraft 1.18 and newer.
This commit is contained in:
parent
c0db064b4f
commit
45ecd1aef9
@ -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));
|
||||
|
||||
}
|
||||
|
||||
|
@ -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"));
|
||||
|
@ -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")
|
||||
|
@ -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
|
||||
|
@ -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));
|
||||
}
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user