Skip to content

Commit

Permalink
merged 1.18.x branch
Browse files Browse the repository at this point in the history
  • Loading branch information
Fallen-Breath committed Jul 9, 2022
1 parent 85b4a8a commit 6fe2ddd
Show file tree
Hide file tree
Showing 64 changed files with 1,735 additions and 187 deletions.
4 changes: 2 additions & 2 deletions build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -15,14 +15,14 @@ preprocess {
def mc115 = createNode('1.15.2' , 1_15_02, 'yarn')
def mc116 = createNode('1.16.5' , 1_16_05, 'yarn')
def mc117 = createNode('1.17.1' , 1_17_01, 'yarn')
// def mc118 = createNode('1.18.x' , 1_18_02, 'yarn')
def mc118 = createNode('1.18.x' , 1_18_02, 'yarn')
// def mc119 = createNode('1.19.x', 1_19_00, 'yarn')
// def mcSnapshot = createNode('future', 1_19_01, 'yarn')

mc115.link(mc114, file('versions/mapping-1.15-1.14.txt'))
mc115.link(mc116, file('versions/mapping-1.15-1.16.txt'))
mc116.link(mc117, file('versions/mapping-1.16-1.17.txt'))
// mc117.link(mc118, null)
mc117.link(mc118, file('versions/mapping-1.17-1.18.txt'))
// mc118.link(mcSnapshot, null)
}

Expand Down
2 changes: 1 addition & 1 deletion settings.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -31,7 +31,7 @@ def versions = Arrays.asList(
"1.15.2",
"1.16.5",
"1.17.1",
// "1.18.x",
"1.18.x",
// "1.19.x",
// "future",
)
Expand Down
38 changes: 34 additions & 4 deletions src/main/java/carpettisaddition/commands/info/InfoCommand.java
Original file line number Diff line number Diff line change
Expand Up @@ -13,12 +13,9 @@
import net.minecraft.fluid.Fluid;
import net.minecraft.server.command.ServerCommandSource;
import net.minecraft.server.world.BlockAction;
import net.minecraft.server.world.ServerTickScheduler;
import net.minecraft.server.world.ServerWorld;
import net.minecraft.text.BaseText;
import net.minecraft.util.math.BlockBox;
import net.minecraft.util.math.BlockPos;
import net.minecraft.world.ScheduledTick;
import net.minecraft.world.World;

import java.util.Collection;
Expand All @@ -27,6 +24,20 @@
import java.util.function.Function;
import java.util.stream.Collectors;

//#if MC >= 11800
//$$ import carpettisaddition.mixins.command.info.ChunkTickSchedulerAccessor;
//$$ import carpettisaddition.mixins.command.info.WorldTickSchedulerAccessor;
//$$ import net.minecraft.util.math.ChunkPos;
//$$ import net.minecraft.world.tick.ChunkTickScheduler;
//$$ import net.minecraft.world.tick.OrderedTick;
//$$ import net.minecraft.world.tick.WorldTickScheduler;
//$$ import java.util.Queue;
//#else
import net.minecraft.server.world.ServerTickScheduler;
import net.minecraft.util.math.BlockBox;
import net.minecraft.world.ScheduledTick;
//#endif

import static net.minecraft.server.command.CommandManager.literal;

public class InfoCommand extends AbstractCommand implements CommandExtender
Expand Down Expand Up @@ -110,6 +121,20 @@ private void appendBlockEventInfo(List<BaseText> result, List<BlockAction> block
}
}

//#if MC >= 11800
//$$ @SuppressWarnings("unchecked")
//$$ private <T> List<OrderedTick<T>> getTileTicksAt(WorldTickScheduler<T> wts, BlockPos pos)
//$$ {
//$$ ChunkTickScheduler<T> cts = ((WorldTickSchedulerAccessor<T>)wts).getChunkTickSchedulers().get(ChunkPos.toLong(pos));
//$$ if (cts != null)
//$$ {
//$$ Queue<OrderedTick<T>> queue = ((ChunkTickSchedulerAccessor<T>)cts).getTickQueue();
//$$ return queue.stream().filter(t -> t.pos().equals(pos)).sorted(OrderedTick.TRIGGER_TICK_COMPARATOR).collect(Collectors.toList());
//$$ }
//$$ return Collections.emptyList();
//$$ }
//#endif

public Collection<BaseText> showMoreBlockInfo(BlockPos pos, World world)
{
if (!(world instanceof ServerWorld))
Expand All @@ -118,16 +143,21 @@ public Collection<BaseText> showMoreBlockInfo(BlockPos pos, World world)
}
List<BaseText> result = Lists.newArrayList();

//#if MC >= 11800
//$$ List<OrderedTick<Block>> blockTileTicks = this.getTileTicksAt((WorldTickScheduler<Block>)world.getBlockTickScheduler(), pos);
//$$ List<OrderedTick<Fluid>> liquidTileTicks = this.getTileTicksAt((WorldTickScheduler<Fluid>)world.getFluidTickScheduler(), pos);
//#else
BlockBox bound =
//#if MC >= 11700
//$$ BlockBox.create
//#else
new BlockBox
//#endif
(pos, pos.add(1, 1, 1));

List<ScheduledTick<Block>> blockTileTicks = ((ServerTickScheduler<Block>)world.getBlockTickScheduler()).getScheduledTicks(bound, false, false);
List<ScheduledTick<Fluid>> liquidTileTicks = ((ServerTickScheduler<Fluid>)world.getFluidTickScheduler()).getScheduledTicks(bound, false, false);
//#endif

this.appendTileTickInfo(result, blockTileTicks, "Block Tile ticks", world.getTime(), Messenger::block);
this.appendTileTickInfo(result, liquidTileTicks, "Fluid Tile ticks", world.getTime(), Messenger::fluid);
List<BlockAction> blockEvents = ((ServerWorldAccessor)world).getPendingBlockActions().stream().filter(be -> be.getPos().equals(pos)).collect(Collectors.toList());
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,14 +7,11 @@
import com.mojang.brigadier.exceptions.CommandSyntaxException;
import net.minecraft.block.Block;
import net.minecraft.server.command.ServerCommandSource;
import net.minecraft.server.world.ServerTickScheduler;
import net.minecraft.util.math.BlockBox;
import net.minecraft.util.math.BlockPos;
import net.minecraft.world.TickPriority;
import org.jetbrains.annotations.Nullable;

import java.util.List;

import static com.mojang.brigadier.arguments.IntegerArgumentType.getInteger;
import static com.mojang.brigadier.arguments.IntegerArgumentType.integer;
import static net.minecraft.command.arguments.BlockPosArgumentType.blockPos;
Expand All @@ -24,14 +21,27 @@
import static net.minecraft.server.command.CommandManager.argument;
import static net.minecraft.server.command.CommandManager.literal;

//#if MC >= 11800
//$$ import net.minecraft.world.tick.WorldTickScheduler;
//#else
import net.minecraft.server.world.ServerTickScheduler;
import java.util.List;
//#endif

public class TileTickQueueController extends AbstractContainerController
{
public TileTickQueueController()
{
super("tile_tick");
}

private int remove(ServerTickScheduler<?> serverTickScheduler, BlockPos blockPos)
private int remove(
//#if MC >= 11800
//$$ WorldTickScheduler<?> tickScheduler,
//#else
ServerTickScheduler<?> serverTickScheduler,
//#endif
BlockPos blockPos)
{
BlockBox blockBox =
//#if MC >= 11700
Expand All @@ -40,8 +50,16 @@ private int remove(ServerTickScheduler<?> serverTickScheduler, BlockPos blockPos
new BlockBox
//#endif
(blockPos, blockPos.add(1, 1, 1));

//#if MC >= 11800
//$$ int sizeBefore = tickScheduler.getTickCount();
//$$ tickScheduler.clearNextTicks(blockBox);
//$$ int sizeAfter = tickScheduler.getTickCount();
//$$ return sizeBefore - sizeAfter;
//#else
List<?> removed = serverTickScheduler.getScheduledTicks(blockBox, true, false);
return removed.size();
//#endif
}

private int removeAt(ServerCommandSource source, BlockPos blockPos)
Expand Down Expand Up @@ -69,7 +87,13 @@ private int addTileTickEvent(CommandContext<ServerCommandSource> context, @Nulla
priority = TickPriority.byIndex((Integer)priorityArg);
}

source.getWorld().getBlockTickScheduler().schedule(blockPos, block, delay, priority);
source.getWorld().
//#if MC >= 11800
//$$ createAndScheduleBlockTick
//#else
getBlockTickScheduler().schedule
//#endif
(blockPos, block, delay, priority);
Messenger.tell(source, tr(
"scheduled",
Messenger.fancy(tr("item_name"), tr("item_description", Messenger.block(block), delay, priority.getIndex(), priority), null),
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,6 @@
import com.mojang.brigadier.builder.LiteralArgumentBuilder;
import com.mojang.brigadier.exceptions.CommandSyntaxException;
import net.minecraft.network.MessageType;
import net.minecraft.network.Packet;
import net.minecraft.network.PacketDeflater;
import net.minecraft.server.command.ServerCommandSource;
import net.minecraft.server.network.ServerPlayerEntity;
Expand All @@ -31,6 +30,13 @@
import static net.minecraft.server.command.CommandManager.argument;
import static net.minecraft.server.command.CommandManager.literal;

//#if MC >= 11800
//$$ import net.minecraft.util.math.ChunkSectionPos;
//$$ import org.apache.commons.lang3.mutable.MutableObject;
//#else
import net.minecraft.network.Packet;
//#endif

//#if MC >= 11600
//$$ import net.minecraft.network.packet.s2c.play.GameMessageS2CPacket;
//$$ import net.minecraft.util.Util;
Expand Down Expand Up @@ -138,10 +144,19 @@ private int refreshChunks(ServerCommandSource source, @Nullable ChunkPos chunkPo
ThreadedAnvilChunkStorageAccessor chunkStorage = (ThreadedAnvilChunkStorageAccessor)source.getPlayer().getServerWorld().getChunkManager().threadedAnvilChunkStorage;
MutableInt counter = new MutableInt(0);
Consumer<ChunkPos> chunkRefresher = pos -> {
chunkStorage.invokeSendWatchPackets(player, pos, new Packet[2], false, true);
chunkStorage.invokeSendWatchPackets(
player, pos,
//#if MC >= 11800
//$$ new MutableObject<>(),
//#else
new Packet[2],
//#endif
false, true
);
counter.add(1);
};
Predicate<ChunkPos> inPlayerViewDistance = pos -> ThreadedAnvilChunkStorageAccessor.invokeGetChebyshevDistance(pos, player, true) <= chunkStorage.getWatchDistance();

Predicate<ChunkPos> inPlayerViewDistance = pos -> isChunkInsideRange(pos, player, chunkStorage.getWatchDistance());
if (chunkPos != null)
{
if (inPlayerViewDistance.test(chunkPos))
Expand Down Expand Up @@ -204,6 +219,16 @@ private int refreshSelectedChunk(ServerCommandSource source, int x, int z) throw
private int refreshChunksInRange(ServerCommandSource source, int distance) throws CommandSyntaxException
{
ServerPlayerEntity player = source.getPlayer();
return this.refreshChunks(source, null, chunkPos -> ThreadedAnvilChunkStorageAccessor.invokeGetChebyshevDistance(chunkPos, player, true) <= distance);
return this.refreshChunks(source, null, chunkPos -> isChunkInsideRange(chunkPos, player, distance));
}

private static boolean isChunkInsideRange(ChunkPos chunkPos, ServerPlayerEntity player, int distance)
{
//#if MC >= 11800
//$$ ChunkSectionPos watchedSection = player.getWatchedSection();
//$$ return ThreadedAnvilChunkStorageAccessor.invokeIsChunkWithinEuclideanDistanceRange(chunkPos.x, chunkPos.z, watchedSection.getSectionX(), watchedSection.getSectionZ(), distance);
//#else
return ThreadedAnvilChunkStorageAccessor.invokeGetChebyshevDistance(chunkPos, player, true) <= distance;
//#endif
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -78,13 +78,24 @@ private String getCommandBase()
return String.format("/%s %s", SupplierCounterCommand.PREFIX, this.color.getName().toLowerCase());
}

private long getTotal()
{
return this.counter.values().
//#if MC >= 11800
//$$ longStream().
//#else
stream().mapToLong(x -> x).
//#endif
sum();
}

public BaseText reportBrief(boolean realTime)
{
BaseText content;
if (this.isRunning())
{
long ticks = CounterUtil.getTimeElapsed(this.startTick, this.startMillis, realTime);
long total = this.counter.values().stream().mapToLong(x -> x).sum();
long total = this.getTotal();
content = Messenger.s(String.format("%d, %.1f/h, %.1f min", total, total / CounterUtil.tickToHour(ticks), CounterUtil.tickToMinute(ticks)));
}
else
Expand All @@ -106,7 +117,7 @@ public List<BaseText> report(boolean realTime)
}

long ticks = CounterUtil.getTimeElapsed(this.startTick, this.startMillis, realTime);
long total = this.counter.values().stream().mapToLong(x -> x).sum();
long total = this.getTotal();

BaseText realtimeSuffix = realTime ?
Messenger.c("g (", Messenger.formatting(tr("realtime"), "g"), "g )") :
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,62 @@
package carpettisaddition.commands.spawn.mobcapsLocal;

import carpettisaddition.commands.CommandExtender;
import carpettisaddition.translations.TranslationContext;
import com.mojang.brigadier.builder.LiteralArgumentBuilder;
import net.minecraft.server.command.ServerCommandSource;

//#if MC >= 11800
//$$ import carpettisaddition.logging.loggers.mobcapsLocal.MobcapsLocalLogger;
//$$ import carpettisaddition.mixins.command.mobcapsLocal.SpawnCommandAccessor;
//$$ import carpettisaddition.utils.Messenger;
//$$ import com.mojang.brigadier.exceptions.CommandSyntaxException;
//$$ import net.minecraft.command.argument.EntityArgumentType;
//$$ import net.minecraft.server.network.ServerPlayerEntity;
//$$ import static net.minecraft.command.argument.EntityArgumentType.getPlayer;
//$$ import static net.minecraft.server.command.CommandManager.argument;
//$$ import static net.minecraft.server.command.CommandManager.literal;
//#endif

public class MobcapsLocalCommand extends TranslationContext implements CommandExtender
{
private static final MobcapsLocalCommand INSTANCE = new MobcapsLocalCommand();

private MobcapsLocalCommand()
{
super("command.spawn.mobcapsLocal");
}

public static MobcapsLocalCommand getInstance()
{
return INSTANCE;
}

@Override
public void extendCommand(LiteralArgumentBuilder<ServerCommandSource> builder)
{
//#if MC >= 11800
//$$ builder.then(literal("mobcapsLocal").
//$$ executes(c -> showLocalMobcaps(c.getSource(), c.getSource().getPlayer())).
//$$ then(argument("player", EntityArgumentType.player()).
//$$ executes(c -> showLocalMobcaps(c.getSource(), getPlayer(c, "player")))
//$$ )
//$$ );
//#endif
}

//#if MC >= 11800
//$$ private int showLocalMobcaps(ServerCommandSource source, ServerPlayerEntity targetPlayer) throws CommandSyntaxException
//$$ {
//$$ int[] ret = new int[1];
//$$ MobcapsLocalLogger.getInstance().withLocalMobcapContext(
//$$ targetPlayer,
//$$ () -> {
//$$ Messenger.tell(source, tr("info", targetPlayer.getDisplayName()));
//$$ ret[0] = SpawnCommandAccessor.invokeGeneralMobcaps(source);
//$$ },
//$$ () -> ret[0] = 0
//$$ );
//$$ return ret[0];
//$$ }
//#endif
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
package carpettisaddition.helpers.rule.optimizedFastEntityMovement;

import net.minecraft.entity.Entity;
import net.minecraft.util.math.Box;
import net.minecraft.util.shape.VoxelShape;
import net.minecraft.world.CollisionView;

import java.util.stream.Stream;

@FunctionalInterface
public interface CollisionBoxGetter
{
//#if MC >= 11800
//$$ Iterable<VoxelShape>
//#else
Stream<VoxelShape>
//#endif
get(CollisionView world, Entity entity, Box box);
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
package carpettisaddition.helpers.rule.optimizedFastEntityMovement;

import net.minecraft.entity.Entity;
import net.minecraft.util.math.Box;
import net.minecraft.util.math.Direction;
import net.minecraft.world.World;

public class OFEMContext
{
// basic info
public final World world;
public final Entity entity;

// for per getAxisOnlyBlockCollision call
public Direction.Axis axis;
public double movementOnAxis;
public Box entityBoundingBox;

public OFEMContext(World world, Entity entity)
{
this.world = world;
this.entity = entity;
}
}
Loading

0 comments on commit 6fe2ddd

Please sign in to comment.