PaperMC / Paper

The most widely used, high performance Minecraft server that aims to fix gameplay and mechanics inconsistencies
https://papermc.io/
Other
9.98k stars 2.31k forks source link

Pistons do not work over bedrock level in nether #2023

Closed joecabezas closed 5 years ago

joecabezas commented 5 years ago

What behaviour is expected:

pistons to work

What behaviour is observed:

pistons do not work to redstone mechanics, attaching a lever to a piston does nothing

Steps/models to reproduce:

short video https://streamable.com/7l0j4

Plugin list:

MySkin 2.6 https://www.spigotmc.org/resources/myskin-1-8-1-14.52303/history

Paper build number:

git-Paper-11 (MC: 1.14) https://i.imgur.com/GVFrGIl.png

BillyGalbreath commented 5 years ago

Can confirm using Paper-15 with no plugins installed.

Also affects CraftBukkit and Spigot 1.14

In Vanilla pistons work fine.

joecabezas commented 5 years ago

corfirmed, paper-15 does not work too

Black-Hole commented 5 years ago

https://hub.spigotmc.org/jira/browse/SPIGOT-4779

BillyGalbreath commented 5 years ago

I have a confirmed fix in my fork: https://github.com/pl3xgaming/Purpur/blob/master/patches/server/0017-Fix-mis-mapped-getHeight-methods-for-World-and-IBloc.patch

The problem is World#getHeight() overrides IBlockAccess#getHeight() when these are in fact two different methods. In obfuscated form they are bhh.W() and bgr.I(), respectively.

joecabezas commented 5 years ago

@BillyGalbreath I took your changes for the following files

src/main/java/net/minecraft/server/IBlockAccess.java
src/main/java/net/minecraft/server/BlockPiston.java

And I can confirm this fixes this specific issue, but in your patch you also modifiy other classes like

 src/main/java/net/minecraft/server/ChunkConverter.java
 src/main/java/net/minecraft/server/ItemScaffolding.java
 src/main/java/net/minecraft/server/Navigation.java
 .../java/net/minecraft/server/RandomPositionGenerator.java
 src/main/java/net/minecraft/server/TileEntityBeacon.java
 src/main/java/net/minecraft/server/TileEntityConduit.java
 src/main/java/net/minecraft/server/World.java
 src/main/java/net/minecraft/server/WorldServer.java

Since I just joined the dev community just hours ago, I am not sure if those file changes are needed for Paper, or are they exclusive for Purpur

thanks for the time fixing this, I hope this gets into Paper

electronicboy commented 5 years ago

The issue is that there is a mappings conflict which ends up in two classes which are related having an overlapping method name, which ends up causing a method call to one actually calling the other, which causes issues as these two methods represent two different things; The changes billy has made are actually necessary to correct these broke method calls

joecabezas commented 5 years ago

that means this needs to be done anyways after 1.14.1?, or what are we waiting to fix this?, I can take @BillyGalbreath patch and create a patch for Paper if needed to fix it

BillyGalbreath commented 5 years ago

It's going to be fixed properly in CraftBukkit with the release of 1.14.1, you can use what I showed to fix it temporarily for now on 1.14.

joecabezas commented 5 years ago

thanks @BillyGalbreath for the support, I am new into minecraft dev, this will allow me to fix it temporally

joecabezas commented 5 years ago

confirmed this was fixed in 1.14.1, paper-20