~williewillus/simpleserversorter

a49b0c1deb09b820337d6ca95eaf9b64f59a3ff8 — Vincent Lee 3 years ago 2562ea9
Update to 1.16
M build.gradle => build.gradle +1 -1
@@ 1,5 1,5 @@
plugins {
	id 'fabric-loom' version '0.2.6-SNAPSHOT'
	id 'fabric-loom' version '0.4-SNAPSHOT'
	id 'maven-publish'
}


M gradle.properties => gradle.properties +5 -5
@@ 3,15 3,15 @@ org.gradle.jvmargs=-Xmx1G

# Fabric Properties
	# check these on https://fabricmc.net/use
	minecraft_version=1.15.2
	yarn_mappings=1.15.2+build.14
	loader_version=0.7.8+build.184
	minecraft_version=1.16
	yarn_mappings=1.16+build.1
	loader_version=0.8.8+build.202

# Mod Properties
	mod_version = 1.0.1
	mod_version = 1.1.0
	maven_group = williewillus
	archives_base_name = simple-server-sorter

# Dependencies
	# currently not on the main fabric site, check on the maven: https://maven.fabricmc.net/net/fabricmc/fabric-api/fabric-api
	fabric_version=0.4.32+build.292-1.15
	fabric_version=0.13.1+build.370-1.16

M src/main/java/com/williewillus/sss/InventorySlice.java => src/main/java/com/williewillus/sss/InventorySlice.java +18 -18
@@ 21,26 21,26 @@ public class InventorySlice implements Inventory {
			throw new IllegalArgumentException("Negative len");
		}

		if (start < 0 || start >= delegate.getInvSize()) {
		if (start < 0 || start >= delegate.size()) {
			throw new IllegalArgumentException("Start out of bounds: " + start);
		}

		int end = start + len - 1;
		if (end < 0 || end >= delegate.getInvSize()) {
		if (end < 0 || end >= delegate.size()) {
			throw new IllegalArgumentException("End out of bounds: " + end);
		}

	}

	@Override
	public int getInvSize() {
	public int size() {
		return len;
	}

	@Override
	public boolean isInvEmpty() {
	public boolean isEmpty() {
		for (int i = start; i < start + len; i++) {
			if (!getInvStack(i).isEmpty()) {
			if (!getStack(i).isEmpty()) {
				return false;
			}
		}


@@ 49,30 49,30 @@ public class InventorySlice implements Inventory {
	}

	private int shift(int slot) {
		if (slot < 0 || slot >= getInvSize()) {
			throw new IndexOutOfBoundsException(String.format("%d out of bounds [%d, %d)", slot, 0, getInvSize()));
		if (slot < 0 || slot >= size()) {
			throw new IndexOutOfBoundsException(String.format("%d out of bounds [%d, %d)", slot, 0, size()));
		}
		return start + slot;
	}

	@Override
	public ItemStack getInvStack(int slot) {
		return delegate.getInvStack(shift(slot));
	public ItemStack getStack(int slot) {
		return delegate.getStack(shift(slot));
	}

	@Override
	public ItemStack takeInvStack(int slot, int amount) {
		return delegate.takeInvStack(shift(slot), amount);
	public ItemStack removeStack(int slot, int amount) {
		return delegate.removeStack(shift(slot), amount);
	}

	@Override
	public ItemStack removeInvStack(int slot) {
		return delegate.removeInvStack(shift(slot));
	public ItemStack removeStack(int slot) {
		return delegate.removeStack(shift(slot));
	}

	@Override
	public void setInvStack(int slot, ItemStack stack) {
		delegate.setInvStack(shift(slot), stack);
	public void setStack(int slot, ItemStack stack) {
		delegate.setStack(shift(slot), stack);

	}



@@ 82,14 82,14 @@ public class InventorySlice implements Inventory {
	}

	@Override
	public boolean canPlayerUseInv(PlayerEntity player) {
		return delegate.canPlayerUseInv(player);
	public boolean canPlayerUse(PlayerEntity player) {
		return delegate.canPlayerUse(player);
	}

	@Override
	public void clear() {
		for (int i = start; i < start + len; i++) {
			delegate.setInvStack(i, ItemStack.EMPTY);
			delegate.setStack(i, ItemStack.EMPTY);
		}
	}
}

M src/main/java/com/williewillus/sss/SimpleServerSorter.java => src/main/java/com/williewillus/sss/SimpleServerSorter.java +2 -1
@@ 1,11 1,12 @@
package com.williewillus.sss;

import net.fabricmc.api.ModInitializer;
import net.fabricmc.fabric.api.command.v1.CommandRegistrationCallback;
import net.fabricmc.fabric.api.registry.CommandRegistry;

public class SimpleServerSorter implements ModInitializer {
	@Override
	public void onInitialize() {
		CommandRegistry.INSTANCE.register(false, SortCommand::register);
		CommandRegistrationCallback.EVENT.register(SortCommand::register);
	}
}

M src/main/java/com/williewillus/sss/SortCommand.java => src/main/java/com/williewillus/sss/SortCommand.java +2 -2
@@ 21,7 21,7 @@ import net.minecraft.util.math.BlockPos;
import java.util.Locale;

public class SortCommand {
	public static void register(CommandDispatcher<ServerCommandSource> disp) {
	public static void register(CommandDispatcher<ServerCommandSource> disp, boolean dediServer) {
		LiteralArgumentBuilder<ServerCommandSource> selfRoot = CommandManager.literal("sortSelf");
		LiteralArgumentBuilder<ServerCommandSource> targetRoot = CommandManager.literal("sortTargeted");



@@ 40,7 40,7 @@ public class SortCommand {
		ServerPlayerEntity player = ctx.getSource().getPlayer();
		Inventory inv = new InventorySlice(player.inventory, 9, 27);
		Sorter.sort(inv, strategy);
		player.playerContainer.sendContentUpdates();
		player.playerScreenHandler.sendContentUpdates();
		return Command.SINGLE_SUCCESS;
	}


M src/main/java/com/williewillus/sss/Sorter.java => src/main/java/com/williewillus/sss/Sorter.java +8 -8
@@ 1,17 1,17 @@
package com.williewillus.sss;

import net.minecraft.container.Container;
import net.minecraft.inventory.Inventory;
import net.minecraft.item.ItemStack;
import net.minecraft.screen.ScreenHandler;

import java.util.ArrayList;
import java.util.List;

public class Sorter {
	public static void sort(Inventory inventory, SortStrategy strategy) {
		List<ItemStack> tmp = new ArrayList<>(inventory.getInvSize());
		for (int i = 0; i < inventory.getInvSize(); i++) {
			tmp.add(inventory.getInvStack(i));
		List<ItemStack> tmp = new ArrayList<>(inventory.size());
		for (int i = 0; i < inventory.size(); i++) {
			tmp.add(inventory.getStack(i));
		}

		tmp.sort(strategy.comparator);


@@ 19,11 19,11 @@ public class Sorter {

		int i = 0;
		for (; i < tmp.size(); i++) {
			inventory.setInvStack(i, tmp.get(i));
			inventory.setStack(i, tmp.get(i));
		}

		while (i < inventory.getInvSize()) {
			inventory.setInvStack(i, ItemStack.EMPTY);
		while (i < inventory.size()) {
			inventory.setStack(i, ItemStack.EMPTY);
			i++;
		}
	}


@@ 33,7 33,7 @@ public class Sorter {
			ItemStack left = list.get(i);
			for (int j = i + 1; j < list.size(); j++) {
				ItemStack right = list.get(j);
				if (Container.canStacksCombine(left, right)) {
				if (ScreenHandler.canStacksCombine(left, right)) {
					int amount = Math.min(left.getItem().getMaxCount() - left.getCount(), right.getCount());
					left.increment(amount);
					right.decrement(amount);

M src/main/resources/fabric.mod.json => src/main/resources/fabric.mod.json +3 -2
@@ 22,7 22,8 @@
  },

  "depends": {
    "fabricloader": ">=0.7.4",
    "minecraft": "1.15.x"
    "fabricloader": ">=0.8.8",
    "fabric": ">=0.13",
    "minecraft": "1.16.x"
  }
}