Skip to content

Commit

Permalink
Release 1.0.0
Browse files Browse the repository at this point in the history
Added Offline Player Support
  • Loading branch information
PotatoPresident authored Aug 28, 2020
2 parents 0db6792 + 411816a commit 1335c6c
Show file tree
Hide file tree
Showing 9 changed files with 194 additions and 170 deletions.
2 changes: 1 addition & 1 deletion build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@ sourceCompatibility = JavaVersion.VERSION_1_8
targetCompatibility = JavaVersion.VERSION_1_8

archivesBaseName = project.archives_base_name
version = project.mod_version
version = project.minecraft_version + "-" + project.mod_version
group = project.maven_group

dependencies {
Expand Down
4 changes: 2 additions & 2 deletions gradle.properties
Original file line number Diff line number Diff line change
Expand Up @@ -4,11 +4,11 @@ org.gradle.jvmargs=-Xmx1G
# check these on https://modmuss50.me/fabric.html
minecraft_version=1.16.2
yarn_mappings=1.16.2+build.26
loader_version=0.9.2+build.206
loader_version=0.9.1+build.205
# Mod Properties
mod_version=1.0.0
maven_group=us.potatoboy
archives_base_name=InvView
# Dependencies
# check this on https://modmuss50.me/fabric.html
fabric_version=0.19.0+build.398-1.16
fabric_version=0.18.0+build.397-1.16
51 changes: 51 additions & 0 deletions src/main/java/us/potatoboy/invview/CombinedInv.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,51 @@
package us.potatoboy.invview;

import net.minecraft.entity.player.PlayerEntity;
import net.minecraft.entity.player.PlayerInventory;
import net.minecraft.inventory.EnderChestInventory;
import net.minecraft.item.ItemConvertible;
import net.minecraft.item.ItemStack;
import net.minecraft.item.Items;
import net.minecraft.server.network.ServerPlayerEntity;
import net.minecraft.util.collection.DefaultedList;

public class CombinedInv extends PlayerInventory {
private PlayerInventory inventory;

public CombinedInv(ServerPlayerEntity player) {
super(player);
inventory = player.inventory;
inventory.setStack(42, new ItemStack(Items.RED_STAINED_GLASS_PANE));
}

@Override
public int size() {
return 45;
}

@Override
public void onClose(PlayerEntity player) {
InvView.SavePlayerData((ServerPlayerEntity) super.player);
}

@Override
public ItemStack getStack(int slot) {
return inventory.getStack(slot);
}

@Override
public void setStack(int slot, ItemStack stack) {
if (slot > 40) return;
inventory.setStack(slot, stack);
}

@Override
public void markDirty() {
inventory.markDirty();
}

@Override
public ItemStack removeStack(int slot, int amount) {
return inventory.removeStack(slot, amount);
}
}
131 changes: 0 additions & 131 deletions src/main/java/us/potatoboy/invview/CombinedInventory.java

This file was deleted.

45 changes: 45 additions & 0 deletions src/main/java/us/potatoboy/invview/EnderChestSavable.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,45 @@
package us.potatoboy.invview;

import net.minecraft.entity.player.PlayerEntity;
import net.minecraft.inventory.EnderChestInventory;
import net.minecraft.inventory.SimpleInventory;
import net.minecraft.item.Item;
import net.minecraft.item.ItemStack;
import net.minecraft.nbt.ListTag;
import net.minecraft.server.network.ServerPlayerEntity;

public class EnderChestSavable extends EnderChestInventory {
private ServerPlayerEntity target;
private EnderChestInventory enderChestInventory;

public EnderChestSavable(ServerPlayerEntity target) {
super();
this.target = target;
this.enderChestInventory = target.getEnderChestInventory();
}

@Override
public void onClose(PlayerEntity player) {
InvView.SavePlayerData(target);
}

@Override
public void readTags(ListTag tags) {
enderChestInventory.readTags(tags);
}

@Override
public ItemStack getStack(int slot) {
return enderChestInventory.getStack(slot);
}

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

@Override
public void setStack(int slot, ItemStack stack) {
enderChestInventory.setStack(slot, stack);
}
}
50 changes: 43 additions & 7 deletions src/main/java/us/potatoboy/invview/InvView.java
Original file line number Diff line number Diff line change
Expand Up @@ -3,38 +3,74 @@
import com.mojang.brigadier.tree.LiteralCommandNode;
import net.fabricmc.api.ModInitializer;
import net.fabricmc.fabric.api.command.v1.CommandRegistrationCallback;
import net.minecraft.command.argument.EntityArgumentType;
import net.fabricmc.fabric.api.event.lifecycle.v1.ServerLifecycleEvents;
import net.fabricmc.fabric.api.event.network.C2SPacketTypeCallback;
import net.minecraft.command.argument.GameProfileArgumentType;
import net.minecraft.nbt.CompoundTag;
import net.minecraft.nbt.NbtIo;
import net.minecraft.server.MinecraftServer;
import net.minecraft.server.command.CommandManager;
import net.minecraft.server.command.ServerCommandSource;
import net.minecraft.server.network.ServerPlayerEntity;
import net.minecraft.util.Util;
import net.minecraft.util.WorldSavePath;
import org.apache.logging.log4j.LogManager;

import java.io.File;

public class InvView implements ModInitializer {
private static MinecraftServer minecraftServer;

@Override
public void onInitialize() {
CommandRegistrationCallback.EVENT.register((dispatcher, dedicated) -> {
//ViewInvCommand.register(dispatcher);

LiteralCommandNode<ServerCommandSource> viewNode = CommandManager
.literal("view")
.requires((source -> source.hasPermissionLevel(2)))
.build();

LiteralCommandNode<ServerCommandSource> invNode = CommandManager
.literal("inv")
.requires((source -> source.hasPermissionLevel(2)))
.then(CommandManager.argument("target", EntityArgumentType.player())
.executes(ViewCommand::inv))
.then(CommandManager.argument("target", GameProfileArgumentType.gameProfile())
.executes(ViewCommand::Inv))
.build();

LiteralCommandNode<ServerCommandSource> echestNode = CommandManager
.literal("echest")
.requires((source -> source.hasPermissionLevel(2)))
.then(CommandManager.argument("target", EntityArgumentType.player())
.executes(ViewCommand::echest))
.then(CommandManager.argument("target", GameProfileArgumentType.gameProfile())
.executes(ViewCommand::EChest))
.build();

dispatcher.getRoot().addChild(viewNode);
viewNode.addChild(invNode);
viewNode.addChild(echestNode);
});

ServerLifecycleEvents.SERVER_STARTING.register(this::onLogicalServerStarting);
}

private void onLogicalServerStarting(MinecraftServer server) {
minecraftServer = server;
}

public static MinecraftServer getMinecraftServer() {
return minecraftServer;
}

public static void SavePlayerData(ServerPlayerEntity player) {
File playerDataDir = minecraftServer.getSavePath(WorldSavePath.PLAYERDATA).toFile();
try {
CompoundTag compoundTag = player.toTag(new CompoundTag());
File file = File.createTempFile(player.getUuidAsString() + "-", ".dat", playerDataDir);
NbtIo.writeCompressed(compoundTag, file);
File file2 = new File(playerDataDir, player.getUuidAsString() + ".dat");
File file3 = new File(playerDataDir, player.getUuidAsString() + ".dat_old");
Util.backupAndReplace(file2, file, file3);
} catch (Exception var6) {
LogManager.getLogger().warn("Failed to save player data for {}", player.getName().getString());
}
}

}
Loading

0 comments on commit 1335c6c

Please sign in to comment.