Skip to content

Commit 70b35a2

Browse files
committed
Three fixes
- Fix ClosingRiftFX - Fix pocket command - Fix teleportation
1 parent 02f22dd commit 70b35a2

3 files changed

Lines changed: 19 additions & 42 deletions

File tree

src/main/java/com/zixiken/dimdoors/client/ClosingRiftFX.java

Lines changed: 1 addition & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -31,40 +31,10 @@ public ClosingRiftFX(World world, double x, double y, double z, double motionX,
3131
public void renderParticle(BufferBuilder buffer, Entity entityIn, float partialTicks, float rotationX,
3232
float rotationZ, float rotationYZ, float rotationXY, float rotationXZ) {
3333
if (!twinkle || particleAge < particleMaxAge / 3 || (particleAge + particleMaxAge) / 3 % 2 == 0) {
34-
doRenderParticle(buffer, partialTicks, rotationX, rotationZ, rotationYZ, rotationXY, rotationXZ);
34+
super.renderParticle(buffer, entityIn, partialTicks, rotationX, rotationZ, rotationYZ, rotationXY, rotationXZ);
3535
}
3636
}
3737

38-
public void doRenderParticle(BufferBuilder worldRenderer, float par2, float par3, float par4,
39-
float par5, float par6, float par7) {
40-
float var8 = super.particleTextureIndexX % 16 / 16.0F;
41-
float var9 = var8 + 0.0624375F;
42-
float var10 = particleTextureIndexX / 16 / 16.0F;
43-
float var11 = var10 + 0.0624375F;
44-
float var12 = 0.1F * particleScale;
45-
float var13 = (float) (prevPosX + (posX - prevPosX) * par2 - interpPosX);
46-
float var14 = (float) (prevPosY + (posY - prevPosY) * par2 - interpPosY);
47-
float var15 = (float) (prevPosZ + (posZ - prevPosZ) * par2 - interpPosZ);
48-
float var16 = 0.8F;
49-
50-
worldRenderer.pos(var13 - par3 * var12 - par6 * var12, var14 - par4 * var12, var15 - par5 * var12 - par7 * var12)
51-
.tex(var9, var11)
52-
.color(particleRed * var16, particleGreen * var16, particleBlue * var16, (float) .7)
53-
.endVertex();
54-
worldRenderer.pos(var13 - par3 * var12 + par6 * var12, var14 + par4 * var12, var15 - par5 * var12 + par7 * var12)
55-
.tex(var9, var10)
56-
.color(particleRed * var16, particleGreen * var16, particleBlue * var16, (float) .7)
57-
.endVertex();
58-
worldRenderer.pos(var13 + par3 * var12 + par6 * var12, var14 + par4 * var12, var15 + par5 * var12 + par7 * var12)
59-
.tex(var8, var10)
60-
.color(particleRed * var16, particleGreen * var16, particleBlue * var16, (float) .7)
61-
.endVertex();
62-
worldRenderer.pos(var13 + par3 * var12 - par6 * var12, var14 - par4 * var12, var15 + par5 * var12 - par7 * var12)
63-
.tex(var8, var11)
64-
.color(particleRed * var16, particleGreen * var16, particleBlue * var16, (float) .7)
65-
.endVertex();
66-
}
67-
6838
/**
6939
* Called to update the entity's position/logic.
7040
*/

src/main/java/com/zixiken/dimdoors/shared/commands/PocketCommand.java

Lines changed: 10 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -46,9 +46,9 @@ public List<String> getAliases() {
4646
}
4747

4848
@Override
49-
public void execute(MinecraftServer server, ICommandSender sender, String[] args) throws CommandException { // TODO: option to replace current pocket
49+
public void execute(MinecraftServer server, ICommandSender sender, String[] args) throws CommandException { // TODO: more pocket commands (replace pocket, get ID, teleport to pocket, etc.)
5050
// Check correct number of arguments
51-
if (args.length > 2 || args.length > 3) {
51+
if (args.length < 2 || args.length > 3) {
5252
sender.sendMessage(new TextComponentString("[DimDoors] Usage: /" + getUsage(sender)));
5353
return;
5454
}
@@ -79,24 +79,26 @@ public void execute(MinecraftServer server, ICommandSender sender, String[] args
7979
}
8080

8181
// Check if the schematic exists
82-
if (!SchematicHandler.INSTANCE.getTemplateGroups().contains(name)) {
82+
if (!SchematicHandler.INSTANCE.getTemplateGroups().contains(group)) {
8383
DimDoors.chat(player, "Group " + group + " not found");
8484
return;
85-
} else if (!SchematicHandler.INSTANCE.getTemplateNames(name).contains(group)) {
85+
} else if (!SchematicHandler.INSTANCE.getTemplateNames(group).contains(name)) {
8686
DimDoors.chat(player, "Schematic " + name + " not found in group " + group);
8787
return;
8888
}
8989

90-
// Generate the schematic and teleport the player to it
91-
DimDoors.chat(player, "Generating schematic " + args[1]);
92-
PocketTemplate template = SchematicHandler.INSTANCE.getTemplate(args[0], args[1]);
90+
// Generate the schematic
91+
DimDoors.chat(player, "Generating schematic " + name);
92+
PocketTemplate template = SchematicHandler.INSTANCE.getTemplate(group, name);
9393
Pocket pocket = PocketGenerator.generatePocketFromTemplate(WorldUtils.getDim(player.world), template, new VirtualLocation(0, 0, 0, 0,0));
9494
if (setup) pocket.setup();
95+
96+
// Teleport the player there
9597
if (pocket.getEntrance() != null) {
9698
TileEntityRift entrance = (TileEntityRift) player.world.getTileEntity(pocket.getEntrance().getPos());
9799
entrance.teleportTo(player);
98100
} else {
99-
TeleportUtils.teleport(player, new Location(player.world, pocket.getX(), 0, pocket.getZ()), 0, 0);
101+
TeleportUtils.teleport(player, new Location(player.world, pocket.getX(), 20, pocket.getZ()), 0, 0);
100102
}
101103
} else {
102104
DimDoors.log.info("Not executing command /" + getName() + " because it wasn't sent by a player.");

src/main/java/com/zixiken/dimdoors/shared/util/TeleportUtils.java

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@ public static Entity teleport(Entity entity, Location location) {
2424
}
2525

2626
public static Entity teleport(Entity entity, Location location, float yaw, float pitch) {
27-
return teleport(entity, location.getDimID(), location.getPos().getX(), location.getPos().getY(), location.getPos().getZ(), yaw, pitch);
27+
return teleport(entity, location.getDimID(), location.getPos().getX() + .5, location.getPos().getY(), location.getPos().getZ() + .5, yaw, pitch);
2828
}
2929

3030
public static Entity teleport(Entity entity, BlockPos pos, float yaw, float pitch) {
@@ -76,9 +76,14 @@ public static Entity teleport(Entity entity, int newDimension, double x, double
7676
if (entity instanceof EntityPlayerMP) {
7777
EntityPlayerMP player = (EntityPlayerMP) entity;
7878
try {
79-
Field invulnerableDimensionChange = EntityPlayerMP.class.getDeclaredField("invulnerableDimensionChange"); // Prevents cancelling the position change in survival.
79+
Field invulnerableDimensionChange;
80+
try {
81+
invulnerableDimensionChange = EntityPlayerMP.class.getDeclaredField("field_184851_cj"); // If this breaks, check that Minecraft didn't rename the field
82+
} catch (NoSuchFieldException e) { // Running on deobfuscated Minecraft
83+
invulnerableDimensionChange = EntityPlayerMP.class.getDeclaredField("invulnerableDimensionChange");
84+
}
8085
invulnerableDimensionChange.setAccessible(true);
81-
invulnerableDimensionChange.setBoolean(player, true); // without this, there's a chance that the new player position gets cancelled
86+
invulnerableDimensionChange.setBoolean(player, true); // Prevent Minecraft from cancelling the position change being too big if the player is not in creative
8287
} catch (NoSuchFieldException|IllegalAccessException e) {
8388
throw new RuntimeException(e);
8489
}

0 commit comments

Comments
 (0)