So much TODO!

This commit is contained in:
Andrew-71 2023-06-21 12:49:35 +03:00
parent d23f20c0f8
commit 475e6c2437
7 changed files with 105 additions and 42 deletions

View file

@ -2,12 +2,9 @@ package su.a71.tardim_ic.tardim_ic;
import com.google.gson.Gson; import com.google.gson.Gson;
import com.google.gson.GsonBuilder; import com.google.gson.GsonBuilder;
import org.apache.logging.log4j.LogManager;
import org.slf4j.Logger; import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
import java.util.Random;
public class Constants { public class Constants {
public static final String MOD_ID; public static final String MOD_ID;

View file

@ -1,3 +1,5 @@
--[[ --[[
This is source code of my personal TARDIM Navigation Dashboard (NavDash) This is source code of my personal TARDIM Navigation Dashboard (NavDash)
It needs a 1x2 (2 tall) monitor and a digital TARDIM interface to be available
] ]

View file

@ -12,7 +12,6 @@ import net.minecraft.core.Registry;
import net.fabricmc.fabric.api.client.itemgroup.FabricItemGroupBuilder; import net.fabricmc.fabric.api.client.itemgroup.FabricItemGroupBuilder;
import net.fabricmc.fabric.api.object.builder.v1.block.entity.FabricBlockEntityTypeBuilder; import net.fabricmc.fabric.api.object.builder.v1.block.entity.FabricBlockEntityTypeBuilder;
import net.fabricmc.fabric.api.item.v1.FabricItemSettings;
import su.a71.tardim_ic.tardim_ic.blocks.food_machine.FoodMachineBlock; import su.a71.tardim_ic.tardim_ic.blocks.food_machine.FoodMachineBlock;
import su.a71.tardim_ic.tardim_ic.blocks.food_machine.FoodMachineTileEntity; import su.a71.tardim_ic.tardim_ic.blocks.food_machine.FoodMachineTileEntity;
@ -67,10 +66,10 @@ public class Registration {
Exteriors.register(); // Register custom TARDIM exteriors Exteriors.register(); // Register custom TARDIM exteriors
Registry.register(Registry.BLOCK, new ResourceLocation(Constants.MOD_ID, "redstone_tardim_input"), REDSTONE_TARDIM_INPUT); Registry.register(Registry.BLOCK, new ResourceLocation(Constants.MOD_ID, "redstone_tardim_input"), REDSTONE_TARDIM_INPUT);
Registry.register(Registry.ITEM, new ResourceLocation(Constants.MOD_ID, "redstone_tardim_input"), new BlockItem(REDSTONE_TARDIM_INPUT, new FabricItemSettings().tab(TARDIM_IC_TAB))); Registry.register(Registry.ITEM, new ResourceLocation(Constants.MOD_ID, "redstone_tardim_input"), new BlockItem(REDSTONE_TARDIM_INPUT, new Item.Properties().tab(TARDIM_IC_TAB)));
Registry.register(Registry.BLOCK, new ResourceLocation(Constants.MOD_ID, "food_machine"), FOOD_MACHINE); Registry.register(Registry.BLOCK, new ResourceLocation(Constants.MOD_ID, "food_machine"), FOOD_MACHINE);
Registry.register(Registry.ITEM, new ResourceLocation(Constants.MOD_ID, "food_machine"), new BlockItem(FOOD_MACHINE, new FabricItemSettings().tab(TARDIM_IC_TAB))); Registry.register(Registry.ITEM, new ResourceLocation(Constants.MOD_ID, "food_machine"), new BlockItem(FOOD_MACHINE, new Item.Properties().tab(TARDIM_IC_TAB)));
Registry.register(Registry.SOUND_EVENT, CLOISTER_SOUND, CLOISTER_SOUND_EVENT); Registry.register(Registry.SOUND_EVENT, CLOISTER_SOUND, CLOISTER_SOUND_EVENT);

View file

@ -6,10 +6,13 @@ import com.swdteam.tardim.tardim.TardimData;
import com.swdteam.tardim.tardim.TardimManager; import com.swdteam.tardim.tardim.TardimManager;
import dan200.computercraft.api.lua.LuaException; import dan200.computercraft.api.lua.LuaException;
import net.minecraft.core.BlockPos; import net.minecraft.core.BlockPos;
import net.minecraft.network.chat.Component;
import net.minecraft.network.chat.contents.TranslatableContents;
import net.minecraft.server.level.ServerPlayer; import net.minecraft.server.level.ServerPlayer;
import net.minecraft.world.entity.player.Player; import net.minecraft.world.entity.player.Player;
import net.minecraft.world.item.ItemStack; import net.minecraft.world.item.ItemStack;
import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.Mixin;
import org.spongepowered.asm.mixin.Overwrite;
import org.spongepowered.asm.mixin.injection.At; import org.spongepowered.asm.mixin.injection.At;
import org.spongepowered.asm.mixin.injection.Inject; import org.spongepowered.asm.mixin.injection.Inject;
import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
@ -22,7 +25,8 @@ import static su.a71.tardim_ic.tardim_ic.Registration.PERSONAL_JAMMER;
@Mixin(value = CommandLocate.class, remap = false) @Mixin(value = CommandLocate.class, remap = false)
public class JammerMixin { public class JammerMixin {
// @Inject(method="execute()V", at=@At(value = "INVOKE", target = "Lcom/swdteam/tardim/tardim/TardimData;setTravelLocation(Lcom/swdteam/tardim/tardim/TardimData$Location;)V")) // @Inject(method="execute()V", at=@At(value = "INVOKE",
// target = "Lcom/swdteam/tardim/tardim/TardimData;setTravelLocation(Lcom/swdteam/tardim/tardim/TardimData$Location;)V"))
// public void execute(CallbackInfo ci) { // public void execute(CallbackInfo ci) {
// LOG.info("test"); // LOG.info("test");
//// for (ItemStack armour : player.getArmorSlots()) { //// for (ItemStack armour : player.getArmorSlots()) {
@ -32,4 +36,33 @@ public class JammerMixin {
//// }; //// };
//// } //// }
// } // }
@Overwrite
public void execute(String[] args, Player player, BlockPos pos, CommandTardimBase.CommandSource source) {
if (args.length == 1) {
TardimData data = TardimManager.getFromPos(pos);
if (data != null) {
if (data.hasPermission(player)) {
Player otherPlayer = player.getServer().getPlayerList().getPlayerByName(args[0]);
if (otherPlayer != null) {
for (ItemStack armour : otherPlayer.getArmorSlots()) {
if (armour.is(PERSONAL_JAMMER)) {
sendResponse(player, otherPlayer.getGameProfile().getName() + "'s location is jammed", CommandTardimBase.ResponseType.FAIL, source);
return;
}
}
data.setTravelLocation(new TardimData.Location(otherPlayer.blockPosition(), otherPlayer.level.dimension()));
sendResponse(player, "Coords locked on to " + otherPlayer.getGameProfile().getName(), CommandTardimBase.ResponseType.COMPLETE, source);
} else {
sendResponse(player, "Player does not exist", CommandTardimBase.ResponseType.FAIL, source);
}
} else {
sendResponse(player, "You do not have permission", CommandTardimBase.ResponseType.FAIL, source);
}
}
} else {
sendResponse(player, ((CommandLocate)(Object)this).getUsage(), CommandTardimBase.ResponseType.FAIL, source);
}
}
} }

View file

@ -5,7 +5,8 @@
"refmap": "refmap.tardim_ic.json", "refmap": "refmap.tardim_ic.json",
"mixins": [ "mixins": [
"BetterFuelMapMixin", "BetterFuelMapMixin",
"BetterFuelStorageMixin" "BetterFuelStorageMixin",
"JammerMixin"
], ],
"client": [ "client": [
], ],

View file

@ -2,7 +2,7 @@
### All of time and space, *now automated and improved*. ### All of time and space, *now automated and improved*.
This mod is an addon for the [TARDIM mod](https://www.curseforge.com/minecraft/mc-mods/tardim), This mod is an addon for the [TARDIM mod](https://www.curseforge.com/minecraft/mc-mods/tardim),
and adds a way to control your time (but mostly space) machine with new blocks, redstone, and adds a way to control and manage your time (but mostly space) machine with new blocks, redstone,
and even other mods like [ComputerCraft: Tweaked](https://tweaked.cc) computers or [Create](https://github.com/Creators-of-Create/Create) and even other mods like [ComputerCraft: Tweaked](https://tweaked.cc) computers or [Create](https://github.com/Creators-of-Create/Create)
### Features: ### Features:
@ -18,12 +18,6 @@ TODO: Re-make this for 1.2
The possibilities are endless, the only limit is your imagination! The possibilities are endless, the only limit is your imagination!
### Note
Due to nature of the mod **anyone** inside your TARDIM with access to a computer and this mod's peripheral
will be able to run **any** methods. There is no fix that I know of (aside from disabling any commands except "getters" like fuel info), so if you want to use this mod on your server,
please don't let untrustworthy players anywhere near your computer.\
And another thing: the method that sets destination dimension can't check if the dimension is valid. If you cannot land just change dimension to a valid one like overworld or nether.
### FAQ ### FAQ
**Is this for Fabric or Forge?** **Is this for Fabric or Forge?**
@ -34,7 +28,7 @@ And another thing: the method that sets destination dimension can't check if the
**Will there be a 1.20 version and beyond?** **Will there be a 1.20 version and beyond?**
: Right now my focus on 1.19.2, but I will try my best to move to later versions as soon as this mod is fully stable, : Right now my focus on 1.19.2, but I will try my best to move to later versions as soon as this mod is fully stable,
and dependencies are out. and dependencies are out. The intention is to follow latest versions.
**I encountered a bug or have a suggestion. What do I do?** **I encountered a bug or have a suggestion. What do I do?**
: If you have a problem or suggestion, the best way to get them to me is through the project's Discord server. : If you have a problem or suggestion, the best way to get them to me is through the project's Discord server.

View file

@ -1,30 +1,44 @@
TODO for 1.2 and beyond TODO for 1.2 and beyond
re-written 21.06.23
NEW ====================
Blocks: Blocks:
Food Dispenser - one button iterates over food types, another dispenses it at cost of some fuel Cartridge Loader
Cartridge Loader - one button to write to the cartridge, another to load information from it (Right now just location, in the future maybe other too) 2 buttons, one to load information from a cartridge, another to write it.
Dock Station - lets you get into locations you often visit better, good tool for shop keepers as well. On RP servers could prevent liftoff. Has a slot where when r-clicked with a cartridge inserts it/Takes it out
Roundels? - Both normal and storage. TARDIM Dock
Items: Has a GUI, where you can configure:
Personal Location Jammer - when worn, prevents others from locating you. Possibly add some kind of power mechanic to make it less OP * Name/id
Location Cartridge - a cartridge that stores a location to later visit it with a TARDIM. Can be locked like map. Potentially add a way to write in the field. * Landing facing
Commands: * White/Blacklist of users who can land
Quick return - set destination to previous materialisation point. * (Potentially) Fallback id if this one is disabled
When configured, a CC method/TARDIM command can take you to it
When powered by a lever, no TARDIM can land (and potentially take off)
Food Machine
2 buttons. One changed chosen food (hopefully shown on screen), another throws it out.
Uses a bit of fuel but you get FOOD!
Items
Personal Jammer
When worn, other players are unable to locate the user with /locate command
Location cartridge
Contains coordinates, dimension of place and date when it was written to (potentially other metadata using CC)
Can be locked like a map
Potentially can be inserted into a disk drive peripheral
Compat: Compat:
CC - add more meaningful peripherals to things like fuel tank, CREATIVE INTERFACE? CC:
Create - Port to 0.5.1, add display sources to more things. Also look into mechanical TARDIM power-up * Look into what other things can be improved, how to automate doc creation
* Add creative digital TARDIM interface... (maybe remove TARDIM from item name?)
* Add a craftable treasure disk with pre-installed useful programs
Create:
Update to 0.5.1, add more display sources
Mixins:
Location jammer working
Better fuel tank (More fuel sources, do not eat buckets)
Into demat for quick return mixin
Fuel tank should give off comparator output based on how full it is, and time rotor based on whether we are in flight
Potentially let name change appearance of TARDIM Controls?
Code: Code:
Make better and coherent file structure. Unify Forge and Fabric where possible. Prepare for if SWDTeam ever unify more things. Datapack-driven way to control where a TARDIM can land and at what price.
Achievements:
Achievements/Advancements: (need to decide on root)
"Nobody needs soup more than me" "Nobody needs soup more than me"
Get soup from TARDIM's food machine Get soup from TARDIM's food machine
@ -40,18 +54,41 @@ Achievements/Advancements:
"???" "???"
Register a dock Register a dock
"I prefer jelly" "It appears to be... jammed!"
"I've lost the bleeps, I lost the sweeps, and I lost the creeps."
Put on a location jammer Put on a location jammer
"I will always remember..." "I will always remember..."
Save (or maybe lock like a map?) a location cartridge Save (or maybe lock like a map?) a location cartridge
Crafting recipe for floppy with tardim tutorial installer
Power indicator for redstone interface UPDATES ================
Treasure Disk with pre-installed code that users might enjoy Blocks:
Redstone TARDIM Interface - add powered blockstate
(TARDIM) Fuel Storage - add comparator output based on fuel (0 - 9 I think)
(TARDIM) Time Rotor - add comparator/redstone output when in flight
Datapack-driven way to control where a TARDIM can travel and at what price (For instance, for liftoff) Code:
Add config&datapack support (e.g. disable compat, more food machine food, only getters from digital interface)
Make 1WTC fix package names on forge and further improve multi-loader structure
(so that it's not just Fabric to Forge translation at last second).
Overall some code from TARDIM: IC might make its way into TARDIM hopefully
Try to smash all TODOs and warnings
Outside appearance:
Make a proper wiki/docs with CC methods, item recipes and explanations. Maybe even technical things.
Update README and Modrinth/Curse pages
Look into re-licensing and/or making proper public facing source code
Improve Discord server
Possibly an enchantment that works same as personal jammer LOOK INTO ==============
Things to overall re-search
* Applications for SWD Discord moderator. Could be a path to actually getting the bloody source code access
* Making TARDIM doors sync between TARDIM and external dimension
* Some kind of CC scanner method to see the outside (and?) GUI panel that lets you see said outside (or pre-installed iso. program)
see: dev9551's isometric renderer (or pine3d)
* Advanced drive/fuel storage for interstellar travel. Like a "stores 10000 fuel but you have to use it at once"
* Change block appearance based on item name when placed (like Supplementaries)
* More Create compat: engine powered by tardim fuel and way to "wind up" the TARDIM
* (Likely only if access to TARDIM source) Weblate for localisation
* Possibly an enchantment that works same as personal jammer