Skip to content

Commit

Permalink
Fix some portal bug
Browse files Browse the repository at this point in the history
  • Loading branch information
Mgazul committed Jun 24, 2024
1 parent 94bd7cf commit b34ef97
Show file tree
Hide file tree
Showing 7 changed files with 33 additions and 43 deletions.
4 changes: 3 additions & 1 deletion .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -48,4 +48,6 @@ changelog.txt
/logs/
/forge/**/build/
/forge/**/out/
/forge/**/run/
/forge/**/run/
/paper/
/nms-patches/
Original file line number Diff line number Diff line change
Expand Up @@ -470,7 +470,7 @@
}
}

@@ -701,26 +_,58 @@
@@ -701,26 +_,59 @@
}

private boolean m_9216_() {
Expand Down Expand Up @@ -526,9 +526,11 @@
+ // CraftBukkit end
this.f_8927_ = true;
ServerLevel serverlevel = this.m_284548_();
ResourceKey<Level> resourcekey = serverlevel.m_46472_();
- ResourceKey<Level> resourcekey = serverlevel.m_46472_();
- if (resourcekey == Level.f_46430_ && p_9180_.m_46472_() == Level.f_46428_) {
+ if (resourcekey == Level.f_46430_ && p_9180_.m_46472_() == Level.f_46428_ && teleporter.isVanilla()) { //Forge: Fix non-vanilla teleporters triggering end credits
+ ResourceKey<LevelStem> resourcekey = serverlevel.getTypeKey();
+ ResourceKey<Level> resourcekey_o = serverlevel.m_46472_();
+ if (resourcekey == LevelStem.f_63973_ && serverlevel != null && p_9180_.getTypeKey() == LevelStem.f_63971_ && teleporter.isVanilla()) { //Forge: Fix non-vanilla teleporters triggering end credits
+ this.f_8927_ = true; // CraftBukkit - Moved down from above
this.m_19877_();
this.m_284548_().m_143261_(this, Entity.RemovalReason.CHANGED_DIMENSION);
Expand All @@ -551,10 +553,11 @@
if (portalinfo != null) {
+ Entity e = teleporter.placeEntity(this, serverlevel, p_9180_, this.m_146908_(), spawnPortal -> {//Forge: Start vanilla logic
serverlevel.m_46473_().m_6180_("moving");
if (resourcekey == Level.f_46428_ && p_9180_.m_46472_() == Level.f_46429_) {
- if (resourcekey == Level.f_46428_ && p_9180_.m_46472_() == Level.f_46429_) {
+ if (resourcekey == LevelStem.f_63971_ && p_9180_.getTypeKey() == LevelStem.f_63972_) { // CraftBukkit
this.f_8933_ = this.m_20182_();
- } else if (p_9180_.m_46472_() == Level.f_46430_) {
+ } else if (spawnPortal && p_9180_.m_46472_() == Level.f_46430_) {
+ } else if (spawnPortal && p_9180_.getTypeKey() == LevelStem.f_63973_) { // CraftBukkit
this.m_9006_(p_9180_, BlockPos.m_274446_(portalinfo.f_77676_));
}

Expand Down Expand Up @@ -582,7 +585,7 @@
this.f_8920_ = -1;
this.f_8917_ = -1.0F;
this.f_8918_ = -1;
+ net.minecraftforge.event.ForgeEventFactory.firePlayerChangedDimensionEvent(this, resourcekey, p_9180_.m_46472_());
+ net.minecraftforge.event.ForgeEventFactory.firePlayerChangedDimensionEvent(this, resourcekey_o, p_9180_.m_46472_());
+ // CraftBukkit start
+ PlayerChangedWorldEvent changeEvent = new PlayerChangedWorldEvent(this.getBukkitEntity(), serverlevel.getWorld());
+ this.f_19853_.getCraftServer().getPluginManager().callEvent(changeEvent);
Expand Down
11 changes: 8 additions & 3 deletions patches/minecraft/net/minecraft/world/entity/Entity.java.patch
Original file line number Diff line number Diff line change
Expand Up @@ -937,11 +937,16 @@
protected boolean m_269011_() {
return true;
}
@@ -2027,11 +_,17 @@
ResourceKey<Level> resourcekey = this.m_9236_().m_46472_() == Level.f_46429_ ? Level.f_46428_ : Level.f_46429_;
@@ -2024,14 +_,20 @@
ServerLevel serverlevel = (ServerLevel)this.m_9236_();
if (this.f_19817_) {
MinecraftServer minecraftserver = serverlevel.m_7654_();
- ResourceKey<Level> resourcekey = this.m_9236_().m_46472_() == Level.f_46429_ ? Level.f_46428_ : Level.f_46429_;
+ ResourceKey<Level> resourcekey = this.m_9236_().getTypeKey() == LevelStem.f_63972_ ? Level.f_46428_ : Level.f_46429_;
ServerLevel serverlevel1 = minecraftserver.m_129880_(resourcekey);
if (serverlevel1 != null && minecraftserver.m_7079_() && !this.m_20159_() && this.f_19818_++ >= i) {
- if (serverlevel1 != null && minecraftserver.m_7079_() && !this.m_20159_() && this.f_19818_++ >= i) {
- this.m_9236_().m_46473_().m_6180_("portal");
+ if (true && serverlevel1 != null && minecraftserver.m_7079_() && !this.m_20159_() && this.f_19818_++ >= i) { // CraftBukkit
+ this.f_19853_.m_46473_().m_6180_("portal");
this.f_19818_ = i;
this.m_20091_();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -26,8 +26,12 @@

public class EndPortalBlock extends BaseEntityBlock {
protected static final VoxelShape f_53014_ = Block.m_49796_(0.0D, 6.0D, 0.0D, 16.0D, 12.0D, 16.0D);
@@ -39,10 +_,26 @@
ResourceKey<Level> resourcekey = p_53026_.m_46472_() == Level.f_46430_ ? Level.f_46428_ : Level.f_46430_;
@@ -36,13 +_,29 @@

public void m_7892_(BlockState p_53025_, Level p_53026_, BlockPos p_53027_, Entity p_53028_) {
if (p_53026_ instanceof ServerLevel && p_53028_.m_6072_() && Shapes.m_83157_(Shapes.m_83064_(p_53028_.m_20191_().m_82386_((double)(-p_53027_.m_123341_()), (double)(-p_53027_.m_123342_()), (double)(-p_53027_.m_123343_()))), p_53025_.m_60808_(p_53026_, p_53027_), BooleanOp.f_82689_)) {
- ResourceKey<Level> resourcekey = p_53026_.m_46472_() == Level.f_46430_ ? Level.f_46428_ : Level.f_46430_;
+ ResourceKey<Level> resourcekey = p_53026_.getTypeKey() == LevelStem.f_63973_ ? Level.f_46428_ : Level.f_46430_;
ServerLevel serverlevel = ((ServerLevel)p_53026_).m_7654_().m_129880_(resourcekey);
if (serverlevel == null) {
+ }
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -29,11 +29,15 @@
private static final int f_164734_ = 3;
private static final int f_164735_ = 128;
private static final int f_164736_ = 16;
@@ -39,10 +_,19 @@
@@ -39,10 +_,23 @@
this.f_77648_ = p_77650_;
}

+ private AtomicInteger searchRadius = new AtomicInteger(-1);
+ // Mohist start
+ private final AtomicInteger searchRadius = new AtomicInteger(-1);
+ private final AtomicReference<Entity> mohist$entity = new AtomicReference<>();
+ private final AtomicInteger mohist$createRedius = new AtomicInteger(16);
+ // Mohist end
+
+ public Optional<BlockUtil.FoundRectangle> findPortalAround(BlockPos pPos, WorldBorder pWorldBorder, int i) {
+ searchRadius.set(i);
Expand All @@ -50,13 +54,10 @@
Optional<PoiRecord> optional = poimanager.m_27166_((p_230634_) -> {
return p_230634_.m_203565_(PoiTypes.f_218064_);
}, p_192986_, i, PoiManager.Occupancy.ANY).filter((p_192981_) -> {
@@ -64,6 +_,15 @@
@@ -64,6 +_,12 @@
});
}

+ private AtomicReference<Entity> mohist$entity = new AtomicReference<>();
+ private AtomicInteger mohist$createRedius = new AtomicInteger(16);
+
+ public Optional<BlockUtil.FoundRectangle> createPortal(BlockPos pPos, Direction.Axis pAxis, Entity entity, int createRadius) {
+ mohist$entity.set(entity);
+ mohist$createRedius.set(createRadius);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,6 @@

import com.mohistmc.MohistMC;
import com.mohistmc.eventhandler.dispatcher.BlockEventDispatcher;
import com.mohistmc.eventhandler.dispatcher.BucketEventDispatcher;
import com.mohistmc.eventhandler.dispatcher.EntityEventDispatcher;
import com.mohistmc.eventhandler.dispatcher.ItemEventDispatcher;
import com.mohistmc.eventhandler.dispatcher.PlayerEventDispatcher;
Expand All @@ -31,7 +30,6 @@ public class EventDispatcherRegistry {

public static void init() {
MinecraftForge.EVENT_BUS.register(new PlayerEventDispatcher());
MinecraftForge.EVENT_BUS.register(new BucketEventDispatcher());
MinecraftForge.EVENT_BUS.register(new WorldEventDispatcher());
MinecraftForge.EVENT_BUS.register(new ItemEventDispatcher());
MinecraftForge.EVENT_BUS.register(new EntityEventDispatcher());
Expand Down

This file was deleted.

0 comments on commit b34ef97

Please sign in to comment.