Compare commits

..

No commits in common. "master" and "1.20.3-pre2" have entirely different histories.

156 changed files with 372 additions and 1986 deletions

View File

@ -1,18 +1,15 @@
plugins { plugins {
id 'fabric-loom' version '1.5.7' id 'fabric-loom' version '0.11-SNAPSHOT'
id 'maven-publish' id 'maven-publish'
} }
sourceCompatibility = JavaVersion.VERSION_17 sourceCompatibility = JavaVersion.VERSION_17
targetCompatibility = JavaVersion.VERSION_17 targetCompatibility = JavaVersion.VERSION_17
archivesBaseName = project.archives_base_name
version = project.mod_version version = project.mod_version
group = project.maven_group group = project.maven_group
base {
archivesName = project.archives_base_name
}
repositories { repositories {
// Add repositories to retrieve artifacts from in here. // Add repositories to retrieve artifacts from in here.
// You should only use this when depending on other mods because // You should only use this when depending on other mods because
@ -32,6 +29,18 @@ dependencies {
// PSA: Some older mods, compiled on Loom 0.2.1, might have outdated Maven POMs. // PSA: Some older mods, compiled on Loom 0.2.1, might have outdated Maven POMs.
// You may need to force-disable transitiveness on them. // You may need to force-disable transitiveness on them.
// for special leaves blocks like ExtendedLeavesBlock
modImplementation "com.terraformersmc.terraform-api:terraform-wood-api-v1:${project.terraform_wood_api_version}"
repositories {
maven {
name = 'TerraformersMC'
url = 'https://maven.terraformersmc.com/'
}
maven {
url = 'https://maven.minecraftforge.net/'
}
}
} }
processResources { processResources {
@ -54,14 +63,11 @@ java {
// if it is present. // if it is present.
// If you remove this line, sources will not be generated. // If you remove this line, sources will not be generated.
withSourcesJar() withSourcesJar()
sourceCompatibility = JavaVersion.VERSION_17
targetCompatibility = JavaVersion.VERSION_17
} }
jar { jar {
from("LICENSE") { from("LICENSE") {
rename { "${it}_${project.base.archivesName.get()}"} rename { "${it}_${project.archivesBaseName}"}
} }
} }

View File

@ -3,15 +3,18 @@
org.gradle.parallel=true org.gradle.parallel=true
# Fabric Properties # Fabric Properties
# check these on https://fabricmc.net/develop # check these on https://fabricmc.net/versions.html
minecraft_version=1.20.4 minecraft_version=1.20.3-pre2
yarn_mappings=1.20.4+build.3 yarn_mappings=1.20.3-pre2+build.2
loader_version=0.15.7 loader_version=0.14.24
# Mod Properties # Mod Properties
mod_version = 1.20.4.10 mod_version = 1.20.3.1
maven_group = de.jottyfan.minecraft maven_group = de.jottyfan.minecraft
archives_base_name = quickiefabric archives_base_name = quickiefabric
# Dependencies # Dependencies
fabric_version=0.96.3+1.20.4 fabric_version=0.90.12+1.20.3
# for ExtendedLeavesBlock
terraform_wood_api_version=9.0.0-alpha.3

Binary file not shown.

View File

@ -1,7 +1,5 @@
distributionBase=GRADLE_USER_HOME distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists distributionPath=wrapper/dists
distributionUrl=https\://services.gradle.org/distributions/gradle-8.3-bin.zip distributionUrl=https\://services.gradle.org/distributions/gradle-7.3-all.zip
networkTimeout=10000
validateDistributionUrl=true
zipStoreBase=GRADLE_USER_HOME zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists zipStorePath=wrapper/dists

281
gradlew vendored
View File

@ -1,7 +1,7 @@
#!/bin/sh #!/usr/bin/env sh
# #
# Copyright © 2015-2021 the original authors. # Copyright 2015 the original author or authors.
# #
# Licensed under the Apache License, Version 2.0 (the "License"); # Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License. # you may not use this file except in compliance with the License.
@ -17,98 +17,67 @@
# #
############################################################################## ##############################################################################
# ##
# Gradle start up script for POSIX generated by Gradle. ## Gradle start up script for UN*X
# ##
# Important for running:
#
# (1) You need a POSIX-compliant shell to run this script. If your /bin/sh is
# noncompliant, but you have some other compliant shell such as ksh or
# bash, then to run this script, type that shell name before the whole
# command line, like:
#
# ksh Gradle
#
# Busybox and similar reduced shells will NOT work, because this script
# requires all of these POSIX shell features:
# * functions;
# * expansions «$var», «${var}», «${var:-default}», «${var+SET}»,
# «${var#prefix}», «${var%suffix}», and «$( cmd )»;
# * compound commands having a testable exit status, especially «case»;
# * various built-in commands including «command», «set», and «ulimit».
#
# Important for patching:
#
# (2) This script targets any POSIX shell, so it avoids extensions provided
# by Bash, Ksh, etc; in particular arrays are avoided.
#
# The "traditional" practice of packing multiple parameters into a
# space-separated string is a well documented source of bugs and security
# problems, so this is (mostly) avoided, by progressively accumulating
# options in "$@", and eventually passing that to Java.
#
# Where the inherited environment variables (DEFAULT_JVM_OPTS, JAVA_OPTS,
# and GRADLE_OPTS) rely on word-splitting, this is performed explicitly;
# see the in-line comments for details.
#
# There are tweaks for specific operating systems such as AIX, CygWin,
# Darwin, MinGW, and NonStop.
#
# (3) This script is generated from the Groovy template
# https://github.com/gradle/gradle/blob/HEAD/subprojects/plugins/src/main/resources/org/gradle/api/internal/plugins/unixStartScript.txt
# within the Gradle project.
#
# You can find Gradle at https://github.com/gradle/gradle/.
#
############################################################################## ##############################################################################
# Attempt to set APP_HOME # Attempt to set APP_HOME
# Resolve links: $0 may be a link # Resolve links: $0 may be a link
app_path=$0 PRG="$0"
# Need this for relative symlinks.
# Need this for daisy-chained symlinks. while [ -h "$PRG" ] ; do
while ls=`ls -ld "$PRG"`
APP_HOME=${app_path%"${app_path##*/}"} # leaves a trailing /; empty if no leading path link=`expr "$ls" : '.*-> \(.*\)$'`
[ -h "$app_path" ] if expr "$link" : '/.*' > /dev/null; then
do PRG="$link"
ls=$( ls -ld "$app_path" ) else
link=${ls#*' -> '} PRG=`dirname "$PRG"`"/$link"
case $link in #( fi
/*) app_path=$link ;; #(
*) app_path=$APP_HOME$link ;;
esac
done done
SAVED="`pwd`"
cd "`dirname \"$PRG\"`/" >/dev/null
APP_HOME="`pwd -P`"
cd "$SAVED" >/dev/null
# This is normally unused APP_NAME="Gradle"
# shellcheck disable=SC2034 APP_BASE_NAME=`basename "$0"`
APP_BASE_NAME=${0##*/}
APP_HOME=$( cd "${APP_HOME:-./}" && pwd -P ) || exit # Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
DEFAULT_JVM_OPTS='"-Xmx64m" "-Xms64m"'
# Use the maximum available, or set MAX_FD != -1 to use that value. # Use the maximum available, or set MAX_FD != -1 to use that value.
MAX_FD=maximum MAX_FD="maximum"
warn () { warn () {
echo "$*" echo "$*"
} >&2 }
die () { die () {
echo echo
echo "$*" echo "$*"
echo echo
exit 1 exit 1
} >&2 }
# OS specific support (must be 'true' or 'false'). # OS specific support (must be 'true' or 'false').
cygwin=false cygwin=false
msys=false msys=false
darwin=false darwin=false
nonstop=false nonstop=false
case "$( uname )" in #( case "`uname`" in
CYGWIN* ) cygwin=true ;; #( CYGWIN* )
Darwin* ) darwin=true ;; #( cygwin=true
MSYS* | MINGW* ) msys=true ;; #( ;;
NONSTOP* ) nonstop=true ;; Darwin* )
darwin=true
;;
MSYS* | MINGW* )
msys=true
;;
NONSTOP* )
nonstop=true
;;
esac esac
CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar
@ -118,9 +87,9 @@ CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar
if [ -n "$JAVA_HOME" ] ; then if [ -n "$JAVA_HOME" ] ; then
if [ -x "$JAVA_HOME/jre/sh/java" ] ; then if [ -x "$JAVA_HOME/jre/sh/java" ] ; then
# IBM's JDK on AIX uses strange locations for the executables # IBM's JDK on AIX uses strange locations for the executables
JAVACMD=$JAVA_HOME/jre/sh/java JAVACMD="$JAVA_HOME/jre/sh/java"
else else
JAVACMD=$JAVA_HOME/bin/java JAVACMD="$JAVA_HOME/bin/java"
fi fi
if [ ! -x "$JAVACMD" ] ; then if [ ! -x "$JAVACMD" ] ; then
die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME
@ -129,120 +98,88 @@ Please set the JAVA_HOME variable in your environment to match the
location of your Java installation." location of your Java installation."
fi fi
else else
JAVACMD=java JAVACMD="java"
if ! command -v java >/dev/null 2>&1 which java >/dev/null 2>&1 || die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.
then
die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.
Please set the JAVA_HOME variable in your environment to match the Please set the JAVA_HOME variable in your environment to match the
location of your Java installation." location of your Java installation."
fi fi
fi
# Increase the maximum file descriptors if we can. # Increase the maximum file descriptors if we can.
if ! "$cygwin" && ! "$darwin" && ! "$nonstop" ; then if [ "$cygwin" = "false" -a "$darwin" = "false" -a "$nonstop" = "false" ] ; then
case $MAX_FD in #( MAX_FD_LIMIT=`ulimit -H -n`
max*) if [ $? -eq 0 ] ; then
# In POSIX sh, ulimit -H is undefined. That's why the result is checked to see if it worked. if [ "$MAX_FD" = "maximum" -o "$MAX_FD" = "max" ] ; then
# shellcheck disable=SC3045 MAX_FD="$MAX_FD_LIMIT"
MAX_FD=$( ulimit -H -n ) || fi
warn "Could not query maximum file descriptor limit" ulimit -n $MAX_FD
esac if [ $? -ne 0 ] ; then
case $MAX_FD in #( warn "Could not set maximum file descriptor limit: $MAX_FD"
'' | soft) :;; #( fi
*) else
# In POSIX sh, ulimit -n is undefined. That's why the result is checked to see if it worked. warn "Could not query maximum file descriptor limit: $MAX_FD_LIMIT"
# shellcheck disable=SC3045 fi
ulimit -n "$MAX_FD" ||
warn "Could not set maximum file descriptor limit to $MAX_FD"
esac
fi fi
# Collect all arguments for the java command, stacking in reverse order: # For Darwin, add options to specify how the application appears in the dock
# * args from the command line if $darwin; then
# * the main class name GRADLE_OPTS="$GRADLE_OPTS \"-Xdock:name=$APP_NAME\" \"-Xdock:icon=$APP_HOME/media/gradle.icns\""
# * -classpath fi
# * -D...appname settings
# * --module-path (only if needed)
# * DEFAULT_JVM_OPTS, JAVA_OPTS, and GRADLE_OPTS environment variables.
# For Cygwin or MSYS, switch paths to Windows format before running java # For Cygwin or MSYS, switch paths to Windows format before running java
if "$cygwin" || "$msys" ; then if [ "$cygwin" = "true" -o "$msys" = "true" ] ; 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"`
# Now convert the arguments - kludge to limit ourselves to /bin/sh # We build the pattern for arguments to be converted via cygpath
for arg do ROOTDIRSRAW=`find -L / -maxdepth 1 -mindepth 1 -type d 2>/dev/null`
if SEP=""
case $arg in #( for dir in $ROOTDIRSRAW ; do
-*) false ;; # don't mess with options #( ROOTDIRS="$ROOTDIRS$SEP$dir"
/?*) t=${arg#/} t=/${t%%/*} # looks like a POSIX filepath SEP="|"
[ -e "$t" ] ;; #(
*) false ;;
esac
then
arg=$( cygpath --path --ignore --mixed "$arg" )
fi
# Roll the args list around exactly as many times as the number of
# args, so each arg winds up back in the position where it started, but
# possibly modified.
#
# NB: a `for` loop captures its iteration list before it begins, so
# changing the positional parameters here affects neither the number of
# iterations, nor the values presented in `arg`.
shift # remove old arg
set -- "$@" "$arg" # push replacement arg
done done
OURCYGPATTERN="(^($ROOTDIRS))"
# Add a user-defined pattern to the cygpath arguments
if [ "$GRADLE_CYGPATTERN" != "" ] ; then
OURCYGPATTERN="$OURCYGPATTERN|($GRADLE_CYGPATTERN)"
fi
# Now convert the arguments - kludge to limit ourselves to /bin/sh
i=0
for arg in "$@" ; do
CHECK=`echo "$arg"|egrep -c "$OURCYGPATTERN" -`
CHECK2=`echo "$arg"|egrep -c "^-"` ### Determine if an option
if [ $CHECK -ne 0 ] && [ $CHECK2 -eq 0 ] ; then ### Added a condition
eval `echo args$i`=`cygpath --path --ignore --mixed "$arg"`
else
eval `echo args$i`="\"$arg\""
fi
i=`expr $i + 1`
done
case $i in
0) set -- ;;
1) set -- "$args0" ;;
2) set -- "$args0" "$args1" ;;
3) set -- "$args0" "$args1" "$args2" ;;
4) set -- "$args0" "$args1" "$args2" "$args3" ;;
5) set -- "$args0" "$args1" "$args2" "$args3" "$args4" ;;
6) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" ;;
7) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" ;;
8) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" ;;
9) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" "$args8" ;;
esac
fi fi
# Escape application args
save () {
for i do printf %s\\n "$i" | sed "s/'/'\\\\''/g;1s/^/'/;\$s/\$/' \\\\/" ; done
echo " "
}
APP_ARGS=`save "$@"`
# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. # Collect all arguments for the java command, following the shell quoting and substitution rules
DEFAULT_JVM_OPTS='"-Xmx64m" "-Xms64m"' eval set -- $DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS "\"-Dorg.gradle.appname=$APP_BASE_NAME\"" -classpath "\"$CLASSPATH\"" org.gradle.wrapper.GradleWrapperMain "$APP_ARGS"
# Collect all arguments for the java command;
# * $DEFAULT_JVM_OPTS, $JAVA_OPTS, and $GRADLE_OPTS can contain fragments of
# shell script including quotes and variable substitutions, so put them in
# double quotes to make sure that they get re-expanded; and
# * put everything else in single quotes, so that it's not re-expanded.
set -- \
"-Dorg.gradle.appname=$APP_BASE_NAME" \
-classpath "$CLASSPATH" \
org.gradle.wrapper.GradleWrapperMain \
"$@"
# Stop when "xargs" is not available.
if ! command -v xargs >/dev/null 2>&1
then
die "xargs is not available"
fi
# Use "xargs" to parse quoted args.
#
# With -n1 it outputs one arg per line, with the quotes and backslashes removed.
#
# In Bash we could simply go:
#
# readarray ARGS < <( xargs -n1 <<<"$var" ) &&
# set -- "${ARGS[@]}" "$@"
#
# but POSIX shell has neither arrays nor command substitution, so instead we
# post-process each arg (as a line of input to sed) to backslash-escape any
# character that might be a shell metacharacter, then use eval to reverse
# that process (while maintaining the separation between arguments), and wrap
# the whole thing up as a single "set" statement.
#
# This will of course break if any of these variables contains a newline or
# an unmatched quote.
#
eval "set -- $(
printf '%s\n' "$DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS" |
xargs -n1 |
sed ' s~[^-[:alnum:]+,./:=@_]~\\&~g; ' |
tr '\n' ' '
)" '"$@"'
exec "$JAVACMD" "$@" exec "$JAVACMD" "$@"

11
gradlew.bat vendored
View File

@ -26,7 +26,6 @@ if "%OS%"=="Windows_NT" setlocal
set DIRNAME=%~dp0 set DIRNAME=%~dp0
if "%DIRNAME%" == "" set DIRNAME=. if "%DIRNAME%" == "" set DIRNAME=.
@rem This is normally unused
set APP_BASE_NAME=%~n0 set APP_BASE_NAME=%~n0
set APP_HOME=%DIRNAME% set APP_HOME=%DIRNAME%
@ -41,7 +40,7 @@ if defined JAVA_HOME goto findJavaFromJavaHome
set JAVA_EXE=java.exe set JAVA_EXE=java.exe
%JAVA_EXE% -version >NUL 2>&1 %JAVA_EXE% -version >NUL 2>&1
if %ERRORLEVEL% equ 0 goto execute if "%ERRORLEVEL%" == "0" goto execute
echo. echo.
echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.
@ -76,15 +75,13 @@ set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar
:end :end
@rem End local scope for the variables with windows NT shell @rem End local scope for the variables with windows NT shell
if %ERRORLEVEL% equ 0 goto mainEnd if "%ERRORLEVEL%"=="0" goto mainEnd
:fail :fail
rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of
rem the _cmd.exe /c_ return code! rem the _cmd.exe /c_ return code!
set EXIT_CODE=%ERRORLEVEL% if not "" == "%GRADLE_EXIT_CONSOLE%" exit 1
if %EXIT_CODE% equ 0 set EXIT_CODE=1 exit /b 1
if not ""=="%GRADLE_EXIT_CONSOLE%" exit %EXIT_CODE%
exit /b %EXIT_CODE%
:mainEnd :mainEnd
if "%OS%"=="Windows_NT" endlocal if "%OS%"=="Windows_NT" endlocal

View File

@ -22,9 +22,7 @@ public class QuickieFabricClient implements ClientModInitializer {
public void onInitializeClient() { public void onInitializeClient() {
HandledScreens.register(RegistryManager.BACKPACK_SCREEN_HANDLER, BackpackScreen::new); HandledScreens.register(RegistryManager.BACKPACK_SCREEN_HANDLER, BackpackScreen::new);
HandledScreens.register(RegistryManager.BLOCKSTACKER_SCREEN_HANDLER, BlockStackerScreen::new); HandledScreens.register(RegistryManager.BLOCKSTACKER_SCREEN_HANDLER, BlockStackerScreen::new);
// make plant blocks and sulforpad transparent // make cotton plant block transparent
BlockRenderLayerMap.INSTANCE.putBlock(QuickieBlocks.COTTONPLANT, RenderLayer.getCutout()); BlockRenderLayerMap.INSTANCE.putBlock(QuickieBlocks.COTTONPLANT, RenderLayer.getCutout());
BlockRenderLayerMap.INSTANCE.putBlock(QuickieBlocks.CANOLAPLANT, RenderLayer.getCutout());
BlockRenderLayerMap.INSTANCE.putBlock(QuickieBlocks.SULFORPAD, RenderLayer.getCutout());
} }
} }

View File

@ -2,7 +2,6 @@ package de.jottyfan.minecraft.quickiefabric.blockentity;
import java.util.List; import java.util.List;
import de.jottyfan.minecraft.quickiefabric.blocks.DrillBlock;
import de.jottyfan.minecraft.quickiefabric.blocks.QuickieBlocks; import de.jottyfan.minecraft.quickiefabric.blocks.QuickieBlocks;
import net.minecraft.block.BlockState; import net.minecraft.block.BlockState;
import net.minecraft.block.Blocks; import net.minecraft.block.Blocks;
@ -12,6 +11,7 @@ import net.minecraft.util.math.BlockPos;
import net.minecraft.world.World; import net.minecraft.world.World;
public abstract class DrillBlockEntity extends BlockEntity { public abstract class DrillBlockEntity extends BlockEntity {
private Integer drillstep; private Integer drillstep;
private final Integer maxDrillStep; private final Integer maxDrillStep;
@ -25,8 +25,7 @@ public abstract class DrillBlockEntity extends BlockEntity {
BlockState bs = world.getBlockState(from); BlockState bs = world.getBlockState(from);
if (be != null) { if (be != null) {
world.setBlockState(from, Blocks.AIR.getDefaultState()); world.setBlockState(from, Blocks.AIR.getDefaultState());
Integer newFuel = bs.get(DrillBlock.FUEL) - 1; world.setBlockState(to, bs);
world.setBlockState(to, bs.with(DrillBlock.FUEL, newFuel));
world.addBlockEntity(be); world.addBlockEntity(be);
world.removeBlockEntity(from); world.removeBlockEntity(from);
} }
@ -45,9 +44,7 @@ public abstract class DrillBlockEntity extends BlockEntity {
return lastSuccess; return lastSuccess;
} }
public static void tick(World world, BlockPos pos, BlockState state, DrillBlockEntity be, Integer maxDrillStep, public static void tick(World world, BlockPos pos, BlockState state, DrillBlockEntity be, Integer maxDrillStep, List<BlockPos> drillPosition) {
List<BlockPos> drillPosition) {
if (state.get(DrillBlock.FUEL) > 0) {
if (be.getDrillstep() < 1) { if (be.getDrillstep() < 1) {
be.setDrillstep(maxDrillStep); be.setDrillstep(maxDrillStep);
if (drill(pos, drillPosition, world)) { if (drill(pos, drillPosition, world)) {
@ -57,7 +54,6 @@ public abstract class DrillBlockEntity extends BlockEntity {
be.doDrillstep(); be.doDrillstep();
} }
} }
}
public void doDrillstep() { public void doDrillstep() {
setDrillstep(getDrillstep() - 1); setDrillstep(getDrillstep() - 1);

View File

@ -25,16 +25,14 @@ public class EmptyLavaHoarderBlockEntity extends BlockEntity {
} }
public static final void spawnRandomItems(World world, BlockPos pos, Integer count) { public static final void spawnRandomItems(World world, BlockPos pos, Integer count) {
world.spawnEntity(new ItemEntity(world, pos.getX(), pos.getY(), pos.getZ(), new ItemStack(Items.DIAMOND, new Random().nextInt(count + 2)))); world.spawnEntity(new ItemEntity(world, pos.getX(), pos.getY(), pos.getZ(), new ItemStack(Items.DIAMOND, new Random().nextInt(count))));
world.spawnEntity(new ItemEntity(world, pos.getX(), pos.getY(), pos.getZ(), new ItemStack(Items.EMERALD, new Random().nextInt(count + 1)))); world.spawnEntity(new ItemEntity(world, pos.getX(), pos.getY(), pos.getZ(), new ItemStack(Items.EMERALD, new Random().nextInt(count))));
world.spawnEntity(new ItemEntity(world, pos.getX(), pos.getY(), pos.getZ(), new ItemStack(Items.RAW_GOLD, new Random().nextInt(count)))); world.spawnEntity(new ItemEntity(world, pos.getX(), pos.getY(), pos.getZ(), new ItemStack(Items.GOLD_ORE, new Random().nextInt(count))));
world.spawnEntity(new ItemEntity(world, pos.getX(), pos.getY(), pos.getZ(), new ItemStack(Items.RAW_IRON, new Random().nextInt(count)))); world.spawnEntity(new ItemEntity(world, pos.getX(), pos.getY(), pos.getZ(), new ItemStack(Items.IRON_ORE, new Random().nextInt(count))));
world.spawnEntity(new ItemEntity(world, pos.getX(), pos.getY(), pos.getZ(), new ItemStack(Items.RAW_COPPER, new Random().nextInt(count)))); world.spawnEntity(new ItemEntity(world, pos.getX(), pos.getY(), pos.getZ(), new ItemStack(Items.COPPER_ORE, new Random().nextInt(count))));
world.spawnEntity(new ItemEntity(world, pos.getX(), pos.getY(), pos.getZ(), new ItemStack(Items.OBSIDIAN, new Random().nextInt(count + 2)))); world.spawnEntity(new ItemEntity(world, pos.getX(), pos.getY(), pos.getZ(), new ItemStack(Items.OBSIDIAN, new Random().nextInt(count))));
world.spawnEntity(new ItemEntity(world, pos.getX(), pos.getY(), pos.getZ(), new ItemStack(Items.LAPIS_LAZULI, new Random().nextInt(count + 1)))); world.spawnEntity(new ItemEntity(world, pos.getX(), pos.getY(), pos.getZ(), new ItemStack(Items.LAPIS_LAZULI, new Random().nextInt(count))));
if (count > 1) { world.spawnEntity(new ItemEntity(world, pos.getX(), pos.getY(), pos.getZ(), new ItemStack(QuickieItems.SULPHOR, new Random().nextInt(count))));
world.spawnEntity(new ItemEntity(world, pos.getX(), pos.getY(), pos.getZ(), new ItemStack(QuickieItems.SULPHOR, new Random().nextInt(count - 1))));
}
} }
/** /**

View File

@ -1,68 +0,0 @@
package de.jottyfan.minecraft.quickiefabric.blocks;
import java.util.List;
import java.util.Random;
import de.jottyfan.minecraft.quickiefabric.items.QuickieItems;
import net.fabricmc.fabric.api.object.builder.v1.block.FabricBlockSettings;
import net.minecraft.block.BlockState;
import net.minecraft.block.Blocks;
import net.minecraft.block.CropBlock;
import net.minecraft.entity.player.PlayerEntity;
import net.minecraft.item.ItemConvertible;
import net.minecraft.item.ItemStack;
import net.minecraft.loot.context.LootContextParameterSet.Builder;
import net.minecraft.util.ActionResult;
import net.minecraft.util.Hand;
import net.minecraft.util.ItemScatterer;
import net.minecraft.util.collection.DefaultedList;
import net.minecraft.util.hit.BlockHitResult;
import net.minecraft.util.math.BlockPos;
import net.minecraft.world.World;
public class BlockCanolaplant extends CropBlock {
public BlockCanolaplant() {
super(FabricBlockSettings.copy(Blocks.WHEAT));
}
@Override
public List<ItemStack> getDroppedStacks(BlockState state, Builder builder) {
DefaultedList<ItemStack> list = DefaultedList.of();
list.add(new ItemStack(getSeedsItem())); // the one from the seed
if (isMature(state)) {
list.add(new ItemStack(getSeedsItem(), new Random().nextInt(2)));
list.add(new ItemStack(QuickieItems.CANOLA, new Random().nextFloat() > 0.9f ? 2 : 1));
}
return list;
}
private void spawnHarvested(World world, BlockPos pos, BlockState state) {
DefaultedList<ItemStack> list = DefaultedList.of();
getDroppedStacks(state, null).forEach(itemStack -> {
list.add(itemStack);
});
ItemScatterer.spawn(world, pos, list);
}
@Override
public BlockState onBreak(World world, BlockPos pos, BlockState state, PlayerEntity player) {
spawnHarvested(world, pos, state);
return super.onBreak(world, pos, state, player);
}
@Override
protected ItemConvertible getSeedsItem() {
return QuickieItems.CANOLASEED;
}
@Override
public ActionResult onUse(BlockState state, World world, BlockPos pos, PlayerEntity player, Hand hand,
BlockHitResult hitResult) {
if (!world.isClient && isMature(state)) {
spawnHarvested(world, pos, state);
world.setBlockState(pos, state.with(AGE, 0));
}
return ActionResult.PASS;
}
}

View File

@ -63,6 +63,6 @@ public class BlockCottonplant extends CropBlock {
spawnHarvested(world, pos, state); spawnHarvested(world, pos, state);
world.setBlockState(pos, state.with(AGE, 0)); world.setBlockState(pos, state.with(AGE, 0));
} }
return ActionResult.PASS; return super.onUse(state, world, pos, player, hand, hitResult);
} }
} }

View File

@ -24,13 +24,12 @@ import net.minecraft.world.World;
* @author jotty * @author jotty
* *
*/ */
public class BlockDrillDown extends DrillBlock implements BlockEntityProvider { public class BlockDrillDown extends FallingBlock implements BlockEntityProvider {
public BlockDrillDown() { public BlockDrillDown() {
super(FabricBlockSettings.create().hardness(2.5f)); super(FabricBlockSettings.create().hardness(2.5f));
} }
@Override
public BlockEntity createBlockEntity(BlockPos pos, BlockState blockState) { public BlockEntity createBlockEntity(BlockPos pos, BlockState blockState) {
return new DrillBlockDownEntity(pos, blockState); return new DrillBlockDownEntity(pos, blockState);
} }
@ -48,8 +47,7 @@ public class BlockDrillDown extends DrillBlock implements BlockEntityProvider {
} }
@Override @Override
public <T extends BlockEntity> BlockEntityTicker<T> getTicker(World world, BlockState state, public <T extends BlockEntity> BlockEntityTicker<T> getTicker(World world, BlockState state, BlockEntityType<T> type){
BlockEntityType<T> type) {
return (world1, pos, state1, be) -> DrillBlockDownEntity.tick(world1, pos, state1, be); return (world1, pos, state1, be) -> DrillBlockDownEntity.tick(world1, pos, state1, be);
} }

View File

@ -24,7 +24,7 @@ import net.minecraft.world.World;
* @author jotty * @author jotty
* *
*/ */
public class BlockDrillEast extends DrillBlock implements BlockEntityProvider { public class BlockDrillEast extends FallingBlock implements BlockEntityProvider {
public BlockDrillEast() { public BlockDrillEast() {
super(FabricBlockSettings.create().hardness(2.5f)); super(FabricBlockSettings.create().hardness(2.5f));

View File

@ -24,7 +24,7 @@ import net.minecraft.world.World;
* @author jotty * @author jotty
* *
*/ */
public class BlockDrillNorth extends DrillBlock implements BlockEntityProvider { public class BlockDrillNorth extends FallingBlock implements BlockEntityProvider {
public BlockDrillNorth() { public BlockDrillNorth() {
super(FabricBlockSettings.create().hardness(2.5f)); super(FabricBlockSettings.create().hardness(2.5f));

View File

@ -24,7 +24,7 @@ import net.minecraft.world.World;
* @author jotty * @author jotty
* *
*/ */
public class BlockDrillSouth extends DrillBlock implements BlockEntityProvider { public class BlockDrillSouth extends FallingBlock implements BlockEntityProvider {
public BlockDrillSouth() { public BlockDrillSouth() {
super(FabricBlockSettings.create().hardness(2.5f)); super(FabricBlockSettings.create().hardness(2.5f));

View File

@ -24,7 +24,7 @@ import net.minecraft.world.World;
* @author jotty * @author jotty
* *
*/ */
public class BlockDrillWest extends DrillBlock implements BlockEntityProvider { public class BlockDrillWest extends FallingBlock implements BlockEntityProvider {
public BlockDrillWest() { public BlockDrillWest() {
super(FabricBlockSettings.create().hardness(2.5f)); super(FabricBlockSettings.create().hardness(2.5f));

View File

@ -1,42 +0,0 @@
package de.jottyfan.minecraft.quickiefabric.blocks;
import java.util.Arrays;
import java.util.List;
import com.mojang.serialization.MapCodec;
import de.jottyfan.minecraft.quickiefabric.items.QuickieItems;
import net.fabricmc.fabric.api.object.builder.v1.block.FabricBlockSettings;
import net.minecraft.block.BlockState;
import net.minecraft.block.FallingBlock;
import net.minecraft.item.ItemStack;
import net.minecraft.loot.context.LootContextParameterSet.Builder;
import net.minecraft.world.explosion.Explosion;
/**
*
* @author jotty
*
*/
public class BlockQuickiepowder extends FallingBlock {
public BlockQuickiepowder() {
super(FabricBlockSettings.create().luminance(state -> 12));
}
@Override
public List<ItemStack> getDroppedStacks(BlockState state, Builder builder) {
return Arrays.asList(new ItemStack[] { new ItemStack(QuickieItems.QUICKIEPOWDER, 9) });
}
@Override
public boolean shouldDropItemsOnExplosion(Explosion explosion) {
return true;
}
@Override
protected MapCodec<? extends FallingBlock> getCodec() {
// TODO Auto-generated method stub
return null;
}
}

View File

@ -1,144 +0,0 @@
package de.jottyfan.minecraft.quickiefabric.blocks;
import java.util.Arrays;
import java.util.List;
import java.util.Set;
import com.mojang.serialization.MapCodec;
import de.jottyfan.minecraft.quickiefabric.items.QuickieItems;
import net.fabricmc.fabric.api.object.builder.v1.block.FabricBlockSettings;
import net.minecraft.block.AbstractBlock;
import net.minecraft.block.Block;
import net.minecraft.block.BlockState;
import net.minecraft.block.Blocks;
import net.minecraft.block.CropBlock;
import net.minecraft.block.ShapeContext;
import net.minecraft.entity.Entity;
import net.minecraft.entity.ai.pathing.NavigationType;
import net.minecraft.entity.player.PlayerEntity;
import net.minecraft.item.ItemConvertible;
import net.minecraft.item.ItemStack;
import net.minecraft.loot.context.LootContextParameterSet.Builder;
import net.minecraft.server.world.ServerWorld;
import net.minecraft.util.ActionResult;
import net.minecraft.util.Hand;
import net.minecraft.util.ItemScatterer;
import net.minecraft.util.collection.DefaultedList;
import net.minecraft.util.hit.BlockHitResult;
import net.minecraft.util.math.BlockPos;
import net.minecraft.util.math.random.Random;
import net.minecraft.util.shape.VoxelShape;
import net.minecraft.world.BlockView;
import net.minecraft.world.World;
import net.minecraft.world.WorldView;
/**
*
* @author jotty
*
*/
public class BlockSulforpad extends CropBlock {
public BlockSulforpad(AbstractBlock.Settings settings) {
super(settings.nonOpaque().blockVision(Blocks::never).solidBlock(Blocks::never));
setDefaultState(getDefaultState().with(this.getAgeProperty(), 0));
}
protected BlockSulforpad() {
super(FabricBlockSettings.create());
}
public static final Set<Block> getAllowedBlockHolder(){
return Set.of(Blocks.LAVA, Blocks.LAVA_CAULDRON, Blocks.MAGMA_BLOCK);
}
@Override
public void randomTick(BlockState state, ServerWorld world, BlockPos pos, Random random) {
growNow(state, world, pos, random);
}
private void generateNeighbor(ServerWorld world, BlockPos pos, Random random) {
int xOffset = random.nextInt(3) - 1;
int zOffset = random.nextInt(3) - 1;
BlockPos newPos = new BlockPos(pos).add(xOffset, 0, zOffset);
if (getAllowedBlockHolder().contains(world.getBlockState(newPos).getBlock()) && world.getBlockState(newPos.up()).isAir()) {
world.setBlockState(newPos, QuickieBlocks.SULFORPAD.getDefaultState(), Block.NOTIFY_LISTENERS);
}
}
private void growNow(BlockState state, ServerWorld world, BlockPos pos, Random random) {
int i;
if ((i = this.getAge(state)) < this.getMaxAge()) {
world.setBlockState(pos, this.withAge(i + 1), Block.NOTIFY_LISTENERS);
} else {
generateNeighbor(world, pos, random);
}
}
@Override
public void grow(ServerWorld world, Random random, BlockPos pos, BlockState state) {
growNow(state, world, pos, random);
}
@Override
public boolean canPathfindThrough(BlockState state, BlockView world, BlockPos pos, NavigationType type) {
return true;
}
@Override
public List<ItemStack> getDroppedStacks(BlockState state, Builder builder) {
Integer age = this.getAge(state);
Integer number = age < 3 ? 1 : (age < 6 ? 2 : 3);
return Arrays.asList(new ItemStack[] { new ItemStack(QuickieItems.SULPHOR, number) });
}
@Override
public VoxelShape getOutlineShape(BlockState state, BlockView world, BlockPos pos, ShapeContext context) {
return Block.createCuboidShape(1.0, 0.0, 1.0, 15.0, 1.5, 15.0);
}
@Override
protected boolean canPlantOnTop(BlockState floor, BlockView world, BlockPos pos) {
return getAllowedBlockHolder().contains(floor.getBlock()) && world.getBlockState(pos.up()).isAir();
}
@Override
protected ItemConvertible getSeedsItem() {
return QuickieItems.SULPHOR;
}
private void spawnHarvested(World world, BlockPos pos, BlockState state) {
DefaultedList<ItemStack> list = DefaultedList.of();
getDroppedStacks(state, null).forEach(itemStack -> {
list.add(itemStack);
});
ItemScatterer.spawn(world, pos, list);
}
@Override
public ActionResult onUse(BlockState state, World world, BlockPos pos, PlayerEntity player, Hand hand,
BlockHitResult hitResult) {
if (!world.isClient && isMature(state)) {
spawnHarvested(world, pos, state);
Random random = world.getRandom();
world.setBlockState(pos, state.with(AGE, random.nextInt(6)));
}
return ActionResult.PASS;
}
@Override
public void onEntityCollision(BlockState state, World world, BlockPos pos, Entity entity) {
// do nothing here
}
@Override
public ItemStack getPickStack(WorldView world, BlockPos pos, BlockState state) {
return new ItemStack(QuickieItems.SULPHOR, 1);
}
@Override
public MapCodec<? extends BlockSulforpad> getCodec() {
return BlockSulforpad.createCodec(BlockSulforpad::new);
}
}

View File

@ -1,80 +0,0 @@
package de.jottyfan.minecraft.quickiefabric.blocks;
import java.util.HashMap;
import java.util.Map;
import de.jottyfan.minecraft.quickiefabric.items.QuickieItems;
import net.minecraft.block.Block;
import net.minecraft.block.BlockState;
import net.minecraft.block.FallingBlock;
import net.minecraft.entity.ItemEntity;
import net.minecraft.entity.player.PlayerEntity;
import net.minecraft.item.Item;
import net.minecraft.item.ItemStack;
import net.minecraft.item.Items;
import net.minecraft.state.property.IntProperty;
import net.minecraft.text.Text;
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.World;
/**
*
* @author jotty
*
*/
public abstract class DrillBlock extends FallingBlock {
private static final Integer MAX_FUEL = 255;
public static final IntProperty FUEL = IntProperty.of("fuel", 0, MAX_FUEL);
public DrillBlock(Settings settings) {
super(settings);
setDefaultState(getDefaultState().with(FUEL, 0));
}
@Override
public BlockState onBreak(World world, BlockPos pos, BlockState state, PlayerEntity player) {
Integer fuelLeft = state.get(FUEL);
world.spawnEntity(new ItemEntity(world, pos.getX(), pos.getY(), pos.getZ(), new ItemStack(QuickieItems.CANOLABOTTLE, fuelLeft)));
return super.onBreak(world, pos, state, player);
}
@Override
protected void appendProperties(net.minecraft.state.StateManager.Builder<Block, BlockState> builder) {
builder.add(FUEL);
}
@Override
public ActionResult onUse(BlockState state, World world, BlockPos pos, PlayerEntity player, Hand hand,
BlockHitResult hit) {
Map<Item, Integer> loadings = new HashMap<>();
loadings.put(QuickieItems.CANOLABOTTLE, 8);
loadings.put(QuickieItems.CANOLABOTTLESTACK, 72);
ItemStack stack = player.getStackInHand(hand);
Item item = stack.getItem();
if (stack.isEmpty() || !loadings.containsKey(item) ) {
if (world.isClient()) {
player.sendMessage(Text.translatable("msg.drill.fuelinfo", state.get(FUEL)));
}
} else {
Integer fuelWeight = loadings.get(item);
if (fuelWeight != null) {
Integer load = MAX_FUEL - state.get(FUEL);
if (load < fuelWeight) {
Integer numberOfTooMuchLoad = fuelWeight - load;
fuelWeight = load;
}
world.setBlockState(pos, state.with(FUEL, state.get(FUEL) + fuelWeight));
if (item.equals(QuickieItems.CANOLABOTTLE)) {
world.spawnEntity(new ItemEntity(world, pos.getX(), pos.getY(), pos.getZ(), new ItemStack(Items.GLASS_BOTTLE, 1)));
} else if (item.equals(QuickieItems.CANOLABOTTLESTACK)) {
world.spawnEntity(new ItemEntity(world, pos.getX(), pos.getY(), pos.getZ(), new ItemStack(Items.GLASS_BOTTLE, 9)));
}
stack.decrement(1);
}
}
return ActionResult.PASS;
}
}

View File

@ -19,7 +19,6 @@ public class QuickieBlocks {
public static final BlockMonsterhoarder MONSTERHOARDER = new BlockMonsterhoarder(); public static final BlockMonsterhoarder MONSTERHOARDER = new BlockMonsterhoarder();
public static final BlockKelpstack KELPSTACK = new BlockKelpstack(); public static final BlockKelpstack KELPSTACK = new BlockKelpstack();
public static final BlockCottonplant COTTONPLANT = new BlockCottonplant(); public static final BlockCottonplant COTTONPLANT = new BlockCottonplant();
public static final BlockCanolaplant CANOLAPLANT = new BlockCanolaplant();
public static final BlockSulphor BLOCKSULPHOR = new BlockSulphor(); public static final BlockSulphor BLOCKSULPHOR = new BlockSulphor();
public static final BlockSalpeter BLOCKSALPETER = new BlockSalpeter(); public static final BlockSalpeter BLOCKSALPETER = new BlockSalpeter();
public static final BlockDrillDown DRILL_DOWN = new BlockDrillDown(); public static final BlockDrillDown DRILL_DOWN = new BlockDrillDown();
@ -35,7 +34,5 @@ public class QuickieBlocks {
public static final BlockStackerNorth BLOCKSTACKERNORTH = new BlockStackerNorth(); public static final BlockStackerNorth BLOCKSTACKERNORTH = new BlockStackerNorth();
public static final BlockStackerSouth BLOCKSTACKERSOUTH = new BlockStackerSouth(); public static final BlockStackerSouth BLOCKSTACKERSOUTH = new BlockStackerSouth();
public static final BlockSpreader BLOCKSPREADER = new BlockSpreader(); public static final BlockSpreader BLOCKSPREADER = new BlockSpreader();
public static final BlockSpeedpowder BLOCKSPEEDPOWDER = new BlockSpeedpowder(); public static final BlockSpeedpowder BLOCKSPEEDPOWDER = new BlockSpeedpowder();;
public static final BlockQuickiepowder BLOCKQUICKIEPOWDER = new BlockQuickiepowder();
public static final BlockSulforpad SULFORPAD = new BlockSulforpad();
} }

View File

@ -72,18 +72,6 @@ public class EventBlockBreak {
} else if (QuickieTools.SPEEDPOWDERHOE.equals(tool)) { } else if (QuickieTools.SPEEDPOWDERHOE.equals(tool)) {
return breakBlockRecursive(new ArrayList<>(), world, validBlocks, pos, tool, range, BlockBreakDirection.ALL, return breakBlockRecursive(new ArrayList<>(), world, validBlocks, pos, tool, range, BlockBreakDirection.ALL,
player, false); player, false);
} else if (QuickieTools.QUICKIEPOWDERAXE.equals(tool)) {
return breakBlockRecursive(new ArrayList<>(), world, validBlocks, pos, tool, range, BlockBreakDirection.UPWARDS,
player, true);
} else if (QuickieTools.QUICKIEPOWDERPICKAXE.equals(tool)) {
return breakBlockRecursive(new ArrayList<>(), world, validBlocks, pos, tool, range, BlockBreakDirection.ALL,
player, false);
} else if (QuickieTools.QUICKIEPOWDERSHOVEL.equals(tool)) {
return breakBlockRecursive(new ArrayList<>(), world, validBlocks, pos, tool, range, BlockBreakDirection.ALL,
player, false);
} else if (QuickieTools.QUICKIEPOWDERHOE.equals(tool)) {
return breakBlockRecursive(new ArrayList<>(), world, validBlocks, pos, tool, range, BlockBreakDirection.ALL,
player, false);
} else { } else {
return 0; return 0;
} }

View File

@ -26,8 +26,6 @@ public class FeaturesManager {
public static final RegistryKey<ConfiguredFeature<?, ?>> CF_DIRTSALPETER = genCf("dirtsalpeter"); public static final RegistryKey<ConfiguredFeature<?, ?>> CF_DIRTSALPETER = genCf("dirtsalpeter");
public static final RegistryKey<ConfiguredFeature<?, ?>> CF_SANDSALPETER = genCf("sandsalpeter"); public static final RegistryKey<ConfiguredFeature<?, ?>> CF_SANDSALPETER = genCf("sandsalpeter");
public static final RegistryKey<ConfiguredFeature<?, ?>> CF_ORESANDSALPETER = genCf("oresandsalpeter"); public static final RegistryKey<ConfiguredFeature<?, ?>> CF_ORESANDSALPETER = genCf("oresandsalpeter");
public static final RegistryKey<ConfiguredFeature<?, ?>> CF_SULFORPAD = genCf("sulforpad");
// public static final SulforpadFeature CF_SULFORPAD = genCfOwn("sulforpad");
public static final RegistryKey<PlacedFeature> PF_ORESULPHOR = genPf("oresulphor"); public static final RegistryKey<PlacedFeature> PF_ORESULPHOR = genPf("oresulphor");
public static final RegistryKey<PlacedFeature> PF_OREDEEPSLATESULPHOR = genPf("oredeepslatesulphor"); public static final RegistryKey<PlacedFeature> PF_OREDEEPSLATESULPHOR = genPf("oredeepslatesulphor");
@ -37,7 +35,6 @@ public class FeaturesManager {
public static final RegistryKey<PlacedFeature> PF_DIRTSALPETER = genPf("dirtsalpeter"); public static final RegistryKey<PlacedFeature> PF_DIRTSALPETER = genPf("dirtsalpeter");
public static final RegistryKey<PlacedFeature> PF_SANDSALPETER = genPf("sandsalpeter"); public static final RegistryKey<PlacedFeature> PF_SANDSALPETER = genPf("sandsalpeter");
public static final RegistryKey<PlacedFeature> PF_ORESANDSALPETER = genPf("oresandsalpeter"); public static final RegistryKey<PlacedFeature> PF_ORESANDSALPETER = genPf("oresandsalpeter");
public static final RegistryKey<PlacedFeature> PF_SULFORPAD = genPf("sulforpad");
private static final RegistryKey<ConfiguredFeature<?, ?>> genCf(String name) { private static final RegistryKey<ConfiguredFeature<?, ?>> genCf(String name) {
return RegistryKey.of(RegistryKeys.CONFIGURED_FEATURE, new Identifier(RegistryManager.QUICKIEFABRIC, name)); return RegistryKey.of(RegistryKeys.CONFIGURED_FEATURE, new Identifier(RegistryManager.QUICKIEFABRIC, name));
@ -55,7 +52,6 @@ public class FeaturesManager {
bmc.getGenerationSettings().addFeature(GenerationStep.Feature.UNDERGROUND_ORES, PF_SANDSALPETER); bmc.getGenerationSettings().addFeature(GenerationStep.Feature.UNDERGROUND_ORES, PF_SANDSALPETER);
bmc.getGenerationSettings().addFeature(GenerationStep.Feature.UNDERGROUND_ORES, PF_ORESANDSALPETER); bmc.getGenerationSettings().addFeature(GenerationStep.Feature.UNDERGROUND_ORES, PF_ORESANDSALPETER);
bmc.getGenerationSettings().addFeature(GenerationStep.Feature.UNDERGROUND_ORES, PF_OREDEEPSLATESULPHOR); bmc.getGenerationSettings().addFeature(GenerationStep.Feature.UNDERGROUND_ORES, PF_OREDEEPSLATESULPHOR);
bmc.getGenerationSettings().addFeature(GenerationStep.Feature.VEGETAL_DECORATION, PF_SULFORPAD);
}; };
} }
@ -63,8 +59,6 @@ public class FeaturesManager {
return (bsc, bmc) -> { return (bsc, bmc) -> {
bmc.getGenerationSettings().addFeature(GenerationStep.Feature.UNDERGROUND_ORES, PF_ORENETHERSULPHOR); bmc.getGenerationSettings().addFeature(GenerationStep.Feature.UNDERGROUND_ORES, PF_ORENETHERSULPHOR);
bmc.getGenerationSettings().addFeature(GenerationStep.Feature.UNDERGROUND_ORES, PF_BLOCKSULPHOR); bmc.getGenerationSettings().addFeature(GenerationStep.Feature.UNDERGROUND_ORES, PF_BLOCKSULPHOR);
bmc.getGenerationSettings().addFeature(GenerationStep.Feature.VEGETAL_DECORATION, PF_SULFORPAD);
}; };
} }
} }

View File

@ -77,19 +77,12 @@ public class RegistryManager {
stacks.add(new ItemStack(QuickieItems.SALPETER)); stacks.add(new ItemStack(QuickieItems.SALPETER));
stacks.add(new ItemStack(QuickieItems.SULPHOR)); stacks.add(new ItemStack(QuickieItems.SULPHOR));
stacks.add(new ItemStack(QuickieItems.SPEEDPOWDER)); stacks.add(new ItemStack(QuickieItems.SPEEDPOWDER));
stacks.add(new ItemStack(QuickieItems.QUICKIEPOWDER));
stacks.add(new ItemStack(QuickieItems.SPEEDINGOT));
stacks.add(new ItemStack(QuickieItems.QUICKIEINGOT));
stacks.add(new ItemStack(QuickieItems.LEVELUP)); stacks.add(new ItemStack(QuickieItems.LEVELUP));
stacks.add(new ItemStack(QuickieItems.PENCIL)); stacks.add(new ItemStack(QuickieItems.PENCIL));
stacks.add(new ItemStack(QuickieItems.ROTTEN_FLESH_STRIPES)); stacks.add(new ItemStack(QuickieItems.ROTTEN_FLESH_STRIPES));
stacks.add(new ItemStack(QuickieItems.CARROTSTACK)); stacks.add(new ItemStack(QuickieItems.CARROTSTACK));
stacks.add(new ItemStack(QuickieItems.COTTON)); stacks.add(new ItemStack(QuickieItems.COTTON));
stacks.add(new ItemStack(QuickieItems.COTTONSEED)); stacks.add(new ItemStack(QuickieItems.COTTONSEED));
stacks.add(new ItemStack(QuickieItems.CANOLA));
stacks.add(new ItemStack(QuickieItems.CANOLASEED));
stacks.add(new ItemStack(QuickieItems.CANOLABOTTLE));
stacks.add(new ItemStack(QuickieItems.CANOLABOTTLESTACK));
stacks.add(new ItemStack(QuickieItems.BACKPACK_BROWN)); stacks.add(new ItemStack(QuickieItems.BACKPACK_BROWN));
stacks.add(new ItemStack(QuickieItems.BACKPACK_WHITE)); stacks.add(new ItemStack(QuickieItems.BACKPACK_WHITE));
stacks.add(new ItemStack(QuickieItems.BACKPACK_BLACK)); stacks.add(new ItemStack(QuickieItems.BACKPACK_BLACK));
@ -108,17 +101,11 @@ public class RegistryManager {
stacks.add(new ItemStack(QuickieItems.BACKPACK_LIGHTBLUE)); stacks.add(new ItemStack(QuickieItems.BACKPACK_LIGHTBLUE));
stacks.add(new ItemStack(QuickieItems.BAG)); stacks.add(new ItemStack(QuickieItems.BAG));
stacks.add(new ItemStack(QuickieItems.STUB)); stacks.add(new ItemStack(QuickieItems.STUB));
stacks.add(new ItemStack(QuickieItems.OXIDIZEDCOPPERPOWDER));
stacks.add(new ItemStack(QuickieTools.SPEEDPOWDERAXE)); stacks.add(new ItemStack(QuickieTools.SPEEDPOWDERAXE));
stacks.add(new ItemStack(QuickieTools.SPEEDPOWDERPICKAXE)); stacks.add(new ItemStack(QuickieTools.SPEEDPOWDERPICKAXE));
stacks.add(new ItemStack(QuickieTools.SPEEDPOWDERSHOVEL)); stacks.add(new ItemStack(QuickieTools.SPEEDPOWDERSHOVEL));
stacks.add(new ItemStack(QuickieTools.SPEEDPOWDERHOE)); stacks.add(new ItemStack(QuickieTools.SPEEDPOWDERHOE));
stacks.add(new ItemStack(QuickieTools.SPEEDPOWDERWATERHOE)); stacks.add(new ItemStack(QuickieTools.SPEEDPOWDERWATERHOE));
stacks.add(new ItemStack(QuickieTools.QUICKIEPOWDERAXE));
stacks.add(new ItemStack(QuickieTools.QUICKIEPOWDERPICKAXE));
stacks.add(new ItemStack(QuickieTools.QUICKIEPOWDERSHOVEL));
stacks.add(new ItemStack(QuickieTools.QUICKIEPOWDERHOE));
stacks.add(new ItemStack(QuickieTools.QUICKIEPOWDERWATERHOE));
stacks.add(new ItemStack(QuickieBlocks.DIRT_SALPETER)); stacks.add(new ItemStack(QuickieBlocks.DIRT_SALPETER));
stacks.add(new ItemStack(QuickieBlocks.ORE_NETHER_SULPHOR)); stacks.add(new ItemStack(QuickieBlocks.ORE_NETHER_SULPHOR));
stacks.add(new ItemStack(QuickieBlocks.ORE_SALPETER)); stacks.add(new ItemStack(QuickieBlocks.ORE_SALPETER));
@ -134,7 +121,6 @@ public class RegistryManager {
stacks.add(new ItemStack(QuickieBlocks.BLOCKSULPHOR)); stacks.add(new ItemStack(QuickieBlocks.BLOCKSULPHOR));
stacks.add(new ItemStack(QuickieBlocks.BLOCKSALPETER)); stacks.add(new ItemStack(QuickieBlocks.BLOCKSALPETER));
stacks.add(new ItemStack(QuickieBlocks.BLOCKSPEEDPOWDER)); stacks.add(new ItemStack(QuickieBlocks.BLOCKSPEEDPOWDER));
stacks.add(new ItemStack(QuickieBlocks.BLOCKQUICKIEPOWDER));
stacks.add(new ItemStack(QuickieBlocks.DRILL_DOWN)); stacks.add(new ItemStack(QuickieBlocks.DRILL_DOWN));
stacks.add(new ItemStack(QuickieBlocks.DRILL_EAST)); stacks.add(new ItemStack(QuickieBlocks.DRILL_EAST));
stacks.add(new ItemStack(QuickieBlocks.DRILL_SOUTH)); stacks.add(new ItemStack(QuickieBlocks.DRILL_SOUTH));
@ -148,7 +134,6 @@ public class RegistryManager {
stacks.add(new ItemStack(QuickieBlocks.BLOCKSTACKERNORTH)); stacks.add(new ItemStack(QuickieBlocks.BLOCKSTACKERNORTH));
stacks.add(new ItemStack(QuickieBlocks.BLOCKSTACKERSOUTH)); stacks.add(new ItemStack(QuickieBlocks.BLOCKSTACKERSOUTH));
stacks.add(new ItemStack(QuickieBlocks.BLOCKSPREADER)); stacks.add(new ItemStack(QuickieBlocks.BLOCKSPREADER));
stacks.add(new ItemStack(QuickieBlocks.SULFORPAD));
}).build()); }).build());
} }
@ -213,11 +198,9 @@ public class RegistryManager {
registerBlock(QuickieBlocks.MONSTERHOARDER, "monsterhoarder"); registerBlock(QuickieBlocks.MONSTERHOARDER, "monsterhoarder");
registerBlock(QuickieBlocks.KELPSTACK, "kelpstack"); registerBlock(QuickieBlocks.KELPSTACK, "kelpstack");
registerBlock(QuickieBlocks.COTTONPLANT, "cottonplant"); registerBlock(QuickieBlocks.COTTONPLANT, "cottonplant");
registerBlock(QuickieBlocks.CANOLAPLANT, "canolaplant");
registerBlock(QuickieBlocks.BLOCKSULPHOR, "blocksulphor"); registerBlock(QuickieBlocks.BLOCKSULPHOR, "blocksulphor");
registerBlock(QuickieBlocks.BLOCKSALPETER, "blocksalpeter"); registerBlock(QuickieBlocks.BLOCKSALPETER, "blocksalpeter");
registerBlock(QuickieBlocks.BLOCKSPEEDPOWDER, "blockspeedpowder"); registerBlock(QuickieBlocks.BLOCKSPEEDPOWDER, "blockspeedpowder");
registerBlock(QuickieBlocks.BLOCKQUICKIEPOWDER, "blockquickiepowder");
registerBlock(QuickieBlocks.DRILL_DOWN, "drill"); registerBlock(QuickieBlocks.DRILL_DOWN, "drill");
registerBlock(QuickieBlocks.DRILL_EAST, "drilleast"); registerBlock(QuickieBlocks.DRILL_EAST, "drilleast");
registerBlock(QuickieBlocks.DRILL_SOUTH, "drillsouth"); registerBlock(QuickieBlocks.DRILL_SOUTH, "drillsouth");
@ -231,13 +214,11 @@ public class RegistryManager {
registerBlock(QuickieBlocks.BLOCKSTACKERNORTH, "blockstackernorth"); registerBlock(QuickieBlocks.BLOCKSTACKERNORTH, "blockstackernorth");
registerBlock(QuickieBlocks.BLOCKSTACKERSOUTH, "blockstackersouth"); registerBlock(QuickieBlocks.BLOCKSTACKERSOUTH, "blockstackersouth");
registerBlock(QuickieBlocks.BLOCKSPREADER, "blockspreader"); registerBlock(QuickieBlocks.BLOCKSPREADER, "blockspreader");
registerBlock(QuickieBlocks.SULFORPAD, "sulforpad");
} }
public static final void registerItems() { public static final void registerItems() {
LOGGER.debug("registering quickiefabric items"); LOGGER.debug("registering quickiefabric items");
registerItem(QuickieItems.SPEEDPOWDER, "speedpowder"); registerItem(QuickieItems.SPEEDPOWDER, "speedpowder");
registerItem(QuickieItems.QUICKIEPOWDER, "quickiepowder");
registerItem(QuickieItems.LEVELUP, "levelup"); registerItem(QuickieItems.LEVELUP, "levelup");
registerItem(QuickieItems.PENCIL, "pencil"); registerItem(QuickieItems.PENCIL, "pencil");
registerItem(QuickieItems.SALPETER, "salpeter"); registerItem(QuickieItems.SALPETER, "salpeter");
@ -246,10 +227,6 @@ public class RegistryManager {
registerItem(QuickieItems.CARROTSTACK, "carrotstack"); registerItem(QuickieItems.CARROTSTACK, "carrotstack");
registerItem(QuickieItems.COTTON, "cotton"); registerItem(QuickieItems.COTTON, "cotton");
registerItem(QuickieItems.COTTONSEED, "cottonseed"); registerItem(QuickieItems.COTTONSEED, "cottonseed");
registerItem(QuickieItems.CANOLA, "canola");
registerItem(QuickieItems.CANOLASEED, "canolaseed");
registerItem(QuickieItems.CANOLABOTTLE, "canolabottle");
registerItem(QuickieItems.CANOLABOTTLESTACK, "canolabottlestack");
registerItem(QuickieItems.BACKPACK_BROWN, "backpack_brown"); registerItem(QuickieItems.BACKPACK_BROWN, "backpack_brown");
registerItem(QuickieItems.BACKPACK_WHITE, "backpack_white"); registerItem(QuickieItems.BACKPACK_WHITE, "backpack_white");
registerItem(QuickieItems.BACKPACK_BLACK, "backpack_black"); registerItem(QuickieItems.BACKPACK_BLACK, "backpack_black");
@ -268,14 +245,9 @@ public class RegistryManager {
registerItem(QuickieItems.BACKPACK_LIGHTBLUE, "backpack_lightblue"); registerItem(QuickieItems.BACKPACK_LIGHTBLUE, "backpack_lightblue");
registerItem(QuickieItems.BAG, "bag"); registerItem(QuickieItems.BAG, "bag");
registerItem(QuickieItems.STUB, "stub"); registerItem(QuickieItems.STUB, "stub");
registerItem(QuickieItems.OXIDIZEDCOPPERPOWDER, "oxidizedcopperpowder");
registerItem(QuickieItems.SPEEDINGOT, "speedingot");
registerItem(QuickieItems.QUICKIEINGOT, "quickieingot");
ComposterBlock.ITEM_TO_LEVEL_INCREASE_CHANCE.put(QuickieItems.COTTONSEED, 0.5f); ComposterBlock.ITEM_TO_LEVEL_INCREASE_CHANCE.put(QuickieItems.COTTONSEED, 0.5f);
ComposterBlock.ITEM_TO_LEVEL_INCREASE_CHANCE.put(QuickieItems.COTTON, 0.75f); ComposterBlock.ITEM_TO_LEVEL_INCREASE_CHANCE.put(QuickieItems.COTTON, 0.75f);
ComposterBlock.ITEM_TO_LEVEL_INCREASE_CHANCE.put(QuickieItems.CANOLASEED, 0.5f);
ComposterBlock.ITEM_TO_LEVEL_INCREASE_CHANCE.put(QuickieItems.CANOLA, 0.75f);
FuelRegistry.INSTANCE.add(QuickieItems.SULPHOR, 200); FuelRegistry.INSTANCE.add(QuickieItems.SULPHOR, 200);
FuelRegistry.INSTANCE.add(QuickieBlocks.BLOCKSULPHOR, 2000); FuelRegistry.INSTANCE.add(QuickieBlocks.BLOCKSULPHOR, 2000);
@ -289,11 +261,6 @@ public class RegistryManager {
registerItem(QuickieTools.SPEEDPOWDERSHOVEL, "speedpowdershovel"); registerItem(QuickieTools.SPEEDPOWDERSHOVEL, "speedpowdershovel");
registerItem(QuickieTools.SPEEDPOWDERHOE, "speedpowderhoe"); registerItem(QuickieTools.SPEEDPOWDERHOE, "speedpowderhoe");
registerItem(QuickieTools.SPEEDPOWDERWATERHOE, "speedpowderwaterhoe"); registerItem(QuickieTools.SPEEDPOWDERWATERHOE, "speedpowderwaterhoe");
registerItem(QuickieTools.QUICKIEPOWDERAXE, "quickiepowderaxe");
registerItem(QuickieTools.QUICKIEPOWDERPICKAXE, "quickiepowderpickaxe");
registerItem(QuickieTools.QUICKIEPOWDERSHOVEL, "quickiepowdershovel");
registerItem(QuickieTools.QUICKIEPOWDERHOE, "quickiepowderhoe");
registerItem(QuickieTools.QUICKIEPOWDERWATERHOE, "quickiepowderwaterhoe");
} }
public static final void registerContainer() { public static final void registerContainer() {
@ -323,8 +290,7 @@ public class RegistryManager {
public static final void registerLootings() { public static final void registerLootings() {
LootTableEvents.MODIFY.register((resourceManager, lootManager, id, tableBuilder, source) -> { LootTableEvents.MODIFY.register((resourceManager, lootManager, id, tableBuilder, source) -> {
if (isGrass(id)) { if (isGrass(id)) {
tableBuilder.pool(LootHelper.build(1, QuickieItems.COTTONSEED, 0.025f)); tableBuilder.pool(LootHelper.build(1, QuickieItems.COTTONSEED, 0.125f));
tableBuilder.pool(LootHelper.build(1, QuickieItems.CANOLASEED, 0.05f));
tableBuilder.pool(LootHelper.build(2, QuickieItems.SALPETER, 0.012f)); tableBuilder.pool(LootHelper.build(2, QuickieItems.SALPETER, 0.012f));
} }
}); });

View File

@ -1,16 +0,0 @@
package de.jottyfan.minecraft.quickiefabric.items;
import net.fabricmc.fabric.api.item.v1.FabricItemSettings;
import net.minecraft.item.Item;
/**
*
* @author jotty
*
*/
public class ItemCanola extends Item {
public ItemCanola() {
super(new FabricItemSettings().maxCount(64));
}
}

View File

@ -1,16 +0,0 @@
package de.jottyfan.minecraft.quickiefabric.items;
import net.fabricmc.fabric.api.item.v1.FabricItemSettings;
import net.minecraft.item.Item;
/**
*
* @author jotty
*
*/
public class ItemCanolabottle extends Item {
public ItemCanolabottle() {
super(new FabricItemSettings().maxCount(64));
}
}

View File

@ -1,16 +0,0 @@
package de.jottyfan.minecraft.quickiefabric.items;
import net.fabricmc.fabric.api.item.v1.FabricItemSettings;
import net.minecraft.item.Item;
/**
*
* @author jotty
*
*/
public class ItemCanolabottlestack extends Item {
public ItemCanolabottlestack() {
super(new FabricItemSettings().maxCount(64));
}
}

View File

@ -1,37 +0,0 @@
package de.jottyfan.minecraft.quickiefabric.items;
import de.jottyfan.minecraft.quickiefabric.blocks.QuickieBlocks;
import net.fabricmc.fabric.api.item.v1.FabricItemSettings;
import net.minecraft.block.BlockState;
import net.minecraft.block.Blocks;
import net.minecraft.item.Item;
import net.minecraft.item.ItemUsageContext;
import net.minecraft.util.ActionResult;
import net.minecraft.util.math.BlockPos;
import net.minecraft.world.World;
/**
*
* @author jotty
*
*/
public class ItemCanolaseed extends Item {
public ItemCanolaseed() {
super(new FabricItemSettings().maxCount(64));
}
@Override
public ActionResult useOnBlock(ItemUsageContext context) {
BlockPos pos = context.getBlockPos();
World world = context.getWorld();
if (QuickieItems.CANOLASEED.equals(context.getStack().getItem())) {
BlockState state = world.getBlockState(pos);
if (Blocks.FARMLAND.equals(state.getBlock()) && world.getBlockState(pos.up()).isAir()) {
world.setBlockState(pos.up(), QuickieBlocks.CANOLAPLANT.getDefaultState());
context.getStack().decrement(1);
}
}
return super.useOnBlock(context);
}
}

View File

@ -1,16 +0,0 @@
package de.jottyfan.minecraft.quickiefabric.items;
import net.fabricmc.fabric.api.item.v1.FabricItemSettings;
import net.minecraft.item.Item;
/**
*
* @author jotty
*
*/
public class ItemOxidizedcopperpowder extends Item {
public ItemOxidizedcopperpowder() {
super(new FabricItemSettings().maxCount(64));
}
}

View File

@ -1,16 +0,0 @@
package de.jottyfan.minecraft.quickiefabric.items;
import net.fabricmc.fabric.api.item.v1.FabricItemSettings;
import net.minecraft.item.Item;
/**
*
* @author jotty
*
*/
public class ItemQuickieingot extends Item {
public ItemQuickieingot() {
super(new FabricItemSettings());
}
}

View File

@ -1,16 +0,0 @@
package de.jottyfan.minecraft.quickiefabric.items;
import net.fabricmc.fabric.api.item.v1.FabricItemSettings;
import net.minecraft.item.Item;
/**
*
* @author jotty
*
*/
public class ItemQuickiepowder extends Item {
public ItemQuickiepowder() {
super(new FabricItemSettings());
}
}

View File

@ -1,16 +0,0 @@
package de.jottyfan.minecraft.quickiefabric.items;
import net.fabricmc.fabric.api.item.v1.FabricItemSettings;
import net.minecraft.item.Item;
/**
*
* @author jotty
*
*/
public class ItemSpeedingot extends Item {
public ItemSpeedingot() {
super(new FabricItemSettings());
}
}

View File

@ -1,19 +1,7 @@
package de.jottyfan.minecraft.quickiefabric.items; package de.jottyfan.minecraft.quickiefabric.items;
import de.jottyfan.minecraft.quickiefabric.blocks.BlockSulforpad;
import de.jottyfan.minecraft.quickiefabric.blocks.QuickieBlocks;
import net.fabricmc.fabric.api.item.v1.FabricItemSettings; import net.fabricmc.fabric.api.item.v1.FabricItemSettings;
import net.minecraft.entity.player.PlayerEntity;
import net.minecraft.item.BoatItem;
import net.minecraft.item.Item; import net.minecraft.item.Item;
import net.minecraft.item.ItemStack;
import net.minecraft.util.Hand;
import net.minecraft.util.TypedActionResult;
import net.minecraft.util.hit.BlockHitResult;
import net.minecraft.util.hit.HitResult;
import net.minecraft.util.math.BlockPos;
import net.minecraft.world.RaycastContext;
import net.minecraft.world.World;
/** /**
* *
@ -25,24 +13,4 @@ public class ItemSulphor extends Item {
public ItemSulphor() { public ItemSulphor() {
super(new FabricItemSettings()); super(new FabricItemSettings());
} }
@Override
public TypedActionResult<ItemStack> use(World world, PlayerEntity user, Hand hand) {
ItemStack itemStack = user.getStackInHand(hand);
BlockHitResult hitResult = BoatItem.raycast(world, user, RaycastContext.FluidHandling.SOURCE_ONLY);
if (((HitResult) hitResult).getType() == HitResult.Type.MISS) {
return TypedActionResult.pass(itemStack);
}
if (((HitResult) hitResult).getType() == HitResult.Type.BLOCK) {
if (!world.isClient) {
BlockPos pos = hitResult.getBlockPos();
if (BlockSulforpad.getAllowedBlockHolder().contains(world.getBlockState(pos).getBlock()) && world.getBlockState(pos.up()).isAir()) {
world.setBlockState(pos.up(), QuickieBlocks.SULFORPAD.getDefaultState());
itemStack.decrement(1);
}
}
return TypedActionResult.success(itemStack, world.isClient());
}
return TypedActionResult.pass(itemStack);
}
} }

View File

@ -7,7 +7,6 @@ package de.jottyfan.minecraft.quickiefabric.items;
*/ */
public class QuickieItems { public class QuickieItems {
public static final ItemSpeedpowder SPEEDPOWDER = new ItemSpeedpowder(); public static final ItemSpeedpowder SPEEDPOWDER = new ItemSpeedpowder();
public static final ItemQuickiepowder QUICKIEPOWDER = new ItemQuickiepowder();
public static final ItemLevelup LEVELUP = new ItemLevelup(); public static final ItemLevelup LEVELUP = new ItemLevelup();
public static final ItemPencil PENCIL = new ItemPencil(); public static final ItemPencil PENCIL = new ItemPencil();
public static final ItemSalpeter SALPETER = new ItemSalpeter(); public static final ItemSalpeter SALPETER = new ItemSalpeter();
@ -33,12 +32,5 @@ public class QuickieItems {
public static final ItemCarrotstack CARROTSTACK = new ItemCarrotstack(); public static final ItemCarrotstack CARROTSTACK = new ItemCarrotstack();
public static final ItemCotton COTTON = new ItemCotton(); public static final ItemCotton COTTON = new ItemCotton();
public static final ItemCottonseed COTTONSEED = new ItemCottonseed(); public static final ItemCottonseed COTTONSEED = new ItemCottonseed();
public static final ItemCanola CANOLA = new ItemCanola();
public static final ItemCanolaseed CANOLASEED = new ItemCanolaseed();
public static final ItemStub STUB = new ItemStub(); public static final ItemStub STUB = new ItemStub();
public static final ItemOxidizedcopperpowder OXIDIZEDCOPPERPOWDER = new ItemOxidizedcopperpowder();
public static final ItemSpeedingot SPEEDINGOT = new ItemSpeedingot();
public static final ItemQuickieingot QUICKIEINGOT = new ItemQuickieingot();
public static final ItemCanolabottle CANOLABOTTLE = new ItemCanolabottle();
public static final ItemCanolabottlestack CANOLABOTTLESTACK = new ItemCanolabottlestack();
} }

View File

@ -11,9 +11,4 @@ public class QuickieTools {
public static final ToolSpeedpowderShovel SPEEDPOWDERSHOVEL = new ToolSpeedpowderShovel(); public static final ToolSpeedpowderShovel SPEEDPOWDERSHOVEL = new ToolSpeedpowderShovel();
public static final ToolSpeedpowderHoe SPEEDPOWDERHOE = new ToolSpeedpowderHoe(); public static final ToolSpeedpowderHoe SPEEDPOWDERHOE = new ToolSpeedpowderHoe();
public static final ToolSpeedpowderWaterHoe SPEEDPOWDERWATERHOE = new ToolSpeedpowderWaterHoe(); public static final ToolSpeedpowderWaterHoe SPEEDPOWDERWATERHOE = new ToolSpeedpowderWaterHoe();
public static final ToolQuickiepowderAxe QUICKIEPOWDERAXE = new ToolQuickiepowderAxe();
public static final ToolQuickiepowderPickaxe QUICKIEPOWDERPICKAXE = new ToolQuickiepowderPickaxe();
public static final ToolQuickiepowderShovel QUICKIEPOWDERSHOVEL = new ToolQuickiepowderShovel();
public static final ToolQuickiepowderHoe QUICKIEPOWDERHOE = new ToolQuickiepowderHoe();
public static final ToolQuickiepowderWaterHoe QUICKIEPOWDERWATERHOE = new ToolQuickiepowderWaterHoe();
} }

View File

@ -1,23 +0,0 @@
package de.jottyfan.minecraft.quickiefabric.tools;
import net.fabricmc.fabric.api.item.v1.FabricItemSettings;
import net.minecraft.item.ItemStack;
import net.minecraft.item.ToolMaterials;
/**
*
* @author jotty
*
*/
public class ToolQuickiepowderAxe extends ToolRangeableAxe {
public ToolQuickiepowderAxe() {
super(ToolMaterials.DIAMOND, 5, 2.0f, new FabricItemSettings());
}
@Override
public HarvestRange getRange(ItemStack stack) {
// TODO: get the range from the stack
return new HarvestRange(64, 128, 64); // trees bigger than that are too heavy for one small axe...
}
}

View File

@ -1,18 +0,0 @@
package de.jottyfan.minecraft.quickiefabric.tools;
import net.fabricmc.fabric.api.item.v1.FabricItemSettings;
import net.minecraft.item.ToolMaterials;
/**
*
* @author jotty
*
*/
public class ToolQuickiepowderHoe extends ToolRangeableHoe {
public static final Integer DEFAULT_PLOW_RANGE = 4;
public ToolQuickiepowderHoe() {
super(ToolMaterials.DIAMOND, 4, 2.0f, new FabricItemSettings(), new HarvestRange(DEFAULT_PLOW_RANGE));
}
}

View File

@ -1,71 +0,0 @@
package de.jottyfan.minecraft.quickiefabric.tools;
import java.util.List;
import com.google.common.collect.Lists;
import net.fabricmc.fabric.api.item.v1.FabricItemSettings;
import net.minecraft.block.Block;
import net.minecraft.block.BlockState;
import net.minecraft.item.ItemStack;
import net.minecraft.item.PickaxeItem;
import net.minecraft.item.ToolMaterials;
import net.minecraft.nbt.NbtCompound;
/**
*
* @author jotty
*
*/
public class ToolQuickiepowderPickaxe extends PickaxeItem implements ToolRangeable {
public static final int[] DEFAULT_HARVEST_RANGE = new int[] { 6, 6, 6 };
public ToolQuickiepowderPickaxe() {
super(ToolMaterials.DIAMOND, 5, 2.0f, new FabricItemSettings());
}
@Override
public HarvestRange getRange(ItemStack stack) {
NbtCompound tag = stack.getNbt();
int[] range = tag.getIntArray("range");
if (range.length < 3) {
range = DEFAULT_HARVEST_RANGE;
tag.putIntArray("range", range);
}
return new HarvestRange(range);
}
@Override
public boolean canBreakNeighbors(BlockState blockIn) {
return super.isSuitableFor(blockIn);
}
@Override
public List<Block> getBlockList(Block block) {
return Lists.newArrayList(block);
}
public void setPlusRange(ItemStack stack, Integer plusRange) {
NbtCompound tag = stack.getNbt();
int[] range = tag.getIntArray("range");
if (range.length < 3) {
range = DEFAULT_HARVEST_RANGE;
}
HarvestRange harvestRange = new HarvestRange(range);
harvestRange.addXYZ(plusRange);
tag.putIntArray("range", harvestRange.getRangeAsArray());
}
// @Override
// public ActionResult<ItemStack> onItemRightClick(World worldIn, PlayerEntity playerIn, Hand handIn) {
// CommonToolCode.onItemRightClick(worldIn, playerIn, handIn);
// return super.onItemRightClick(worldIn, playerIn, handIn);
// }
//
// @Override
// public void addInformation(ItemStack stack, World worldIn, List<ITextComponent> tooltip, ITooltipFlag flagIn) {
// CommonToolCode.addInformation(stack, worldIn, tooltip, flagIn);
// super.addInformation(stack, worldIn, tooltip, flagIn);
// }
}

View File

@ -1,96 +0,0 @@
package de.jottyfan.minecraft.quickiefabric.tools;
import java.util.List;
import com.google.common.collect.Lists;
import net.fabricmc.fabric.api.item.v1.FabricItemSettings;
import net.minecraft.block.Block;
import net.minecraft.block.BlockState;
import net.minecraft.item.ItemStack;
import net.minecraft.item.ItemUsageContext;
import net.minecraft.item.ShovelItem;
import net.minecraft.item.ToolMaterials;
import net.minecraft.util.ActionResult;
import net.minecraft.util.math.BlockPos;
import net.minecraft.util.math.Direction;
import net.minecraft.world.World;
/**
*
* @author jotty
*
*/
public class ToolQuickiepowderShovel extends ShovelItem implements ToolRangeable {
public static final Integer DEFAULT_HARVEST_RANGE = 6;
public HarvestRange range;
public ToolQuickiepowderShovel() {
super(ToolMaterials.DIAMOND, 5, 2.0f, new FabricItemSettings());
this.range = new HarvestRange(DEFAULT_HARVEST_RANGE);
}
private void createPathOnGrass(World world, BlockPos pos, Direction side) {
BlockState blockState = world.getBlockState(pos);
if (blockState.isAir()) {
// try to find one underneath
pos = pos.down();
blockState = world.getBlockState(pos);
} else if (!world.getBlockState(pos.up()).isAir()) {
pos = pos.up();
blockState = world.getBlockState(pos);
}
if (side != Direction.DOWN) {
BlockState blockState2 = (BlockState) PATH_STATES.get(blockState.getBlock());
if (blockState2 != null && world.getBlockState(pos.up()).isAir()) {
if (!world.isClient) {
world.setBlockState(pos, blockState2, 11);
}
}
}
}
@Override
public ActionResult useOnBlock(ItemUsageContext context) {
World world = context.getWorld();
BlockPos pos = context.getBlockPos();
BlockPos[] positions = new BlockPos[] { pos.north().north().west().west(), pos.north().north().west(),
pos.north().north(), pos.north().north().east(), pos.north().north().east().east(), pos.north().west().west(),
pos.north().west(), pos.north(), pos.north().east(), pos.north().east().east(), pos.west().west(), pos.west(),
pos, pos.east(), pos.east().east(), pos.south().west().west(), pos.south().west(), pos.south(),
pos.south().east(), pos.south().east().east(), pos.south().south().west().west(), pos.south().south().west(),
pos.south().south(), pos.south().south().east(), pos.south().south().east().east() };
for (BlockPos p : positions) {
createPathOnGrass(world, p, context.getSide());
}
return super.useOnBlock(context);
}
@Override
public HarvestRange getRange(ItemStack stack) {
// TODO: get range from stack
return range;
}
@Override
public boolean canBreakNeighbors(BlockState blockState) {
return super.isSuitableFor(blockState);
}
@Override
public List<Block> getBlockList(Block block) {
return Lists.newArrayList(block);
}
// @Override
// public ActionResult<ItemStack> onItemRightClick(World worldIn, PlayerEntity playerIn, Hand handIn) {
// CommonToolCode.onItemRightClick(worldIn, playerIn, handIn);
// return super.onItemRightClick(worldIn, playerIn, handIn);
// }
//
// @Override
// public void addInformation(ItemStack stack, World worldIn, List<ITextComponent> tooltip, ITooltipFlag flagIn) {
// CommonToolCode.addInformation(stack, worldIn, tooltip, flagIn);
// super.addInformation(stack, worldIn, tooltip, flagIn);
// }
}

View File

@ -1,34 +0,0 @@
package de.jottyfan.minecraft.quickiefabric.tools;
import net.minecraft.block.Blocks;
import net.minecraft.entity.player.PlayerEntity;
import net.minecraft.item.ItemStack;
import net.minecraft.item.ItemUsageContext;
import net.minecraft.util.ActionResult;
import net.minecraft.util.Hand;
import net.minecraft.util.math.BlockPos;
import net.minecraft.world.World;
/**
*
* @author jotty
*
*/
public class ToolQuickiepowderWaterHoe extends ToolQuickiepowderHoe {
@Override
public ActionResult useOnBlock(ItemUsageContext context) {
ActionResult res = super.useOnBlock(context);
if (!ActionResult.PASS.equals(res)) {
BlockPos pos = context.getBlockPos();
World world = context.getWorld();
world.setBlockState(pos, Blocks.WATER.getDefaultState());
Hand hand = context.getHand();
PlayerEntity player = context.getPlayer();
ItemStack oldTool = player.getStackInHand(hand);
ItemStack newTool = new ItemStack(QuickieTools.QUICKIEPOWDERHOE);
newTool.setDamage(oldTool.getDamage());
player.setStackInHand(hand, newTool);
}
return res;
}
}

View File

@ -3,6 +3,7 @@ package de.jottyfan.minecraft.quickiefabric.tools;
import java.util.List; import java.util.List;
import com.google.common.collect.Lists; import com.google.common.collect.Lists;
import com.terraformersmc.terraform.leaves.block.ExtendedLeavesBlock;
import net.minecraft.block.Block; import net.minecraft.block.Block;
import net.minecraft.block.BlockState; import net.minecraft.block.BlockState;
@ -26,7 +27,7 @@ public class ToolRangeableAxe extends AxeItem implements ToolRangeable {
@Override @Override
public HarvestRange getRange(ItemStack stack) { public HarvestRange getRange(ItemStack stack) {
// TODO: get the range from the stack // TODO: get the range from the stack
return new HarvestRange(16, 32, 16); return new HarvestRange(64, 128, 64); // trees bigger than that are too heavy for one small axe...
} }
@Override @Override
@ -42,15 +43,7 @@ public class ToolRangeableAxe extends AxeItem implements ToolRangeable {
*/ */
private boolean isLeavesBlock(BlockState blockIn) { private boolean isLeavesBlock(BlockState blockIn) {
boolean vanillaLeaves = blockIn.getBlock() instanceof LeavesBlock; boolean vanillaLeaves = blockIn.getBlock() instanceof LeavesBlock;
boolean terrestriaLeaves = false; boolean terrestriaLeaves = blockIn.getBlock() instanceof ExtendedLeavesBlock;
try {
Class<?> extendedLeavesBlock = Class.forName("com.terraformersmc.terraform.leaves.block.ExtendedLeavesBlock");
terrestriaLeaves = extendedLeavesBlock.isInstance(blockIn.getBlock());
} catch (ClassNotFoundException e) {
// no terrestria mod available, so ignore this
// using this approach instead of the instanceof functionality, we don't need to refer to terrestria
// and omit a crash on installations that do not have or want terrestria available
}
boolean blockTagLeaves = blockIn.isIn(BlockTags.LEAVES); boolean blockTagLeaves = blockIn.isIn(BlockTags.LEAVES);
return vanillaLeaves || terrestriaLeaves || blockTagLeaves; return vanillaLeaves || terrestriaLeaves || blockTagLeaves;
} }

View File

@ -1,97 +0,0 @@
package de.jottyfan.minecraft.quickiefabric.tools;
import java.util.List;
import com.google.common.collect.Lists;
import net.minecraft.block.Block;
import net.minecraft.block.BlockState;
import net.minecraft.block.Blocks;
import net.minecraft.block.CropBlock;
import net.minecraft.item.HoeItem;
import net.minecraft.item.ItemStack;
import net.minecraft.item.ItemUsageContext;
import net.minecraft.item.ToolMaterial;
import net.minecraft.util.ActionResult;
import net.minecraft.util.hit.BlockHitResult;
import net.minecraft.util.math.BlockPos;
import net.minecraft.util.math.Direction;
import net.minecraft.util.math.Vec3i;
import net.minecraft.world.World;
/**
*
* @author jotty
*
*/
public abstract class ToolRangeableHoe extends HoeItem implements ToolRangeable {
public HarvestRange range;
public ToolRangeableHoe(ToolMaterial material, int attackDamage, float attackSpeed, Settings settings, HarvestRange range) {
super(material, attackDamage, attackSpeed, settings);
this.range = range;
}
@Override
public ActionResult useOnBlock(ItemUsageContext context) {
ActionResult res = super.useOnBlock(context);
boolean isCrop = context.getWorld().getBlockState(context.getBlockPos()).getBlock() instanceof CropBlock;
if (!ActionResult.PASS.equals(res) || isCrop) {
for (int x = -this.range.getxRange(); x <= this.range.getxRange(); x++) {
for (int y = -this.range.getyRange(); y <= this.range.getyRange(); y++) {
for (int z = -this.range.getzRange(); z <= this.range.getzRange(); z++) {
if (!isCrop) {
removePossibleGrass(context.getWorld(), new BlockPos(x, y, z));
BlockHitResult bhr = new BlockHitResult(context.getHitPos(), Direction.UP,
context.getBlockPos().add(new Vec3i(x, y, z)), isDamageable());
ItemUsageContext ctx = new ItemUsageContext(context.getPlayer(), context.getHand(), bhr);
super.useOnBlock(ctx);
} else {
harvestIfPossible(context.getBlockPos().add(x, y, z), context.getWorld());
}
}
}
}
}
return res;
}
private void removePossibleGrass(World world, BlockPos pos) {
Block block = world.getBlockState(pos).getBlock();
Boolean grassFound = Blocks.FERN.equals(block) || Blocks.LARGE_FERN.equals(block)
|| Blocks.SHORT_GRASS.equals(block) || Blocks.TALL_GRASS.equals(block);
if (grassFound) {
world.breakBlock(pos, true);
}
}
private void harvestIfPossible(BlockPos pos, World world) {
BlockState blockState = world.getBlockState(pos);
Block block = blockState.getBlock();
if (block instanceof CropBlock) {
CropBlock cBlock = (CropBlock) block;
if (cBlock.isMature(blockState)) {
Block.dropStacks(blockState, world, pos);
world.setBlockState(pos, cBlock.withAge(0));
}
}
}
@Override
public HarvestRange getRange(ItemStack stack) {
// TODO: get range from stack
return range;
}
@Override
public boolean canBreakNeighbors(BlockState blockState) {
return super.isSuitableFor(blockState) || Blocks.TALL_GRASS.equals(blockState.getBlock())
|| Blocks.FERN.equals(blockState.getBlock()) || Blocks.LARGE_FERN.equals(blockState.getBlock());
}
@Override
public List<Block> getBlockList(Block block) {
return Lists.newArrayList(block);
}
}

View File

@ -1,7 +1,6 @@
package de.jottyfan.minecraft.quickiefabric.tools; package de.jottyfan.minecraft.quickiefabric.tools;
import net.fabricmc.fabric.api.item.v1.FabricItemSettings; import net.fabricmc.fabric.api.item.v1.FabricItemSettings;
import net.minecraft.item.ItemStack;
import net.minecraft.item.ToolMaterials; import net.minecraft.item.ToolMaterials;
/** /**
@ -14,10 +13,4 @@ public class ToolSpeedpowderAxe extends ToolRangeableAxe {
public ToolSpeedpowderAxe() { public ToolSpeedpowderAxe() {
super(ToolMaterials.DIAMOND, 4, 2.0f, new FabricItemSettings()); super(ToolMaterials.DIAMOND, 4, 2.0f, new FabricItemSettings());
} }
@Override
public HarvestRange getRange(ItemStack stack) {
// TODO: get the range from the stack
return new HarvestRange(32, 64, 32);
}
} }

View File

@ -1,18 +1,104 @@
package de.jottyfan.minecraft.quickiefabric.tools; package de.jottyfan.minecraft.quickiefabric.tools;
import java.util.List;
import com.google.common.collect.Lists;
import net.fabricmc.fabric.api.item.v1.FabricItemSettings; import net.fabricmc.fabric.api.item.v1.FabricItemSettings;
import net.minecraft.block.Block;
import net.minecraft.block.BlockState;
import net.minecraft.block.Blocks;
import net.minecraft.block.CropBlock;
import net.minecraft.item.HoeItem;
import net.minecraft.item.ItemStack;
import net.minecraft.item.ItemUsageContext;
import net.minecraft.item.ToolMaterials; import net.minecraft.item.ToolMaterials;
import net.minecraft.util.ActionResult;
import net.minecraft.util.hit.BlockHitResult;
import net.minecraft.util.math.BlockPos;
import net.minecraft.util.math.Direction;
import net.minecraft.util.math.Vec3i;
import net.minecraft.world.World;
/** /**
* *
* @author jotty * @author jotty
* *
*/ */
public class ToolSpeedpowderHoe extends ToolRangeableHoe { public class ToolSpeedpowderHoe extends HoeItem implements ToolRangeable {
public static final Integer DEFAULT_PLOW_RANGE = 2; public static final Integer DEFAULT_PLOW_RANGE = 4;
public HarvestRange range;
public ToolSpeedpowderHoe() { public ToolSpeedpowderHoe() {
super(ToolMaterials.DIAMOND, 4, 2.0f, new FabricItemSettings(), new HarvestRange(DEFAULT_PLOW_RANGE)); super(ToolMaterials.DIAMOND, 4, 2.0f, new FabricItemSettings());
this.range = new HarvestRange(DEFAULT_PLOW_RANGE);
}
@Override
public ActionResult useOnBlock(ItemUsageContext context) {
ActionResult res = super.useOnBlock(context);
boolean isCrop = context.getWorld().getBlockState(context.getBlockPos()).getBlock() instanceof CropBlock;
if (!ActionResult.PASS.equals(res) || isCrop) {
for (int x = -this.range.getxRange(); x <= this.range.getxRange(); x++) {
for (int y = -this.range.getyRange(); y <= this.range.getyRange(); y++) {
for (int z = -this.range.getzRange(); z <= this.range.getzRange(); z++) {
if (!isCrop) {
BlockHitResult bhr = new BlockHitResult(context.getHitPos(), Direction.UP,
context.getBlockPos().add(new Vec3i(x, y, z)), isDamageable());
ItemUsageContext ctx = new ItemUsageContext(context.getPlayer(), context.getHand(), bhr);
super.useOnBlock(ctx);
} else {
harvestIfPossible(context.getBlockPos().add(x, y, z), context.getWorld());
} }
} }
}
}
}
return res;
}
private void harvestIfPossible(BlockPos pos, World world) {
BlockState blockState = world.getBlockState(pos);
Block block = blockState.getBlock();
if (block instanceof CropBlock) {
CropBlock cBlock = (CropBlock) block;
if (cBlock.isMature(blockState)) {
Block.dropStacks(blockState, world, pos);
world.setBlockState(pos, cBlock.withAge(0));
}
}
}
@Override
public HarvestRange getRange(ItemStack stack) {
// TODO: get range from stack
return range;
}
@Override
public boolean canBreakNeighbors(BlockState blockState) {
return super.isSuitableFor(blockState)
|| Blocks.TALL_GRASS.equals(blockState.getBlock())
|| Blocks.FERN.equals(blockState.getBlock())
|| Blocks.LARGE_FERN.equals(blockState.getBlock());
}
@Override
public List<Block> getBlockList(Block block) {
return Lists.newArrayList(block);
}
// @Override
// public ActionResult<ItemStack> onItemRightClick(World worldIn, PlayerEntity playerIn, Hand handIn) {
// CommonToolCode.onItemRightClick(worldIn, playerIn, handIn);
// return super.onItemRightClick(worldIn, playerIn, handIn);
// }
//
// @Override
// public void addInformation(ItemStack stack, World worldIn, List<ITextComponent> tooltip, ITooltipFlag flagIn) {
// CommonToolCode.addInformation(stack, worldIn, tooltip, flagIn);
// super.addInformation(stack, worldIn, tooltip, flagIn);
// }
}

View File

@ -15,6 +15,15 @@ import net.minecraft.world.World;
* *
*/ */
public class ToolSpeedpowderWaterHoe extends ToolSpeedpowderHoe { public class ToolSpeedpowderWaterHoe extends ToolSpeedpowderHoe {
public static final Integer DEFAULT_PLOW_RANGE = 4;
public HarvestRange range;
public ToolSpeedpowderWaterHoe() {
super();
this.range = new HarvestRange(DEFAULT_PLOW_RANGE);
}
@Override @Override
public ActionResult useOnBlock(ItemUsageContext context) { public ActionResult useOnBlock(ItemUsageContext context) {
ActionResult res = super.useOnBlock(context); ActionResult res = super.useOnBlock(context);

View File

@ -1,43 +0,0 @@
package de.jottyfan.minecraft.quickiefabric.world.gen.feature;
import com.mojang.serialization.Codec;
import de.jottyfan.minecraft.quickiefabric.blocks.QuickieBlocks;
import net.minecraft.block.BlockState;
import net.minecraft.block.Blocks;
import net.minecraft.util.math.BlockPos;
import net.minecraft.world.StructureWorldAccess;
import net.minecraft.world.gen.feature.Feature;
import net.minecraft.world.gen.feature.util.FeatureContext;
/**
*
* @author jotty
*
*/
@Deprecated
public class SulforpadFeature extends Feature<SulforpadFeatureConfig> {
public SulforpadFeature(Codec<SulforpadFeatureConfig> configCodec) {
super(configCodec);
}
@Override
public boolean generate(FeatureContext<SulforpadFeatureConfig> context) {
StructureWorldAccess world = context.getWorld();
BlockPos pos = context.getOrigin();
BlockState blockState = QuickieBlocks.SULFORPAD.getDefaultState();
BlockPos currentPos = new BlockPos(pos);
for (int y = 0; y < world.getHeight(); y++) {
currentPos = currentPos.up();
if (world.getBlockState(currentPos).isOf(Blocks.LAVA)) {
if (world.getBlockState(currentPos.up()).isAir()) {
world.setBlockState(currentPos.up(), blockState, 0x10);
currentPos = currentPos.up();
return true;
}
}
}
return false;
}
}

View File

@ -1,20 +0,0 @@
package de.jottyfan.minecraft.quickiefabric.world.gen.feature;
import com.mojang.serialization.Codec;
import com.mojang.serialization.codecs.RecordCodecBuilder;
import net.minecraft.util.Identifier;
import net.minecraft.world.gen.feature.FeatureConfig;
/**
*
* @author jotty
*
*/
@Deprecated
public record SulforpadFeatureConfig(Identifier blockId) implements FeatureConfig {
public static Codec<SulforpadFeatureConfig> CODEC = RecordCodecBuilder
.create(o -> o.group(Identifier.CODEC.fieldOf("blockID").forGetter(SulforpadFeatureConfig::blockId)).apply(o,
SulforpadFeatureConfig::new));
}

View File

@ -1,7 +0,0 @@
{
"variants": {
"": {
"model": "quickiefabric:block/blockquickiepowder"
}
}
}

View File

@ -1,12 +0,0 @@
{
"variants": {
"age=0": { "model": "quickiefabric:block/canolaplant0" },
"age=1": { "model": "quickiefabric:block/canolaplant1" },
"age=2": { "model": "quickiefabric:block/canolaplant2" },
"age=3": { "model": "quickiefabric:block/canolaplant3" },
"age=4": { "model": "quickiefabric:block/canolaplant4" },
"age=5": { "model": "quickiefabric:block/canolaplant5" },
"age=6": { "model": "quickiefabric:block/canolaplant6" },
"age=7": { "model": "quickiefabric:block/canolaplant7" }
}
}

View File

@ -2,11 +2,11 @@
"variants": { "variants": {
"age=0": { "model": "quickiefabric:block/cottonplant0" }, "age=0": { "model": "quickiefabric:block/cottonplant0" },
"age=1": { "model": "quickiefabric:block/cottonplant1" }, "age=1": { "model": "quickiefabric:block/cottonplant1" },
"age=2": { "model": "quickiefabric:block/cottonplant2" }, "age=2": { "model": "quickiefabric:block/cottonplant1" },
"age=3": { "model": "quickiefabric:block/cottonplant3" }, "age=3": { "model": "quickiefabric:block/cottonplant2" },
"age=4": { "model": "quickiefabric:block/cottonplant4" }, "age=4": { "model": "quickiefabric:block/cottonplant2" },
"age=5": { "model": "quickiefabric:block/cottonplant5" }, "age=5": { "model": "quickiefabric:block/cottonplant3" },
"age=6": { "model": "quickiefabric:block/cottonplant6" }, "age=6": { "model": "quickiefabric:block/cottonplant3" },
"age=7": { "model": "quickiefabric:block/cottonplant7" } "age=7": { "model": "quickiefabric:block/cottonplant4" }
} }
} }

View File

@ -1,12 +0,0 @@
{
"variants": {
"age=0": { "model": "quickiefabric:block/sulforpad0" },
"age=1": { "model": "quickiefabric:block/sulforpad0" },
"age=2": { "model": "quickiefabric:block/sulforpad0" },
"age=3": { "model": "quickiefabric:block/sulforpad0" },
"age=4": { "model": "quickiefabric:block/sulforpad1" },
"age=5": { "model": "quickiefabric:block/sulforpad1" },
"age=6": { "model": "quickiefabric:block/sulforpad1" },
"age=7": { "model": "quickiefabric:block/sulforpad2" }
}
}

View File

@ -6,12 +6,6 @@
"item.quickiefabric.speedpowderhoe": "Fluchtpulverfeldhacke", "item.quickiefabric.speedpowderhoe": "Fluchtpulverfeldhacke",
"item.quickiefabric.speedpowderwaterhoe": "bewässerte Fluchtpulverfeldhacke", "item.quickiefabric.speedpowderwaterhoe": "bewässerte Fluchtpulverfeldhacke",
"item.quickiefabric.speedpowder": "Fluchtpulver", "item.quickiefabric.speedpowder": "Fluchtpulver",
"item.quickiefabric.quickiepowder": "Eilpulver",
"item.quickiefabric.quickiepowderaxe": "Eilpulveraxt",
"item.quickiefabric.quickiepowderpickaxe": "Eilpulverspitzhacke",
"item.quickiefabric.quickiepowdershovel": "Eilpulverschaufel",
"item.quickiefabric.quickiepowderhoe": "Eilpulverfeldhacke",
"item.quickiefabric.quickiepowderwaterhoe": "bewässerte Eilpulverfeldhacke",
"item.quickiefabric.sulphor": "Schwefel", "item.quickiefabric.sulphor": "Schwefel",
"item.quickiefabric.salpeter": "Salpeter", "item.quickiefabric.salpeter": "Salpeter",
"item.quickiefabric.construction0": "leerer Bauplan", "item.quickiefabric.construction0": "leerer Bauplan",
@ -40,14 +34,7 @@
"item.quickiefabric.carrotstack": "Karottenbündel", "item.quickiefabric.carrotstack": "Karottenbündel",
"item.quickiefabric.cotton": "Baumwolle", "item.quickiefabric.cotton": "Baumwolle",
"item.quickiefabric.cottonseed": "Baumwollsaat", "item.quickiefabric.cottonseed": "Baumwollsaat",
"item.quickiefabric.canola": "Raps",
"item.quickiefabric.canolaseed": "Rapssaat",
"item.quickiefabric.canolabottle": "Rapsöl",
"item.quickiefabric.canolabottlestack": "Rapsölsammlung",
"item.quickiefabric.stub": "Stummel", "item.quickiefabric.stub": "Stummel",
"item.quickiefabric.oxidizedcopperpowder": "oxidiertes Kupferpulver",
"item.quickiefabric.speedingot": "Fluchtpulverbarren",
"item.quickiefabric.quickieingot": "Eilpulverbarren",
"block.quickiefabric.orenethersulphor": "Nether-Schwefel", "block.quickiefabric.orenethersulphor": "Nether-Schwefel",
"block.quickiefabric.oresalpeter": "Salpetererz", "block.quickiefabric.oresalpeter": "Salpetererz",
"block.quickiefabric.oresandsalpeter": "Salpetergestein", "block.quickiefabric.oresandsalpeter": "Salpetergestein",
@ -72,7 +59,6 @@
"block.quickiefabric.blocksulphor": "Schwefelblock", "block.quickiefabric.blocksulphor": "Schwefelblock",
"block.quickiefabric.blocksalpeter": "Salpeterblock", "block.quickiefabric.blocksalpeter": "Salpeterblock",
"block.quickiefabric.blockspeedpowder": "Fluchtpulverblock", "block.quickiefabric.blockspeedpowder": "Fluchtpulverblock",
"block.quickiefabric.blockquickiepowder": "Eilpulverblock",
"block.quickiefabric.drill": "Bohrer", "block.quickiefabric.drill": "Bohrer",
"block.quickiefabric.drilleast": "Ost-Bohrer", "block.quickiefabric.drilleast": "Ost-Bohrer",
"block.quickiefabric.drillsouth": "Süd-Bohrer", "block.quickiefabric.drillsouth": "Süd-Bohrer",
@ -86,7 +72,6 @@
"block.quickiefabric.blockstackernorth": "Nordstapler", "block.quickiefabric.blockstackernorth": "Nordstapler",
"block.quickiefabric.blockstackersouth": "Südstapler", "block.quickiefabric.blockstackersouth": "Südstapler",
"block.quickiefabric.blockspreader": "Blockverteiler", "block.quickiefabric.blockspreader": "Blockverteiler",
"block.quickiefabric.sulforpad": "Schwefelablagerung",
"container.quickiefabric.backpack": "Rucksack", "container.quickiefabric.backpack": "Rucksack",
"container.quickiefabric.blockstacker": "Blockstapler", "container.quickiefabric.blockstacker": "Blockstapler",
"msg.buildingplan.start": "beginne Konstruktionsaufnahme bei %s,%s,%s", "msg.buildingplan.start": "beginne Konstruktionsaufnahme bei %s,%s,%s",
@ -105,6 +90,5 @@
"msg.backpack.transfer.filled": "Der Rucksack wurde befüllt.", "msg.backpack.transfer.filled": "Der Rucksack wurde befüllt.",
"msg.backpack.transfer.cleared": "Der Rucksackinhalt wurde soweit möglich geleert.", "msg.backpack.transfer.cleared": "Der Rucksackinhalt wurde soweit möglich geleert.",
"msg.backpack.transfer.cancel": "Entweder der Rucksack oder die Kiste sind nicht komplett leer.", "msg.backpack.transfer.cancel": "Entweder der Rucksack oder die Kiste sind nicht komplett leer.",
"msg.drill.fuelinfo": "Der Bohrer hat noch eine Ladung für den Abbau von %s Blöcken. Er kann mit Rapsöl aufgeladen werden.",
"error.unleveling.inventory.full": "Es ist kein Platz mehr frei, um die Aufwertungen abzulegen." "error.unleveling.inventory.full": "Es ist kein Platz mehr frei, um die Aufwertungen abzulegen."
} }

View File

@ -6,12 +6,6 @@
"item.quickiefabric.speedpowderhoe": "speedpowder hoe", "item.quickiefabric.speedpowderhoe": "speedpowder hoe",
"item.quickiefabric.speedpowderwaterhoe": "watered speedpowder hoe", "item.quickiefabric.speedpowderwaterhoe": "watered speedpowder hoe",
"item.quickiefabric.speedpowder": "speedpowder", "item.quickiefabric.speedpowder": "speedpowder",
"item.quickiefabric.quickiepowder": "hurrypowder",
"item.quickiefabric.quickiepowderaxe": "hurrypowder axe",
"item.quickiefabric.quickiepowderpickaxe": "hurrypowder pickaxe",
"item.quickiefabric.quickiepowdershovel": "hurrypowder shovel",
"item.quickiefabric.quickiepowderhoe": "hurrypowder hoe",
"item.quickiefabric.quickiepowderwaterhoe": "watered hurrypowder hoe",
"item.quickiefabric.sulphor": "sulfur", "item.quickiefabric.sulphor": "sulfur",
"item.quickiefabric.salpeter": "salpeter", "item.quickiefabric.salpeter": "salpeter",
"item.quickiefabric.construction0": "empty building plan", "item.quickiefabric.construction0": "empty building plan",
@ -40,14 +34,7 @@
"item.quickiefabric.carrotstack": "a bundle of carrots", "item.quickiefabric.carrotstack": "a bundle of carrots",
"item.quickiefabric.cotton": "cotton", "item.quickiefabric.cotton": "cotton",
"item.quickiefabric.cottonseed": "cotton seed", "item.quickiefabric.cottonseed": "cotton seed",
"item.quickiefabric.canola": "canola",
"item.quickiefabric.canolaseed": "canola seed",
"item.quickiefabric.canolabottle": "canola oil",
"item.quickiefabric.canolabottlestack": "canola oil collection",
"item.quickiefabric.stub": "stub", "item.quickiefabric.stub": "stub",
"item.quickiefabric.oxidizedcopperpowder": "oxidized copper powder",
"item.quickiefabric.speedingot": "Speedpowderingot",
"item.quickiefabric.quickieingot": "Hurrypowderingot",
"block.quickiefabric.orenethersulphor": "nether sulfur", "block.quickiefabric.orenethersulphor": "nether sulfur",
"block.quickiefabric.oresalpeter": "salpeter ore", "block.quickiefabric.oresalpeter": "salpeter ore",
"block.quickiefabric.oresandsalpeter": "salpeter stone", "block.quickiefabric.oresandsalpeter": "salpeter stone",
@ -72,7 +59,6 @@
"block.quickiefabric.blocksulphor": "block of sulfur", "block.quickiefabric.blocksulphor": "block of sulfur",
"block.quickiefabric.blocksalpeter": "block of salpeter", "block.quickiefabric.blocksalpeter": "block of salpeter",
"block.quickiefabric.blockspeedpowder": "block of speedpowder", "block.quickiefabric.blockspeedpowder": "block of speedpowder",
"block.quickiefabric.blockquickiepowder": "block of hurrypowder",
"block.quickiefabric.drill": "drill", "block.quickiefabric.drill": "drill",
"block.quickiefabric.drilleast": "east drill", "block.quickiefabric.drilleast": "east drill",
"block.quickiefabric.drillsouth": "south drill", "block.quickiefabric.drillsouth": "south drill",
@ -86,7 +72,6 @@
"block.quickiefabric.blockstackernorth": "north stacker", "block.quickiefabric.blockstackernorth": "north stacker",
"block.quickiefabric.blockstackersouth": "south stacker", "block.quickiefabric.blockstackersouth": "south stacker",
"block.quickiefabric.blockspreader": "block spreader", "block.quickiefabric.blockspreader": "block spreader",
"block.quickiefabric.sulforpad": "sulphur deposition",
"container.quickiefabric.backpack": "backpack", "container.quickiefabric.backpack": "backpack",
"container.quickiefabric.blockstacker": "block stacker", "container.quickiefabric.blockstacker": "block stacker",
"msg.buildingplan.start": "started recording of construction at %s,%s,%s", "msg.buildingplan.start": "started recording of construction at %s,%s,%s",
@ -105,6 +90,5 @@
"msg.backpack.transfer.filled": "Filled the backpack.", "msg.backpack.transfer.filled": "Filled the backpack.",
"msg.backpack.transfer.cleared": "Cleared the backpack as much as possible.", "msg.backpack.transfer.cleared": "Cleared the backpack as much as possible.",
"msg.backpack.transfer.cancel": "Eigther backpack or chest are not completely empty.", "msg.backpack.transfer.cancel": "Eigther backpack or chest are not completely empty.",
"msg.drill.fuelinfo": "The drill still has a charge for mining %s blocks. It can be charged with canola oil.",
"error.unleveling.inventory.full": "There is no free stack in your inventory for the level ups." "error.unleveling.inventory.full": "There is no free stack in your inventory for the level ups."
} }

View File

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

View File

@ -1,6 +0,0 @@
{
"parent":"block/cross",
"textures":{
"cross":"quickiefabric:block/canolaplant0"
}
}

View File

@ -1,6 +0,0 @@
{
"parent":"block/cross",
"textures":{
"cross":"quickiefabric:block/canolaplant1"
}
}

View File

@ -1,6 +0,0 @@
{
"parent":"block/cross",
"textures":{
"cross":"quickiefabric:block/canolaplant2"
}
}

View File

@ -1,6 +0,0 @@
{
"parent":"block/cross",
"textures":{
"cross":"quickiefabric:block/canolaplant3"
}
}

View File

@ -1,6 +0,0 @@
{
"parent":"block/cross",
"textures":{
"cross":"quickiefabric:block/canolaplant4"
}
}

View File

@ -1,6 +0,0 @@
{
"parent":"block/cross",
"textures":{
"cross":"quickiefabric:block/canolaplant5"
}
}

View File

@ -1,6 +0,0 @@
{
"parent":"block/cross",
"textures":{
"cross":"quickiefabric:block/canolaplant6"
}
}

View File

@ -1,6 +0,0 @@
{
"parent":"block/cross",
"textures":{
"cross":"quickiefabric:block/canolaplant7"
}
}

View File

@ -1,6 +0,0 @@
{
"parent":"block/cross",
"textures":{
"cross":"quickiefabric:block/cottonplant5"
}
}

View File

@ -1,6 +0,0 @@
{
"parent":"block/cross",
"textures":{
"cross":"quickiefabric:block/cottonplant6"
}
}

View File

@ -1,6 +0,0 @@
{
"parent":"block/cross",
"textures":{
"cross":"quickiefabric:block/cottonplant7"
}
}

View File

@ -1,16 +0,0 @@
{
"ambientocclusion": false,
"textures": {
"particle": "quickiefabric:block/sulforpad0",
"texture": "quickiefabric:block/sulforpad0"
},
"elements": [
{ "from": [ 0, 0.25, 0 ],
"to": [ 16, 0.25, 16 ],
"faces": {
"down": { "uv": [ 0, 16, 16, 0 ], "texture": "#texture" },
"up": { "uv": [ 0, 0, 16, 16 ], "texture": "#texture" }
}
}
]
}

View File

@ -1,16 +0,0 @@
{
"ambientocclusion": false,
"textures": {
"particle": "quickiefabric:block/sulforpad1",
"texture": "quickiefabric:block/sulforpad1"
},
"elements": [
{ "from": [ 0, 0.25, 0 ],
"to": [ 16, 0.25, 16 ],
"faces": {
"down": { "uv": [ 0, 16, 16, 0 ], "texture": "#texture" },
"up": { "uv": [ 0, 0, 16, 16 ], "texture": "#texture" }
}
}
]
}

View File

@ -1,16 +0,0 @@
{
"ambientocclusion": false,
"textures": {
"particle": "quickiefabric:block/sulforpad2",
"texture": "quickiefabric:block/sulforpad2"
},
"elements": [
{ "from": [ 0, 0.25, 0 ],
"to": [ 16, 0.25, 16 ],
"faces": {
"down": { "uv": [ 0, 16, 16, 0 ], "texture": "#texture" },
"up": { "uv": [ 0, 0, 16, 16 ], "texture": "#texture" }
}
}
]
}

View File

@ -1,10 +0,0 @@
{
"parent": "quickiefabric:block/blockquickiepowder",
"display": {
"thirdperson": {
"rotation": [ 10, -45, 170 ],
"translation": [ 0, 1.5, -2.75 ],
"scale": [ 0.375, 0.375, 0.375 ]
}
}
}

View File

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

View File

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

View File

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

View File

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

View File

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

View File

@ -1,6 +0,0 @@
{
"parent": "item/coal",
"textures": {
"layer0": "quickiefabric:item/oxidizedcopperpowder"
}
}

View File

@ -1,6 +0,0 @@
{
"parent": "item/coal",
"textures": {
"layer0": "quickiefabric:item/quickieingot"
}
}

View File

@ -1,6 +0,0 @@
{
"parent": "item/coal",
"textures": {
"layer0": "quickiefabric:item/quickiepowder"
}
}

View File

@ -1,6 +0,0 @@
{
"parent": "item/wooden_axe",
"textures": {
"layer0": "quickiefabric:item/quickiepowderaxe"
}
}

View File

@ -1,6 +0,0 @@
{
"parent": "item/wooden_hoe",
"textures": {
"layer0": "quickiefabric:item/quickiepowderhoe"
}
}

View File

@ -1,6 +0,0 @@
{
"parent": "item/wooden_pickaxe",
"textures": {
"layer0": "quickiefabric:item/quickiepowderpickaxe"
}
}

View File

@ -1,6 +0,0 @@
{
"parent": "item/wooden_shovel",
"textures": {
"layer0": "quickiefabric:item/quickiepowdershovel"
}
}

View File

@ -1,6 +0,0 @@
{
"parent": "item/wooden_hoe",
"textures": {
"layer0": "quickiefabric:item/quickiepowderwaterhoe"
}
}

View File

@ -1,6 +0,0 @@
{
"parent": "item/coal",
"textures": {
"layer0": "quickiefabric:item/speedingot"
}
}

View File

@ -1,6 +0,0 @@
{
"parent": "item/coal",
"textures": {
"layer0": "quickiefabric:block/sulforpad2"
}
}

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.9 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 590 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.2 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 603 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.3 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.3 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.4 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.5 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.5 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 5.2 KiB

After

Width:  |  Height:  |  Size: 1.7 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 5.7 KiB

After

Width:  |  Height:  |  Size: 2.1 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 5.7 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 6.3 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.1 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.9 KiB

After

Width:  |  Height:  |  Size: 1.0 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 5.2 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 5.3 KiB

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