This commit is contained in:
deirn 2020-05-29 11:31:51 +07:00
parent c6bae6453f
commit b018b1d0fe
No known key found for this signature in database
GPG key ID: 13925278A3EBA7B7
82 changed files with 204 additions and 1957 deletions

18
.gitignore vendored
View file

@ -1,29 +1,21 @@
# gradle #Gradle
.gradle/ .gradle/
build/ build/
out/ out/
classes/ classes/
# eclipse #IDEA
*.launch
# idea
.idea/ .idea/
*.iml *.iml
*.ipr *.ipr
*.iws *.iws
# vscode #vscode
.settings/ .settings/
.vscode/ .vscode/
bin/ bin/
.classpath .classpath
.project .project
# fabric #fabric
run/
run/

10
LICENSE
View file

@ -1,4 +1,4 @@
MIT License The MIT License (MIT)
Copyright (c) 2020 deirn Copyright (c) 2020 deirn
@ -9,13 +9,13 @@ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions: furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all The above copyright notice and this permission notice shall be included in
copies or substantial portions of the Software. all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 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 OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
SOFTWARE. THE SOFTWARE.

View file

@ -6,37 +6,44 @@ plugins {
sourceCompatibility = JavaVersion.VERSION_1_8 sourceCompatibility = JavaVersion.VERSION_1_8
targetCompatibility = JavaVersion.VERSION_1_8 targetCompatibility = JavaVersion.VERSION_1_8
version = "${minecraft}-${mod}" archivesBaseName = project.archives_base_name
version = "${project.mod_version}+minecraft-${project.minecraft_version}"
group = project.maven_group
repositories { repositories {
maven { maven {
name = "CottonMC" name = "Spinnery"
url = "http://server.bbkr.space:8081/artifactory/libs-release" url "https://dl.bintray.com/spinnery/Spinnery"
}
maven {
url = "https://jitpack.io"
}
maven {
name = "NerdHubMC"
url = "https://maven.abusedmaster.xyz/"
} }
jcenter()
} }
dependencies { dependencies {
//to change the versions see the gradle.properties file //to change the versions see the gradle.properties file
minecraft "com.mojang:minecraft:${minecraft}" minecraft "com.mojang:minecraft:${project.minecraft_version}"
mappings "net.fabricmc:yarn:${minecraft}+build.${yarn}:v2" mappings "net.fabricmc:yarn:${project.yarn_mappings}:v2"
modImplementation "net.fabricmc:fabric-loader:${loader}" modImplementation "net.fabricmc:fabric-loader:${project.loader_version}"
// Fabric API. This is technically optional, but you probably want it anyway. modImplementation "net.fabricmc.fabric-api:fabric-api:${project.fabric_api_version}"
modImplementation "net.fabricmc.fabric-api:fabric-api:${fabric}"
modCompile "io.github.cottonmc:LibGui:${libgui}+${minecraft}" modApi "me.shedaniel.cloth:config-2:${project.cloth_config}"
include "io.github.cottonmc:LibGui:${libgui}+${minecraft}" include "me.shedaniel.cloth:config-2:${project.cloth_config}"
modApi "me.shedaniel.cloth:config-2:${cloth_config}" modCompile "me.sargunvohra.mcmods:autoconfig1u:${project.autoconfig}"
include "me.shedaniel.cloth:config-2:${cloth_config}" include "me.sargunvohra.mcmods:autoconfig1u:${project.autoconfig}"
modCompile "me.sargunvohra.mcmods:autoconfig1u:${autoconfig}" modCompile "com.github.vini2003:spinnery:${project.spinnery}"
include "me.sargunvohra.mcmods:autoconfig1u:${autoconfig}" include "com.github.vini2003:spinnery:${project.spinnery}"
modImplementation "io.github.prospector:modmenu:1.10.2+build.32" modImplementation "com.github.emilyploszaj:trinkets:${project.trinkets}"
// PSA: Some older mods, compiled on Loom 0.2.1, might have outdated Maven POMs.
// You may need to force-disable transitiveness on them. modImplementation "io.github.prospector:modmenu:${project.modmenu}"
} }
processResources { processResources {
@ -76,7 +83,10 @@ publishing {
publications { publications {
mavenJava(MavenPublication) { mavenJava(MavenPublication) {
// add all the jars that should be included when publishing to maven // add all the jars that should be included when publishing to maven
artifact(remapJar) { artifact(jar) {
builtBy remapJar
}
artifact("${project.buildDir.absolutePath}/libs/${archivesBaseName}-${project.version}.jar"){
builtBy remapJar builtBy remapJar
} }
artifact(sourcesJar) { artifact(sourcesJar) {
@ -90,4 +100,4 @@ publishing {
// uncomment to publish to the local maven // uncomment to publish to the local maven
// mavenLocal() // mavenLocal()
} }
} }

View file

@ -1,14 +1,19 @@
# Done to increase the memory available to gradle. org.gradle.jvmargs = -Xmx1G
org.gradle.jvmargs=-Xmx1G
mod = 1.0.0 #Fabric properties
minecraft_version = 1.15.2
yarn_mappings = 1.15.2+build.15
loader_version = 0.8.4+build.198
minecraft = 1.15.2 #Mod properties
yarn = 15 mod_version = 0.0.0
loader = 0.8.2+build.194 maven_group = io.gitlab.intended.storagenetworks
archives_base_name = storagenetworks
# Dependencies #Dependencies
fabric = 0.5.1+build.294-1.15 fabric_api_version = 0.10.8+build.310-1.15
libgui = 1.8.1 cloth_config = 2.13.3
cloth_config = 2.13.3 autoconfig = 2.0.1
autoconfig = 2.0.1 spinnery = 2.0.28+fabric-1.15.2
trinkets = 2.4.2
modmenu = 1.10.2+build.32

Binary file not shown.

View file

@ -1,5 +1,5 @@
#Sat Apr 18 15:42:54 ICT 2020 #Thu May 28 11:20:34 ICT 2020
distributionUrl=https\://services.gradle.org/distributions/gradle-6.3-all.zip distributionUrl=https\://services.gradle.org/distributions/gradle-5.5.1-all.zip
distributionBase=GRADLE_USER_HOME distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists distributionPath=wrapper/dists
zipStorePath=wrapper/dists zipStorePath=wrapper/dists

33
gradlew vendored
View file

@ -125,8 +125,8 @@ if $darwin; then
GRADLE_OPTS="$GRADLE_OPTS \"-Xdock:name=$APP_NAME\" \"-Xdock:icon=$APP_HOME/media/gradle.icns\"" GRADLE_OPTS="$GRADLE_OPTS \"-Xdock:name=$APP_NAME\" \"-Xdock:icon=$APP_HOME/media/gradle.icns\""
fi fi
# For Cygwin or MSYS, switch paths to Windows format before running java # For Cygwin, switch paths to Windows format before running java
if [ "$cygwin" = "true" -o "$msys" = "true" ] ; then if $cygwin ; then
APP_HOME=`cygpath --path --mixed "$APP_HOME"` APP_HOME=`cygpath --path --mixed "$APP_HOME"`
CLASSPATH=`cygpath --path --mixed "$CLASSPATH"` CLASSPATH=`cygpath --path --mixed "$CLASSPATH"`
JAVACMD=`cygpath --unix "$JAVACMD"` JAVACMD=`cygpath --unix "$JAVACMD"`
@ -154,19 +154,19 @@ if [ "$cygwin" = "true" -o "$msys" = "true" ] ; then
else else
eval `echo args$i`="\"$arg\"" eval `echo args$i`="\"$arg\""
fi fi
i=`expr $i + 1` i=$((i+1))
done done
case $i in case $i in
0) set -- ;; (0) set -- ;;
1) set -- "$args0" ;; (1) set -- "$args0" ;;
2) set -- "$args0" "$args1" ;; (2) set -- "$args0" "$args1" ;;
3) set -- "$args0" "$args1" "$args2" ;; (3) set -- "$args0" "$args1" "$args2" ;;
4) set -- "$args0" "$args1" "$args2" "$args3" ;; (4) set -- "$args0" "$args1" "$args2" "$args3" ;;
5) set -- "$args0" "$args1" "$args2" "$args3" "$args4" ;; (5) set -- "$args0" "$args1" "$args2" "$args3" "$args4" ;;
6) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" ;; (6) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" ;;
7) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" ;; (7) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" ;;
8) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" ;; (8) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" ;;
9) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" "$args8" ;; (9) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" "$args8" ;;
esac esac
fi fi
@ -175,9 +175,14 @@ save () {
for i do printf %s\\n "$i" | sed "s/'/'\\\\''/g;1s/^/'/;\$s/\$/' \\\\/" ; done for i do printf %s\\n "$i" | sed "s/'/'\\\\''/g;1s/^/'/;\$s/\$/' \\\\/" ; done
echo " " echo " "
} }
APP_ARGS=`save "$@"` APP_ARGS=$(save "$@")
# Collect all arguments for the java command, following the shell quoting and substitution rules # Collect all arguments for the java command, following the shell quoting and substitution rules
eval set -- $DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS "\"-Dorg.gradle.appname=$APP_BASE_NAME\"" -classpath "\"$CLASSPATH\"" org.gradle.wrapper.GradleWrapperMain "$APP_ARGS" eval set -- $DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS "\"-Dorg.gradle.appname=$APP_BASE_NAME\"" -classpath "\"$CLASSPATH\"" org.gradle.wrapper.GradleWrapperMain "$APP_ARGS"
# by default we should be in the correct project dir, but when run from Finder on Mac, the cwd is wrong
if [ "$(uname)" = "Darwin" ] && [ "$HOME" = "$PWD" ]; then
cd "$(dirname "$0")"
fi
exec "$JAVACMD" "$@" exec "$JAVACMD" "$@"

203
gradlew.bat vendored
View file

@ -1,103 +1,100 @@
@rem @rem
@rem Copyright 2015 the original author or authors. @rem Copyright 2015 the original author or authors.
@rem @rem
@rem Licensed under the Apache License, Version 2.0 (the "License"); @rem Licensed under the Apache License, Version 2.0 (the "License");
@rem you may not use this file except in compliance with the License. @rem you may not use this file except in compliance with the License.
@rem You may obtain a copy of the License at @rem You may obtain a copy of the License at
@rem @rem
@rem https://www.apache.org/licenses/LICENSE-2.0 @rem https://www.apache.org/licenses/LICENSE-2.0
@rem @rem
@rem Unless required by applicable law or agreed to in writing, software @rem Unless required by applicable law or agreed to in writing, software
@rem distributed under the License is distributed on an "AS IS" BASIS, @rem distributed under the License is distributed on an "AS IS" BASIS,
@rem WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. @rem WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
@rem See the License for the specific language governing permissions and @rem See the License for the specific language governing permissions and
@rem limitations under the License. @rem limitations under the License.
@rem @rem
@if "%DEBUG%" == "" @echo off @if "%DEBUG%" == "" @echo off
@rem ########################################################################## @rem ##########################################################################
@rem @rem
@rem Gradle startup script for Windows @rem Gradle startup script for Windows
@rem @rem
@rem ########################################################################## @rem ##########################################################################
@rem Set local scope for the variables with windows NT shell @rem Set local scope for the variables with windows NT shell
if "%OS%"=="Windows_NT" setlocal if "%OS%"=="Windows_NT" setlocal
set DIRNAME=%~dp0 set DIRNAME=%~dp0
if "%DIRNAME%" == "" set DIRNAME=. if "%DIRNAME%" == "" set DIRNAME=.
set APP_BASE_NAME=%~n0 set APP_BASE_NAME=%~n0
set APP_HOME=%DIRNAME% set APP_HOME=%DIRNAME%
@rem Resolve any "." and ".." in APP_HOME to make it shorter. @rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
for %%i in ("%APP_HOME%") do set APP_HOME=%%~fi set DEFAULT_JVM_OPTS="-Xmx64m" "-Xms64m"
@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. @rem Find java.exe
set DEFAULT_JVM_OPTS="-Xmx64m" "-Xms64m" if defined JAVA_HOME goto findJavaFromJavaHome
@rem Find java.exe set JAVA_EXE=java.exe
if defined JAVA_HOME goto findJavaFromJavaHome %JAVA_EXE% -version >NUL 2>&1
if "%ERRORLEVEL%" == "0" goto init
set JAVA_EXE=java.exe
%JAVA_EXE% -version >NUL 2>&1 echo.
if "%ERRORLEVEL%" == "0" goto init echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.
echo.
echo. echo Please set the JAVA_HOME variable in your environment to match the
echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. echo location of your Java installation.
echo.
echo Please set the JAVA_HOME variable in your environment to match the goto fail
echo location of your Java installation.
:findJavaFromJavaHome
goto fail set JAVA_HOME=%JAVA_HOME:"=%
set JAVA_EXE=%JAVA_HOME%/bin/java.exe
:findJavaFromJavaHome
set JAVA_HOME=%JAVA_HOME:"=% if exist "%JAVA_EXE%" goto init
set JAVA_EXE=%JAVA_HOME%/bin/java.exe
echo.
if exist "%JAVA_EXE%" goto init echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME%
echo.
echo. echo Please set the JAVA_HOME variable in your environment to match the
echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME% echo location of your Java installation.
echo.
echo Please set the JAVA_HOME variable in your environment to match the goto fail
echo location of your Java installation.
:init
goto fail @rem Get command-line arguments, handling Windows variants
:init if not "%OS%" == "Windows_NT" goto win9xME_args
@rem Get command-line arguments, handling Windows variants
:win9xME_args
if not "%OS%" == "Windows_NT" goto win9xME_args @rem Slurp the command line arguments.
set CMD_LINE_ARGS=
:win9xME_args set _SKIP=2
@rem Slurp the command line arguments.
set CMD_LINE_ARGS= :win9xME_args_slurp
set _SKIP=2 if "x%~1" == "x" goto execute
:win9xME_args_slurp set CMD_LINE_ARGS=%*
if "x%~1" == "x" goto execute
:execute
set CMD_LINE_ARGS=%* @rem Setup the command line
:execute set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar
@rem Setup the command line
@rem Execute Gradle
set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar "%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %CMD_LINE_ARGS%
@rem Execute Gradle :end
"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %CMD_LINE_ARGS% @rem End local scope for the variables with windows NT shell
if "%ERRORLEVEL%"=="0" goto mainEnd
:end
@rem End local scope for the variables with windows NT shell :fail
if "%ERRORLEVEL%"=="0" goto mainEnd rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of
rem the _cmd.exe /c_ return code!
:fail if not "" == "%GRADLE_EXIT_CONSOLE%" exit 1
rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of exit /b 1
rem the _cmd.exe /c_ return code!
if not "" == "%GRADLE_EXIT_CONSOLE%" exit 1 :mainEnd
exit /b 1 if "%OS%"=="Windows_NT" endlocal
:mainEnd :omega
if "%OS%"=="Windows_NT" endlocal
:omega

View file

@ -7,4 +7,4 @@ pluginManagement {
} }
gradlePluginPortal() gradlePluginPortal()
} }
} }

View file

@ -1,21 +0,0 @@
package bai.deirn.fsn;
import bai.deirn.fsn.config.ModConfig;
import bai.deirn.fsn.registry.BlockEntityTypeRegistry;
import bai.deirn.fsn.registry.BlockRegistry;
import bai.deirn.fsn.registry.ItemRegistry;
import me.sargunvohra.mcmods.autoconfig1u.AutoConfig;
import me.sargunvohra.mcmods.autoconfig1u.serializer.JanksonConfigSerializer;
import net.fabricmc.api.ModInitializer;
public class FSN implements ModInitializer {
@Override
public void onInitialize() {
AutoConfig.register(ModConfig.class, JanksonConfigSerializer::new);
BlockRegistry.init();
BlockEntityTypeRegistry.init();
ItemRegistry.init();
}
}

View file

@ -1,99 +0,0 @@
package bai.deirn.fsn;
import bai.deirn.fsn.config.ModConfig;
import bai.deirn.fsn.registry.BlockRegistry;
import com.google.common.collect.ImmutableList;
import me.sargunvohra.mcmods.autoconfig1u.AutoConfig;
import net.fabricmc.fabric.api.client.itemgroup.FabricItemGroupBuilder;
import net.minecraft.block.Block;
import net.minecraft.block.entity.BlockEntity;
import net.minecraft.block.entity.BlockEntityType;
import net.minecraft.entity.player.PlayerEntity;
import net.minecraft.item.BlockItem;
import net.minecraft.item.Item;
import net.minecraft.item.ItemGroup;
import net.minecraft.item.ItemStack;
import net.minecraft.text.TranslatableText;
import net.minecraft.util.Identifier;
import net.minecraft.util.math.BlockPos;
import net.minecraft.util.registry.Registry;
import net.minecraft.util.shape.VoxelShape;
import net.minecraft.util.shape.VoxelShapes;
import java.util.List;
import java.util.function.Supplier;
import java.util.logging.Logger;
public abstract class Utils {
public static final String MOD_ID = "fsn";
public static final Logger LOGGER = Logger.getLogger(MOD_ID);
private static final ItemGroup ITEM_GROUP = FabricItemGroupBuilder.build(
id("item_group"), () -> new ItemStack(BlockRegistry.MASTER)
);
// Just so i could make shape with the values blockbench shows.
public static VoxelShape cuboid(double xPos, double yPos, double zPos, double xSize, double ySize, double zSize) {
double xMin = xPos / 16d;
double yMin = yPos / 16d;
double zMin = zPos / 16d;
double xMax = (xPos + xSize) / 16d;
double yMax = (yPos + ySize) / 16d;
double zMax = (zPos + zSize) / 16d;
return VoxelShapes.cuboid(xMin, yMin, zMin, xMax, yMax, zMax);
}
public static Item.Settings getItemSettings() {
return new Item.Settings().group(ITEM_GROUP);
}
// Block registry
public static void register(String id, Block block) {
Registry.register(Registry.BLOCK, id(id), block);
register(id, new BlockItem(block, getItemSettings()));
}
// BlockEntityType registry
public static void register(String id, BlockEntityType<? extends BlockEntity> blockEntityType) {
Registry.register(Registry.BLOCK_ENTITY_TYPE, id(id), blockEntityType);
}
// Item registry
public static void register(String id, Item item) {
Registry.register(Registry.ITEM, id(id), item);
}
public static List<BlockPos> getPosAround(BlockPos pos){
return ImmutableList.of(
pos.north(),
pos.south(),
pos.east(),
pos.west(),
pos.up(),
pos.down()
);
}
public static BlockEntityType<?> createBlockEntity(Supplier<? extends BlockEntity> supplier, Block block) {
return BlockEntityType.Builder.create(supplier, block).build(null);
}
public static Identifier id(String path) {
return new Identifier(MOD_ID, path);
}
public static ModConfig config() {
return AutoConfig.getConfigHolder(ModConfig.class).getConfig();
}
public static TranslatableText text(String key) {
return new TranslatableText("text."+MOD_ID+"."+key);
}
public static void selfText(PlayerEntity player, String key) {
player.addChatMessage(text(key), false);
}
}

View file

@ -1,123 +0,0 @@
package bai.deirn.fsn.block;
import bai.deirn.fsn.Utils;
import bai.deirn.fsn.block.entity.CableBlockEntity;
import com.google.common.collect.ImmutableMap;
import net.fabricmc.fabric.api.block.FabricBlockSettings;
import net.fabricmc.fabric.api.tools.FabricToolTags;
import net.minecraft.block.Block;
import net.minecraft.block.BlockState;
import net.minecraft.block.Material;
import net.minecraft.block.entity.BlockEntity;
import net.minecraft.entity.EntityContext;
import net.minecraft.item.ItemPlacementContext;
import net.minecraft.state.StateManager;
import net.minecraft.state.property.BooleanProperty;
import net.minecraft.util.math.BlockPos;
import net.minecraft.util.math.Direction;
import net.minecraft.util.shape.VoxelShape;
import net.minecraft.util.shape.VoxelShapes;
import net.minecraft.world.BlockView;
import net.minecraft.world.IWorld;
import net.minecraft.world.World;
import java.util.Map;
public class CableBlock extends ChildBlock {
public static final Settings SETTINGS = FabricBlockSettings
.of(Material.GLASS)
.breakByHand(true)
.breakByTool(FabricToolTags.PICKAXES)
.hardness(3F)
.build();
public static final BooleanProperty NORTH = BooleanProperty.of("north");
public static final BooleanProperty SOUTH = BooleanProperty.of("south");
public static final BooleanProperty EAST = BooleanProperty.of("east");
public static final BooleanProperty WEST = BooleanProperty.of("west");
public static final BooleanProperty UP = BooleanProperty.of("up");
public static final BooleanProperty DOWN = BooleanProperty.of("down");
public CableBlock(Settings settings) {
super(settings);
}
@Override
public BlockEntity createBlockEntity(BlockView view) {
return new CableBlockEntity();
}
private boolean canConnect(World world, BlockPos pos) {
BlockState state = world.getBlockState(pos);
return canConnect(world, pos, state);
}
protected boolean canConnect(World world, BlockPos pos, BlockState state) {
Block block = state.getBlock();
return block instanceof ModBlock;
}
@Override
protected void appendProperties(StateManager.Builder<Block, BlockState> builder) {
builder.add(NORTH, SOUTH, EAST, WEST, UP, DOWN);
}
@Override
public BlockState getPlacementState(ItemPlacementContext ctx) {
World world = ctx.getWorld();
BlockPos pos = ctx.getBlockPos();
return this.getDefaultState()
.with(NORTH, this.canConnect(world, pos.north()))
.with(SOUTH, this.canConnect(world, pos.south()))
.with(EAST, this.canConnect(world, pos.east()))
.with(WEST, this.canConnect(world, pos.west()))
.with(UP, this.canConnect(world, pos.up()))
.with(DOWN, this.canConnect(world, pos.down()));
}
@Override
public BlockState getStateForNeighborUpdate(BlockState state, Direction facing, BlockState neighborState, IWorld world, BlockPos pos, BlockPos neighborPos) {
super.getStateForNeighborUpdate(state, facing, neighborState, world, pos, neighborPos);
Map<Direction, BooleanProperty> propertyMap = ImmutableMap.<Direction, BooleanProperty>builder()
.put(Direction.NORTH, NORTH)
.put(Direction.SOUTH, SOUTH)
.put(Direction.EAST, EAST)
.put(Direction.WEST, WEST)
.put(Direction.UP, UP)
.put(Direction.DOWN, DOWN)
.build();
return state.with(propertyMap.get(facing), this.canConnect(world.getWorld(), neighborPos, neighborState));
}
@Override
public VoxelShape getOutlineShape(BlockState state, BlockView view, BlockPos pos, EntityContext context) {
VoxelShape north = Utils.cuboid(6, 6, 0, 4, 4, 10);
VoxelShape south = Utils.cuboid(6, 6, 6, 4, 4, 10);
VoxelShape east = Utils.cuboid(6, 6, 6, 10, 4, 4);
VoxelShape west = Utils.cuboid(0, 6, 6, 10, 4, 4);
VoxelShape up = Utils.cuboid(6, 6, 6, 4, 10, 4);
VoxelShape down = Utils.cuboid(6, 0, 6, 4, 10, 4);
boolean n = state.get(NORTH);
boolean s = state.get(SOUTH);
boolean e = state.get(EAST);
boolean w = state.get(WEST);
boolean u = state.get(UP);
boolean d = state.get(DOWN);
VoxelShape result = Utils.cuboid(6, 6, 6, 4, 4, 4);
if (n) result = VoxelShapes.union(result, north);
if (s) result = VoxelShapes.union(result, south);
if (e) result = VoxelShapes.union(result, east);
if (w) result = VoxelShapes.union(result, west);
if (u) result = VoxelShapes.union(result, up);
if (d) result = VoxelShapes.union(result, down);
return result;
}
}

View file

@ -1,167 +0,0 @@
package bai.deirn.fsn.block;
import bai.deirn.fsn.Utils;
import net.minecraft.block.Block;
import net.minecraft.block.BlockEntityProvider;
import net.minecraft.block.BlockState;
import net.minecraft.block.entity.BlockEntity;
import net.minecraft.nbt.CompoundTag;
import net.minecraft.util.math.BlockPos;
import net.minecraft.world.BlockView;
import net.minecraft.world.World;
public abstract class ChildBlock extends ModBlock implements BlockEntityProvider {
public ChildBlock(Settings settings) {
super(settings);
}
@Override
public BlockEntity createBlockEntity(BlockView view) {
return null;
}
private void validateMaster(World world, BlockPos pos) {
BlockEntity blockEntity = world.getBlockEntity(pos);
CompoundTag nbt = blockEntity.toTag(new CompoundTag());
if (nbt.getBoolean("hasMaster")) {
CompoundTag master = nbt.getCompound("masterPos");
BlockPos masterPos = new BlockPos(master.getInt("x"), master.getInt("y"), master.getInt("z"));
if (!(world.getBlockState(masterPos).getBlock() instanceof MasterBlock)) {
nbt.putBoolean("hasMaster", false);
blockEntity.fromTag(nbt);
blockEntity.markDirty();
world.updateNeighbors(pos, world.getBlockState(pos).getBlock());
}
}
}
/*
@Override
public BlockState getStateForNeighborUpdate(BlockState state, Direction facing, BlockState neighborState, IWorld world, BlockPos pos, BlockPos neighborPos) {
BlockEntity blockEntity = world.getBlockEntity(pos);
CompoundTag currentNbt = blockEntity.toTag(new CompoundTag());
Block neighborBlock = neighborState.getBlock();
boolean currentlyHasMaster = currentNbt.getBoolean("hasMaster");
if (currentlyHasMaster) {
CompoundTag currentMasterPos = currentNbt.getCompound("masterPos");
if (neighborBlock instanceof ChildBlock) {
BlockEntity neighborBlockEntity = world.getBlockEntity(neighborPos);
CompoundTag neighborNbt = neighborBlockEntity.toTag(new CompoundTag());
boolean neighborHasMaster = neighborNbt.getBoolean("hasMaster");
if (!neighborHasMaster) {
CompoundTag neighborMasterPos = neighborNbt.getCompound("masterPos");
Utils.LOGGER.warning(currentMasterPos.toString()+" "+neighborMasterPos.toString());
if (currentMasterPos.toString().equals(neighborMasterPos.toString())) {
currentNbt.putBoolean("hasMaster", false);
blockEntity.fromTag(currentNbt);
blockEntity.markDirty();
world.updateNeighbors(pos, state.getBlock());
} else {
neighborNbt.put("masterPos", currentMasterPos);
neighborNbt.putBoolean("hasMaster", true);
neighborBlockEntity.fromTag(neighborNbt);
neighborBlockEntity.markDirty();
world.updateNeighbors(neighborPos, neighborState.getBlock());
}
}
} else if (!(neighborBlock instanceof MasterBlock)) {
BlockPos masterPos = new BlockPos(currentMasterPos.getInt("x"), currentMasterPos.getInt("y"), currentMasterPos.getInt("z"));
Block masterBlock = world.getBlockState(masterPos).getBlock();
if (!(masterBlock instanceof MasterBlock)) {
currentNbt.putBoolean("hasMaster", false);
blockEntity.fromTag(currentNbt);
blockEntity.markDirty();
world.updateNeighbors(pos, state.getBlock());
}
}
}
if (!currentlyHasMaster) {
if (neighborBlock instanceof ChildBlock) {
BlockEntity neighborBlockEntity = world.getBlockEntity(neighborPos);
CompoundTag neighborNbt = neighborBlockEntity.toTag(new CompoundTag());
blockEntity.fromTag(neighborNbt);
blockEntity.markDirty();
world.updateNeighbors(pos, state.getBlock());
} else if (neighborBlock instanceof MasterBlock) {
CompoundTag masterPos = new CompoundTag();
masterPos.putInt("x", neighborPos.getX());
masterPos.putInt("y", neighborPos.getY());
masterPos.putInt("z", neighborPos.getZ());
currentNbt.put("masterPos", masterPos);
currentNbt.putBoolean("hasMaster", true);
blockEntity.fromTag(currentNbt);
blockEntity.markDirty();
world.updateNeighbors(pos, state.getBlock());
}
}
return state;
}
*/
private int updateCount = 0;
@Override
public void neighborUpdate(BlockState state, World world, BlockPos pos, Block block, BlockPos neighborPos, boolean moved) {
BlockEntity blockEntity = world.getBlockEntity(pos);
BlockState neighborState = world.getBlockState(neighborPos);
Block neighborBlock = neighborState.getBlock();
CompoundTag currentNbt = blockEntity.toTag(new CompoundTag());
boolean currentlyHasMaster = currentNbt.getBoolean("hasMaster");
if (neighborBlock instanceof ChildBlock) {
BlockEntity neighborBlockEntity = world.getBlockEntity(neighborPos);
CompoundTag neighborNbt = neighborBlockEntity.toTag(new CompoundTag());
boolean neighborHasMaster = neighborNbt.getBoolean("hasMaster");
if (currentlyHasMaster && !neighborHasMaster) {
CompoundTag masterPos = currentNbt.getCompound("masterPos");
CompoundTag neighborMasterPos = neighborNbt.getCompound("masterPos");
if (masterPos.equals(neighborMasterPos)) {
currentNbt.putBoolean("hasMaster", false);
blockEntity.fromTag(currentNbt);
blockEntity.markDirty();
world.updateNeighbors(pos, block);
} else {
neighborBlockEntity.fromTag(currentNbt);
neighborBlockEntity.markDirty();
world.updateNeighbors(neighborPos, neighborBlock);
}
}
if (!currentlyHasMaster && neighborHasMaster) {
blockEntity.fromTag(neighborNbt);
blockEntity.markDirty();
world.updateNeighbors(pos, block);
}
} else if (neighborBlock instanceof MasterBlock) {
if (!currentlyHasMaster) {
CompoundTag masterPos = new CompoundTag();
masterPos.putInt("x", neighborPos.getX());
masterPos.putInt("y", neighborPos.getY());
masterPos.putInt("z", neighborPos.getZ());
currentNbt.put("masterPos", masterPos);
currentNbt.putBoolean("hasMaster", true);
blockEntity.fromTag(currentNbt);
blockEntity.markDirty();
world.updateNeighbors(pos, block);
}
} else if (currentlyHasMaster) {
CompoundTag master = currentNbt.getCompound("masterPos");
BlockPos masterPos = new BlockPos(master.getInt("x"), master.getInt("y"), master.getInt("z"));
currentNbt.putBoolean("hasMaster", false);
blockEntity.fromTag(currentNbt);
blockEntity.markDirty();
world.updateNeighbors(pos, block);
world.updateNeighbors(masterPos, world.getBlockState(masterPos).getBlock());
} else {
updateCount = 0;
}
updateCount++;
Utils.LOGGER.warning("updateCount: " + updateCount);
}
}

View file

@ -1,37 +0,0 @@
package bai.deirn.fsn.block;
import bai.deirn.fsn.Utils;
import net.minecraft.block.Block;
import net.minecraft.block.BlockState;
import net.minecraft.entity.EntityContext;
import net.minecraft.inventory.Inventory;
import net.minecraft.util.math.BlockPos;
import net.minecraft.util.shape.VoxelShape;
import net.minecraft.util.shape.VoxelShapes;
import net.minecraft.world.BlockView;
import net.minecraft.world.World;
public abstract class ConnectorCableBlock extends CableBlock {
public ConnectorCableBlock(Settings settings) {
super(settings);
}
@Override
protected boolean canConnect(World world, BlockPos pos, BlockState state) {
Block block = state.getBlock();
boolean result = block instanceof ModBlock;
if (!result && block.hasBlockEntity()) {
result = Inventory.class.isAssignableFrom(world.getBlockEntity(pos).getClass());
}
return result;
}
@Override
public VoxelShape getOutlineShape(BlockState state, BlockView view, BlockPos pos, EntityContext context) {
VoxelShape end = Utils.cuboid(5, 5, 5, 6, 6, 6);
VoxelShape result = super.getOutlineShape(state, view, pos, context);
return VoxelShapes.union(result, end);
}
}

View file

@ -1,32 +0,0 @@
package bai.deirn.fsn.block;
import bai.deirn.fsn.Utils;
import bai.deirn.fsn.block.entity.CraftingTerminalBlockEntity;
import net.minecraft.block.BlockState;
import net.minecraft.block.entity.BlockEntity;
import net.minecraft.entity.player.PlayerEntity;
import net.minecraft.util.ActionResult;
import net.minecraft.util.Hand;
import net.minecraft.util.hit.BlockHitResult;
import net.minecraft.util.math.BlockPos;
import net.minecraft.world.BlockView;
import net.minecraft.world.World;
public class CraftingTerminalBlock extends ChildBlock {
public CraftingTerminalBlock(Settings settings) {
super(settings);
}
@Override
public BlockEntity createBlockEntity(BlockView view) {
return new CraftingTerminalBlockEntity();
}
@Override
public ActionResult onUse(BlockState state, World world, BlockPos pos, PlayerEntity player, Hand hand, BlockHitResult hit) {
Utils.selfText(player, "useCraftingTerminal");
return super.onUse(state, world, pos, player, hand, hit);
}
}

View file

@ -1,9 +0,0 @@
package bai.deirn.fsn.block;
public class ExportCableBlock extends ConnectorCableBlock {
public ExportCableBlock(Settings settings) {
super(settings);
}
}

View file

@ -1,9 +0,0 @@
package bai.deirn.fsn.block;
public class ImportCableBlock extends ConnectorCableBlock {
public ImportCableBlock(Settings settings) {
super(settings);
}
}

View file

@ -1,88 +0,0 @@
package bai.deirn.fsn.block;
import bai.deirn.fsn.block.entity.MasterBlockEntity;
import net.minecraft.block.Block;
import net.minecraft.block.BlockEntityProvider;
import net.minecraft.block.BlockState;
import net.minecraft.block.entity.BlockEntity;
import net.minecraft.client.item.TooltipContext;
import net.minecraft.item.ItemStack;
import net.minecraft.nbt.CompoundTag;
import net.minecraft.text.Text;
import net.minecraft.text.TranslatableText;
import net.minecraft.util.math.BlockPos;
import net.minecraft.world.BlockView;
import net.minecraft.world.World;
import java.util.List;
public class MasterBlock extends ModBlock implements BlockEntityProvider {
public MasterBlock(Settings settings) {
super(settings);
}
@Override
public BlockEntity createBlockEntity(BlockView view) {
return new MasterBlockEntity();
}
@Override
public void buildTooltip(ItemStack stack, BlockView view, List<Text> tooltip, TooltipContext options) {
super.buildTooltip(stack, view, tooltip, options);
tooltip.add(new TranslatableText(stack.getTranslationKey()+".tooltip2"));
}
/*
@Override
public BlockState getStateForNeighborUpdate(BlockState state, Direction facing, BlockState neighborState, IWorld world, BlockPos pos, BlockPos neighborPos) {
Block neighborBlock = neighborState.getBlock();
if (neighborBlock instanceof ChildBlock) {
BlockEntity neighborBlockEntity = world.getBlockEntity(neighborPos);
CompoundTag neighborNbt = neighborBlockEntity.toTag(new CompoundTag());
boolean neighborHasMaster = neighborNbt.getBoolean("hasMaster");
if (!neighborHasMaster) {
CompoundTag masterPos = new CompoundTag();
masterPos.putInt("x", pos.getX());
masterPos.putInt("y", pos.getY());
masterPos.putInt("z", pos.getZ());
neighborNbt.put("masterPos", masterPos);
neighborNbt.putBoolean("hasMaster", true);
neighborBlockEntity.fromTag(neighborNbt);
neighborBlockEntity.markDirty();
}
}
return state;
}
*/
@Override
public void neighborUpdate(BlockState state, World world, BlockPos pos, Block block, BlockPos neighborPos, boolean moved) {
super.neighborUpdate(state, world, pos, block, neighborPos, moved);
BlockState neighborState = world.getBlockState(neighborPos);
Block neighborBlock = neighborState.getBlock();
if (neighborBlock instanceof ChildBlock) {
BlockEntity neighborBlockEntity = world.getBlockEntity(neighborPos);
CompoundTag neighborNbt = neighborBlockEntity.toTag(new CompoundTag());
boolean neighborHasMaster = neighborNbt.getBoolean("hasMaster");
if (!neighborHasMaster) {
CompoundTag masterPos = new CompoundTag();
masterPos.putInt("x", pos.getX());
masterPos.putInt("y", pos.getY());
masterPos.putInt("z", pos.getZ());
neighborNbt.put("masterPos", masterPos);
neighborNbt.putBoolean("hasMaster", true);
neighborBlockEntity.fromTag(neighborNbt);
neighborBlockEntity.markDirty();
world.updateNeighbors(neighborPos, neighborBlock);
}
}
}
}

View file

@ -1,32 +0,0 @@
package bai.deirn.fsn.block;
import net.fabricmc.fabric.api.block.FabricBlockSettings;
import net.fabricmc.fabric.api.tools.FabricToolTags;
import net.minecraft.block.Block;
import net.minecraft.block.Material;
import net.minecraft.client.item.TooltipContext;
import net.minecraft.item.ItemStack;
import net.minecraft.text.Text;
import net.minecraft.text.TranslatableText;
import net.minecraft.world.BlockView;
import java.util.List;
public class ModBlock extends Block {
public static final Settings SETTINGS = FabricBlockSettings
.of(Material.STONE)
.breakByHand(true)
.breakByTool(FabricToolTags.PICKAXES)
.hardness(5F)
.build();
public ModBlock(Settings settings) {
super(settings);
}
@Override
public void buildTooltip(ItemStack stack, BlockView view, List<Text> tooltip, TooltipContext options) {
tooltip.add(new TranslatableText(stack.getTranslationKey()+".tooltip"));
}
}

View file

@ -1,9 +0,0 @@
package bai.deirn.fsn.block;
public class ProcessingCableBlock extends ConnectorCableBlock {
public ProcessingCableBlock(Settings settings) {
super(settings);
}
}

View file

@ -1,18 +0,0 @@
package bai.deirn.fsn.block;
import bai.deirn.fsn.block.entity.ProcessingTerminalBlockEntity;
import net.minecraft.block.entity.BlockEntity;
import net.minecraft.world.BlockView;
public class ProcessingTerminalBlock extends ChildBlock {
public ProcessingTerminalBlock(Settings settings) {
super(settings);
}
@Override
public BlockEntity createBlockEntity(BlockView view) {
return new ProcessingTerminalBlockEntity();
}
}

View file

@ -1,33 +0,0 @@
package bai.deirn.fsn.block;
import bai.deirn.fsn.block.entity.StorageCableBlockEntity;
import net.minecraft.block.BlockState;
import net.minecraft.block.entity.BlockEntity;
import net.minecraft.entity.LivingEntity;
import net.minecraft.item.ItemStack;
import net.minecraft.nbt.CompoundTag;
import net.minecraft.nbt.NbtHelper;
import net.minecraft.util.math.BlockPos;
import net.minecraft.world.BlockView;
import net.minecraft.world.World;
public class StorageCableBlock extends ConnectorCableBlock {
public StorageCableBlock(Settings settings) {
super(settings);
}
@Override
public BlockEntity createBlockEntity(BlockView view) {
return new StorageCableBlockEntity();
}
@Override
public void onPlaced(World world, BlockPos pos, BlockState state, LivingEntity placer, ItemStack itemStack) {
super.onPlaced(world, pos, state, placer, itemStack);
CompoundTag masterPos = world.getBlockEntity(pos).toTag(new CompoundTag()).getCompound("masterPos");
BlockEntity master = world.getBlockEntity(NbtHelper.toBlockPos(masterPos));
}
}

View file

@ -1,11 +0,0 @@
package bai.deirn.fsn.block.entity;
import bai.deirn.fsn.registry.BlockEntityTypeRegistry;
public class CableBlockEntity extends ChildBlockEntity {
public CableBlockEntity() {
super(BlockEntityTypeRegistry.CABLE);
}
}

View file

@ -1,42 +0,0 @@
package bai.deirn.fsn.block.entity;
import net.minecraft.block.entity.BlockEntity;
import net.minecraft.block.entity.BlockEntityType;
import net.minecraft.nbt.CompoundTag;
public abstract class ChildBlockEntity extends BlockEntity {
protected boolean hasMaster = false;
protected CompoundTag masterPos = new CompoundTag();
protected int[] masterPosArray = new int[3];
public ChildBlockEntity(BlockEntityType<?> type) {
super(type);
}
@Override
public CompoundTag toTag(CompoundTag tag) {
super.toTag(tag);
tag.putBoolean("hasMaster", hasMaster);
this.masterPos.putInt("x", masterPosArray[0]);
this.masterPos.putInt("y", masterPosArray[1]);
this.masterPos.putInt("z", masterPosArray[2]);
tag.put("masterPos", this.masterPos);
return tag;
}
@Override
public void fromTag(CompoundTag tag) {
super.fromTag(tag);
this.hasMaster = tag.getBoolean("hasMaster");
this.masterPos = tag.getCompound("masterPos");
this.masterPosArray[0] = this.masterPos.getInt("x");
this.masterPosArray[1] = this.masterPos.getInt("y");
this.masterPosArray[2] = this.masterPos.getInt("z");
}
}

View file

@ -1,11 +0,0 @@
package bai.deirn.fsn.block.entity;
import bai.deirn.fsn.registry.BlockEntityTypeRegistry;
public class CraftingTerminalBlockEntity extends ChildBlockEntity {
public CraftingTerminalBlockEntity() {
super(BlockEntityTypeRegistry.CRAFTING_TERMINAL);
}
}

View file

@ -1,55 +0,0 @@
package bai.deirn.fsn.block.entity;
import bai.deirn.fsn.registry.BlockEntityTypeRegistry;
import net.minecraft.block.entity.BlockEntity;
import net.minecraft.nbt.CompoundTag;
import net.minecraft.nbt.ListTag;
import net.minecraft.nbt.Tag;
import java.util.ArrayList;
import java.util.List;
public class MasterBlockEntity extends BlockEntity {
private ListTag storagePos = new ListTag();
private List<int[]> storagePosArray = new ArrayList<>();
public MasterBlockEntity() {
super(BlockEntityTypeRegistry.MASTER);
}
@Override
public CompoundTag toTag(CompoundTag tag) {
super.toTag(tag);
this.storagePosArray.forEach(storage -> {
CompoundTag compoundTag = new CompoundTag();
compoundTag.putInt("x", storage[0]);
compoundTag.putInt("y", storage[1]);
compoundTag.putInt("z", storage[2]);
this.storagePos.add(compoundTag);
});
tag.put("storagePos", storagePos);
return tag;
}
@Override
public void fromTag(CompoundTag tag) {
super.fromTag(tag);
this.storagePos = (ListTag) tag.get("storagePos");
this.storagePosArray.clear();
for (Tag storage : this.storagePos) {
CompoundTag compoundTag = (CompoundTag) storage;
int[] ints = {
compoundTag.getInt("x"),
compoundTag.getInt("y"),
compoundTag.getInt("z")
};
storagePosArray.add(ints);
}
}
}

View file

@ -1,11 +0,0 @@
package bai.deirn.fsn.block.entity;
import bai.deirn.fsn.registry.BlockEntityTypeRegistry;
public class ProcessingTerminalBlockEntity extends ChildBlockEntity {
public ProcessingTerminalBlockEntity() {
super(BlockEntityTypeRegistry.PROCESSING_TERMINAL);
}
}

View file

@ -1,11 +0,0 @@
package bai.deirn.fsn.block.entity;
import bai.deirn.fsn.registry.BlockEntityTypeRegistry;
public class StorageCableBlockEntity extends ChildBlockEntity {
public StorageCableBlockEntity() {
super(BlockEntityTypeRegistry.STORAGE_CABLE);
}
}

View file

@ -1,21 +0,0 @@
package bai.deirn.fsn.config;
import bai.deirn.fsn.Utils;
import me.sargunvohra.mcmods.autoconfig1u.ConfigData;
import me.sargunvohra.mcmods.autoconfig1u.annotation.Config;
import me.sargunvohra.mcmods.autoconfig1u.annotation.ConfigEntry;
@Config(name = Utils.MOD_ID)
@Config.Gui.Background(Utils.MOD_ID+":textures/gui/config.png")
public class ModConfig implements ConfigData {
@ConfigEntry.Gui.Tooltip
public boolean remote0 = true;
@ConfigEntry.Gui.Tooltip
public boolean remote1 = true;
@ConfigEntry.Gui.Tooltip
public boolean remote2 = true;
@ConfigEntry.Gui.Tooltip
public boolean remote3 = true;
}

View file

@ -1,23 +0,0 @@
package bai.deirn.fsn.config;
import bai.deirn.fsn.Utils;
import io.github.prospector.modmenu.api.ModMenuApi;
import me.sargunvohra.mcmods.autoconfig1u.AutoConfig;
import net.minecraft.client.gui.screen.Screen;
import java.util.Optional;
import java.util.function.Supplier;
public class ModMenuIntegration implements ModMenuApi {
@Override
public String getModId() {
return Utils.MOD_ID;
}
@Override
public Optional<Supplier<Screen>> getConfigScreen(Screen screen) {
return Optional.of(AutoConfig.getConfigScreen(ModConfig.class, screen));
}
}

View file

@ -1,11 +0,0 @@
package bai.deirn.fsn.gui.controller;
import io.github.cottonmc.cotton.gui.CottonCraftingController;
import net.minecraft.entity.player.PlayerInventory;
import net.minecraft.recipe.RecipeType;
public class CraftingTerminalController extends CottonCraftingController {
public CraftingTerminalController(RecipeType<?> recipeType, int syncId, PlayerInventory playerInventory) {
super(recipeType, syncId, playerInventory);
}
}

View file

@ -1,23 +0,0 @@
package bai.deirn.fsn.item;
import net.minecraft.client.item.TooltipContext;
import net.minecraft.item.Item;
import net.minecraft.item.ItemStack;
import net.minecraft.text.Text;
import net.minecraft.text.TranslatableText;
import net.minecraft.world.World;
import java.util.List;
public class ModItem extends Item {
public ModItem(Settings settings) {
super(settings);
}
@Override
public void appendTooltip(ItemStack stack, World world, List<Text> tooltip, TooltipContext context) {
tooltip.add(new TranslatableText(stack.getTranslationKey()+".tooltip"));
}
}

View file

@ -1,8 +0,0 @@
package bai.deirn.fsn.mixin;
import net.minecraft.inventory.Inventory;
import org.spongepowered.asm.mixin.Mixin;
@Mixin(Inventory.class)
public class MixinInventory {
}

View file

@ -1,24 +0,0 @@
package bai.deirn.fsn.registry;
import bai.deirn.fsn.Utils;
import bai.deirn.fsn.block.entity.*;
import net.minecraft.block.entity.BlockEntityType;
public abstract class BlockEntityTypeRegistry {
public static final BlockEntityType<?> MASTER = Utils.createBlockEntity(MasterBlockEntity::new, BlockRegistry.MASTER);
public static final BlockEntityType<?> CRAFTING_TERMINAL = Utils.createBlockEntity(CraftingTerminalBlockEntity::new, BlockRegistry.CRAFTING_TERMINAL);
public static final BlockEntityType<?> PROCESSING_TERMINAL = Utils.createBlockEntity(ProcessingTerminalBlockEntity::new, BlockRegistry.PROCESSING_TERMINAL);
public static final BlockEntityType<?> CABLE = Utils.createBlockEntity(CableBlockEntity::new, BlockRegistry.CABLE);
public static final BlockEntityType<?> STORAGE_CABLE = Utils.createBlockEntity(StorageCableBlockEntity::new, BlockRegistry.STORAGE_CABLE);
public static void init(){
Utils.register("master", MASTER);
Utils.register("crafting_terminal", CRAFTING_TERMINAL);
Utils.register("processing_terminal", PROCESSING_TERMINAL);
Utils.register("cable", CABLE);
Utils.register("storage_cable", STORAGE_CABLE);
}
}

View file

@ -1,30 +0,0 @@
package bai.deirn.fsn.registry;
import bai.deirn.fsn.Utils;
import bai.deirn.fsn.block.*;
import net.minecraft.block.Block;
public abstract class BlockRegistry {
public static final Block MASTER = new MasterBlock(ModBlock.SETTINGS);
public static final Block CRAFTING_TERMINAL = new CraftingTerminalBlock(ModBlock.SETTINGS);
public static final Block PROCESSING_TERMINAL = new ProcessingTerminalBlock(ModBlock.SETTINGS);
public static final Block CABLE = new CableBlock(CableBlock.SETTINGS);
public static final Block STORAGE_CABLE = new StorageCableBlock(CableBlock.SETTINGS);
public static final Block IMPORT_CABLE = new ImportCableBlock(CableBlock.SETTINGS);
public static final Block EXPORT_CABLE = new ExportCableBlock(CableBlock.SETTINGS);
public static final Block PROCESSING_CABLE = new ProcessingCableBlock(CableBlock.SETTINGS);
public static void init() {
Utils.register("master", MASTER);
Utils.register("crafting_terminal", CRAFTING_TERMINAL);
Utils.register("processing_terminal", PROCESSING_TERMINAL);
Utils.register("cable", CABLE);
Utils.register("storage_cable", STORAGE_CABLE);
Utils.register("import_cable", IMPORT_CABLE);
Utils.register("export_cable", EXPORT_CABLE);
Utils.register("processing_cable", PROCESSING_CABLE);
}
}

View file

@ -1,9 +0,0 @@
package bai.deirn.fsn.registry;
public abstract class ItemRegistry {
public static void init() {
}
}

View file

@ -1,11 +0,0 @@
{
"multipart": [
{"apply": {"model": "fsn:block/cable_center"}},
{"when": {"north": true}, "apply": {"model": "fsn:block/cable_side"}},
{"when": {"south": true}, "apply": {"model": "fsn:block/cable_side", "y": 180}},
{"when": {"east" : true}, "apply": {"model": "fsn:block/cable_side", "y": 90}},
{"when": {"west" : true}, "apply": {"model": "fsn:block/cable_side", "y": -90}},
{"when": {"up" : true}, "apply": {"model": "fsn:block/cable_side", "x": -90}},
{"when": {"down" : true}, "apply": {"model": "fsn:block/cable_side", "x": 90}}
]
}

View file

@ -1,5 +0,0 @@
{
"variants": {
"": { "model": "fsn:block/crafting_terminal" }
}
}

View file

@ -1,11 +0,0 @@
{
"multipart": [
{"apply": {"model": "fsn:block/cable_end_export"}},
{"when": {"north": true}, "apply": {"model": "fsn:block/cable_side"}},
{"when": {"south": true}, "apply": {"model": "fsn:block/cable_side", "y": 180}},
{"when": {"east" : true}, "apply": {"model": "fsn:block/cable_side", "y": 90}},
{"when": {"west" : true}, "apply": {"model": "fsn:block/cable_side", "y": -90}},
{"when": {"up" : true}, "apply": {"model": "fsn:block/cable_side", "x": -90}},
{"when": {"down" : true}, "apply": {"model": "fsn:block/cable_side", "x": 90}}
]
}

View file

@ -1,11 +0,0 @@
{
"multipart": [
{"apply": {"model": "fsn:block/cable_end_import"}},
{"when": {"north": true}, "apply": {"model": "fsn:block/cable_side"}},
{"when": {"south": true}, "apply": {"model": "fsn:block/cable_side", "y": 180}},
{"when": {"east" : true}, "apply": {"model": "fsn:block/cable_side", "y": 90}},
{"when": {"west" : true}, "apply": {"model": "fsn:block/cable_side", "y": -90}},
{"when": {"up" : true}, "apply": {"model": "fsn:block/cable_side", "x": -90}},
{"when": {"down" : true}, "apply": {"model": "fsn:block/cable_side", "x": 90}}
]
}

View file

@ -1,5 +0,0 @@
{
"variants": {
"": { "model": "fsn:block/master" }
}
}

View file

@ -1,11 +0,0 @@
{
"multipart": [
{"apply": {"model": "fsn:block/cable_end_processing"}},
{"when": {"north": true}, "apply": {"model": "fsn:block/cable_side"}},
{"when": {"south": true}, "apply": {"model": "fsn:block/cable_side", "y": 180}},
{"when": {"east" : true}, "apply": {"model": "fsn:block/cable_side", "y": 90}},
{"when": {"west" : true}, "apply": {"model": "fsn:block/cable_side", "y": -90}},
{"when": {"up" : true}, "apply": {"model": "fsn:block/cable_side", "x": -90}},
{"when": {"down" : true}, "apply": {"model": "fsn:block/cable_side", "x": 90}}
]
}

View file

@ -1,5 +0,0 @@
{
"variants": {
"": { "model": "fsn:block/processing_terminal" }
}
}

View file

@ -1,11 +0,0 @@
{
"multipart": [
{"apply": {"model": "fsn:block/cable_end_storage"}},
{"when": {"north": true}, "apply": {"model": "fsn:block/cable_side"}},
{"when": {"south": true}, "apply": {"model": "fsn:block/cable_side", "y": 180}},
{"when": {"east" : true}, "apply": {"model": "fsn:block/cable_side", "y": 90}},
{"when": {"west" : true}, "apply": {"model": "fsn:block/cable_side", "y": -90}},
{"when": {"up" : true}, "apply": {"model": "fsn:block/cable_side", "x": -90}},
{"when": {"down" : true}, "apply": {"model": "fsn:block/cable_side", "x": 90}}
]
}

View file

@ -1,29 +0,0 @@
{
"itemGroup.fsn.item_group": "Storage Networks",
"block.fsn.master": "Network Master",
"block.fsn.master.tooltip": "§7Heart of the storage connection. §5One per connection.",
"block.fsn.master.tooltip2": "§7ふらふらふらふら",
"block.fsn.crafting_terminal": "Crafting Terminal",
"block.fsn.crafting_terminal.tooltip": "§7nice",
"block.fsn.processing_terminal": "Processing Terminal",
"block.fsn.processing_terminal.tooltip": "§7Loading tooltip text...",
"block.fsn.cable": "Cable",
"block.fsn.cable.tooltip": "§7regular pipe",
"block.fsn.storage_cable": "Storage Cable",
"block.fsn.storage_cable.tooltip": "§7pipe for connecting inventories",
"block.fsn.import_cable": "Import Cable",
"block.fsn.import_cable.tooltip": "§7from block to network",
"block.fsn.export_cable": "Export Cable",
"block.fsn.export_cable.tooltip": "§7from network to block",
"block.fsn.processing_cable": "Processing Cable",
"block.fsn.processing_cable.tooltip": "§7Ok §kGoogle§r§7, cook me some steak. Well done steak.",
"text.autoconfig.fsn.title": "Fabric Storage Networks",
"text.autoconfig.fsn.option.remote0": "Enable Limited Remote",
"text.autoconfig.fsn.option.remote0.@Tooltip": "§cRestart Required!",
"text.autoconfig.fsn.option.remote1": "Enable Regular Crafting Remote",
"text.autoconfig.fsn.option.remote1.@Tooltip": "§cRestart Required!",
"text.autoconfig.fsn.option.remote2": "Enable Advanced Crafting Remote",
"text.autoconfig.fsn.option.remote2.@Tooltip": "§cRestart Required!",
"text.autoconfig.fsn.option.remote3": "Enable Ultimate Crafting Remote",
"text.autoconfig.fsn.option.remote3.@Tooltip": "§cRestart Required!"
}

View file

@ -1,21 +0,0 @@
{
"textures": {
"0": "fsn:block/cable",
"particle": "fsn:block/cable"
},
"elements": [
{
"from": [6, 6, 6],
"to": [10, 10, 10],
"rotation": {"angle": 0, "axis": "y", "origin": [14, 14, 8]},
"faces": {
"north": {"uv": [10, 0, 14, 4], "texture": "#0"},
"east": {"uv": [6, 0, 10, 4], "texture": "#0"},
"south": {"uv": [10, 0, 14, 4], "texture": "#0"},
"west": {"uv": [6, 0, 10, 4], "texture": "#0"},
"up": {"uv": [10, 4, 6, 0], "rotation": 90, "texture": "#0"},
"down": {"uv": [10, 0, 6, 4], "rotation": 270, "texture": "#0"}
}
}
]
}

View file

@ -1,22 +0,0 @@
{
"parent": "block/cube_all",
"textures": {
"0": "fsn:block/cable",
"particle": "fsn:block/cable"
},
"elements": [
{
"from": [5, 5, 5],
"to": [11, 11, 11],
"rotation": {"angle": 0, "axis": "y", "origin": [13, 13, 13]},
"faces": {
"north": {"uv": [0, 10, 6, 16], "texture": "#0"},
"east": {"uv": [0, 10, 6, 16], "texture": "#0"},
"south": {"uv": [0, 10, 6, 16], "texture": "#0"},
"west": {"uv": [0, 10, 6, 16], "texture": "#0"},
"up": {"uv": [0, 10, 6, 16], "texture": "#0"},
"down": {"uv": [0, 10, 6, 16], "texture": "#0"}
}
}
]
}

View file

@ -1,22 +0,0 @@
{
"parent": "block/cube_all",
"textures": {
"0": "fsn:block/cable",
"particle": "fsn:block/cable"
},
"elements": [
{
"from": [5, 5, 5],
"to": [11, 11, 11],
"rotation": {"angle": 0, "axis": "y", "origin": [13, 13, 13]},
"faces": {
"north": {"uv": [6, 4, 12, 10], "texture": "#0"},
"east": {"uv": [6, 4, 12, 10], "texture": "#0"},
"south": {"uv": [6, 4, 12, 10], "texture": "#0"},
"west": {"uv": [6, 4, 12, 10], "texture": "#0"},
"up": {"uv": [6, 4, 12, 10], "texture": "#0"},
"down": {"uv": [6, 4, 12, 10], "texture": "#0"}
}
}
]
}

View file

@ -1,22 +0,0 @@
{
"parent": "block/cube_all",
"textures": {
"0": "fsn:block/cable",
"particle": "fsn:block/cable"
},
"elements": [
{
"from": [5, 5, 5],
"to": [11, 11, 11],
"rotation": {"angle": 0, "axis": "y", "origin": [13, 13, 13]},
"faces": {
"north": {"uv": [6, 10, 12, 16], "texture": "#0"},
"east": {"uv": [6, 10, 12, 16], "texture": "#0"},
"south": {"uv": [6, 10, 12, 16], "texture": "#0"},
"west": {"uv": [6, 10, 12, 16], "texture": "#0"},
"up": {"uv": [6, 10, 12, 16], "texture": "#0"},
"down": {"uv": [6, 10, 12, 16], "texture": "#0"}
}
}
]
}

View file

@ -1,22 +0,0 @@
{
"parent": "block/cube_all",
"textures": {
"0": "fsn:block/cable",
"particle": "fsn:block/cable"
},
"elements": [
{
"from": [5, 5, 5],
"to": [11, 11, 11],
"rotation": {"angle": 0, "axis": "y", "origin": [13, 13, 13]},
"faces": {
"north": {"uv": [0, 4, 6, 10], "texture": "#0"},
"east": {"uv": [0, 4, 6, 10], "texture": "#0"},
"south": {"uv": [0, 4, 6, 10], "texture": "#0"},
"west": {"uv": [0, 4, 6, 10], "texture": "#0"},
"up": {"uv": [0, 4, 6, 10], "texture": "#0"},
"down": {"uv": [0, 4, 6, 10], "texture": "#0"}
}
}
]
}

View file

@ -1,21 +0,0 @@
{
"textures": {
"0": "fsn:block/cable",
"particle": "fsn:block/cable"
},
"elements": [
{
"from": [6, 6, 0],
"to": [10, 10, 10],
"rotation": {"angle": 0, "axis": "y", "origin": [14, 14, 8]},
"faces": {
"north": {"uv": [10, 0, 14, 4], "texture": "#0"},
"east": {"uv": [0, 0, 10, 4], "texture": "#0"},
"south": {"uv": [10, 0, 14, 4], "texture": "#0"},
"west": {"uv": [0, 0, 10, 4], "texture": "#0"},
"up": {"uv": [10, 4, 0, 0], "rotation": 90, "texture": "#0"},
"down": {"uv": [10, 0, 0, 4], "rotation": 270, "texture": "#0"}
}
}
]
}

View file

@ -1,6 +0,0 @@
{
"parent": "block/cube_all",
"textures": {
"all": "fsn:block/crafting_terminal"
}
}

View file

@ -1,6 +0,0 @@
{
"parent": "block/cube_all",
"textures": {
"all": "fsn:block/master"
}
}

View file

@ -1,6 +0,0 @@
{
"parent": "block/cube_all",
"textures": {
"all": "fsn:block/processing_terminal"
}
}

View file

@ -1,66 +0,0 @@
{
"textures": {
"0": "fsn:block/cable",
"particle": "fsn:block/cable"
},
"elements": [
{
"from": [6, 6, 0],
"to": [10, 10, 10],
"rotation": {"angle": 0, "axis": "y", "origin": [14, 14, 8]},
"faces": {
"north": {"uv": [10, 0, 14, 4], "texture": "#0"},
"east": {"uv": [0, 0, 10, 4], "texture": "#0"},
"south": {"uv": [10, 0, 14, 4], "texture": "#0"},
"west": {"uv": [0, 0, 10, 4], "texture": "#0"},
"up": {"uv": [0, 0, 10, 4], "rotation": 90, "texture": "#0"},
"down": {"uv": [0, 0, 10, 4], "rotation": 90, "texture": "#0"}
}
},
{
"from": [6, 6, 6],
"to": [10, 10, 16],
"rotation": {"angle": 0, "axis": "y", "origin": [14, 14, 8]},
"faces": {
"north": {"uv": [10, 0, 14, 4], "texture": "#0"},
"east": {"uv": [0, 0, 10, 4], "texture": "#0"},
"south": {"uv": [10, 0, 14, 4], "texture": "#0"},
"west": {"uv": [0, 0, 10, 4], "texture": "#0"},
"up": {"uv": [0, 0, 10, 4], "rotation": 90, "texture": "#0"},
"down": {"uv": [0, 0, 10, 4], "rotation": 90, "texture": "#0"}
}
}
],
"display": {
"thirdperson_righthand": {
"rotation": [90, 0, 0],
"translation": [0, 1.75, 0],
"scale": [0.5, 0.5, 0.5]
},
"thirdperson_lefthand": {
"rotation": [90, 0, 0],
"translation": [0, 1.75, 0],
"scale": [0.5, 0.5, 0.5]
},
"firstperson_righthand": {
"rotation": [45, 0, 0],
"translation": [0, 0.25, 2.25],
"scale": [0.5, 0.5, 0.5]
},
"firstperson_lefthand": {
"rotation": [45, 0, 0],
"translation": [0, 0.25, 2.25],
"scale": [0.5, 0.5, 0.5]
},
"ground": {
"translation": [0, -2, 0],
"scale": [0.5, 0.5, 0.5]
},
"gui": {
"rotation": [30, -45, 0]
},
"fixed": {
"rotation": [0, 90, 0]
}
}
}

View file

@ -1,3 +0,0 @@
{
"parent": "fsn:block/crafting_terminal"
}

View file

@ -1,79 +0,0 @@
{
"textures": {
"0": "fsn:block/cable",
"particle": "fsn:block/cable"
},
"elements": [
{
"from": [6, 6, 0],
"to": [10, 10, 10],
"rotation": {"angle": 0, "axis": "y", "origin": [14, 14, 8]},
"faces": {
"north": {"uv": [10, 0, 14, 4], "texture": "#0"},
"east": {"uv": [0, 0, 10, 4], "texture": "#0"},
"south": {"uv": [10, 0, 14, 4], "texture": "#0"},
"west": {"uv": [0, 0, 10, 4], "texture": "#0"},
"up": {"uv": [0, 0, 10, 4], "rotation": 90, "texture": "#0"},
"down": {"uv": [0, 0, 10, 4], "rotation": 90, "texture": "#0"}
}
},
{
"from": [6, 6, 6],
"to": [10, 10, 16],
"rotation": {"angle": 0, "axis": "y", "origin": [14, 14, 8]},
"faces": {
"north": {"uv": [10, 0, 14, 4], "texture": "#0"},
"east": {"uv": [0, 0, 10, 4], "texture": "#0"},
"south": {"uv": [10, 0, 14, 4], "texture": "#0"},
"west": {"uv": [0, 0, 10, 4], "texture": "#0"},
"up": {"uv": [0, 0, 10, 4], "rotation": 90, "texture": "#0"},
"down": {"uv": [0, 0, 10, 4], "rotation": 90, "texture": "#0"}
}
},
{
"from": [5, 5, 5],
"to": [11, 11, 11],
"rotation": {"angle": 0, "axis": "y", "origin": [13, 13, 13]},
"faces": {
"north": {"uv": [0, 10, 6, 16], "texture": "#0"},
"east": {"uv": [0, 10, 6, 16], "texture": "#0"},
"south": {"uv": [0, 10, 6, 16], "texture": "#0"},
"west": {"uv": [0, 10, 6, 16], "texture": "#0"},
"up": {"uv": [0, 10, 6, 16], "texture": "#0"},
"down": {"uv": [0, 10, 6, 16], "texture": "#0"}
}
}
],
"display": {
"thirdperson_righthand": {
"rotation": [90, 0, 0],
"translation": [0, 1.75, 0],
"scale": [0.5, 0.5, 0.5]
},
"thirdperson_lefthand": {
"rotation": [90, 0, 0],
"translation": [0, 1.75, 0],
"scale": [0.5, 0.5, 0.5]
},
"firstperson_righthand": {
"rotation": [45, 0, 0],
"translation": [0, 0.25, 2.25],
"scale": [0.5, 0.5, 0.5]
},
"firstperson_lefthand": {
"rotation": [45, 0, 0],
"translation": [0, 0.25, 2.25],
"scale": [0.5, 0.5, 0.5]
},
"ground": {
"translation": [0, -2, 0],
"scale": [0.5, 0.5, 0.5]
},
"gui": {
"rotation": [30, -45, 0]
},
"fixed": {
"rotation": [0, 90, 0]
}
}
}

View file

@ -1,79 +0,0 @@
{
"textures": {
"0": "fsn:block/cable",
"particle": "fsn:block/cable"
},
"elements": [
{
"from": [6, 6, 0],
"to": [10, 10, 10],
"rotation": {"angle": 0, "axis": "y", "origin": [14, 14, 8]},
"faces": {
"north": {"uv": [10, 0, 14, 4], "texture": "#0"},
"east": {"uv": [0, 0, 10, 4], "texture": "#0"},
"south": {"uv": [10, 0, 14, 4], "texture": "#0"},
"west": {"uv": [0, 0, 10, 4], "texture": "#0"},
"up": {"uv": [0, 0, 10, 4], "rotation": 90, "texture": "#0"},
"down": {"uv": [0, 0, 10, 4], "rotation": 90, "texture": "#0"}
}
},
{
"from": [6, 6, 6],
"to": [10, 10, 16],
"rotation": {"angle": 0, "axis": "y", "origin": [14, 14, 8]},
"faces": {
"north": {"uv": [10, 0, 14, 4], "texture": "#0"},
"east": {"uv": [0, 0, 10, 4], "texture": "#0"},
"south": {"uv": [10, 0, 14, 4], "texture": "#0"},
"west": {"uv": [0, 0, 10, 4], "texture": "#0"},
"up": {"uv": [0, 0, 10, 4], "rotation": 90, "texture": "#0"},
"down": {"uv": [0, 0, 10, 4], "rotation": 90, "texture": "#0"}
}
},
{
"from": [5, 5, 5],
"to": [11, 11, 11],
"rotation": {"angle": 0, "axis": "y", "origin": [13, 13, 13]},
"faces": {
"north": {"uv": [6, 4, 12, 10], "texture": "#0"},
"east": {"uv": [6, 4, 12, 10], "texture": "#0"},
"south": {"uv": [6, 4, 12, 10], "texture": "#0"},
"west": {"uv": [6, 4, 12, 10], "texture": "#0"},
"up": {"uv": [6, 4, 12, 10], "texture": "#0"},
"down": {"uv": [6, 4, 12, 10], "texture": "#0"}
}
}
],
"display": {
"thirdperson_righthand": {
"rotation": [90, 0, 0],
"translation": [0, 1.75, 0],
"scale": [0.5, 0.5, 0.5]
},
"thirdperson_lefthand": {
"rotation": [90, 0, 0],
"translation": [0, 1.75, 0],
"scale": [0.5, 0.5, 0.5]
},
"firstperson_righthand": {
"rotation": [45, 0, 0],
"translation": [0, 0.25, 2.25],
"scale": [0.5, 0.5, 0.5]
},
"firstperson_lefthand": {
"rotation": [45, 0, 0],
"translation": [0, 0.25, 2.25],
"scale": [0.5, 0.5, 0.5]
},
"ground": {
"translation": [0, -2, 0],
"scale": [0.5, 0.5, 0.5]
},
"gui": {
"rotation": [30, -45, 0]
},
"fixed": {
"rotation": [0, 90, 0]
}
}
}

View file

@ -1,3 +0,0 @@
{
"parent": "fsn:block/master"
}

View file

@ -1,79 +0,0 @@
{
"textures": {
"0": "fsn:block/cable",
"particle": "fsn:block/cable"
},
"elements": [
{
"from": [6, 6, 0],
"to": [10, 10, 10],
"rotation": {"angle": 0, "axis": "y", "origin": [14, 14, 8]},
"faces": {
"north": {"uv": [10, 0, 14, 4], "texture": "#0"},
"east": {"uv": [0, 0, 10, 4], "texture": "#0"},
"south": {"uv": [10, 0, 14, 4], "texture": "#0"},
"west": {"uv": [0, 0, 10, 4], "texture": "#0"},
"up": {"uv": [0, 0, 10, 4], "rotation": 90, "texture": "#0"},
"down": {"uv": [0, 0, 10, 4], "rotation": 90, "texture": "#0"}
}
},
{
"from": [6, 6, 6],
"to": [10, 10, 16],
"rotation": {"angle": 0, "axis": "y", "origin": [14, 14, 8]},
"faces": {
"north": {"uv": [10, 0, 14, 4], "texture": "#0"},
"east": {"uv": [0, 0, 10, 4], "texture": "#0"},
"south": {"uv": [10, 0, 14, 4], "texture": "#0"},
"west": {"uv": [0, 0, 10, 4], "texture": "#0"},
"up": {"uv": [0, 0, 10, 4], "rotation": 90, "texture": "#0"},
"down": {"uv": [0, 0, 10, 4], "rotation": 90, "texture": "#0"}
}
},
{
"from": [5, 5, 5],
"to": [11, 11, 11],
"rotation": {"angle": 0, "axis": "y", "origin": [13, 13, 13]},
"faces": {
"north": {"uv": [6, 10, 12, 16], "texture": "#0"},
"east": {"uv": [6, 10, 12, 16], "texture": "#0"},
"south": {"uv": [6, 10, 12, 16], "texture": "#0"},
"west": {"uv": [6, 10, 12, 16], "texture": "#0"},
"up": {"uv": [6, 10, 12, 16], "texture": "#0"},
"down": {"uv": [6, 10, 12, 16], "texture": "#0"}
}
}
],
"display": {
"thirdperson_righthand": {
"rotation": [90, 0, 0],
"translation": [0, 1.75, 0],
"scale": [0.5, 0.5, 0.5]
},
"thirdperson_lefthand": {
"rotation": [90, 0, 0],
"translation": [0, 1.75, 0],
"scale": [0.5, 0.5, 0.5]
},
"firstperson_righthand": {
"rotation": [45, 0, 0],
"translation": [0, 0.25, 2.25],
"scale": [0.5, 0.5, 0.5]
},
"firstperson_lefthand": {
"rotation": [45, 0, 0],
"translation": [0, 0.25, 2.25],
"scale": [0.5, 0.5, 0.5]
},
"ground": {
"translation": [0, -2, 0],
"scale": [0.5, 0.5, 0.5]
},
"gui": {
"rotation": [30, -45, 0]
},
"fixed": {
"rotation": [0, 90, 0]
}
}
}

View file

@ -1,3 +0,0 @@
{
"parent": "fsn:block/processing_terminal"
}

View file

@ -1,79 +0,0 @@
{
"textures": {
"0": "fsn:block/cable",
"particle": "fsn:block/cable"
},
"elements": [
{
"from": [6, 6, 0],
"to": [10, 10, 10],
"rotation": {"angle": 0, "axis": "y", "origin": [14, 14, 8]},
"faces": {
"north": {"uv": [10, 0, 14, 4], "texture": "#0"},
"east": {"uv": [0, 0, 10, 4], "texture": "#0"},
"south": {"uv": [10, 0, 14, 4], "texture": "#0"},
"west": {"uv": [0, 0, 10, 4], "texture": "#0"},
"up": {"uv": [0, 0, 10, 4], "rotation": 90, "texture": "#0"},
"down": {"uv": [0, 0, 10, 4], "rotation": 90, "texture": "#0"}
}
},
{
"from": [6, 6, 6],
"to": [10, 10, 16],
"rotation": {"angle": 0, "axis": "y", "origin": [14, 14, 8]},
"faces": {
"north": {"uv": [10, 0, 14, 4], "texture": "#0"},
"east": {"uv": [0, 0, 10, 4], "texture": "#0"},
"south": {"uv": [10, 0, 14, 4], "texture": "#0"},
"west": {"uv": [0, 0, 10, 4], "texture": "#0"},
"up": {"uv": [0, 0, 10, 4], "rotation": 90, "texture": "#0"},
"down": {"uv": [0, 0, 10, 4], "rotation": 90, "texture": "#0"}
}
},
{
"from": [5, 5, 5],
"to": [11, 11, 11],
"rotation": {"angle": 0, "axis": "y", "origin": [13, 13, 13]},
"faces": {
"north": {"uv": [0, 4, 6, 10], "texture": "#0"},
"east": {"uv": [0, 4, 6, 10], "texture": "#0"},
"south": {"uv": [0, 4, 6, 10], "texture": "#0"},
"west": {"uv": [0, 4, 6, 10], "texture": "#0"},
"up": {"uv": [0, 4, 6, 10], "texture": "#0"},
"down": {"uv": [0, 4, 6, 10], "texture": "#0"}
}
}
],
"display": {
"thirdperson_righthand": {
"rotation": [90, 0, 0],
"translation": [0, 1.75, 0],
"scale": [0.5, 0.5, 0.5]
},
"thirdperson_lefthand": {
"rotation": [90, 0, 0],
"translation": [0, 1.75, 0],
"scale": [0.5, 0.5, 0.5]
},
"firstperson_righthand": {
"rotation": [45, 0, 0],
"translation": [0, 0.25, 2.25],
"scale": [0.5, 0.5, 0.5]
},
"firstperson_lefthand": {
"rotation": [45, 0, 0],
"translation": [0, 0.25, 2.25],
"scale": [0.5, 0.5, 0.5]
},
"ground": {
"translation": [0, -2, 0],
"scale": [0.5, 0.5, 0.5]
},
"gui": {
"rotation": [30, -45, 0]
},
"fixed": {
"rotation": [0, 90, 0]
}
}
}

Binary file not shown.

Before

Width:  |  Height:  |  Size: 277 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 198 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 224 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 229 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 99 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 180 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 211 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 207 B

View file

Before

Width:  |  Height:  |  Size: 196 B

After

Width:  |  Height:  |  Size: 196 B

Before After
Before After

View file

@ -1,19 +0,0 @@
{
"type": "minecraft:block",
"pools": [
{
"rolls": 1,
"entries": [
{
"type": "minecraft:item",
"name": "fsn:cable"
}
],
"conditions": [
{
"condition": "minecraft:survives_explosion"
}
]
}
]
}

View file

@ -1,19 +0,0 @@
{
"type": "minecraft:block",
"pools": [
{
"rolls": 1,
"entries": [
{
"type": "minecraft:item",
"name": "fsn:crafting_terminal"
}
],
"conditions": [
{
"condition": "minecraft:survives_explosion"
}
]
}
]
}

View file

@ -1,19 +0,0 @@
{
"type": "minecraft:block",
"pools": [
{
"rolls": 1,
"entries": [
{
"type": "minecraft:item",
"name": "fsn:export_cable"
}
],
"conditions": [
{
"condition": "minecraft:survives_explosion"
}
]
}
]
}

View file

@ -1,19 +0,0 @@
{
"type": "minecraft:block",
"pools": [
{
"rolls": 1,
"entries": [
{
"type": "minecraft:item",
"name": "fsn:import_cable"
}
],
"conditions": [
{
"condition": "minecraft:survives_explosion"
}
]
}
]
}

View file

@ -1,19 +0,0 @@
{
"type": "minecraft:block",
"pools": [
{
"rolls": 1,
"entries": [
{
"type": "minecraft:item",
"name": "fsn:master"
}
],
"conditions": [
{
"condition": "minecraft:survives_explosion"
}
]
}
]
}

View file

@ -1,19 +0,0 @@
{
"type": "minecraft:block",
"pools": [
{
"rolls": 1,
"entries": [
{
"type": "minecraft:item",
"name": "fsn:processing_cable"
}
],
"conditions": [
{
"condition": "minecraft:survives_explosion"
}
]
}
]
}

View file

@ -1,19 +0,0 @@
{
"type": "minecraft:block",
"pools": [
{
"rolls": 1,
"entries": [
{
"type": "minecraft:item",
"name": "fsn:processing_terminal"
}
],
"conditions": [
{
"condition": "minecraft:survives_explosion"
}
]
}
]
}

View file

@ -1,19 +0,0 @@
{
"type": "minecraft:block",
"pools": [
{
"rolls": 1,
"entries": [
{
"type": "minecraft:item",
"name": "fsn:storage_cable"
}
],
"conditions": [
{
"condition": "minecraft:survives_explosion"
}
]
}
]
}

View file

@ -1,38 +1,36 @@
{ {
"schemaVersion": 1, "schemaVersion": 1,
"id": "fsn", "id": "storagenetworks",
"version": "${version}", "version": "${version}",
"name": "Fabric Storage Networks", "name": "Fabric Storage Networks",
"description": "Storage Networks for Fabric, 100% original idea.", "description": "Clone of Storage Networks for Fabric Loader",
"authors": [ "authors": [
"deirn" "deirn"
], ],
"contributors": [],
"contact": { "contact": {
"sources": "https://github.com/badasintended/fsn" "homepage": "https://gitlab.com/intended/fabric/fsn",
"sources": "https://gitlab.com/intended/fabric/fsn"
}, },
"license": "MIT", "license": "MIT",
"icon": "assets/fsn/icon.png", "icon": "assets/storagenetworks/icon.png",
"environment": "*", "environment": "*",
"entrypoints": { "entrypoints": {
"main": [ "main": [
"bai.deirn.fsn.FSN" "io.gitlab.intended.storagenetworks.StorageNetworks"
],
"client": [
"io.gitlab.intended.storagenetworks.client.StorageNetworksClient"
], ],
"modmenu": [ "modmenu": [
"bai.deirn.fsn.config.ModMenuIntegration" "io.gitlab.intended.storagenetworks.client.modmenu.ModMenuIntegration"
] ]
}, },
"mixins": [ "mixins": [
"storagenetworks.mixins.json"
], ],
"depends": { "depends": {
"fabricloader": ">=0.7.4", "fabricloader": ">=0.4.0",
"fabric": "*", "fabric": "*"
"minecraft": "1.15.x"
},
"suggests": {
"flamingo": "*"
} }
} }

View file

@ -1,14 +0,0 @@
{
"required": true,
"minVersion": "0.8",
"package": "bai.deirn.fsn.mixin",
"compatibilityLevel": "JAVA_8",
"mixins": [
],
"client": [
"MixinInventory"
],
"injectors": {
"defaultRequire": 1
}
}

View file

@ -0,0 +1,11 @@
{
"required": true,
"package": "io.gitlab.intended.storagenetworks.mixin",
"compatibilityLevel": "JAVA_8",
"mixins": [],
"client": [],
"server": [],
"injectors": {
"defaultRequire": 1
}
}