Compare commits

..

No commits in common. "1.19" and "1.20" have entirely different histories.
1.19 ... 1.20

183 changed files with 5276 additions and 918 deletions

15
.gitattributes vendored Normal file
View file

@ -0,0 +1,15 @@
* text eol=lf
*.bat text eol=crlf
*.patch text eol=lf
*.java text eol=lf
*.gradle text eol=crlf
*.png binary
*.gif binary
*.exe binary
*.dll binary
*.jar binary
*.lzma binary
*.zip binary
*.pyd binary
*.cfg text eol=lf
*.jks binary

130
.gitignore vendored
View file

@ -1,118 +1,24 @@
# User-specific stuff # eclipse
.idea/ bin
*.launch
.settings
.metadata
.classpath
.project
*.iml # idea
out
*.ipr *.ipr
*.iws *.iws
*.iml
.idea/*
!.idea/scopes
# IntelliJ # gradle
out/ build
# mpeltonen/sbt-idea plugin
.idea_modules/
# JIRA plugin
atlassian-ide-plugin.xml
# Compiled class file
*.class
# Log file
*.log
# BlueJ files
*.ctxt
# Package Files #
*.jar
*.war
*.nar
*.ear
*.zip
*.tar.gz
*.rar
# virtual machine crash logs, see http://www.java.com/en/download/help/error_hotspot.xml
hs_err_pid*
*~
# temporary files which can be created if a process still has a handle open of a deleted file
.fuse_hidden*
# KDE directory preferences
.directory
# Linux trash folder which might appear on any partition or disk
.Trash-*
# .nfs files are created when an open file is removed but is still being accessed
.nfs*
# General
.DS_Store
.AppleDouble
.LSOverride
# Icon must end with two \r
Icon
# Thumbnails
._*
# Files that might appear in the root of a volume
.DocumentRevisions-V100
.fseventsd
.Spotlight-V100
.TemporaryItems
.Trashes
.VolumeIcon.icns
.com.apple.timemachine.donotpresent
# Directories potentially created on remote AFP share
.AppleDB
.AppleDesktop
Network Trash Folder
Temporary Items
.apdisk
# Windows thumbnail cache files
Thumbs.db
Thumbs.db:encryptable
ehthumbs.db
ehthumbs_vista.db
# Dump file
*.stackdump
# Folder config file
[Dd]esktop.ini
# Recycle Bin used on file shares
$RECYCLE.BIN/
# Windows Installer files
*.cab
*.msi
*.msix
*.msm
*.msp
# Windows shortcuts
*.lnk
.gradle .gradle
build/
# Ignore Gradle GUI config # other
gradle-app.setting eclipse
run
# Cache of project /.idea/
.gradletasknamecache
**/build/
# Common working directory
run/
# Avoid ignoring Gradle wrapper jar file (.jar files are usually ignored)
!gradle-wrapper.jar

3
.idea/scopes/Fabric_sources.xml generated Normal file
View file

@ -0,0 +1,3 @@
<component name="DependencyValidationManager">
<scope name="Fabric sources" pattern="!ext[Gradle: cpw.mods:*:*]:*/&amp;&amp;!ext[Gradle: mezz.jei:*:*:*]:*/&amp;&amp;!ext[Gradle: net.jodah:typetools:*]:*/&amp;&amp;!ext[Gradle: net.minecraft:client:extra:*]:*/&amp;&amp;!ext[Gradle: net.minecraft:joined*:*]:*/&amp;&amp;!ext[Gradle: net.minecraft:mappings_official:zip:*]:*/&amp;&amp;!ext[Gradle: net.minecraftforge:*:*]:*/" />
</component>

3
.idea/scopes/Forge_sources.xml generated Normal file
View file

@ -0,0 +1,3 @@
<component name="DependencyValidationManager">
<scope name="Forge sources" pattern="!ext[Gradle: loom_mappings_*:*:*]:*/&amp;&amp;!ext[Gradle: net.fabricmc:*:*]:*/&amp;&amp;!ext[Gradle: net.minecraft:joined*:*]:*/&amp;&amp;!ext[Gradle: net.minecraft:mappings_official:zip:*]:*/&amp;&amp;!ext[Gradle: net.minecraft:minecraft-project-*:*]:*/" />
</component>

21
LICENSE Normal file
View file

@ -0,0 +1,21 @@
MIT License
Copyright (c) 2023 Andrey Nikitin
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.

View file

@ -1,38 +1,49 @@
# TARDIM: In Control ![TARDIM: IC Banner](https://cdn.modrinth.com/data/xsv4H3pa/images/561e86895ec0b73d8fcbfb8bb83d4cc92b15734d.png)
### All of time and space, *now automated*. ### All of time and space, *now automated and improved*.
This mod is an addon for the [TARDIM mod](https://modrinth.com/mod/tardim), and adds a way to control your time (but mostly space) machine with [ComputerCraft: Tweaked](https://tweaked.cc) computers and redstone using a new blocks and peripherals. This mod is an addon for the [TARDIM mod](https://www.curseforge.com/minecraft/mc-mods/tardim),
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) or [Create](https://github.com/Creators-of-Create/Create)
### Features: ## Features:
* Digital TARDIM interface: ComputerCraft peripheral that lets you control a TARDIM using CC methods! Full list of methods is available in the [Javadoc](http://andrey71.me/TARDIM-ic-docs/su/a71/tardim_ic/tardim_ic/DigitalInterfacePeripheral.html) (Sorry for that, this is the best auto-generated docs I could find for now). The peripheral supports almost all commands that the TARDIM computer panel has. * New commands that let you ring cloister bell or list all biomes and dimensions
* Redstone TARDIM Input: New control block that lets you execute a TARDIM command with the power of redstone! After saving a command, this block executes it every time it gets powered by redstone * Improved fuel system, which will take in any furnace fuel and won't consume buckets
* *This is just the beginning, there are more features to come!* * Redstone TARDIM Input: New block that lets you execute a TARDIM command with the power of redstone! After saving a command, this block executes it every time it gets powered by redstone
* Full ComputerCraft integration
* Digital TARDIM interface: ComputerCraft peripheral that lets you control a TARDIM using computers! The peripheral supports almost all commands that the TARDIM computer panel has.
* Peripherals for some of the TARDIM blocks that provide a few of digital interface's methods at smaller costs
* New exterior - Soviet Chronobox, styled like a USSR phone booth
* [Coming once Create Fabric is on 1.20] Create integration (display sources): some of the blocks will now be able to act as a display source with Create mod
* [WIP] Food machine - exchange fuel for food. *Currently only in creative mode and half finished.*
* You can see planned features [in the docs](https://tardim.a71.su/planned)
### Note ## Example use-cases
This is important, 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 have this on your server
and do not trust everyone not to steal your blue box, make sure there is some kind of plot claim mod. If there will be demand for it I can try adding a config option to disable all but "harmless" methods.\
And another thing: the method that sets destination dimension doesn't check if the dimension is valid, if you cannot land just change dimension to a valid one.
### Example use-cases
* Make a dashboard to monitor fuel levels, current location, and other information on a screen in a nice way. * Make a dashboard to monitor fuel levels, current location, and other information on a screen in a nice way.
* Get refined control over your TARDIM, such as saving and loading locations, or setting a destination in a GUI. * Get refined control over your TARDIM, such as saving and loading locations, or setting a destination in a GUI.
* Add visual effects that activate during flight e.g. note blocks or Create mod contraptions. * Add visual effects that activate during flight e.g. note blocks or Create mod contraptions.
The possibilities are endless, the only limit is your imagination! (And coding skills) The possibilities are endless, the only limit is your imagination!
### FAQ ## Documentation
Information about the mod's blocks and integration, crafting recipes, and plans for development are available at https://tardim.a71.su
## FAQ
**Is this for Fabric or Forge?** **Is this for Fabric or Forge?**
: As a Fabric player who recognises Forge's large playerbase, I intend to support both major modloaders. : Both! As a Fabric player who recognises Forge's large playerbase, I support both major modloaders.
However, the Fabric version is not yet released as I am waiting until I have a stable version to start porting the mod. However, due to nature of development Fabric versions may get released a bit earlier.
If you would like to use this mod but the version you want is missing I would suggest following the mod.
**Can I use this in my modpack?** **Can I use this in my modpack?**
: Sure, as long as you credit me and link to this page. : Sure, as long as you don't claim the mod as your own. A link to this mod's page would be appreciated too.
**Will there be a 1.19.3 version and beyond?** **Will there be a 1.20.1 version and beyond?**
: Yes, I will try my best to update to later versions as soon as **both** ComputerCraft: Tweaked and TARDIM receive stable versions for them. : I am in the process of moving to 1.20, with Fabric already out and Forge in progress.
I intend to follow latest versions with TARDIM.
**I don't know CC, will this always be a CC-only mod?** **I encountered a bug or have a suggestion. What do I do?**
: OK, fine, nobody actually asked that. But in case you did, good news: No! As you might've noticed, version 0.8 add a block that make it possible to integrate your TARDIM into good old redstone! Going forward, I plan to add some way to get redstone *output* from the TARDIM as well, and maybe even streamline things like the cloister bell for those who don't want to code their own implementations! : If you have a problem or suggestion, the best way to get them to me is through the project's Discord server.
**Do I need to install things like ComputerCraft or Create for this mod?**
: Nope! While I highly suggest you do (because digital interface is in my opinion the star of the show),
you can enjoy a lot of TARDIM: In Control's features with only TARDIM installed.
If you ever decide to add other optional dependencies, the relevant blocks will become available and craftable!

15
SWD_MOMENT.txt Normal file
View file

@ -0,0 +1,15 @@
=== HOW MANY PROBLEMS TARDIM HAS?! ===
1. A few log messages definitely left from testing (e.g. aklfjsjsfw)
2. isValidFlightPath is private on Fabric
3. FABRIC AND FORGE HAVE DIFFERENT JAVA IMPORT PATHS
4. [FIXED] Adding custom commands was private for literally 0 reason
5. com.swdteam.tardim.common.data.DimensionMapReloadListener has modid tutorial in
public ResourceLocation getFabricId() {
return new ResourceLocation("tutorial", "tardim_dimension_lookup");
}
5.1 Forge's MANIFEST.MF too!
Andrew71's proposals:
1. Quick-return command
2. add support for far more fuel sources via AbstractFurnaceBlockEntity.getFuel() on top of built-in TARDIM method
3. Unify package names on Forge and Fabric

10
TODO Normal file
View file

@ -0,0 +1,10 @@
=== TODO ===
Doing every fucking thing over again
* Basics
* Registrate creative mode tab
* Registrate a single block. Any block will do
* Digital Interface for TARDIM
* Block
* Peripheral

View file

@ -1,115 +1,101 @@
buildscript { plugins {
id 'fabric-loom' version '1.3-SNAPSHOT' apply(false)
id 'net.neoforged.gradle' version '[6.0.18,6.2)' apply(false)
id 'org.spongepowered.gradle.vanilla' version '0.2.1-SNAPSHOT' apply(false)
id("org.spongepowered.mixin") version "0.7-SNAPSHOT" apply(false)
}
subprojects {
apply plugin: 'java'
java.toolchain.languageVersion = JavaLanguageVersion.of(17)
java.withSourcesJar()
java.withJavadocJar()
jar {
from(rootProject.file("LICENSE")) {
rename { "${it}_${mod_name}" }
}
manifest {
attributes([
'Specification-Title' : mod_name,
'Specification-Vendor' : mod_author,
'Specification-Version' : project.jar.archiveVersion,
'Implementation-Title' : project.name,
'Implementation-Version' : project.jar.archiveVersion,
'Implementation-Vendor' : mod_author,
'Implementation-Timestamp': new Date().format("yyyy-MM-dd'T'HH:mm:ssZ"),
'Timestamp' : System.currentTimeMillis(),
'Built-On-Java' : "${System.getProperty('java.vm.version')} (${System.getProperty('java.vm.vendor')})",
'Built-On-Minecraft' : minecraft_version
])
}
}
sourcesJar {
from(rootProject.file("LICENSE")) {
rename { "${it}_${mod_name}" }
}
}
repositories { repositories {
maven { url = 'https://maven.minecraftforge.net' }
mavenCentral() mavenCentral()
} maven {
dependencies { name = 'Sponge / Mixin'
classpath group: 'net.minecraftforge.gradle', name: 'ForgeGradle', version: '5.1.+', changing: true url = 'https://repo.spongepowered.org/repository/maven-public/'
} }
} maven {
name = 'BlameJared Maven (JEI / CraftTweaker / Bookshelf)'
apply plugin: 'net.minecraftforge.gradle' url = 'https://maven.blamejared.com'
group = project.group
version = project.version
archivesBaseName = project.archivesBaseName
java.toolchain.languageVersion = JavaLanguageVersion.of(17)
minecraft {
mappings channel: 'official', version: "${mc_version}"
runs {
client {
workingDirectory project.file('run')
property 'forge.logging.markers', 'REGISTRIES'
// Recommended logging level for the console
// You can set various levels here.
// Please read: https://stackoverflow.com/questions/2031163/when-to-use-the-different-log-levels
property 'forge.logging.console.level', 'debug'
mods {
cctutorial {
source sourceSets.main
}
}
} }
server { // CC: Tweaked
workingDirectory project.file('run') maven {
url "https://squiddev.cc/maven/"
property 'forge.logging.markers', 'REGISTRIES' content {
includeGroup("cc.tweaked")
// Recommended logging level for the console includeModule("org.squiddev", "Cobalt")
// You can set various levels here.
// Please read: https://stackoverflow.com/questions/2031163/when-to-use-the-different-log-levels
property 'forge.logging.console.level', 'debug'
mods {
cctutorial {
source sourceSets.main
}
} }
} }
// Curseforge
data { repositories {
workingDirectory project.file('run') maven {
url "https://cursemaven.com"
property 'forge.logging.markers', 'REGISTRIES'
// Recommended logging level for the console
// You can set various levels here.
// Please read: https://stackoverflow.com/questions/2031163/when-to-use-the-different-log-levels
property 'forge.logging.console.level', 'debug'
// Specify the modid for data generation, where to output the resulting resource, and where to look for existing resources.
args '--mod', 'tardim_ic', '--all', '--output', file('src/generated/resources/'), '--existing', file('src/main/resources/')
mods {
tardim_ic {
source sourceSets.main
}
} }
} }
// Create Fabric 1.20 (Jeez that's a lot of mavens)
// maven {
// name "devOSSnapshots"
// url "https://mvn.devos.one/snapshots"
// }
// maven {
// name "tterrag maven"
// url "https://maven.tterrag.com/"
// }
// maven {
// url "https://maven.jamieswhiteshirt.com/libs-release"
// content {
// includeGroup "com.jamieswhiteshirt"
// }
// }
}
tasks.withType(JavaCompile).configureEach {
it.options.encoding = 'UTF-8'
it.options.getRelease().set(17)
}
processResources {
filesMatching(['pack.mcmeta', 'fabric.mod.json', 'mods.toml', '*.mixins.json']) {
expand project.properties
}
}
// Disables Gradle's custom module metadata from being published to maven. The
// metadata includes mapped dependencies which are not reasonably consumable by
// other mod developers.
tasks.withType(GenerateModuleMetadata).configureEach {
enabled = false
} }
} }
// Include resources generated by data generators.
sourceSets.main.resources { srcDir 'src/generated/resources' }
repositories {
maven { url 'https://squiddev.cc/maven/' }
maven { url "https://cursemaven.com"}
}
dependencies {
// Specify the version of Minecraft to use, If this is any group other then 'net.minecraft' it is assumed
// that the dep is a ForgeGradle 'patcher' dependency. And it's patches will be applied.
// The userdev artifact is a special name and will get all sorts of transformations applied to it.
minecraft "net.minecraftforge:forge:${mc_version}-${forge_version}"
implementation fg.deobf("curse.maven:tardim-531315:3983700")
implementation fg.deobf("org.squiddev:cc-tweaked-1.19.1:${cc_version}")
}
// Example for how to get properties into the manifest for reading by the runtime..
jar {
manifest {
attributes([
"Specification-Title" : "tardim_ic",
//"Specification-Vendor": "tardim_ic authors",
"Specification-Version" : "1", // We are version 1 of ourselves
"Implementation-Title" : project.name,
"Implementation-Version" : project.version,
//"Implementation-Vendor": "tardim_ic authors",
"Implementation-Timestamp": new Date().format("yyyy-MM-dd'T'HH:mm:ssZ")
])
}
}
jar.finalizedBy('reobfJar')

39
common/build.gradle Normal file
View file

@ -0,0 +1,39 @@
plugins {
id 'idea'
id 'java'
id 'maven-publish'
id 'org.spongepowered.gradle.vanilla'
}
base {
archivesName = "${mod_name}-common-${minecraft_version}"
}
minecraft {
version(minecraft_version)
if(file("src/main/resources/${mod_id}.accesswidener").exists()){
accessWideners(file("src/main/resources/${mod_id}.accesswidener"))
}
}
dependencies {
compileOnly group:'org.spongepowered', name:'mixin', version:'0.8.5'
implementation group: 'com.google.code.findbugs', name: 'jsr305', version: '3.0.1'
// ComputerCraft
compileOnly("cc.tweaked:cc-tweaked-$minecraft_version-common-api:$cc_version")
compileOnly(files("./tardim-1.2.2-dev.jar"))
}
publishing {
publications {
mavenJava(MavenPublication) {
artifactId base.archivesName.get()
from components.java
}
}
repositories {
maven {
url "file://" + System.getenv("local_maven")
}
}
}

View file

@ -0,0 +1,11 @@
package su.a71.tardim_ic;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
public class Constants {
public static final String MOD_ID = "tardim_ic";
public static final String MOD_NAME = "TARDIM: In Control";
public static final Logger LOG = LoggerFactory.getLogger(MOD_NAME);
}

View file

@ -0,0 +1,62 @@
package su.a71.tardim_ic.command;
import com.swdteam.tardim.common.command.tardim.CommandTardimBase;
import com.swdteam.tardim.common.command.tardim.ICommand;
import com.swdteam.tardim.tardim.TardimData;
import com.swdteam.tardim.tardim.TardimManager;
import net.minecraft.core.BlockPos;
import net.minecraft.core.Registry;
import net.minecraft.core.registries.Registries;
import net.minecraft.resources.ResourceLocation;
import net.minecraft.world.entity.player.Player;
import net.minecraft.world.inventory.FurnaceFuelSlot;
import net.minecraft.world.level.biome.Biome;
import net.minecraft.world.level.block.entity.AbstractFurnaceBlockEntity;
import net.minecraft.world.level.block.entity.FurnaceBlockEntity;
/*
This command prints list of all biomes into the console to find technical names
You can also pass an argument to search for entries with this string (e.g. amethyst for terralith:amethyst_rainforest
*/
public class CommandListBiomes implements ICommand{
@Override
public void execute(String[] args, Player player, BlockPos pos, CommandTardimBase.CommandSource source) {
;
if (args.length == 1 || args.length == 0) {
TardimData data = TardimManager.getFromPos(pos);
if (data != null) {
if (data.hasPermission(player)) {
Registry<Biome> biomeRegistry = player.level().registryAccess().registryOrThrow(Registries.BIOME);
biomeRegistry.keySet().forEach(
(ResourceLocation res) -> {
String out = res.toString();
if (args.length == 0 || out.toLowerCase().contains(args[0].toLowerCase())) {
CommandTardimBase.sendResponse(player, out, CommandTardimBase.ResponseType.INFO, source);
}
}
);
} else {
CommandTardimBase.sendResponse(player, "You do not have permission", CommandTardimBase.ResponseType.FAIL, source);
}
}
} else {
CommandTardimBase.sendResponse(player, this.getUsage(), CommandTardimBase.ResponseType.FAIL, source);
}
}
@Override
public String getCommandName() {
return "list-biomes";
}
@Override
public String getUsage() {
return "/list-biomes <..search_query>"; // TODO: how to communicate this better
}
@Override
public CommandTardimBase.CommandSource allowedSource() {
return CommandTardimBase.CommandSource.BOTH;
}
}

View file

@ -0,0 +1,47 @@
package su.a71.tardim_ic.command;
import com.swdteam.tardim.common.command.tardim.CommandTardimBase;
import com.swdteam.tardim.common.command.tardim.ICommand;
import com.swdteam.tardim.tardim.TardimData;
import com.swdteam.tardim.tardim.TardimManager;
import net.minecraft.core.BlockPos;
import net.minecraft.server.level.ServerLevel;
import net.minecraft.world.entity.player.Player;
/*
This command prints list of all dimensions into the console to find technical names
*/
public class CommandListDimensions implements ICommand{
@Override
public void execute(String[] args, Player player, BlockPos pos, CommandTardimBase.CommandSource source) {
if (args.length == 0) {
TardimData data = TardimManager.getFromPos(pos);
if (data != null) {
if (data.hasPermission(player)) {
for (ServerLevel serverLevel : player.level().getServer().getAllLevels()) {
CommandTardimBase.sendResponse(player, serverLevel.dimension().location().toString(), CommandTardimBase.ResponseType.INFO, source);
}
} else {
CommandTardimBase.sendResponse(player, "You do not have permission", CommandTardimBase.ResponseType.FAIL, source);
}
}
} else {
CommandTardimBase.sendResponse(player, this.getUsage(), CommandTardimBase.ResponseType.FAIL, source);
}
}
@Override
public String getCommandName() {
return "list-dimensions";
}
@Override
public String getUsage() {
return "/list-dimensions";
}
@Override
public CommandTardimBase.CommandSource allowedSource() {
return CommandTardimBase.CommandSource.BOTH;
}
}

View file

@ -1,24 +1,28 @@
package su.a71.tardim_ic.tardim_ic.command; package su.a71.tardim_ic.command;
// This will be added whenever I manage to convince TARDIM devs to make CommandManager.register public // This will be added whenever I manage to convince TARDIM devs to make CommandManager.register public
// 13.04.23 ITS ALIVE
import com.swdteam.tardim.common.command.tardim.CommandTardimBase;
import com.swdteam.tardim.common.command.tardim.ICommand;
import com.swdteam.tardim.tardim.TardimData;
import com.swdteam.tardim.tardim.TardimManager;
import dan200.computercraft.api.ComputerCraftAPI;
import dan200.computercraft.api.network.Packet;
import com.mojang.brigadier.Command;
import com.swdteam.common.command.tardim.CommandTardimBase;
import com.swdteam.common.command.tardim.ICommand;
import com.swdteam.tardim.TardimData;
import com.swdteam.tardim.TardimManager;
import net.minecraft.core.BlockPos; import net.minecraft.core.BlockPos;
import net.minecraft.world.entity.player.Player; import net.minecraft.world.entity.player.Player;
import dan200.computercraft.api.network.Packet; /*
import dan200.computercraft.api.ComputerCraftAPI; This command sends out a ComputerCraft modem signal
This could be useful for connecting advanced navigation systems into "vanilla" controls
import static com.swdteam.common.command.tardim.CommandTardimBase.sendResponse; You can specify both channels, message and even make the message go across dimensions
*/
public class CommandModemTransmit implements ICommand { public class CommandModemTransmit implements ICommand {
@Override @Override
public void execute(String[] args, Player player, BlockPos pos, CommandTardimBase.CommandSource source) { public void execute(String[] args, Player player, BlockPos pos, CommandTardimBase.CommandSource source) {
if (args.length == 3) { if (args.length == 3) { // TODO: 3 or 4???
TardimData data = TardimManager.getFromPos(pos); TardimData data = TardimManager.getFromPos(pos);
if (data != null) { if (data != null) {
if (data.hasPermission(player)) { if (data.hasPermission(player)) {
@ -34,33 +38,33 @@ public class CommandModemTransmit implements ICommand {
if (allDimensions) if (allDimensions)
{ {
ComputerCraftAPI.getWirelessNetwork().transmitInterdimensional(new Packet(sendChannel, replyChannel, message, new CommandSender(player, data.getTravelLocation().getPos()))); ComputerCraftAPI.getWirelessNetwork(player.getServer()).transmitInterdimensional(new Packet(sendChannel, replyChannel, message, new CommandSender(player, data.getTravelLocation().getPos())));
} }
else { else {
ComputerCraftAPI.getWirelessNetwork().transmitSameDimension(new Packet(sendChannel, replyChannel, message, ComputerCraftAPI.getWirelessNetwork(player.getServer()).transmitSameDimension(new Packet(sendChannel, replyChannel, message,
new CommandSender(player, data.getTravelLocation().getPos())), 300); new CommandSender(player, data.getTravelLocation().getPos())), 300);
} }
sendResponse(player, "Sent modem message", CommandTardimBase.ResponseType.COMPLETE, source); CommandTardimBase.sendResponse(player, "Sent modem message", CommandTardimBase.ResponseType.COMPLETE, source);
} catch (Exception var9) { } catch (Exception var9) {
sendResponse(player, "Invalid coordinates", CommandTardimBase.ResponseType.FAIL, source); CommandTardimBase.sendResponse(player, "Invalid coordinates", CommandTardimBase.ResponseType.FAIL, source);
} }
} else { } else {
sendResponse(player, "You do not have permission", CommandTardimBase.ResponseType.FAIL, source); CommandTardimBase.sendResponse(player, "You do not have permission", CommandTardimBase.ResponseType.FAIL, source);
} }
} }
} else { } else {
sendResponse(player, this.getUsage(), CommandTardimBase.ResponseType.FAIL, source); CommandTardimBase.sendResponse(player, this.getUsage(), CommandTardimBase.ResponseType.FAIL, source);
} }
} }
@Override @Override
public String getCommandName() { public String getCommandName() {
return "ccModemTransmit"; return "cc-modem-transmit";
} }
@Override @Override
public String getUsage() { public String getUsage() {
return "ccModemTransmit <channel: int> <replyChannel: int> <message: string> <all_dimension: true/false>"; return "/cc-modem-transmit <Chnl> <replyChnl> <msg> <ender: bool>";
} }
@Override @Override

View file

@ -1,14 +1,13 @@
package su.a71.tardim_ic.tardim_ic.command; package su.a71.tardim_ic.command;
import dan200.computercraft.api.network.IPacketSender; import dan200.computercraft.api.network.PacketSender;
import net.minecraft.core.BlockPos; import net.minecraft.core.BlockPos;
import net.minecraft.resources.ResourceKey;
import net.minecraft.world.entity.player.Player; import net.minecraft.world.entity.player.Player;
import net.minecraft.world.level.Level; import net.minecraft.world.level.Level;
import net.minecraft.world.phys.Vec3; import net.minecraft.world.phys.Vec3;
import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.NotNull;
public class CommandSender implements IPacketSender { public class CommandSender implements PacketSender {
private final Player player; private final Player player;
private final Level level; private final Level level;
@ -16,7 +15,7 @@ public class CommandSender implements IPacketSender {
CommandSender(Player player, BlockPos pos) { CommandSender(Player player, BlockPos pos) {
this.player = player; this.player = player;
this.level = player.level; this.level = player.level();
this.pos = pos; this.pos = pos;
} }

View file

@ -0,0 +1,94 @@
package su.a71.tardim_ic.computercraft_compat.entity;
import com.swdteam.tardim.tardim.TardimData;
import com.swdteam.tardim.tardim.TardimManager;
import net.minecraft.core.BlockPos;
import net.minecraft.world.level.Level;
import net.minecraft.world.level.block.Block;
public class FakeTardimPeripheralTileEntity implements ITardimPeripheralTileEntity {
public BlockPos blockPos;
public Level level;
public TardimData data; // Our TARDIM
public FakeTardimPeripheralTileEntity(BlockPos in_block, Level in_level) {
this.blockPos = in_block;
this.level = in_level;
this.data = getTardimDataInitial();
}
@Override
public BlockPos getPos() {
return this.blockPos;
}
@Override
public Level getLevel() {
return this.level;
}
@Override
public TardimData getTardim() {
return this.data;
}
@Override
public Block getBlock() {
return this.level.getBlockState(this.blockPos).getBlock();
}
public TardimData getTardimDataInitial() {
int X = this.getPos().getX(), Z = this.getPos().getZ();
int index = 0;
int x = 0;
int y = 0;
int dx = 0;
int dy = 1;
int segment_length = 1;
int segment_passed = 0;
boolean found = false;
long timecheck = System.currentTimeMillis();
while(true) {
if (System.currentTimeMillis() - timecheck > 10000L) {
System.out.println("Finding ID from XZ Coordinates is taking too long!");
break;
}
if (X >= x * TardimManager.INTERIOR_BOUNDS
&& X <= TardimManager.INTERIOR_BOUNDS + x * TardimManager.INTERIOR_BOUNDS
&& Z >= y * TardimManager.INTERIOR_BOUNDS
&& Z <= TardimManager.INTERIOR_BOUNDS + y * TardimManager.INTERIOR_BOUNDS) {
found = true;
break;
}
x += dx;
y += dy;
if (++segment_passed == segment_length) {
segment_passed = 0;
int buffer = dy;
dy = -dx;
dx = buffer;
if (buffer == 0) {
++segment_length;
}
}
++index;
}
// We really don't want to access a ghost TARDIM, do we?
// If we fail checks here are not inside a TARDIM
if (!found) {
return null;
}
TardimData T = TardimManager.getTardim(index);
if (T.getCurrentLocation() == null || T.getOwnerName() == null) {
return null;
}
return T;
}
}

View file

@ -0,0 +1,18 @@
package su.a71.tardim_ic.computercraft_compat.entity;
import com.swdteam.tardim.tardim.TardimData;
import net.minecraft.core.BlockPos;
import net.minecraft.world.level.Level;
import net.minecraft.world.level.block.Block;
import net.minecraft.world.level.block.entity.BlockEntity;
// This is used to getPost(), getLevel() and getTardim() nicely without refactoring code to account for PeripheralProvider
// At least I believe so. Otherwise, don't really remember why I don't just pass these methods to the peripherals.
public interface ITardimPeripheralTileEntity {
public BlockPos getPos();
public Level getLevel();
public TardimData getTardim();
public Block getBlock();
}

View file

@ -0,0 +1,65 @@
package su.a71.tardim_ic.computercraft_compat.peripherals;
import com.swdteam.tardim.common.block.BlockFuelStorage;
import com.swdteam.tardim.tardim.TardimData;
import dan200.computercraft.api.lua.LuaException;
import dan200.computercraft.api.lua.LuaFunction;
import dan200.computercraft.api.peripheral.IPeripheral;
import net.minecraft.world.phys.Vec3;
import su.a71.tardim_ic.computercraft_compat.entity.FakeTardimPeripheralTileEntity;
/*
* CC Peripheral for TARDIM's fuel storage block.
* Only provides getters for the fuel parts for people who cannot afford or don't need the digital interface.
*/
public class FuelStoragePeripheral extends TardimPeripheral<BlockFuelStorage> implements IPeripheral {
/**
* @param tileEntity the tile entity of this peripheral
* @hidden
*/
public FuelStoragePeripheral(FakeTardimPeripheralTileEntity tileEntity) {
super(tileEntity, "tardim_fuel_storage", (BlockFuelStorage) tileEntity.getBlock());
}
// Peripheral methods ===============================================================
/**
* Return how much fuel is left in the TARDIM
*
* @return Fuel left (Out of 100)
*/
@LuaFunction(mainThread = true)
public final double getFuel() throws LuaException {
return getTardimData().getFuel();
}
/**
* Get how much fuel it would take to travel to the destination
* @return Amount of fuel needed (Out of 100)
*/
@LuaFunction(mainThread = true)
public final double calculateFuelForJourney() throws LuaException {
TardimData data = getTardimData();
if (data.getTravelLocation() == null) return 0;
TardimData.Location curr = data.getCurrentLocation();
TardimData.Location dest = data.getTravelLocation();
double fuel = 0.0;
if (curr.getLevel() != dest.getLevel())
{
fuel = 10.0;
}
Vec3 posA = new Vec3(curr.getPos().getX(), curr.getPos().getY(), curr.getPos().getZ());
Vec3 posB = new Vec3(dest.getPos().getX(), dest.getPos().getY(), dest.getPos().getZ());
fuel += posA.distanceTo(posB) / 100.0;
if (fuel > 100.0) fuel = 100.0;
return fuel;
}
}

View file

@ -0,0 +1,86 @@
package su.a71.tardim_ic.computercraft_compat.peripherals;
import com.swdteam.tardim.tardim.TardimData;
import dan200.computercraft.api.lua.LuaException;
import dan200.computercraft.api.peripheral.IComputerAccess;
import dan200.computercraft.api.peripheral.IPeripheral;
import net.minecraft.world.level.block.Block;
import net.minecraft.world.level.block.entity.BlockEntity;
import su.a71.tardim_ic.computercraft_compat.entity.ITardimPeripheralTileEntity;
import javax.annotation.Nonnull;
import javax.annotation.Nullable;
import java.util.*;
// Base CC peripheral for whn you need something with access to a TARDIM
public abstract class TardimPeripheral<BL extends Block> implements IPeripheral {
private final List<IComputerAccess> connectedComputers = new ArrayList<>(); // List of computers connected to the peripheral
public final ITardimPeripheralTileEntity tileEntity; // Peripheral's BlockEntity, used for accessing coordinates
public final String name;
private final BL block;
/**
* @param tileEntity the tile entity of this peripheral
* @hidden
*/
public TardimPeripheral(ITardimPeripheralTileEntity tileEntity, String name, BL block) {
this.tileEntity = tileEntity;
this.name = name;
this.block = block;
}
@Override
public BL getTarget() {
return this.block;
}
/** Setting name for the peripheral. A computer will see it as "digital_tardim_interface_n"
* @hidden
*/
@Nonnull
@Override
public String getType() { return this.name; }
/** Apparently CC uses this to check if the peripheral in front of a modem is this one
* @hidden
* @param iPeripheral The peripheral to compare against. This may be {@code null}.
* @return {@code true} if the peripheral is the same as this one.
*/
@Override
public boolean equals(@Nullable IPeripheral iPeripheral) { return this == iPeripheral; }
/** Called when a computer disconnects from the peripheral
* @hidden
* @param computer The interface to the computer that is being detached. Remember that multiple computers can be
* attached to a peripheral at once.
*/
@Override
public void detach(@Nonnull IComputerAccess computer) { connectedComputers.remove(computer); }
/** Called when a computer connects to the peripheral
* @hidden
* @param computer The interface to the computer that is being attached. Remember that multiple computers can be
* attached to a peripheral at once.
*/
@Override
public void attach(@Nonnull IComputerAccess computer) { connectedComputers.add(computer); }
/**
* I *think* I use this to get peripheral's world position
* @hidden
* @return
*/
public ITardimPeripheralTileEntity getTileEntity() {
return tileEntity;
}
public TardimData getTardimData() throws LuaException {
TardimData data = this.getTileEntity().getTardim();
if (data == null || data.getCurrentLocation() == null || data.getOwnerName() == null) {
throw new LuaException("Peripheral is not inside a TARDIM");
}
return data;
}
}

View file

@ -0,0 +1,144 @@
package su.a71.tardim_ic.computercraft_compat.peripherals;
import com.swdteam.tardim.common.block.BlockTardimScanner;
import com.swdteam.tardim.common.init.TardimRegistry;
import com.swdteam.tardim.tardim.TardimData;
import dan200.computercraft.api.lua.LuaException;
import dan200.computercraft.api.lua.LuaFunction;
import dan200.computercraft.api.lua.ObjectLuaTable;
import dan200.computercraft.api.peripheral.IPeripheral;
import net.minecraft.core.Registry;
import net.minecraft.core.registries.Registries;
import net.minecraft.resources.ResourceLocation;
import net.minecraft.server.level.ServerLevel;
import net.minecraft.server.players.PlayerList;
import net.minecraft.world.level.biome.Biome;
import su.a71.tardim_ic.computercraft_compat.entity.FakeTardimPeripheralTileEntity;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
/*
* CC Peripheral for TARDIM's scanner block.
* Only provides getters for data-related (mostly table output) methods e.g. biome or companion list
* for people who cannot afford or don't need the digital interface.
*/
public class TardimScannerPeripheral extends TardimPeripheral<BlockTardimScanner> implements IPeripheral {
/**
* @param tileEntity the tile entity of this peripheral
* @hidden
*/
public TardimScannerPeripheral(FakeTardimPeripheralTileEntity tileEntity) {
super(tileEntity, "tardim_scanner", (BlockTardimScanner) tileEntity.getBlock());
}
// Peripheral methods ===============================================================
/**
* Get username of the TARDIM's owner
* @return String of the owner's username
*/
@LuaFunction(mainThread = true)
public final String getOwnerName() throws LuaException {
TardimData data = getTardimData();
return data.getOwnerName();
}
/**
* Get list of the TARDIM owner's companions
* @return ObjectLuaTable containing the usernames of the companions
*/
@LuaFunction(mainThread = true)
public final ObjectLuaTable getCompanions() throws LuaException {
TardimData data = getTardimData();
Map<Integer, String> companions = new HashMap<>();
for (int i = 0; i < data.getCompanions().size(); i++) {
companions.put(i + 1, data.getCompanions().get(i).getUsername());
}
return new ObjectLuaTable(companions);
}
/**
* Get online players. Useful for making a GUI for the locate function or just a nice dashboard.
*
* @return ObjectLuaTable of the online players
*/
@LuaFunction(mainThread = true)
public final ObjectLuaTable getOnlinePlayers() throws LuaException {
if (this.tileEntity.getLevel().isClientSide()) {
return null;
}
PlayerList playerList = this.tileEntity.getLevel().getServer().getPlayerList();
Map<Integer, String> players = new HashMap<>();
for (int i = 0; i < playerList.getPlayers().size(); i++) {
players.put(i + 1, playerList.getPlayers().get(i).getGameProfile().getName());
}
return new ObjectLuaTable(players);
}
/**
* Get all available TARDIM skins. Useful for making a GUI skin selection.
*
* @return ObjectLuaTable of the available skins
*/
@LuaFunction(mainThread = true)
public final ObjectLuaTable getSkins() throws LuaException {
if (this.getTileEntity().getLevel().isClientSide()) {
return null;
}
Map<Integer, String> skins = new HashMap<>();
Iterator var5 = TardimRegistry.getRegistry().keySet().iterator();
int i = 0;
while(var5.hasNext()) {
ResourceLocation builder = (ResourceLocation)var5.next();
TardimRegistry.TardimBuilder b = TardimRegistry.getTardimBuilder(builder);
skins.put(i + 1, b.getDisplayName());
i++;
}
return new ObjectLuaTable(skins);
}
/**
* Get a table with all registered biomes' names.
* Useful for creating advanced navigation systems.
* @return ObjectLuaTable with all biomes' technical names
*/
@LuaFunction(mainThread = true)
public final ObjectLuaTable getBiomes() throws LuaException {
Map<Integer, String> biomes = new HashMap<>();
Registry<Biome> biomeRegistry = tileEntity.getLevel().registryAccess().registryOrThrow(Registries.BIOME);
Iterator<ResourceLocation> biome_it = biomeRegistry.keySet().iterator();
int i = 0;
while (biome_it.hasNext()) {
biomes.put(i + 1, biome_it.next().toString());
i++;
}
return new ObjectLuaTable(biomes);
}
/**
* Get a table with all registered dimensions' names.
* Useful for creating advanced navigation systems.
* @return ObjectLuaTable with all dimensions' technical names
*/
@LuaFunction(mainThread = true)
public final ObjectLuaTable getDimensions() throws LuaException {
Iterator<ServerLevel> dim_it = this.getTileEntity().getLevel().getServer().getAllLevels().iterator(); // TODO: Does this really work?
Map<Integer, String> dimensions = new HashMap<>();
int i = 0;
while (dim_it.hasNext()) {
dimensions.put(i + 1, dim_it.next().dimension().location().toString());
i++;
}
return new ObjectLuaTable(dimensions);
}
}

View file

@ -0,0 +1,100 @@
package su.a71.tardim_ic.computercraft_compat.peripherals;
import com.swdteam.tardim.common.block.BlockRotor;
import com.swdteam.tardim.tardim.TardimData;
import dan200.computercraft.api.lua.LuaException;
import dan200.computercraft.api.lua.LuaFunction;
import dan200.computercraft.api.lua.ObjectLuaTable;
import dan200.computercraft.api.peripheral.IPeripheral;
import su.a71.tardim_ic.computercraft_compat.entity.FakeTardimPeripheralTileEntity;
import java.util.Map;
/*
* CC Peripheral for TARDIM's time rotor block.
* Only provides getters for the flight status for people who cannot afford or don't need the digital interface.
*/
public class TimeRotorPeripheral extends TardimPeripheral<BlockRotor> implements IPeripheral {
/**
* @param tileEntity the tile entity of this peripheral
* @hidden
*/
public TimeRotorPeripheral(FakeTardimPeripheralTileEntity tileEntity) {
super(tileEntity, "tardim_rotor", (BlockRotor) tileEntity.getBlock());
}
// Peripheral methods ===============================================================
/**
* Check whether the TARDIM is in flight
* @return true if in flight, false if not
*/
@LuaFunction(mainThread = true)
public final boolean isInFlight() throws LuaException { return getTardimData().isInFlight(); }
/**
* Supposedly gets UNIX timestamp of when we entered flight
* @return UNIX timestamp if in flight, -1 if not
*/
@LuaFunction(mainThread = true)
public final long getTimeEnteredFlight() throws LuaException {
TardimData data = getTardimData();
if (!data.isInFlight()) {
return -1;
}
return data.getTimeEnteredFlight();
}
/**
* Get the current location of the TARDIM
* @return ObjectLuaTable of the current location with the following keys:
* <ul>
* <li>dimension - String of the dimension</li>
* <li>pos - table with the keys x, y, z that hold numbers</li>
* <li>facing - String of the facing</li>
* </ul>
*/
@LuaFunction(mainThread = true)
public final ObjectLuaTable getCurrentLocation() throws LuaException {
TardimData.Location loc = getTardimData().getCurrentLocation();
return new ObjectLuaTable(Map.of(
"dimension", loc.getLevel().location().toString(),
"pos", new ObjectLuaTable(Map.of(
"x", loc.getPos().getX(),
"y", loc.getPos().getY(),
"z", loc.getPos().getZ()
)),
"facing", loc.getFacing().toString()
));
}
/**
* Get the current location of the TARDIM
* @return if there is no destination returns null.
* <p>
* Otherwise, ObjectLuaTable of the current location with the following keys:
* <ul>
* <li>dimension - String of the dimension</li>
* <li>pos - table with the keys x, y, z that hold numbers</li>
* <li>facing - String of the facing</li>
* </ul>
*/
@LuaFunction(mainThread = true)
public final ObjectLuaTable getTravelLocation() throws LuaException {
TardimData data = getTardimData();
if (data.getTravelLocation() == null) {
data.setTravelLocation(data.getCurrentLocation());
}
TardimData.Location loc = data.getTravelLocation();
return new ObjectLuaTable(Map.of(
"dimension", loc.getLevel().location().toString(),
"pos", new ObjectLuaTable(Map.of(
"x", loc.getPos().getX(),
"y", loc.getPos().getY(),
"z", loc.getPos().getZ()
)),
"facing", loc.getFacing().toString()
));
}
}

View file

@ -0,0 +1,58 @@
//package su.a71.tardim_ic.mixin;
//
//import com.swdteam.tardim.common.command.tardim.CommandLocate;
//import com.swdteam.tardim.common.command.tardim.CommandTardimBase;
//import com.swdteam.tardim.tardim.TardimData;
//import com.swdteam.tardim.tardim.TardimManager;
//import net.minecraft.core.BlockPos;
//import net.minecraft.world.entity.player.Player;
//import net.minecraft.world.item.ItemStack;
//import org.spongepowered.asm.mixin.Mixin;
//import org.spongepowered.asm.mixin.Overwrite;
//
//import static com.swdteam.tardim.common.command.tardim.CommandTardimBase.sendResponse;
//
//@Mixin(value = CommandLocate.class, remap = false)
//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"))
//// public void execute(CallbackInfo ci) {
//// LOG.info("test");
////// for (ItemStack armour : player.getArmorSlots()) {
////// if (armour.is(LOCATION_JAMMER)) {
////// sendResponse(player, "Player's location is jammed", CommandTardimBase.ResponseType.FAIL, source);
////// ci.cancel();
////// };
////// }
//// }
//
// @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;
//// }
// // TODO: Re-add
// }
// 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

@ -0,0 +1,25 @@
package su.a71.tardim_ic.platform;
import su.a71.tardim_ic.Constants;
import su.a71.tardim_ic.platform.services.IPlatformHelper;
import java.util.ServiceLoader;
public class Services {
// Platform helper that lets us do stuff for Forge/Fabric while being in Common
public static final IPlatformHelper PLATFORM = load(IPlatformHelper.class);
// This code is used to load a service for the current environment. Your implementation of the service must be defined
// manually by including a text file in META-INF/services named with the fully qualified class name of the service.
// Inside the file you should write the fully qualified class name of the implementation to load for the platform. For
// example our file on Forge points to ForgePlatformHelper while Fabric points to FabricPlatformHelper.
public static <T> T load(Class<T> clazz) {
final T loadedService = ServiceLoader.load(clazz)
.findFirst()
.orElseThrow(() -> new NullPointerException("Failed to load service for " + clazz.getName()));
// Constants.LOG.debug("Loaded {} for service {}", loadedService, clazz);
return loadedService;
}
}

View file

@ -0,0 +1,47 @@
package su.a71.tardim_ic.platform.services;
import net.minecraft.sounds.SoundEvent;
import net.minecraft.world.entity.Entity;
import net.minecraft.world.entity.EntityType;
import net.minecraft.world.entity.MobCategory;
import net.minecraft.world.item.Item;
import net.minecraft.world.level.block.Block;
import net.minecraft.world.level.block.entity.BlockEntity;
import net.minecraft.world.level.block.entity.BlockEntityType;
import java.util.function.Supplier;
public interface IPlatformHelper {
/**
* Gets the name of the current platform
*
* @return The name of the current platform.
*/
String getPlatformName();
/**
* Checks if a mod with the given id is loaded.
*
* @param modId The mod to check if it is loaded.
* @return True if the mod is loaded, false otherwise.
*/
boolean isModLoaded(String modId);
/**
* Check if the game is currently in a development environment.
*
* @return True if in a development environment, false otherwise.
*/
boolean isDevelopmentEnvironment();
/**
* Gets the name of the environment type as a string.
*
* @return The name of the environment type.
*/
default String getEnvironmentName() {
return isDevelopmentEnvironment() ? "development" : "production";
}
}

View file

@ -0,0 +1,34 @@
package su.a71.tardim_ic.utils;
import com.mojang.authlib.GameProfile;
import net.minecraft.core.BlockPos;
import net.minecraft.world.entity.player.Player;
import net.minecraft.world.level.Level;
import java.util.UUID;
/**
* This class is used whenever we need a player for a function but cannot get one
* (i.g we are on server side and need to execute TARDIM command)
*/
public class FakePlayer extends Player {
public FakePlayer(Level lvl, BlockPos blockPos) {
super(lvl, blockPos, 0, new GameProfile(UUID.randomUUID(), "FakePlayer_tardimic"));
}
public FakePlayer(Level lvl, BlockPos blockPos, UUID id) {
super(lvl, blockPos, 0, new GameProfile(id, "FakePlayer_tardimic"));
}
@Override
public boolean isSpectator() {
return false;
}
@Override
public boolean isCreative() {
return false;
}
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 437 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 437 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 437 B

View file

@ -0,0 +1,8 @@
{
"variants": {
"facing=north": { "model": "tardim_ic:block/food_machine"},
"facing=east": { "model": "tardim_ic:block/food_machine", "y": 90},
"facing=south": { "model": "tardim_ic:block/food_machine", "y": 180},
"facing=west": { "model": "tardim_ic:block/food_machine", "y": 270}
}
}

View file

@ -0,0 +1,8 @@
{
"variants": {
"facing=north": { "model": "tardim_ic:block/tardim_dock"},
"facing=east": { "model": "tardim_ic:block/tardim_dock", "y": 90},
"facing=south": { "model": "tardim_ic:block/tardim_dock", "y": 180},
"facing=west": { "model": "tardim_ic:block/tardim_dock", "y": 270}
}
}

View file

@ -0,0 +1,124 @@
{
"variants": {
"facing=north,half=lower,open=false,front=false": {
"model": "tardim_ic:block/tardim_soviet_chronobox/tardim_door_sides_bottom"
},
"facing=north,half=lower,open=false,front=true": {
"model": "tardim_ic:block/tardim_soviet_chronobox/tardim_door_bottom_closed"
},
"facing=north,half=upper,open=false,front=false": {
"model": "tardim_ic:block/tardim_soviet_chronobox/tardim_door_sides_top"
},
"facing=north,half=upper,open=false,front=true": {
"model": "tardim_ic:block/tardim_soviet_chronobox/tardim_door_top_front_closed"
},
"facing=west,half=lower,open=false,front=false": {
"model": "tardim_ic:block/tardim_soviet_chronobox/tardim_door_sides_bottom",
"y": 270
},
"facing=west,half=lower,open=false,front=true": {
"model": "tardim_ic:block/tardim_soviet_chronobox/tardim_door_bottom_closed",
"y": 270
},
"facing=west,half=upper,open=false,front=false": {
"model": "tardim_ic:block/tardim_soviet_chronobox/tardim_door_sides_top",
"y": 270
},
"facing=west,half=upper,open=false,front=true": {
"model": "tardim_ic:block/tardim_soviet_chronobox/tardim_door_top_front_closed",
"y": 270
},
"facing=east,half=lower,open=false,front=false": {
"model": "tardim_ic:block/tardim_soviet_chronobox/tardim_door_sides_bottom",
"y": 90
},
"facing=east,half=lower,open=false,front=true": {
"model": "tardim_ic:block/tardim_soviet_chronobox/tardim_door_bottom_closed",
"y": 90
},
"facing=east,half=upper,open=false,front=false": {
"model": "tardim_ic:block/tardim_soviet_chronobox/tardim_door_sides_top",
"y": 90
},
"facing=east,half=upper,open=false,front=true": {
"model": "tardim_ic:block/tardim_soviet_chronobox/tardim_door_top_front_closed",
"y": 90
},
"facing=south,half=lower,open=false,front=false": {
"model": "tardim_ic:block/tardim_soviet_chronobox/tardim_door_sides_bottom",
"y": 180
},
"facing=south,half=lower,open=false,front=true": {
"model": "tardim_ic:block/tardim_soviet_chronobox/tardim_door_bottom_closed",
"y": 180
},
"facing=south,half=upper,open=false,front=false": {
"model": "tardim_ic:block/tardim_soviet_chronobox/tardim_door_sides_top",
"y": 180
},
"facing=south,half=upper,open=false,front=true": {
"model": "tardim_ic:block/tardim_soviet_chronobox/tardim_door_top_front_closed",
"y": 180
},
"facing=north,half=lower,open=true,front=false": {
"model": "tardim_ic:block/tardim_soviet_chronobox/tardim_door_sides_bottom"
},
"facing=north,half=lower,open=true,front=true": {
"model": "tardim_ic:block/tardim_soviet_chronobox/tardim_door_bottom_open"
},
"facing=north,half=upper,open=true,front=false": {
"model": "tardim_ic:block/tardim_soviet_chronobox/tardim_door_sides_top"
},
"facing=north,half=upper,open=true,front=true": {
"model": "tardim_ic:block/tardim_soviet_chronobox/tardim_door_top_front_open"
},
"facing=west,half=lower,open=true,front=false": {
"model": "tardim_ic:block/tardim_soviet_chronobox/tardim_door_sides_bottom",
"y": 270
},
"facing=west,half=lower,open=true,front=true": {
"model": "tardim_ic:block/tardim_soviet_chronobox/tardim_door_bottom_open",
"y": 270
},
"facing=west,half=upper,open=true,front=false": {
"model": "tardim_ic:block/tardim_soviet_chronobox/tardim_door_sides_top",
"y": 270
},
"facing=west,half=upper,open=true,front=true": {
"model": "tardim_ic:block/tardim_soviet_chronobox/tardim_door_top_front_open",
"y": 270
},
"facing=east,half=lower,open=true,front=false": {
"model": "tardim_ic:block/tardim_soviet_chronobox/tardim_door_sides_bottom",
"y": 90
},
"facing=east,half=lower,open=true,front=true": {
"model": "tardim_ic:block/tardim_soviet_chronobox/tardim_door_bottom_open",
"y": 90
},
"facing=east,half=upper,open=true,front=false": {
"model": "tardim_ic:block/tardim_soviet_chronobox/tardim_door_sides_top",
"y": 90
},
"facing=east,half=upper,open=true,front=true": {
"model": "tardim_ic:block/tardim_soviet_chronobox/tardim_door_top_front_open",
"y": 90
},
"facing=south,half=lower,open=true,front=false": {
"model": "tardim_ic:block/tardim_soviet_chronobox/tardim_door_sides_bottom",
"y": 180
},
"facing=south,half=lower,open=true,front=true": {
"model": "tardim_ic:block/tardim_soviet_chronobox/tardim_door_bottom_open",
"y": 180
},
"facing=south,half=upper,open=true,front=false": {
"model": "tardim_ic:block/tardim_soviet_chronobox/tardim_door_sides_top",
"y": 180
},
"facing=south,half=upper,open=true,front=true": {
"model": "tardim_ic:block/tardim_soviet_chronobox/tardim_door_top_front_open",
"y": 180
}
}
}

View file

@ -0,0 +1,5 @@
{
"variants": {
"": { "model": "tardim_ic:block/tardim_soviet_chronobox/tardim_floor" }
}
}

View file

@ -0,0 +1,5 @@
{
"variants": {
"": { "model": "tardim_ic:block/tardim_soviet_chronobox/tardim_roof" }
}
}

View file

Before

Width:  |  Height:  |  Size: 72 KiB

After

Width:  |  Height:  |  Size: 72 KiB

View file

@ -0,0 +1,10 @@
{
"block.tardim_ic.digital_tardim_interface": "Digital TARDIM Interface",
"block.tardim_ic.redstone_tardim_input": "Redstone TARDIM Input",
"block.tardim_ic.tardim_dock": "TARDIM Dock",
"block.tardim_ic.food_machine": "TARDIM food machine",
"itemGroup.tardim_ic": "TARDIM: In Control",
"itemGroup.minecraft.tardim_ic": "TARDIM: In Control",
"subtitles.tardim_ic.cloister": "Cloister bell rings",
"display_source.fuel_level": "TARDIM fuel level"
}

View file

@ -0,0 +1,10 @@
{
"block.tardim_ic.digital_tardim_interface": "Digital TARDIM interface",
"block.tardim_ic.redstone_tardim_input": "Redstone TARDIM input",
"block.tardim_ic.tardim_dock": "TARDIM dock",
"block.tardim_ic.food_machine": "TARDIM food machine",
"itemGroup.tardim_ic": "TARDIM: In Control",
"itemGroup.minecraft.tardim_ic": "TARDIM: In Control",
"subtitles.tardim_ic.cloister": "Cloister bell rings",
"display_source.fuel_level": "TARDIM fuel level"
}

View file

@ -0,0 +1,8 @@
{
"block.tardim_ic.digital_tardim_interface": "Циферный Интерфейсъ Хронобудки",
"block.tardim_ic.redstone_tardim_input": "Краснокаменный Инпутъ Хронобудки",
"block.tardim_ic.tardim_dock": "Конюшня для TARDIM",
"itemGroup.tardim_ic": "ТАРДИМЪ: Подъ Контрольемъ",
"itemGroup.minecraft.tardim_ic": "ТАРДИМЪ: Подъ Контрольемъ",
"subtitles.tardim_ic.cloister": "Звукъ временного колокола"
}

View file

@ -0,0 +1,10 @@
{
"block.tardim_ic.digital_tardim_interface": "Цифровой интерфейс TARDIM",
"block.tardim_ic.redstone_tardim_input": "Редстоуновый ввод TARDIM",
"block.tardim_ic.tardim_dock": "Стыковочная станция для TARDIM",
"block.tardim_ic.food_machine": "Раздатчик еды",
"itemGroup.tardim_ic": "TARDIM: In Control",
"itemGroup.minecraft.tardim_ic": "TARDIM: In Control",
"subtitles.tardim_ic.cloister": "Звон монастырского колокола",
"display_source.fuel_level": "Уровень топлива в TARDIM"
}

View file

@ -0,0 +1,213 @@
{
"credit": "Made by karoter2 (Feulim)",
"parent": "digital_tardim_interface",
"texture_size": [64, 64],
"textures": {
"1": "tardim_ic:block/digital_tardim_interface",
"particle": "tardim_ic:block/digital_tardim_interface"
},
"elements": [
{
"from": [0, 0, 0],
"to": [16, 14, 16],
"faces": {
"north": {"uv": [4, 4, 8, 7.5], "texture": "#1"},
"east": {"uv": [0, 4, 4, 7.5], "texture": "#1"},
"south": {"uv": [12, 4, 16, 7.5], "texture": "#1"},
"west": {"uv": [8, 4, 12, 7.5], "texture": "#1"},
"up": {"uv": [8, 4, 4, 0], "texture": "#1"},
"down": {"uv": [12, 0, 8, 4], "texture": "#1"}
}
},
{
"from": [5, 14, 5],
"to": [11, 16, 11],
"faces": {
"north": {"uv": [1.5, 9, 3, 9.5], "texture": "#1"},
"east": {"uv": [0, 9, 1.5, 9.5], "texture": "#1"},
"south": {"uv": [4.5, 9, 6, 9.5], "texture": "#1"},
"west": {"uv": [3, 9, 4.5, 9.5], "texture": "#1"},
"up": {"uv": [3, 9, 1.5, 7.5], "texture": "#1"},
"down": {"uv": [4.5, 7.5, 3, 9], "texture": "#1"}
}
},
{
"from": [11, 14, 7],
"to": [14, 16, 9],
"faces": {
"north": {"uv": [12.5, 0.5, 13.25, 1], "texture": "#1"},
"east": {"uv": [12, 0.5, 12.5, 1], "texture": "#1"},
"south": {"uv": [13.75, 0.5, 14.5, 1], "texture": "#1"},
"west": {"uv": [13.25, 0.5, 13.75, 1], "texture": "#1"},
"up": {"uv": [13.25, 0.5, 12.5, 0], "texture": "#1"},
"down": {"uv": [14, 0, 13.25, 0.5], "texture": "#1"}
}
},
{
"from": [12.5, 14, 3.5],
"to": [12.5, 15, 12.5],
"faces": {
"north": {"uv": [12, 3.75, 14.25, 4], "texture": "#1"},
"east": {"uv": [12, 3.75, 14.25, 4], "texture": "#1"},
"south": {"uv": [12, 3.75, 14.25, 4], "texture": "#1"},
"west": {"uv": [13, 3.75, 15.25, 4], "texture": "#1"},
"up": {"uv": [12, 3.75, 14.25, 4], "texture": "#1"},
"down": {"uv": [12, 3.75, 14.25, 4], "texture": "#1"}
}
},
{
"from": [3.5, 14, 12.5],
"to": [12.5, 15, 12.5],
"faces": {
"north": {"uv": [12, 3.75, 14.25, 4], "texture": "#1"},
"east": {"uv": [12, 3.75, 14.25, 4], "texture": "#1"},
"south": {"uv": [12.5, 3.75, 14.75, 4], "texture": "#1"},
"west": {"uv": [13.5, 3.75, 15.75, 4], "texture": "#1"},
"up": {"uv": [12, 3.75, 14.25, 4], "texture": "#1"},
"down": {"uv": [12, 3.75, 14.25, 4], "texture": "#1"}
}
},
{
"from": [3.5, 14, 3.5],
"to": [12.5, 15, 3.5],
"faces": {
"north": {"uv": [12, 3.75, 14.25, 4], "texture": "#1"},
"east": {"uv": [12, 3.75, 14.25, 4], "texture": "#1"},
"south": {"uv": [12.5, 3.75, 14.75, 4], "texture": "#1"},
"west": {"uv": [13.5, 3.75, 15.75, 4], "texture": "#1"},
"up": {"uv": [12, 3.75, 14.25, 4], "texture": "#1"},
"down": {"uv": [12, 3.75, 14.25, 4], "texture": "#1"}
}
},
{
"from": [3.5, 14, 3.5],
"to": [3.5, 15, 12.5],
"faces": {
"north": {"uv": [12, 3.75, 14.25, 4], "texture": "#1"},
"east": {"uv": [12, 3.75, 14.25, 4], "texture": "#1"},
"south": {"uv": [12, 3.75, 14.25, 4], "texture": "#1"},
"west": {"uv": [13, 3.75, 15.25, 4], "texture": "#1"},
"up": {"uv": [12, 3.75, 14.25, 4], "texture": "#1"},
"down": {"uv": [12, 3.75, 14.25, 4], "texture": "#1"}
}
},
{
"from": [2, 14, 7],
"to": [5, 16, 9],
"faces": {
"north": {"uv": [5, 8, 5.75, 8.5], "texture": "#1"},
"east": {"uv": [4.5, 8, 5, 8.5], "texture": "#1"},
"south": {"uv": [6.25, 8, 7, 8.5], "texture": "#1"},
"west": {"uv": [5.75, 8, 6.25, 8.5], "texture": "#1"},
"up": {"uv": [5.75, 8, 5, 7.5], "texture": "#1"},
"down": {"uv": [6.5, 7.5, 5.75, 8], "texture": "#1"}
}
},
{
"from": [7, 14, 2],
"to": [9, 16, 5],
"faces": {
"north": {"uv": [3.25, 12.5, 3.75, 13], "texture": "#1"},
"east": {"uv": [2.5, 12.5, 3.25, 13], "texture": "#1"},
"south": {"uv": [4.5, 12.5, 5, 13], "texture": "#1"},
"west": {"uv": [3.75, 12.5, 4.5, 13], "texture": "#1"},
"up": {"uv": [3.75, 12.5, 3.25, 11.75], "texture": "#1"},
"down": {"uv": [4.25, 11.75, 3.75, 12.5], "texture": "#1"}
}
},
{
"from": [7, 14, 11],
"to": [9, 16, 14],
"faces": {
"north": {"uv": [0.75, 12.5, 1.25, 13], "texture": "#1"},
"east": {"uv": [0, 12.5, 0.75, 13], "texture": "#1"},
"south": {"uv": [2, 12.5, 2.5, 13], "texture": "#1"},
"west": {"uv": [1.25, 12.5, 2, 13], "texture": "#1"},
"up": {"uv": [1.25, 12.5, 0.75, 11.75], "texture": "#1"},
"down": {"uv": [1.75, 11.75, 1.25, 12.5], "texture": "#1"}
}
},
{
"from": [6, 13, -2],
"to": [10, 17, 2],
"faces": {
"north": {"uv": [10, 9.5, 11, 10.5], "texture": "#1"},
"east": {"uv": [9, 9.5, 10, 10.5], "texture": "#1"},
"south": {"uv": [12, 9.5, 13, 10.5], "texture": "#1"},
"west": {"uv": [11, 9.5, 12, 10.5], "texture": "#1"},
"up": {"uv": [11, 9.5, 10, 8.5], "texture": "#1"},
"down": {"uv": [12, 8.5, 11, 9.5], "texture": "#1"}
}
},
{
"from": [6, 13, 14],
"to": [10, 17, 18],
"faces": {
"north": {"uv": [7, 8.5, 8, 9.5], "texture": "#1"},
"east": {"uv": [6, 8.5, 7, 9.5], "texture": "#1"},
"south": {"uv": [9, 8.5, 10, 9.5], "texture": "#1"},
"west": {"uv": [8, 8.5, 9, 9.5], "texture": "#1"},
"up": {"uv": [8, 8.5, 7, 7.5], "texture": "#1"},
"down": {"uv": [9, 7.5, 8, 8.5], "texture": "#1"}
}
},
{
"from": [-2, 13, 6],
"to": [2, 17, 10],
"faces": {
"north": {"uv": [1, 3, 2, 4], "texture": "#1"},
"east": {"uv": [0, 3, 1, 4], "texture": "#1"},
"south": {"uv": [3, 3, 4, 4], "texture": "#1"},
"west": {"uv": [2, 3, 3, 4], "texture": "#1"},
"up": {"uv": [2, 3, 1, 2], "texture": "#1"},
"down": {"uv": [3, 2, 2, 3], "texture": "#1"}
}
},
{
"from": [14, 13, 6],
"to": [18, 17, 10],
"faces": {
"north": {"uv": [1, 1, 2, 2], "texture": "#1"},
"east": {"uv": [0, 1, 1, 2], "texture": "#1"},
"south": {"uv": [3, 1, 4, 2], "texture": "#1"},
"west": {"uv": [2, 1, 3, 2], "texture": "#1"},
"up": {"uv": [2, 1, 1, 0], "texture": "#1"},
"down": {"uv": [3, 0, 2, 1], "texture": "#1"}
}
}
],
"display": {
"thirdperson_righthand": {
"translation": [0, -1.5, 0],
"scale": [0.5, 0.5, 0.5]
},
"thirdperson_lefthand": {
"translation": [0, -1.5, 0],
"scale": [0.5, 0.5, 0.5]
},
"firstperson_righthand": {
"translation": [-1.25, 0, 0],
"scale": [0.5, 0.5, 0.5]
},
"firstperson_lefthand": {
"translation": [3.75, -1.5, 0],
"scale": [0.5, 0.5, 0.5]
},
"ground": {
"translation": [0, -0.5, 0],
"scale": [0.35, 0.35, 0.35]
},
"gui": {
"rotation": [33, 45, 0],
"scale": [0.6, 0.6, 0.6]
},
"head": {
"translation": [0, 0.75, 0],
"scale": [1.1, 1.1, 1.1]
},
"fixed": {
"rotation": [-90, 0, 0],
"translation": [0, 0, 4.25]
}
}
}

View file

@ -0,0 +1,104 @@
{
"credit": "Made by karoter2 (Feulim)",
"texture_size": [128, 128],
"textures": {
"0": "tardim_ic:block/food_machine",
"particle": "tardim_ic:block/food_machine"
},
"elements": [
{
"from": [0, 0, 1],
"to": [16, 10, 16],
"faces": {
"north": {"uv": [1.875, 1.875, 3.875, 3.125], "texture": "#0"},
"east": {"uv": [0, 1.875, 1.875, 3.125], "texture": "#0"},
"south": {"uv": [5.75, 1.875, 7.75, 3.125], "texture": "#0"},
"west": {"uv": [3.875, 1.875, 5.75, 3.125], "texture": "#0"},
"up": {"uv": [3.875, 1.875, 1.875, 0], "texture": "#0"},
"down": {"uv": [5.875, 0, 3.875, 1.875], "texture": "#0"}
}
},
{
"from": [0.5, 1, 16.02],
"to": [15.5, 15, 16.02],
"faces": {
"north": {"uv": [8.25, 1.625, 10.125, 3.375], "texture": "#0"},
"east": {"uv": [8.25, 1.625, 8.25, 3.375], "texture": "#0"},
"south": {"uv": [10.125, 1.625, 12, 3.375], "texture": "#0"},
"west": {"uv": [10.125, 1.625, 10.125, 3.375], "texture": "#0"},
"up": {"uv": [10.125, 1.625, 8.25, 1.625], "texture": "#0"},
"down": {"uv": [12, 1.625, 10.125, 1.625], "texture": "#0"}
}
},
{
"from": [0, 10, 0],
"to": [16, 12, 16],
"faces": {
"north": {"uv": [2, 5.125, 4, 5.375], "texture": "#0"},
"east": {"uv": [0, 5.125, 2, 5.375], "texture": "#0"},
"south": {"uv": [6, 5.125, 8, 5.375], "texture": "#0"},
"west": {"uv": [4, 5.125, 6, 5.375], "texture": "#0"},
"up": {"uv": [4, 5.125, 2, 3.125], "texture": "#0"},
"down": {"uv": [6, 3.125, 4, 5.125], "texture": "#0"}
}
},
{
"from": [0, 12, 9],
"to": [16, 16, 16],
"faces": {
"north": {"uv": [0.875, 6.25, 2.875, 6.75], "texture": "#0"},
"east": {"uv": [0, 6.25, 0.875, 6.75], "texture": "#0"},
"south": {"uv": [3.75, 6.25, 5.75, 6.75], "texture": "#0"},
"west": {"uv": [2.875, 6.25, 3.75, 6.75], "texture": "#0"},
"up": {"uv": [2.875, 6.25, 0.875, 5.375], "texture": "#0"},
"down": {"uv": [4.875, 5.375, 2.875, 6.25], "texture": "#0"}
}
},
{
"from": [5, 11, 4],
"to": [11, 14, 10],
"rotation": {"angle": -22.5, "axis": "x", "origin": [9, 12, 8]},
"faces": {
"north": {"uv": [6.5, 6.125, 7.25, 6.5], "texture": "#0"},
"east": {"uv": [5.75, 6.125, 6.5, 6.5], "texture": "#0"},
"south": {"uv": [8, 6.125, 8.75, 6.5], "texture": "#0"},
"west": {"uv": [7.25, 6.125, 8, 6.5], "texture": "#0"},
"up": {"uv": [7.25, 6.125, 6.5, 5.375], "texture": "#0"},
"down": {"uv": [8, 5.375, 7.25, 6.125], "texture": "#0"}
}
},
{
"from": [1, 12, 3],
"to": [4, 13, 6],
"faces": {
"north": {"uv": [0.375, 0.875, 0.75, 1], "texture": "#0"},
"east": {"uv": [0, 0.875, 0.375, 1], "texture": "#0"},
"south": {"uv": [1.125, 0.875, 1.5, 1], "texture": "#0"},
"west": {"uv": [0.75, 0.875, 1.125, 1], "texture": "#0"},
"up": {"uv": [0.75, 0.875, 0.375, 0.5], "texture": "#0"},
"down": {"uv": [1.125, 0.5, 0.75, 0.875], "texture": "#0"}
}
},
{
"from": [12, 12, 3],
"to": [15, 13, 6],
"faces": {
"north": {"uv": [0.375, 0.375, 0.75, 0.5], "texture": "#0"},
"east": {"uv": [0, 0.375, 0.375, 0.5], "texture": "#0"},
"south": {"uv": [1.125, 0.375, 1.5, 0.5], "texture": "#0"},
"west": {"uv": [0.75, 0.375, 1.125, 0.5], "texture": "#0"},
"up": {"uv": [0.75, 0.375, 0.375, 0], "texture": "#0"},
"down": {"uv": [1.125, 0, 0.75, 0.375], "texture": "#0"}
}
}
],
"groups": [
{
"name": "group",
"origin": [8, 8, 8],
"color": 0,
"nbt": "{}",
"children": [0, 1, 2, 3, 4, 5, 6]
}
]
}

View file

@ -0,0 +1,36 @@
{
"credit": "Made by karoter2 (Feulim)",
"parent": "block/cube_all",
"ambientocclusion": false,
"textures": {
"1": "tardim_ic:block/redstone_input",
"2": "tardim_ic:block/redstone_input",
"particle": "tardim_ic:block/redstone_input"
},
"elements": [
{
"from": [0, 0, 0],
"to": [16, 16, 16],
"faces": {
"north": {"uv": [0, 0, 16, 16], "texture": "#2"},
"east": {"uv": [0, 0, 16, 16], "texture": "#2"},
"south": {"uv": [0, 0, 16, 16], "texture": "#2"},
"west": {"uv": [0, 0, 16, 16], "texture": "#2"},
"up": {"uv": [0, 0, 16, 16], "texture": "#2"},
"down": {"uv": [0, 0, 16, 16], "texture": "#2"}
}
},
{
"from": [-0.325, -0.35, -0.35],
"to": [16.35, 16.525, 16.275],
"faces": {
"north": {"uv": [0, 0, 16, 16], "texture": "#1"},
"east": {"uv": [0, 0, 16, 16], "texture": "#1"},
"south": {"uv": [0, 0, 16, 16], "texture": "#1"},
"west": {"uv": [0, 0, 16, 16], "texture": "#1"},
"up": {"uv": [0, 0, 16, 16], "texture": "#1"},
"down": {"uv": [0, 0, 16, 16], "texture": "#1"}
}
}
]
}

View file

@ -0,0 +1,8 @@
{
"parent": "tardim_ic:block/redstone_tardim_input",
"textures": {
"1": "tardim_ic:block/redstone_input_lit",
"2": "tardim_ic:block/redstone_input_lit",
"particle": "tardim_ic:block/redstone_input_lit"
}
}

View file

@ -0,0 +1,198 @@
{
"credit": "Made by karoter2 (Feulim)",
"texture_size": [64, 64],
"textures": {
"1": "tardim_ic:block/tardim_dock",
"particle": "tardim_ic:block/tardim_dock"
},
"elements": [
{
"from": [2, 0, 2],
"to": [14, 12, 14],
"faces": {
"north": {"uv": [4, 0, 7, 3], "texture": "#1"},
"east": {"uv": [4, 3, 7, 6], "texture": "#1"},
"south": {"uv": [4, 6, 7, 9], "texture": "#1"},
"west": {"uv": [7, 0, 10, 3], "texture": "#1"},
"up": {"uv": [10, 6, 7, 3], "texture": "#1"},
"down": {"uv": [10, 6, 7, 9], "texture": "#1"}
}
},
{
"from": [0, 12, 0],
"to": [16, 16, 16],
"faces": {
"north": {"uv": [0, 8, 4, 9], "texture": "#1"},
"east": {"uv": [0, 9, 4, 10], "texture": "#1"},
"south": {"uv": [4, 9, 8, 10], "texture": "#1"},
"west": {"uv": [8, 9, 12, 10], "texture": "#1"},
"up": {"uv": [4, 4, 0, 0], "texture": "#1"},
"down": {"uv": [4, 4, 0, 8], "texture": "#1"}
}
},
{
"from": [12, 7, 0],
"to": [12, 12, 1],
"rotation": {"angle": 0, "axis": "y", "origin": [8, 8, 8]},
"faces": {
"north": {"uv": [0, 0, 0, 3], "texture": "#1"},
"east": {"uv": [10.25, 0, 10, 1.25], "texture": "#1"},
"south": {"uv": [0, 0, 0, 3], "texture": "#1"},
"west": {"uv": [10, 0, 10.25, 1.25], "texture": "#1"},
"up": {"uv": [0, 0.5, 0, 0], "texture": "#1"},
"down": {"uv": [0, 0, 0, 0.5], "texture": "#1"}
}
},
{
"from": [12, 6, 1],
"to": [12, 7, 2],
"rotation": {"angle": 0, "axis": "y", "origin": [8, 8, 8]},
"faces": {
"north": {"uv": [0, 0, 0, 3], "texture": "#1"},
"east": {"uv": [10.5, 1.25, 10.25, 1.5], "texture": "#1"},
"south": {"uv": [0, 0, 0, 3], "texture": "#1"},
"west": {"uv": [10.5, 1.25, 10.25, 1.5], "texture": "#1"},
"up": {"uv": [0, 0.5, 0, 0], "texture": "#1"},
"down": {"uv": [0, 0, 0, 0.5], "texture": "#1"}
}
},
{
"from": [4, 4, 0],
"to": [4, 12, 1],
"rotation": {"angle": 0, "axis": "y", "origin": [8, 8, 8]},
"faces": {
"north": {"uv": [0, 0, 0, 3], "texture": "#1"},
"east": {"uv": [1.25, 10, 1, 12], "texture": "#1"},
"south": {"uv": [0, 0, 0, 3], "texture": "#1"},
"west": {"uv": [1, 10, 1.25, 12], "texture": "#1"},
"up": {"uv": [0, 0.5, 0, 0], "texture": "#1"},
"down": {"uv": [0, 0, 0, 0.5], "texture": "#1"}
}
},
{
"from": [4, 3, 1],
"to": [4, 4, 2],
"rotation": {"angle": 0, "axis": "y", "origin": [8, 8, 8]},
"faces": {
"north": {"uv": [0, 0, 0, 3], "texture": "#1"},
"east": {"uv": [1.5, 12, 1.25, 12.25], "texture": "#1"},
"south": {"uv": [0, 0, 0, 3], "texture": "#1"},
"west": {"uv": [1.25, 12, 1.5, 12.25], "texture": "#1"},
"up": {"uv": [0, 0.5, 0, 0], "texture": "#1"},
"down": {"uv": [0, 0, 0, 0.5], "texture": "#1"}
}
},
{
"from": [4, 7, 15],
"to": [4, 12, 16],
"rotation": {"angle": 0, "axis": "y", "origin": [8, 8, 8]},
"faces": {
"north": {"uv": [0, 0, 0, 3], "texture": "#1"},
"east": {"uv": [10, 0, 10.25, 1.25], "texture": "#1"},
"south": {"uv": [0, 0, 0, 3], "texture": "#1"},
"west": {"uv": [10.25, 0, 10, 1.25], "texture": "#1"},
"up": {"uv": [0, 0.5, 0, 0], "rotation": 180, "texture": "#1"},
"down": {"uv": [0, 0, 0, 0.5], "rotation": 180, "texture": "#1"}
}
},
{
"from": [4, 6, 14],
"to": [4, 7, 15],
"rotation": {"angle": 0, "axis": "y", "origin": [8, 8, 8]},
"faces": {
"north": {"uv": [0, 0, 0, 3], "texture": "#1"},
"east": {"uv": [10.5, 1.25, 10.25, 1.5], "texture": "#1"},
"south": {"uv": [0, 0, 0, 3], "texture": "#1"},
"west": {"uv": [10.5, 1.25, 10.25, 1.5], "texture": "#1"},
"up": {"uv": [0, 0.5, 0, 0], "rotation": 180, "texture": "#1"},
"down": {"uv": [0, 0, 0, 0.5], "rotation": 180, "texture": "#1"}
}
},
{
"from": [12, 4, 15],
"to": [12, 12, 16],
"rotation": {"angle": 0, "axis": "y", "origin": [8, 8, 8]},
"faces": {
"north": {"uv": [0, 0, 0, 3], "texture": "#1"},
"east": {"uv": [1, 10, 1.25, 12], "texture": "#1"},
"south": {"uv": [0, 0, 0, 3], "texture": "#1"},
"west": {"uv": [1.25, 10, 1, 12], "texture": "#1"},
"up": {"uv": [0, 0.5, 0, 0], "rotation": 180, "texture": "#1"},
"down": {"uv": [0, 0, 0, 0.5], "rotation": 180, "texture": "#1"}
}
},
{
"from": [12, 3, 14],
"to": [12, 4, 15],
"rotation": {"angle": 0, "axis": "y", "origin": [8, 8, 8]},
"faces": {
"north": {"uv": [0, 0, 0, 3], "texture": "#1"},
"east": {"uv": [1.25, 12, 1.5, 12.25], "texture": "#1"},
"south": {"uv": [0, 0, 0, 3], "texture": "#1"},
"west": {"uv": [1.5, 12, 1.25, 12.25], "texture": "#1"},
"up": {"uv": [0, 0.5, 0, 0], "rotation": 180, "texture": "#1"},
"down": {"uv": [0, 0, 0, 0.5], "rotation": 180, "texture": "#1"}
}
}
],
"display": {
"thirdperson_righthand": {
"translation": [0, 0, 0.5],
"scale": [0.3, 0.3, 0.3]
},
"thirdperson_lefthand": {
"scale": [0.3, 0.3, 0.3]
},
"firstperson_righthand": {
"translation": [1.75, -0.25, 0],
"scale": [0.5, 0.5, 0.5]
},
"firstperson_lefthand": {
"translation": [3, 0, 0],
"scale": [0.5, 0.5, 0.5]
},
"ground": {
"translation": [0, -0.25, 0],
"scale": [0.4, 0.4, 0.4]
},
"gui": {
"rotation": [18, 45, 0],
"translation": [0, -0.5, 0],
"scale": [0.65, 0.65, 0.65]
},
"head": {
"rotation": [0, -90, 0],
"scale": [1.2, 1.2, 1.2]
},
"fixed": {
"rotation": [-90, 0, 0],
"scale": [1.2, 1.2, 1.2]
}
},
"groups": [
{
"name": "group",
"origin": [8, 8, 8],
"color": 0,
"nbt": "{}",
"children": [
0,
1,
{
"name": "group",
"origin": [8, 8, 8],
"color": 0,
"nbt": "{}",
"children": [2, 3, 4, 5]
},
{
"name": "group",
"origin": [8, 8, 8],
"color": 0,
"nbt": "{}",
"children": [6, 7, 8, 9]
}
]
}
]
}

View file

@ -0,0 +1,279 @@
{
"credit": "Made by karoter2",
"texture_size": [64, 64],
"textures": {
"0": "tardim_ic:blocks/tardim_soviet_chronobox",
"particle": "tardim_ic:blocks/tardim_soviet_chronobox"
},
"elements": [
{
"from": [13, 0, 0],
"to": [15, 32, 1],
"rotation": {"angle": 0, "axis": "y", "origin": [15, 0, 0]},
"faces": {
"north": {"uv": [12.5, 0, 13, 8], "texture": "#0"},
"east": {"uv": [12.5, 0, 12.75, 8], "texture": "#0"},
"south": {"uv": [12.5, 0, 13, 8], "texture": "#0"},
"west": {"uv": [12.75, 0, 13, 8], "texture": "#0"},
"up": {"uv": [12.5, 0, 13, 0.25], "rotation": 90, "texture": "#0"},
"down": {"uv": [12.5, 7.75, 13, 8], "rotation": 270, "texture": "#0"}
}
},
{
"from": [3, 0, 0],
"to": [13, 2, 1],
"rotation": {"angle": 0, "axis": "y", "origin": [15, 0, 0]},
"faces": {
"north": {"uv": [13, 7.5, 15.5, 8], "texture": "#0"},
"east": {"uv": [15.25, 7.5, 15.5, 8], "texture": "#0"},
"south": {"uv": [13, 7.5, 15.5, 8], "texture": "#0"},
"west": {"uv": [15.75, 7.5, 16, 8], "texture": "#0"},
"up": {"uv": [15.75, 5.25, 16, 7.75], "rotation": 90, "texture": "#0"},
"down": {"uv": [15.75, 5.25, 16, 7.75], "rotation": 270, "texture": "#0"}
}
},
{
"from": [3, 15, 0],
"to": [13, 17, 1],
"rotation": {"angle": 0, "axis": "y", "origin": [15, 0, 0]},
"faces": {
"north": {"uv": [13, 3.75, 15.5, 4.25], "texture": "#0"},
"east": {"uv": [15.25, 7.5, 15.5, 8], "texture": "#0"},
"south": {"uv": [13, 3.75, 15.5, 4.25], "texture": "#0"},
"west": {"uv": [15.75, 7.5, 16, 8], "texture": "#0"},
"up": {"uv": [15.75, 5.25, 16, 7.75], "rotation": 90, "texture": "#0"},
"down": {"uv": [15.75, 5.25, 16, 7.75], "rotation": 270, "texture": "#0"}
}
},
{
"from": [3, 17, 0],
"to": [13, 30, 0],
"rotation": {"angle": 0, "axis": "y", "origin": [15, 0, 0]},
"faces": {
"north": {"uv": [10, 0, 12.5, 3.25], "texture": "#0"},
"east": {"uv": [10, 0, 12.5, 3.25], "texture": "#0"},
"south": {"uv": [12.5, 0, 10, 3.25], "texture": "#0"},
"west": {"uv": [10, 0, 12.5, 3.25], "texture": "#0"},
"up": {"uv": [10, 0, 12.5, 3.25], "rotation": 90, "texture": "#0"},
"down": {"uv": [10, 0, 12.5, 3.25], "rotation": 270, "texture": "#0"}
}
},
{
"from": [3, 17, -16],
"to": [13, 30, -16],
"rotation": {"angle": 0, "axis": "y", "origin": [15, 0, 0]},
"faces": {
"north": {"uv": [10, 3.25, 12.5, 6.5], "texture": "#0"},
"east": {"uv": [10, 0, 12.5, 3.25], "texture": "#0"},
"south": {"uv": [12.5, 3.25, 10, 6.5], "texture": "#0"},
"west": {"uv": [10, 0, 12.5, 3.25], "texture": "#0"},
"up": {"uv": [10, 0, 12.5, 3.25], "rotation": 90, "texture": "#0"},
"down": {"uv": [10, 0, 12.5, 3.25], "rotation": 270, "texture": "#0"}
}
},
{
"from": [0, 17, -13],
"to": [0, 30, -3],
"rotation": {"angle": 0, "axis": "y", "origin": [15, 0, 0]},
"faces": {
"north": {"uv": [10, 0, 12.5, 3.25], "texture": "#0"},
"east": {"uv": [10, 0, 12.5, 3.25], "texture": "#0"},
"south": {"uv": [12.5, 0, 10, 3.25], "texture": "#0"},
"west": {"uv": [10, 0, 12.5, 3.25], "texture": "#0"},
"up": {"uv": [10, 0, 12.5, 3.25], "rotation": 90, "texture": "#0"},
"down": {"uv": [10, 0, 12.5, 3.25], "rotation": 270, "texture": "#0"}
}
},
{
"from": [16, 17, -13],
"to": [16, 30, -3],
"rotation": {"angle": 0, "axis": "y", "origin": [15, 0, 0]},
"faces": {
"north": {"uv": [10, 0, 12.5, 3.25], "texture": "#0"},
"east": {"uv": [10, 0, 12.5, 3.25], "texture": "#0"},
"south": {"uv": [12.5, 0, 10, 3.25], "texture": "#0"},
"west": {"uv": [10, 0, 12.5, 3.25], "texture": "#0"},
"up": {"uv": [10, 0, 12.5, 3.25], "rotation": 90, "texture": "#0"},
"down": {"uv": [10, 0, 12.5, 3.25], "rotation": 270, "texture": "#0"}
}
},
{
"from": [7, 18, 0.425],
"to": [9, 20, 0.425],
"rotation": {"angle": 0, "axis": "y", "origin": [15, 0, 0]},
"faces": {
"north": {"uv": [9.25, 1, 8.75, 1.5], "texture": "#0"},
"east": {"uv": [9.25, 1, 8.75, 1.5], "texture": "#0"},
"south": {"uv": [9.25, 1, 8.75, 1.5], "texture": "#0"},
"west": {"uv": [9.25, 1, 8.75, 1.5], "texture": "#0"},
"up": {"uv": [9.25, 1, 8.75, 1.5], "texture": "#0"},
"down": {"uv": [9.25, 1, 8.75, 1.5], "texture": "#0"}
}
},
{
"from": [6, 19, 0.425],
"to": [7, 20, 0.425],
"rotation": {"angle": 0, "axis": "y", "origin": [15, 0, 0]},
"faces": {
"north": {"uv": [8.75, 1, 8.5, 1.25], "texture": "#0"},
"east": {"uv": [8.75, 1, 8.5, 1.25], "texture": "#0"},
"south": {"uv": [8.75, 1, 8.5, 1.25], "texture": "#0"},
"west": {"uv": [8.75, 1, 8.5, 1.25], "texture": "#0"},
"up": {"uv": [8.75, 1, 8.5, 1.25], "texture": "#0"},
"down": {"uv": [8.75, 1, 8.5, 1.25], "texture": "#0"}
}
},
{
"from": [9, 19, 0.425],
"to": [10, 20, 0.425],
"rotation": {"angle": 0, "axis": "y", "origin": [15, 0, 0]},
"faces": {
"north": {"uv": [9.5, 1, 9.25, 1.25], "texture": "#0"},
"east": {"uv": [9.5, 1, 9.25, 1.25], "texture": "#0"},
"south": {"uv": [9.5, 1, 9.25, 1.25], "texture": "#0"},
"west": {"uv": [9.5, 1, 9.25, 1.25], "texture": "#0"},
"up": {"uv": [9.5, 1, 9.25, 1.25], "texture": "#0"},
"down": {"uv": [9.5, 1, 9.25, 1.25], "texture": "#0"}
}
},
{
"from": [11, 20, 0.425],
"to": [12, 22, 0.425],
"rotation": {"angle": 0, "axis": "y", "origin": [15, 0, 0]},
"faces": {
"north": {"uv": [10, 0.5, 9.75, 1], "texture": "#0"},
"east": {"uv": [10, 0.5, 9.75, 1], "texture": "#0"},
"south": {"uv": [10, 0.5, 9.75, 1], "texture": "#0"},
"west": {"uv": [10, 0.5, 9.75, 1], "texture": "#0"},
"up": {"uv": [10, 0.5, 9.75, 1], "texture": "#0"},
"down": {"uv": [10, 0.5, 9.75, 1], "texture": "#0"}
}
},
{
"from": [4, 20, 0.425],
"to": [5, 22, 0.425],
"rotation": {"angle": 0, "axis": "y", "origin": [15, 0, 0]},
"faces": {
"north": {"uv": [8.25, 0.5, 8, 1], "texture": "#0"},
"east": {"uv": [8.25, 0.5, 8, 1], "texture": "#0"},
"south": {"uv": [8.25, 0.5, 8, 1], "texture": "#0"},
"west": {"uv": [8.25, 0.5, 8, 1], "texture": "#0"},
"up": {"uv": [8.25, 0.5, 8, 1], "texture": "#0"},
"down": {"uv": [8.25, 0.5, 8, 1], "texture": "#0"}
}
},
{
"from": [5, 21, 0.425],
"to": [6, 22, 0.425],
"rotation": {"angle": 0, "axis": "y", "origin": [15, 0, 0]},
"faces": {
"north": {"uv": [8.5, 0.5, 8.25, 0.75], "texture": "#0"},
"east": {"uv": [8.5, 0.5, 8.25, 0.75], "texture": "#0"},
"south": {"uv": [8.5, 0.5, 8.25, 0.75], "texture": "#0"},
"west": {"uv": [8.5, 0.5, 8.25, 0.75], "texture": "#0"},
"up": {"uv": [8.5, 0.5, 8.25, 0.75], "texture": "#0"},
"down": {"uv": [8.5, 0.5, 8.25, 0.75], "texture": "#0"}
}
},
{
"from": [5, 22, 0.425],
"to": [11, 23, 0.425],
"rotation": {"angle": 0, "axis": "y", "origin": [15, 0, 0]},
"faces": {
"north": {"uv": [9.75, 0.25, 8.25, 0.5], "texture": "#0"},
"east": {"uv": [9.75, 0.25, 8.25, 0.5], "texture": "#0"},
"south": {"uv": [9.75, 0.25, 8.25, 0.5], "texture": "#0"},
"west": {"uv": [9.75, 0.25, 8.25, 0.5], "texture": "#0"},
"up": {"uv": [9.75, 0.25, 8.25, 0.5], "texture": "#0"},
"down": {"uv": [9.75, 0.25, 8.25, 0.5], "texture": "#0"}
}
},
{
"from": [7, 23, 0.425],
"to": [9, 24, 0.425],
"rotation": {"angle": 0, "axis": "y", "origin": [15, 0, 0]},
"faces": {
"north": {"uv": [9.25, 0, 8.75, 0.25], "texture": "#0"},
"east": {"uv": [9.25, 0, 8.75, 0.25], "texture": "#0"},
"south": {"uv": [9.25, 0, 8.75, 0.25], "texture": "#0"},
"west": {"uv": [9.25, 0, 8.75, 0.25], "texture": "#0"},
"up": {"uv": [9.25, 0, 8.75, 0.25], "texture": "#0"},
"down": {"uv": [9.25, 0, 8.75, 0.25], "texture": "#0"}
}
},
{
"from": [10, 21, 0.425],
"to": [11, 22, 0.425],
"rotation": {"angle": 0, "axis": "y", "origin": [15, 0, 0]},
"faces": {
"north": {"uv": [9.75, 0.5, 9.5, 0.75], "texture": "#0"},
"east": {"uv": [9.75, 0.5, 9.5, 0.75], "texture": "#0"},
"south": {"uv": [9.75, 0.5, 9.5, 0.75], "texture": "#0"},
"west": {"uv": [9.75, 0.5, 9.5, 0.75], "texture": "#0"},
"up": {"uv": [9.75, 0.5, 9.5, 0.75], "texture": "#0"},
"down": {"uv": [9.75, 0.5, 9.5, 0.75], "texture": "#0"}
}
},
{
"from": [3, 2, 0],
"to": [13, 15, 0],
"rotation": {"angle": 0, "axis": "y", "origin": [15, 0, 0]},
"faces": {
"north": {"uv": [12.5, 3.25, 10, 6.5], "texture": "#0"},
"east": {"uv": [12.5, 3.25, 10, 6.5], "texture": "#0"},
"south": {"uv": [10, 3.25, 12.5, 6.5], "texture": "#0"},
"west": {"uv": [12.5, 3.25, 10, 6.5], "texture": "#0"},
"up": {"uv": [12.5, 3.25, 10, 6.5], "rotation": 90, "texture": "#0"},
"down": {"uv": [12.5, 3.25, 10, 6.5], "rotation": 270, "texture": "#0"}
}
},
{
"from": [3, 30, 0],
"to": [13, 32, 1],
"rotation": {"angle": 0, "axis": "y", "origin": [15, 0, 0]},
"faces": {
"north": {"uv": [13, 0, 15.5, 0.5], "texture": "#0"},
"east": {"uv": [15.25, 7.5, 15.5, 8], "texture": "#0"},
"south": {"uv": [13, 0, 15.5, 0.5], "texture": "#0"},
"west": {"uv": [15.75, 7.5, 16, 8], "texture": "#0"},
"up": {"uv": [15.75, 5.25, 16, 7.75], "rotation": 90, "texture": "#0"},
"down": {"uv": [15.75, 5.25, 16, 7.75], "rotation": 270, "texture": "#0"}
}
},
{
"from": [1, 0, 0],
"to": [3, 32, 1],
"rotation": {"angle": 0, "axis": "y", "origin": [15, 0, 0]},
"faces": {
"north": {"uv": [15.5, 0, 16, 8], "texture": "#0"},
"east": {"uv": [15.5, 0, 15.75, 8], "texture": "#0"},
"south": {"uv": [15.5, 0, 16, 8], "texture": "#0"},
"west": {"uv": [15.75, 0, 16, 8], "texture": "#0"},
"up": {"uv": [15.5, 0, 16, 0.25], "rotation": 90, "texture": "#0"},
"down": {"uv": [15.5, 7.75, 16, 8], "rotation": 270, "texture": "#0"}
}
},
{
"from": [2, 15.5, 0.5],
"to": [5, 16.5, 1.5],
"rotation": {"angle": 0, "axis": "y", "origin": [15, 0, 0]},
"faces": {
"north": {"uv": [7.25, 0, 8, 0.25], "texture": "#0"},
"east": {"uv": [7, 0.5, 7.25, 0.75], "texture": "#0"},
"south": {"uv": [7.25, 0, 8, 0.25], "texture": "#0"},
"west": {"uv": [7.25, 0, 7.5, 0.25], "texture": "#0"},
"up": {"uv": [7.25, 0, 8, 0.25], "texture": "#0"},
"down": {"uv": [7.25, 0, 8, 0.25], "texture": "#0"}
}
}
],
"groups": [
{
"name": "group",
"origin": [0, 0, 0],
"color": 0,
"nbt": "{}",
"children": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19]
}
]
}

View file

@ -0,0 +1,279 @@
{
"credit": "Made by karoter2",
"texture_size": [64, 64],
"textures": {
"0": "tardim_ic:blocks/tardim_soviet_chronobox",
"particle": "tardim_ic:blocks/tardim_soviet_chronobox"
},
"elements": [
{
"from": [14, 0, 1],
"to": [15, 32, 3],
"rotation": {"angle": 0, "axis": "y", "origin": [15, 0, 0]},
"faces": {
"north": {"uv": [12.5, 0, 12.75, 8], "texture": "#0"},
"east": {"uv": [12.5, 0, 13, 8], "texture": "#0"},
"south": {"uv": [12.75, 0, 13, 8], "texture": "#0"},
"west": {"uv": [12.5, 0, 13, 8], "texture": "#0"},
"up": {"uv": [12.5, 0, 13, 0.25], "texture": "#0"},
"down": {"uv": [12.5, 7.75, 13, 8], "texture": "#0"}
}
},
{
"from": [14, 0, 3],
"to": [15, 2, 13],
"rotation": {"angle": 0, "axis": "y", "origin": [15, 0, 0]},
"faces": {
"north": {"uv": [15.25, 7.5, 15.5, 8], "texture": "#0"},
"east": {"uv": [13, 7.5, 15.5, 8], "texture": "#0"},
"south": {"uv": [15.75, 7.5, 16, 8], "texture": "#0"},
"west": {"uv": [13, 7.5, 15.5, 8], "texture": "#0"},
"up": {"uv": [15.75, 5.25, 16, 7.75], "texture": "#0"},
"down": {"uv": [15.75, 5.25, 16, 7.75], "texture": "#0"}
}
},
{
"from": [14, 15, 3],
"to": [15, 17, 13],
"rotation": {"angle": 0, "axis": "y", "origin": [15, 0, 0]},
"faces": {
"north": {"uv": [15.25, 7.5, 15.5, 8], "texture": "#0"},
"east": {"uv": [13, 3.75, 15.5, 4.25], "texture": "#0"},
"south": {"uv": [15.75, 7.5, 16, 8], "texture": "#0"},
"west": {"uv": [13, 3.75, 15.5, 4.25], "texture": "#0"},
"up": {"uv": [15.75, 5.25, 16, 7.75], "texture": "#0"},
"down": {"uv": [15.75, 5.25, 16, 7.75], "texture": "#0"}
}
},
{
"from": [14, 17, 3],
"to": [14, 30, 13],
"rotation": {"angle": 0, "axis": "y", "origin": [15, 0, 0]},
"faces": {
"north": {"uv": [10, 0, 12.5, 3.25], "texture": "#0"},
"east": {"uv": [12.5, 0, 10, 3.25], "texture": "#0"},
"south": {"uv": [10, 0, 12.5, 3.25], "texture": "#0"},
"west": {"uv": [10, 0, 12.5, 3.25], "texture": "#0"},
"up": {"uv": [10, 0, 12.5, 3.25], "texture": "#0"},
"down": {"uv": [10, 0, 12.5, 3.25], "texture": "#0"}
}
},
{
"from": [14.425, 18, 7],
"to": [14.425, 20, 9],
"rotation": {"angle": 0, "axis": "y", "origin": [15, 0, 0]},
"faces": {
"north": {"uv": [9.25, 1, 8.75, 1.5], "texture": "#0"},
"east": {"uv": [9.25, 1, 8.75, 1.5], "texture": "#0"},
"south": {"uv": [9.25, 1, 8.75, 1.5], "texture": "#0"},
"west": {"uv": [9.25, 1, 8.75, 1.5], "texture": "#0"},
"up": {"uv": [9.25, 1, 8.75, 1.5], "rotation": 270, "texture": "#0"},
"down": {"uv": [9.25, 1, 8.75, 1.5], "rotation": 90, "texture": "#0"}
}
},
{
"from": [14.425, 19, 9],
"to": [14.425, 20, 10],
"rotation": {"angle": 0, "axis": "y", "origin": [15, 0, 0]},
"faces": {
"north": {"uv": [8.75, 1, 8.5, 1.25], "texture": "#0"},
"east": {"uv": [8.75, 1, 8.5, 1.25], "texture": "#0"},
"south": {"uv": [8.75, 1, 8.5, 1.25], "texture": "#0"},
"west": {"uv": [8.75, 1, 8.5, 1.25], "texture": "#0"},
"up": {"uv": [8.75, 1, 8.5, 1.25], "rotation": 270, "texture": "#0"},
"down": {"uv": [8.75, 1, 8.5, 1.25], "rotation": 90, "texture": "#0"}
}
},
{
"from": [14.425, 19, 6],
"to": [14.425, 20, 7],
"rotation": {"angle": 0, "axis": "y", "origin": [15, 0, 0]},
"faces": {
"north": {"uv": [9.5, 1, 9.25, 1.25], "texture": "#0"},
"east": {"uv": [9.5, 1, 9.25, 1.25], "texture": "#0"},
"south": {"uv": [9.5, 1, 9.25, 1.25], "texture": "#0"},
"west": {"uv": [9.5, 1, 9.25, 1.25], "texture": "#0"},
"up": {"uv": [9.5, 1, 9.25, 1.25], "rotation": 270, "texture": "#0"},
"down": {"uv": [9.5, 1, 9.25, 1.25], "rotation": 90, "texture": "#0"}
}
},
{
"from": [14.425, 20, 4],
"to": [14.425, 22, 5],
"rotation": {"angle": 0, "axis": "y", "origin": [15, 0, 0]},
"faces": {
"north": {"uv": [10, 0.5, 9.75, 1], "texture": "#0"},
"east": {"uv": [10, 0.5, 9.75, 1], "texture": "#0"},
"south": {"uv": [10, 0.5, 9.75, 1], "texture": "#0"},
"west": {"uv": [10, 0.5, 9.75, 1], "texture": "#0"},
"up": {"uv": [10, 0.5, 9.75, 1], "rotation": 270, "texture": "#0"},
"down": {"uv": [10, 0.5, 9.75, 1], "rotation": 90, "texture": "#0"}
}
},
{
"from": [14.425, 20, 11],
"to": [14.425, 22, 12],
"rotation": {"angle": 0, "axis": "y", "origin": [15, 0, 0]},
"faces": {
"north": {"uv": [8.25, 0.5, 8, 1], "texture": "#0"},
"east": {"uv": [8.25, 0.5, 8, 1], "texture": "#0"},
"south": {"uv": [8.25, 0.5, 8, 1], "texture": "#0"},
"west": {"uv": [8.25, 0.5, 8, 1], "texture": "#0"},
"up": {"uv": [8.25, 0.5, 8, 1], "rotation": 270, "texture": "#0"},
"down": {"uv": [8.25, 0.5, 8, 1], "rotation": 90, "texture": "#0"}
}
},
{
"from": [14.425, 21, 10],
"to": [14.425, 22, 11],
"rotation": {"angle": 0, "axis": "y", "origin": [15, 0, 0]},
"faces": {
"north": {"uv": [8.5, 0.5, 8.25, 0.75], "texture": "#0"},
"east": {"uv": [8.5, 0.5, 8.25, 0.75], "texture": "#0"},
"south": {"uv": [8.5, 0.5, 8.25, 0.75], "texture": "#0"},
"west": {"uv": [8.5, 0.5, 8.25, 0.75], "texture": "#0"},
"up": {"uv": [8.5, 0.5, 8.25, 0.75], "rotation": 270, "texture": "#0"},
"down": {"uv": [8.5, 0.5, 8.25, 0.75], "rotation": 90, "texture": "#0"}
}
},
{
"from": [14.425, 22, 5],
"to": [14.425, 23, 11],
"rotation": {"angle": 0, "axis": "y", "origin": [15, 0, 0]},
"faces": {
"north": {"uv": [9.75, 0.25, 8.25, 0.5], "texture": "#0"},
"east": {"uv": [9.75, 0.25, 8.25, 0.5], "texture": "#0"},
"south": {"uv": [9.75, 0.25, 8.25, 0.5], "texture": "#0"},
"west": {"uv": [9.75, 0.25, 8.25, 0.5], "texture": "#0"},
"up": {"uv": [9.75, 0.25, 8.25, 0.5], "rotation": 270, "texture": "#0"},
"down": {"uv": [9.75, 0.25, 8.25, 0.5], "rotation": 90, "texture": "#0"}
}
},
{
"from": [14.425, 23, 7],
"to": [14.425, 24, 9],
"rotation": {"angle": 0, "axis": "y", "origin": [15, 0, 0]},
"faces": {
"north": {"uv": [9.25, 0, 8.75, 0.25], "texture": "#0"},
"east": {"uv": [9.25, 0, 8.75, 0.25], "texture": "#0"},
"south": {"uv": [9.25, 0, 8.75, 0.25], "texture": "#0"},
"west": {"uv": [9.25, 0, 8.75, 0.25], "texture": "#0"},
"up": {"uv": [9.25, 0, 8.75, 0.25], "rotation": 270, "texture": "#0"},
"down": {"uv": [9.25, 0, 8.75, 0.25], "rotation": 90, "texture": "#0"}
}
},
{
"from": [14.425, 21, 5],
"to": [14.425, 22, 6],
"rotation": {"angle": 0, "axis": "y", "origin": [15, 0, 0]},
"faces": {
"north": {"uv": [9.75, 0.5, 9.5, 0.75], "texture": "#0"},
"east": {"uv": [9.75, 0.5, 9.5, 0.75], "texture": "#0"},
"south": {"uv": [9.75, 0.5, 9.5, 0.75], "texture": "#0"},
"west": {"uv": [9.75, 0.5, 9.5, 0.75], "texture": "#0"},
"up": {"uv": [9.75, 0.5, 9.5, 0.75], "rotation": 270, "texture": "#0"},
"down": {"uv": [9.75, 0.5, 9.5, 0.75], "rotation": 90, "texture": "#0"}
}
},
{
"from": [14, 2, 3],
"to": [14, 15, 13],
"rotation": {"angle": 0, "axis": "y", "origin": [15, 0, 0]},
"faces": {
"north": {"uv": [12.5, 3.25, 10, 6.5], "texture": "#0"},
"east": {"uv": [10, 3.25, 12.5, 6.5], "texture": "#0"},
"south": {"uv": [12.5, 3.25, 10, 6.5], "texture": "#0"},
"west": {"uv": [12.5, 3.25, 10, 6.5], "texture": "#0"},
"up": {"uv": [12.5, 3.25, 10, 6.5], "texture": "#0"},
"down": {"uv": [12.5, 3.25, 10, 6.5], "texture": "#0"}
}
},
{
"from": [14, 30, 3],
"to": [15, 32, 13],
"rotation": {"angle": 0, "axis": "y", "origin": [15, 0, 0]},
"faces": {
"north": {"uv": [15.25, 7.5, 15.5, 8], "texture": "#0"},
"east": {"uv": [13, 0, 15.5, 0.5], "texture": "#0"},
"south": {"uv": [15.75, 7.5, 16, 8], "texture": "#0"},
"west": {"uv": [13, 0, 15.5, 0.5], "texture": "#0"},
"up": {"uv": [15.75, 5.25, 16, 7.75], "texture": "#0"},
"down": {"uv": [15.75, 5.25, 16, 7.75], "texture": "#0"}
}
},
{
"from": [14, 0, 13],
"to": [15, 32, 15],
"rotation": {"angle": 0, "axis": "y", "origin": [15, 0, 0]},
"faces": {
"north": {"uv": [15.5, 0, 15.75, 8], "texture": "#0"},
"east": {"uv": [15.5, 0, 16, 8], "texture": "#0"},
"south": {"uv": [15.75, 0, 16, 8], "texture": "#0"},
"west": {"uv": [15.5, 0, 16, 8], "texture": "#0"},
"up": {"uv": [15.5, 0, 16, 0.25], "texture": "#0"},
"down": {"uv": [15.5, 7.75, 16, 8], "texture": "#0"}
}
},
{
"from": [14.5, 15.5, 11],
"to": [15.5, 16.5, 14],
"rotation": {"angle": 0, "axis": "y", "origin": [15, 0, 0]},
"faces": {
"north": {"uv": [7, 0.5, 7.25, 0.75], "texture": "#0"},
"east": {"uv": [7.25, 0, 8, 0.25], "texture": "#0"},
"south": {"uv": [7.25, 0, 7.5, 0.25], "texture": "#0"},
"west": {"uv": [7.25, 0, 8, 0.25], "texture": "#0"},
"up": {"uv": [7.25, 0, 8, 0.25], "rotation": 270, "texture": "#0"},
"down": {"uv": [7.25, 0, 8, 0.25], "rotation": 90, "texture": "#0"}
}
},
{
"from": [16, 17, -13],
"to": [16, 30, -3],
"rotation": {"angle": 0, "axis": "y", "origin": [15, 0, 0]},
"faces": {
"north": {"uv": [10, 0, 12.5, 3.25], "texture": "#0"},
"east": {"uv": [10, 0, 12.5, 3.25], "texture": "#0"},
"south": {"uv": [12.5, 0, 10, 3.25], "texture": "#0"},
"west": {"uv": [10, 0, 12.5, 3.25], "texture": "#0"},
"up": {"uv": [10, 0, 12.5, 3.25], "rotation": 90, "texture": "#0"},
"down": {"uv": [10, 0, 12.5, 3.25], "rotation": 270, "texture": "#0"}
}
},
{
"from": [0, 17, -13],
"to": [0, 30, -3],
"rotation": {"angle": 0, "axis": "y", "origin": [15, 0, 0]},
"faces": {
"north": {"uv": [10, 0, 12.5, 3.25], "texture": "#0"},
"east": {"uv": [10, 0, 12.5, 3.25], "texture": "#0"},
"south": {"uv": [12.5, 0, 10, 3.25], "texture": "#0"},
"west": {"uv": [10, 0, 12.5, 3.25], "texture": "#0"},
"up": {"uv": [10, 0, 12.5, 3.25], "rotation": 90, "texture": "#0"},
"down": {"uv": [10, 0, 12.5, 3.25], "rotation": 270, "texture": "#0"}
}
},
{
"from": [3, 17, -16],
"to": [13, 30, -16],
"rotation": {"angle": 0, "axis": "y", "origin": [15, 0, 0]},
"faces": {
"north": {"uv": [10, 3.25, 12.5, 6.5], "texture": "#0"},
"east": {"uv": [10, 0, 12.5, 3.25], "texture": "#0"},
"south": {"uv": [12.5, 3.25, 10, 6.5], "texture": "#0"},
"west": {"uv": [10, 0, 12.5, 3.25], "texture": "#0"},
"up": {"uv": [10, 0, 12.5, 3.25], "rotation": 90, "texture": "#0"},
"down": {"uv": [10, 0, 12.5, 3.25], "rotation": 270, "texture": "#0"}
}
}
],
"groups": [
{
"name": "group",
"origin": [0, 0, 0],
"color": 0,
"nbt": "{}",
"children": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19]
}
]
}

View file

@ -0,0 +1,16 @@
{
"credit": "Made by karoter2",
"texture_size": [64, 64],
"textures": {
"particle": "tardim:block/tardim_tt"
},
"groups": [
{
"name": "group",
"origin": [0, 0, 0],
"color": 0,
"nbt": "{}",
"children": []
}
]
}

View file

@ -0,0 +1,97 @@
{
"credit": "Made by karoter2",
"texture_size": [64, 64],
"textures": {
"1": "tardim_ic:blocks/tardim_soviet_chronobox",
"particle": "tardim:block/tardim_tt"
},
"elements": [
{
"from": [1, 0, 0],
"to": [3, 32, 1],
"rotation": {"angle": 0, "axis": "y", "origin": [8, 8, 8]},
"faces": {
"north": {"uv": [12.5, 0, 13, 8], "texture": "#1"},
"east": {"uv": [12.75, 0, 13, 8], "texture": "#1"},
"south": {"uv": [12.5, 0, 13, 8], "texture": "#1"},
"west": {"uv": [12.5, 0, 12.75, 8], "texture": "#1"},
"up": {"uv": [12.5, 0, 13, 0.25], "rotation": 270, "texture": "#1"},
"down": {"uv": [12.5, 7.75, 13, 8], "rotation": 90, "texture": "#1"}
}
},
{
"from": [3, 0, 0],
"to": [13, 2, 1],
"rotation": {"angle": 0, "axis": "y", "origin": [8, 8, 8]},
"faces": {
"north": {"uv": [13, 7.5, 15.5, 8], "texture": "#1"},
"east": {"uv": [15.75, 7.5, 16, 8], "texture": "#1"},
"south": {"uv": [13, 7.5, 15.5, 8], "texture": "#1"},
"west": {"uv": [15.25, 7.5, 15.5, 8], "texture": "#1"},
"up": {"uv": [15.75, 5.25, 16, 7.75], "rotation": 270, "texture": "#1"},
"down": {"uv": [15.75, 5.25, 16, 7.75], "rotation": 90, "texture": "#1"}
}
},
{
"from": [3, 15, 0],
"to": [13, 17, 1],
"rotation": {"angle": 0, "axis": "y", "origin": [8, 8, 8]},
"faces": {
"north": {"uv": [13, 3.75, 15.5, 4.25], "texture": "#1"},
"east": {"uv": [15.75, 7.5, 16, 8], "texture": "#1"},
"south": {"uv": [13, 3.75, 15.5, 4.25], "texture": "#1"},
"west": {"uv": [15.25, 7.5, 15.5, 8], "texture": "#1"},
"up": {"uv": [15.75, 5.25, 16, 7.75], "rotation": 270, "texture": "#1"},
"down": {"uv": [15.75, 5.25, 16, 7.75], "rotation": 90, "texture": "#1"}
}
},
{
"from": [3, 2, 0],
"to": [13, 15, 0],
"rotation": {"angle": 0, "axis": "y", "origin": [8, 8, 8]},
"faces": {
"north": {"uv": [10, 3.25, 12.5, 6.5], "texture": "#1"},
"east": {"uv": [12.5, 3.25, 10, 6.5], "texture": "#1"},
"south": {"uv": [12.5, 3.25, 10, 6.5], "texture": "#1"},
"west": {"uv": [12.5, 3.25, 10, 6.5], "texture": "#1"},
"up": {"uv": [12.5, 3.25, 10, 6.5], "rotation": 270, "texture": "#1"},
"down": {"uv": [12.5, 3.25, 10, 6.5], "rotation": 90, "texture": "#1"}
}
},
{
"from": [3, 30, 0],
"to": [13, 32, 1],
"rotation": {"angle": 0, "axis": "y", "origin": [8, 8, 8]},
"faces": {
"north": {"uv": [13, 0, 15.5, 0.5], "texture": "#1"},
"east": {"uv": [15.75, 7.5, 16, 8], "texture": "#1"},
"south": {"uv": [13, 0, 15.5, 0.5], "texture": "#1"},
"west": {"uv": [15.25, 7.5, 15.5, 8], "texture": "#1"},
"up": {"uv": [15.75, 5.25, 16, 7.75], "rotation": 270, "texture": "#1"},
"down": {"uv": [15.75, 5.25, 16, 7.75], "rotation": 90, "texture": "#1"}
}
},
{
"from": [13, 0, 0],
"to": [15, 32, 1],
"rotation": {"angle": 0, "axis": "y", "origin": [8, 8, 8]},
"faces": {
"north": {"uv": [15.5, 0, 16, 8], "texture": "#1"},
"east": {"uv": [15.75, 0, 16, 8], "texture": "#1"},
"south": {"uv": [15.5, 0, 16, 8], "texture": "#1"},
"west": {"uv": [15.5, 0, 15.75, 8], "texture": "#1"},
"up": {"uv": [15.5, 0, 16, 0.25], "rotation": 270, "texture": "#1"},
"down": {"uv": [15.5, 7.75, 16, 8], "rotation": 90, "texture": "#1"}
}
}
],
"groups": [
{
"name": "group",
"origin": [0, 0, 0],
"color": 0,
"nbt": "{}",
"children": [0, 1, 2, 3, 4, 5]
}
]
}

View file

@ -0,0 +1,13 @@
{
"credit": "Made by karoter2",
"texture_size": [64, 64],
"groups": [
{
"name": "group",
"origin": [0, 0, 0],
"color": 0,
"nbt": "{}",
"children": []
}
]
}

View file

@ -0,0 +1,22 @@
{
"credit": "Made by karoter2",
"texture_size": [64, 64],
"textures": {
"0": "tardim_ic:blocks/tardim_soviet_chronobox",
"particle": "tardim_ic:blocks/tardim_soviet_chronobox"
},
"elements": [
{
"from": [-4, 16, 4.15],
"to": [20, 24, 4.15],
"faces": {
"north": {"uv": [0, 2, 6, 4], "texture": "#0"},
"east": {"uv": [0, 0, 0, 2], "texture": "#0"},
"south": {"uv": [0, 2, 6, 4], "texture": "#0"},
"west": {"uv": [0, 0, 0, 2], "texture": "#0"},
"up": {"uv": [0, 0, 6, 0], "texture": "#0"},
"down": {"uv": [0, 0, 6, 0], "texture": "#0"}
}
}
]
}

View file

@ -0,0 +1,22 @@
{
"credit": "Made by karoter2",
"texture_size": [64, 64],
"textures": {
"0": "tardim_ic:blocks/tardim_soviet_chronobox",
"particle": "tardim_ic:blocks/tardim_soviet_chronobox"
},
"elements": [
{
"from": [-4, 16, 4.15],
"to": [20, 24, 4.15],
"faces": {
"north": {"uv": [0, 2, 6, 4], "texture": "#0"},
"east": {"uv": [0, 0, 0, 2], "texture": "#0"},
"south": {"uv": [0, 2, 6, 4], "texture": "#0"},
"west": {"uv": [0, 0, 0, 2], "texture": "#0"},
"up": {"uv": [0, 0, 6, 0], "texture": "#0"},
"down": {"uv": [0, 0, 6, 0], "texture": "#0"}
}
}
]
}

View file

@ -0,0 +1,73 @@
{
"credit": "Made by karoter2",
"texture_size": [64, 64],
"textures": {
"1": "tardim_ic:blocks/tardim_soviet_chronobox",
"particle": "tardim_ic:blocks/tardim_soviet_chronobox"
},
"elements": [
{
"from": [0, 0.1, 0],
"to": [16, 0.1, 16],
"faces": {
"north": {"uv": [1.5, 15.75, 5.5, 16], "texture": "#1"},
"east": {"uv": [1.75, 15.75, 5.75, 16], "texture": "#1"},
"south": {"uv": [1.5, 15.75, 5.5, 16], "texture": "#1"},
"west": {"uv": [1.75, 15.75, 5.75, 16], "texture": "#1"},
"up": {"uv": [12, 8, 16, 12], "texture": "#1"},
"down": {"uv": [12, 8, 16, 12], "texture": "#1"}
}
},
{
"from": [-2, 0, -2],
"to": [1, 32, 1],
"faces": {
"north": {"uv": [11.25, 16, 12, 8], "texture": "#1"},
"east": {"uv": [11.25, 16, 12, 8], "texture": "#1"},
"south": {"uv": [11.25, 16, 12, 8], "texture": "#1"},
"west": {"uv": [11.25, 16, 12, 8], "texture": "#1"},
"up": {"uv": [11.25, 8.75, 12, 8], "texture": "#1"},
"down": {"uv": [11.25, 16, 12, 15.25], "texture": "#1"}
}
},
{
"from": [-2, 0, 15],
"to": [1, 32, 18],
"rotation": {"angle": 0, "axis": "y", "origin": [0, 0, 16]},
"faces": {
"north": {"uv": [12, 16, 11.25, 8], "texture": "#1"},
"east": {"uv": [12, 16, 11.25, 8], "texture": "#1"},
"south": {"uv": [12, 16, 11.25, 8], "texture": "#1"},
"west": {"uv": [12, 16, 11.25, 8], "texture": "#1"},
"up": {"uv": [11.25, 8, 12, 8.75], "texture": "#1"},
"down": {"uv": [11.25, 15.25, 12, 16], "texture": "#1"}
}
},
{
"from": [15, 0, -2],
"to": [18, 32, 1],
"rotation": {"angle": 0, "axis": "y", "origin": [16, 0, 0]},
"faces": {
"north": {"uv": [12, 16, 11.25, 8], "texture": "#1"},
"east": {"uv": [12, 16, 11.25, 8], "texture": "#1"},
"south": {"uv": [12, 16, 11.25, 8], "texture": "#1"},
"west": {"uv": [12, 16, 11.25, 8], "texture": "#1"},
"up": {"uv": [12, 8.75, 11.25, 8], "texture": "#1"},
"down": {"uv": [12, 16, 11.25, 15.25], "texture": "#1"}
}
},
{
"from": [15, 0, 15],
"to": [18, 32, 18],
"rotation": {"angle": 0, "axis": "y", "origin": [16, 0, 16]},
"faces": {
"north": {"uv": [11.25, 16, 12, 8], "texture": "#1"},
"east": {"uv": [11.25, 16, 12, 8], "texture": "#1"},
"south": {"uv": [11.25, 16, 12, 8], "texture": "#1"},
"west": {"uv": [11.25, 16, 12, 8], "texture": "#1"},
"up": {"uv": [12, 8, 11.25, 8.75], "texture": "#1"},
"down": {"uv": [12, 15.25, 11.25, 16], "texture": "#1"}
}
}
]
}

View file

@ -0,0 +1,22 @@
{
"credit": "Made by karoter2",
"texture_size": [64, 64],
"textures": {
"0": "tardim_ic:blocks/tardim_soviet_chronobox",
"particle": "tardim_ic:blocks/tardim_soviet_chronobox"
},
"elements": [
{
"from": [-4, 0, -4],
"to": [20, 8, 20],
"faces": {
"north": {"uv": [0, 0, 6, 2], "texture": "#0"},
"east": {"uv": [0, 0, 6, 2], "texture": "#0"},
"south": {"uv": [0, 0, 6, 2], "texture": "#0"},
"west": {"uv": [0, 0, 6, 2], "texture": "#0"},
"up": {"uv": [0, 4, 6, 10], "texture": "#0"},
"down": {"uv": [0, 4, 6, 10], "texture": "#0"}
}
}
]
}

View file

@ -0,0 +1,23 @@
{
"parent": "tardim_ic:block/food_machine",
"display": {
"thirdperson_righthand": {
"rotation": [ 75, 45, 0 ],
"scale": [ 0.40, 0.40, 0.40 ],
"translation": [ 0, 1, 0 ]
},
"thirdperson_lefthand": {
"rotation": [ 75, 45, 0 ],
"scale": [ 0.40, 0.40, 0.40 ],
"translation": [ 0, 1, 0 ]
},
"firstperson_lefthand": {
"rotation": [ 0, 45, 0 ],
"scale": [ 0.40, 0.40, 0.40 ]
},
"firstperson_righthand": {
"rotation": [ 0, 45, 0 ],
"scale": [ 0.40, 0.40, 0.40 ]
}
}
}

View file

@ -0,0 +1,6 @@
{
"parent": "item/generated",
"textures": {
"layer0": "tardim_ic:item/personal_jammer"
}
}

View file

@ -0,0 +1,23 @@
{
"parent": "tardim_ic:block/tardim_dock",
"display": {
"thirdperson_righthand": {
"rotation": [ 75, 45, 0 ],
"scale": [ 0.40, 0.40, 0.40 ],
"translation": [ 0, 1, 0 ]
},
"thirdperson_lefthand": {
"rotation": [ 75, 45, 0 ],
"scale": [ 0.40, 0.40, 0.40 ],
"translation": [ 0, 1, 0 ]
},
"firstperson_lefthand": {
"rotation": [ 0, 45, 0 ],
"scale": [ 0.40, 0.40, 0.40 ]
},
"firstperson_righthand": {
"rotation": [ 0, 45, 0 ],
"scale": [ 0.40, 0.40, 0.40 ]
}
}
}

View file

@ -0,0 +1,9 @@
{
"cloister": {
"subtitle": "subtitles.tardim_ic.cloister",
"sounds": [
"tardim_ic:cloister"
]
}
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 923 B

View file

@ -0,0 +1,7 @@
{
"animation": {
"frametime": 10,
"interpolate": true,
"frames": [0, 1, 2, 3]
}
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 163 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 216 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 361 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 248 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 382 B

View file

@ -0,0 +1,5 @@
--[[
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

@ -0,0 +1,12 @@
-- This is a very basic test script
-- This basically just verifies the mod works
local int = peripheral.find("digital_tardim_interface")
if int == nil then
error("No interface found")
end
print(int.getOwnerName() .. "'s TARDIM")
print("FUEL: " .. int.getFuel() .. "/100")
print("IN FLIGHT? " .. int.isInFlight())
print("IS LOCKED? " .. int.isLocked())

View file

@ -0,0 +1,6 @@
{
"pack": {
"description": "${mod_name}",
"pack_format": 8
}
}

View file

@ -0,0 +1,13 @@
{
"required": true,
"minVersion": "0.8",
"package": "su.a71.tardim_ic.mixin",
"refmap": "${mod_id}.refmap.json",
"compatibilityLevel": "JAVA_17",
"mixins": [
],
"injectors": {
"defaultRequire": 1
}
}

BIN
common/tardim-1.2.2-dev.jar Normal file

Binary file not shown.

BIN
docs/assets/img/banner.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 465 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 421 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 361 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 52 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 46 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 52 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 44 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 44 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 50 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 44 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 13 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 13 KiB

BIN
docs/assets/img/icon.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 58 KiB

42
docs/assets/style.css Normal file
View file

@ -0,0 +1,42 @@
@font-face {
font-family: 'ComputerCraft';
src: url('fonts/ComputerCraft.woff2') format('woff2'),
url('fonts/ComputerCraft.woff') format('woff');
font-weight: 500;
font-style: normal;
font-display: swap;
}
code {
font-family: ComputerCraft, monospace;
}
.wy-side-nav-search {
background-color: #d2651d;
}
.wy-side-nav-search input[type="text"] {
border-color: #d96b25;
}
.wy-menu-vertical header, .wy-menu-vertical p.caption {
color: #e78e53;
}
.section > h1 > img {
max-width: 15%;
}
.rst-content img {
image-rendering: pixelated;
image-rendering: -moz-crisp-edges;
image-rendering: crisp-edges;
width: 50px;
}
.section > p:nth-child(5) > img:nth-child(1), .section > p:nth-child(4) > img:nth-child(1) {
max-width: 100%;
width: 75%;
}

View file

@ -0,0 +1,7 @@
# ![Block model](../assets/img/blocks/food_machine.png) Food Machine
This block lets you exchange some of your TARDIM's fuel for food.
I plan to make it work with datapacks and let you switch between different types of food at different prices.
However, right now it is creative mode only and dispenses bread. If you want, you can add crafting recipe for it on your own,
but it is not recommended since I haven't finished it yet

View file

@ -0,0 +1,5 @@
# ![Block model](../assets/img/blocks/redstone_tardim_input.png) Redstone TARDIM Input
This block acts same as other TARDIM control panels, but is activated when redstone signal is passed to it.
## Crafting
![Crafting recipe](../assets/img/crafting/redstone_input.png)

Some files were not shown because too many files have changed in this diff Show more