Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Machine Ownership #1970

Open
wants to merge 15 commits into
base: 1.20.1
Choose a base branch
from
6 changes: 6 additions & 0 deletions dependencies.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -65,6 +65,12 @@ dependencies {
modImplementation(forge.javd) { transitive = false }
modRuntimeOnly("curse.maven:trenzalore-870210:4848244")

modCompileOnly(forge.ftbteams)
modCompileOnly(forge.ftblibrary)

modImplementation(forge.argonauts)
modImplementation(forge.resourceful)
YoungOnionMC marked this conversation as resolved.
Show resolved Hide resolved

// Runtime only testing mods
//modRuntimeOnly(forge.worldStripper)
}
20 changes: 18 additions & 2 deletions settings.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -35,7 +35,7 @@ dependencyResolutionManagement {
def auVersion = "1.20.1-0.6.0"

// Forge
def forgeVersion = "47.1.3"
def forgeVersion = "47.1.47"
def registrateForgeVersion = "MC1.20-1.3.3"
def createForgeVersion = "0.5.1.f-33"
def flywheelForgeVersion = "0.6.10-10"
Expand All @@ -44,6 +44,10 @@ dependencyResolutionManagement {
def curiosForgeVersion = "5.9.1"
def worldStripperForgeFile = "4578579"
def javdVersion = "4803995"
def ftbteamsForgeFile = "5267190"
def ftblibraryForgeFile = "5567591"
def argonautsForgeFile = "5263580"
def resourcefulForgeFile = "5659871"

// Libs
def quiltMappingsVersion = "5" // https://lambdaurora.dev/tools/import_quilt.html
Expand All @@ -58,7 +62,7 @@ dependencyResolutionManagement {
def mixinextrasVersion = "0.2.0"
def shimmerVersion = "0.2.4"
def lombokPluginVersion = "8.7.1"

forge {
version("forgeShortVersion", forgeVersion)
def minecraftForge = version("minecraftForge", "${minecraftVersion}-${forgeVersion}")
Expand Down Expand Up @@ -125,6 +129,18 @@ dependencyResolutionManagement {

def javd = version("javd", javdVersion)
library("javd", "curse.maven", "javd-370890").versionRef(javd)

def ftbteams = version("ftbteams", ftbteamsForgeFile)
library("ftbteams", "curse.maven", "ftb-teams-forge-404468").versionRef(ftbteams)

def ftblibrary = version("ftblibrary", ftblibraryForgeFile)
library("ftblibrary", "curse.maven", "ftb-library-forge-404465").versionRef(ftblibrary)

def argonautslib = version("argonauts", argonautsForgeFile)
library("argonauts", "curse.maven", "argonauts-845833").versionRef(argonautslib)

def resourceful = version("resourceful", resourcefulForgeFile)
library("resourceful", "curse.maven", "resourceful-lib-570073").versionRef(resourceful)
}

libs {
Expand Down
1 change: 1 addition & 0 deletions src/generated/resources/assets/gtceu/lang/en_ud.json
Original file line number Diff line number Diff line change
Expand Up @@ -27,6 +27,7 @@
"behavior.portable_scanner.local_hazard.nothing": "ɹ§buıɥʇoN9§ :ɐǝɹⱯ uI pɹɐzɐH ןɐɔoꞀ",
"behavior.portable_scanner.machine_disabled": "˙pǝןqɐsıᗡ",
"behavior.portable_scanner.machine_front_facing": "%s :buıɔɐℲ ʇuoɹℲ",
"behavior.portable_scanner.machine_ownership": "ɹ§%s :ǝuıןuOᄅ§ 'ɹ§%s :ɹǝuʍO ǝuıɥɔɐWᄅ§",
"behavior.portable_scanner.machine_power_loss": "˙ssoן ɹǝʍod oʇ ǝnp uʍop ʇnɥS",
"behavior.portable_scanner.machine_progress": "%s / %s :pɐoꞀ/ssǝɹboɹԀ",
"behavior.portable_scanner.machine_upwards_facing": "%s :buıɔɐℲ spɹɐʍd∩",
Expand Down
1 change: 1 addition & 0 deletions src/generated/resources/assets/gtceu/lang/en_us.json
Original file line number Diff line number Diff line change
Expand Up @@ -27,6 +27,7 @@
"behavior.portable_scanner.local_hazard.nothing": "Local Hazard In Area: §6Nothing§r",
"behavior.portable_scanner.machine_disabled": "Disabled.",
"behavior.portable_scanner.machine_front_facing": "Front Facing: %s",
"behavior.portable_scanner.machine_ownership": "§2Machine Owner: %s§r, §2Online: %s§r",
"behavior.portable_scanner.machine_power_loss": "Shut down due to power loss.",
"behavior.portable_scanner.machine_progress": "Progress/Load: %s / %s",
"behavior.portable_scanner.machine_upwards_facing": "Upwards Facing: %s",
Expand Down
8 changes: 8 additions & 0 deletions src/main/java/com/gregtechceu/gtceu/GTCEu.java
Original file line number Diff line number Diff line change
Expand Up @@ -86,6 +86,14 @@ public static boolean isJAVDLoaded() {
return LDLib.isModLoaded(GTValues.MODID_JAVD);
}

public static boolean isFTBTeamsLoaded() {
return LDLib.isModLoaded(GTValues.MODID_FTBTEAMS);
}

public static boolean isArgonautsLoaded() {
return LDLib.isModLoaded(GTValues.MODID_ARGONAUTS);
}

@Deprecated(forRemoval = true, since = "1.0.21")
public static boolean isHighTier() {
return GTCEuAPI.isHighTier();
Expand Down
4 changes: 3 additions & 1 deletion src/main/java/com/gregtechceu/gtceu/api/GTValues.java
Original file line number Diff line number Diff line change
Expand Up @@ -115,7 +115,9 @@ public static int[] tiersBetween(int minInclusive, int maxInclusive) {
MODID_CURIOS = "curios",
MODID_AE2WTLIB = "ae2wtlib",
MODID_SHIMMER = "shimmer",
MODID_JAVD = "javd";
MODID_JAVD = "javd",
MODID_FTBTEAMS = "ftbteams",
MODID_ARGONAUTS = "argonauts";

/**
* Spray painting compat modids
Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
package com.gregtechceu.gtceu.api.block;

import com.gregtechceu.gtceu.GTCEu;
import com.gregtechceu.gtceu.api.data.RotationState;
import com.gregtechceu.gtceu.api.item.IGTTool;
import com.gregtechceu.gtceu.api.item.MetaMachineItem;
Expand Down Expand Up @@ -46,11 +47,17 @@
import net.minecraft.world.phys.shapes.CollisionContext;
import net.minecraft.world.phys.shapes.VoxelShape;

import dev.ftb.mods.ftbteams.FTBTeamsAPIImpl;
import dev.ftb.mods.ftbteams.api.Team;
import earth.terrarium.argonauts.api.guild.Guild;
import earth.terrarium.argonauts.common.handlers.guild.GuildHandler;
import lombok.Getter;
import org.jetbrains.annotations.Nullable;

import java.util.List;
import java.util.Optional;
import java.util.Set;
import java.util.UUID;

import javax.annotation.ParametersAreNonnullByDefault;

Expand Down Expand Up @@ -127,6 +134,11 @@ public void setPlacedBy(Level pLevel, BlockPos pPos, BlockState pState, @Nullabl
ItemStack pStack) {
if (!pLevel.isClientSide) {
var machine = getMachine(pLevel, pPos);
if (machine != null) {
if (player instanceof ServerPlayer sPlayer) {
setMachineOwner(machine, sPlayer);
}
}
if (machine instanceof IDropSaveMachine dropSaveMachine) {
CompoundTag tag = pStack.getTag();
if (tag != null) {
Expand All @@ -139,6 +151,26 @@ public void setPlacedBy(Level pLevel, BlockPos pPos, BlockState pState, @Nullabl
}
}

public void setMachineOwner(MetaMachine machine, ServerPlayer player) {
if (GTCEu.isFTBTeamsLoaded()) {
Optional<Team> team = FTBTeamsAPIImpl.INSTANCE.getManager().getTeamForPlayerID(player.getUUID());
if (team.isPresent()) {
UUID teamUUID = team.get().getTeamId();
String name = team.get().getShortName();
machine.holder.setOwner(teamUUID, Team.class, name);
}
} else if (GTCEu.isArgonautsLoaded()) {
Guild guild = GuildHandler.read(player.server).get(player);
if (guild != null) {
UUID guildUUID = guild.id();
String name = guild.displayName().getString();
machine.holder.setOwner(guildUUID, Guild.class, name);
}
} else {
machine.holder.setOwner(player.getUUID(), ServerPlayer.class, player.getName().getString());
}
}

@Override
public void onPlace(BlockState state, Level level, BlockPos pos, BlockState oldState, boolean movedByPiston) {
super.onPlace(state, level, pos, oldState, movedByPiston);
Expand Down Expand Up @@ -282,6 +314,10 @@ public InteractionResult use(BlockState state, Level world, BlockPos pos, Player
ItemStack itemStack = player.getItemInHand(hand);
boolean shouldOpenUi = true;

if (machine != null && machine.holder.getOwnerUUID() == null && player instanceof ServerPlayer) {
setMachineOwner(machine, (ServerPlayer) player);
}

Set<GTToolType> types = ToolHelper.getToolTypes(itemStack);
if (machine != null && !types.isEmpty() && ToolHelper.canUse(itemStack)) {
var result = machine.onToolClick(types, itemStack, new UseOnContext(player, hand, hit));
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -25,10 +25,12 @@
import com.lowdragmc.lowdraglib.side.fluid.forge.FluidTransferHelperImpl;
import com.lowdragmc.lowdraglib.side.item.IItemTransfer;
import com.lowdragmc.lowdraglib.side.item.forge.ItemTransferHelperImpl;
import com.lowdragmc.lowdraglib.syncdata.annotation.DescSynced;
import com.lowdragmc.lowdraglib.syncdata.managed.MultiManagedStorage;

import net.minecraft.core.BlockPos;
import net.minecraft.core.Direction;
import net.minecraft.nbt.CompoundTag;
import net.minecraft.world.entity.player.Player;
import net.minecraft.world.item.ItemStack;
import net.minecraft.world.level.block.entity.BlockEntity;
Expand All @@ -41,17 +43,15 @@
import net.minecraftforge.common.capabilities.ForgeCapabilities;
import net.minecraftforge.common.util.LazyOptional;
import net.minecraftforge.energy.IEnergyStorage;
import net.minecraftforge.server.ServerLifecycleHooks;

import appeng.api.networking.IInWorldGridNodeHost;
import appeng.capabilities.Capabilities;
import lombok.Getter;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;

import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import java.util.Set;
import java.util.*;

/**
* @author KilaBash
Expand All @@ -63,6 +63,12 @@ public class MetaMachineBlockEntity extends BlockEntity implements IMachineBlock
public final MultiManagedStorage managedStorage = new MultiManagedStorage();
@Getter
public final MetaMachine metaMachine;
@DescSynced
private UUID owner;
@Getter
@DescSynced
private String ownerName;
private Class<?> ownerType;
private final long offset = GTValues.RNG.nextInt(20);

protected MetaMachineBlockEntity(BlockEntityType<?> type, BlockPos pos, BlockState blockState) {
Expand All @@ -82,6 +88,28 @@ public MultiManagedStorage getRootStorage() {
return managedStorage;
}

@Override
public UUID getOwnerUUID() {
return this.owner;
}

@Override
public void setOwner(UUID uuid, Class<?> ownerType, String ownerName) {
this.owner = uuid;
this.ownerType = ownerType;
this.ownerName = ownerName;
}

@Override
public boolean ownerOnline() {
return ServerLifecycleHooks.getCurrentServer().getPlayerList().getPlayer(owner) != null;
YoungOnionMC marked this conversation as resolved.
Show resolved Hide resolved
}

@Override
public Class<?> getOwnerType() {
return ownerType;
}

@Override
public boolean triggerEvent(int id, int para) {
if (id == 1) { // chunk re render
Expand Down Expand Up @@ -317,4 +345,20 @@ public AABB getRenderBoundingBox() {
}
return new AABB(worldPosition.offset(-1, 0, -1), worldPosition.offset(2, 2, 2));
}

@Override
protected void saveAdditional(CompoundTag tag) {
super.saveAdditional(tag);
YoungOnionMC marked this conversation as resolved.
Show resolved Hide resolved
if (owner != null)
tag.putUUID("owner", owner);
if (ownerName != null)
tag.putString("ownerName", ownerName);
}

@Override
public void load(CompoundTag tag) {
super.load(tag);
if (tag.contains("owner")) this.owner = tag.getUUID("owner");
if (tag.contains("ownerName")) this.ownerName = tag.getString("ownerName");
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,8 @@
import net.minecraft.world.level.Level;
import net.minecraft.world.level.block.entity.BlockEntity;

import java.util.UUID;

/**
* A simple compound Interface for all my TileEntities.
* <p/>
Expand Down Expand Up @@ -81,4 +83,22 @@ default void loadCustomPersistedData(CompoundTag tag) {
IAutoPersistBlockEntity.super.loadCustomPersistedData(tag);
getMetaMachine().loadCustomPersistedData(tag);
}

default void setOwner(UUID uuid, Class<?> ownerType, String ownerName) {}

default UUID getOwnerUUID() {
return null;
}

default String getOwnerName() {
return null;
}

default Class<?> getOwnerType() {
return Object.class;
}

default boolean ownerOnline() {
return false;
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@

import com.lowdragmc.lowdraglib.LDLib;
import com.lowdragmc.lowdraglib.gui.texture.ResourceTexture;
import com.lowdragmc.lowdraglib.syncdata.annotation.DescSynced;
import com.lowdragmc.lowdraglib.syncdata.managed.MultiManagedStorage;

import net.minecraft.ChatFormatting;
Expand All @@ -27,6 +28,7 @@
import net.minecraftforge.common.util.LazyOptional;
import net.minecraftforge.fml.DistExecutor;
import net.minecraftforge.fml.event.lifecycle.FMLClientSetupEvent;
import net.minecraftforge.server.ServerLifecycleHooks;

import com.jozufozu.flywheel.api.MaterialManager;
import com.jozufozu.flywheel.backend.instancing.InstancedRenderRegistry;
Expand All @@ -44,6 +46,7 @@

import java.util.List;
import java.util.Set;
import java.util.UUID;
import java.util.function.BiFunction;

/**
Expand All @@ -59,6 +62,12 @@ public class KineticMachineBlockEntity extends KineticBlockEntity implements IMa
private final long offset = GTValues.RNG.nextInt(20);
public float workingSpeed;
public boolean reActivateSource;
@DescSynced
private UUID owner;
@Getter
@DescSynced
private String ownerName;
private Class<?> ownerType;

protected KineticMachineBlockEntity(BlockEntityType<?> typeIn, BlockPos pos, BlockState state) {
super(typeIn, pos, state);
Expand Down Expand Up @@ -120,6 +129,28 @@ public MultiManagedStorage getRootStorage() {
return managedStorage;
}

@Override
public UUID getOwnerUUID() {
return owner;
}

@Override
public void setOwner(UUID uuid, Class<?> ownerType, String ownerName) {
this.owner = uuid;
this.ownerType = ownerType;
this.ownerName = ownerName;
}

@Override
public boolean ownerOnline() {
return ServerLifecycleHooks.getCurrentServer().getPlayerList().getPlayer(owner) != null;
}

@Override
public Class<?> getOwnerType() {
return ownerType;
}

@Override
public void invalidate() {
super.invalidate();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -200,6 +200,11 @@ public int addScannerInfo(Player player, Level level, BlockPos pos, DisplayMode

// General machine information
if (mode == DisplayMode.SHOW_ALL || mode == DisplayMode.SHOW_MACHINE_INFO) {
if (machineBlockEntity.getOwnerUUID() != null) {
list.add(Component.translatable("behavior.portable_scanner.machine_ownership",
machineBlockEntity.getOwnerName(),
machineBlockEntity.ownerOnline()));
}

if (machine.getDefinition() instanceof MultiblockMachineDefinition multi &&
multi.isAllowExtendedFacing()) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -771,6 +771,7 @@ public static void init(RegistrateLangProvider provider) {
provider.add("behavior.portable_scanner.amp_per_sec", "Average (last second): %s A");
provider.add("behavior.portable_scanner.machine_disabled", "Disabled.");
provider.add("behavior.portable_scanner.machine_front_facing", "Front Facing: %s");
provider.add("behavior.portable_scanner.machine_ownership", "§2Machine Owner: %s§r, §2Online: %s§r");
provider.add("behavior.portable_scanner.machine_power_loss", "Shut down due to power loss.");
provider.add("behavior.portable_scanner.machine_progress", "Progress/Load: %s / %s");
provider.add("behavior.portable_scanner.machine_upwards_facing", "Upwards Facing: %s");
Expand Down