5 Commits

Author SHA1 Message Date
DoggySazHi
0c4362d0cb tai i am starving (avoid checks for region data, temporary) 2024-06-03 23:49:58 -07:00
Taiyou06
6183877840 Update README.md 2024-05-08 00:17:36 +03:00
Altiami
f8c45602df Remove unused import statement 2024-05-05 09:43:56 -07:00
Altiami
e2591a635b Merge branch 'dev-multithreaded-tracker' 2024-05-05 09:42:05 -07:00
Altiami
218206b54b Hey, get back in there! 2024-04-04 14:48:34 -07:00
4 changed files with 46 additions and 3 deletions

View File

@@ -26,7 +26,7 @@ This plugin provides the following optimizations:
- [ ] World tick scheduler - [ ] World tick scheduler
- [x] Smarter statistics-ticking - [x] Smarter statistics-ticking
- [ ] Async Pathfinding - [ ] Async Pathfinding
- [ ] Multithreaded Tracker - [x] Multithreaded Tracker
**NOTE: This mod may or may not alter the default behaviors of some mob AI.** **NOTE: This mod may or may not alter the default behaviors of some mob AI.**

View File

@@ -22,7 +22,6 @@ import javax.annotation.Nullable;
import java.util.HashMap; import java.util.HashMap;
import java.util.Map; import java.util.Map;
import java.util.concurrent.CompletionException; import java.util.concurrent.CompletionException;
import java.util.concurrent.atomic.AtomicBoolean;
import java.util.function.BooleanSupplier; import java.util.function.BooleanSupplier;
/** /**

View File

@@ -0,0 +1,43 @@
// Nitori Copyright (C) 2024 Gensokyo Reimagined
//
// This program is free software: you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by
// the Free Software Foundation, either version 3 of the License, or
// (at your option) any later version.
//
// This program is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details.
//
// You should have received a copy of the GNU General Public License
// along with this program. If not, see <https://www.gnu.org/licenses/>.
package net.gensokyoreimagined.nitori.core;
import io.papermc.paper.chunk.system.io.RegionFileIOThread;
import org.objectweb.asm.Opcodes;
import org.spongepowered.asm.mixin.Mixin;
import org.spongepowered.asm.mixin.injection.At;
import org.spongepowered.asm.mixin.injection.Coerce;
import org.spongepowered.asm.mixin.injection.Redirect;
@Mixin(io.papermc.paper.chunk.system.io.RegionFileIOThread.class)
public class MixinRegionFileIOThread {
// What if we didn't care about the region file calculation?
@Redirect(method = "loadDataAsyncInternal", at = @At(value = "FIELD", target = "Lio/papermc/paper/chunk/system/io/RegionFileIOThread$ImmediateCallbackCompletion;regionFileCalculation:Ljava/lang/Boolean;", opcode = Opcodes.GETFIELD))
private Boolean trickSkipCheck(@Coerce Object ignored) {
return Boolean.TRUE;
}
// What if we didn't need to set the region file calculation?
@Redirect(method = "loadDataAsyncInternal", at = @At(value = "FIELD", target = "Lio/papermc/paper/chunk/system/io/RegionFileIOThread$ImmediateCallbackCompletion;needsRegionFileTest:Z", opcode = Opcodes.GETFIELD))
private boolean trickSkipCheck2(@Coerce Object ignored) {
return false;
}
// What if we didn't check if the region file exists?
@Redirect(method = "loadDataAsyncInternal", at = @At(value = "INVOKE", target = "Lio/papermc/paper/chunk/system/io/RegionFileIOThread;doesRegionFileExist(IIZLio/papermc/paper/chunk/system/io/RegionFileIOThread$ChunkDataController;)Ljava/lang/Boolean;"))
private Boolean trickSkipCheck3(int chunkX, int chunkZ, boolean intendingToBlock, RegionFileIOThread.ChunkDataController taskController) {
return Boolean.TRUE;
}
}

View File

@@ -25,6 +25,7 @@
"MixinSpongeSIMD", "MixinSpongeSIMD",
"MixinWorldGenRegion", "MixinWorldGenRegion",
"ChunkMapMixin", "ChunkMapMixin",
"ChunkMapMixin$TrackedEntity" "ChunkMapMixin$TrackedEntity",
"MixinRegionFileIOThread"
] ]
} }