From e6acd9460d77935bfcea981ee5dc146ed88b96c0 Mon Sep 17 00:00:00 2001 From: Malte Reents Date: Thu, 14 Mar 2024 15:17:01 +0100 Subject: [PATCH] basic functions for replacing work Es wird ein Block platziert wenn man auf einen Guardian rechtsklicked. Grafiken laden auch --- .../java/modchest/REServerModClient.java | 4 +- .../java/modchest/util/initializer.java | 33 ++ .../modchest/block/custom/denkMalBlock.java | 15 + .../block/custom/steeringWheelBlock.java | 5 +- src/main/java/modchest/block/modBlocks.java | 3 +- .../modchest/blockstates/denk_mal_block.json | 5 + .../models/block/denk_mal_block_an.json | 87 +++++ .../models/block/denk_mal_block_aus.json | 324 ++++++++++++++++++ .../modchest/models/block/senk_mal_block.json | 6 - .../modchest/models/item/denk_mal_block.json | 3 + .../textures/block/denk_mal_block.png | Bin 0 -> 2218 bytes .../textures/block/denk_mal_block_basis.png | Bin 0 -> 2610 bytes .../textures/block/denk_mal_block_kern_an.png | Bin 0 -> 1864 bytes .../block/denk_mal_block_kern_aus.png | Bin 0 -> 1847 bytes 14 files changed, 474 insertions(+), 11 deletions(-) create mode 100644 src/client/java/modchest/util/initializer.java create mode 100644 src/main/resources/assets/modchest/blockstates/denk_mal_block.json create mode 100644 src/main/resources/assets/modchest/models/block/denk_mal_block_an.json create mode 100644 src/main/resources/assets/modchest/models/block/denk_mal_block_aus.json delete mode 100644 src/main/resources/assets/modchest/models/block/senk_mal_block.json create mode 100644 src/main/resources/assets/modchest/models/item/denk_mal_block.json create mode 100644 src/main/resources/assets/modchest/textures/block/denk_mal_block.png create mode 100644 src/main/resources/assets/modchest/textures/block/denk_mal_block_basis.png create mode 100644 src/main/resources/assets/modchest/textures/block/denk_mal_block_kern_an.png create mode 100644 src/main/resources/assets/modchest/textures/block/denk_mal_block_kern_aus.png diff --git a/src/client/java/modchest/REServerModClient.java b/src/client/java/modchest/REServerModClient.java index 0d18944..2012197 100644 --- a/src/client/java/modchest/REServerModClient.java +++ b/src/client/java/modchest/REServerModClient.java @@ -4,14 +4,16 @@ import modchest.networking.modNetworkingClient; import net.fabricmc.api.ClientModInitializer; import org.slf4j.Logger; import org.slf4j.LoggerFactory; +import modchest.util.initializer; public class REServerModClient implements ClientModInitializer { public static final Logger LOGGER = LoggerFactory.getLogger("modchest"); // Erster Error Logger @Override public void onInitializeClient() { // This entrypoint is suitable for setting up client-specific logic, such as rendering. + initializer.networking(); + initializer.renderer(); - modNetworkingClient.registerC2SPackets(); //Identifier unter denen der Client zuhoert werden registriert LOGGER.info("Modchest-Client successfully loaded!"); } diff --git a/src/client/java/modchest/util/initializer.java b/src/client/java/modchest/util/initializer.java new file mode 100644 index 0000000..186c79a --- /dev/null +++ b/src/client/java/modchest/util/initializer.java @@ -0,0 +1,33 @@ +package modchest.util; + +import modchest.block.entity.modBlockEntities; +import modchest.block.modBlocks; +import modchest.item.modItemGroup; +import modchest.item.modItems; +import modchest.networking.modNetworkingClient; +import net.fabricmc.fabric.api.blockrenderlayer.v1.BlockRenderLayerMap; +import net.minecraft.client.render.RenderLayer; + +public class initializer { + public static void itemGroups() { + //modItemGroup.modchest(); // Item Gruppe fürs Creative-Inventar wird erstellt; In dieser Gruppe sollen + // dann alle Items und Blöcke dieser Mod angezeigt werden + } + + public static void itemsAndBlocks() { + //modItems.setItems(); // die Items werden erstellt + //modBlocks.setBlocks(); // Hier werden die Blöcke erstellt + //modBlockEntities.registerBlockEntities(); // Die Interaktionsmenüs für die Blöcke werden erstellt + } + + public static void events() { //Events, bei denen custom Code ausgefuehrt wird, werden eingefuehrt + } + + public static void networking() { //Identifier unter denen der Server zuhoert werden registriert + modNetworkingClient.registerC2SPackets(); //Identifier unter denen der Client zuhoert werden registriert + } + + public static void renderer() { //Grafikrenderer werden aufgerufen + BlockRenderLayerMap.INSTANCE.putBlock(modBlocks.denk_mal_block, RenderLayer.getTranslucent()); //denk_mal_block bekommt die Faehigkeit, transparente Grafiken zu haben + } +} diff --git a/src/main/java/modchest/block/custom/denkMalBlock.java b/src/main/java/modchest/block/custom/denkMalBlock.java index 2ee23f2..000de6d 100644 --- a/src/main/java/modchest/block/custom/denkMalBlock.java +++ b/src/main/java/modchest/block/custom/denkMalBlock.java @@ -1,13 +1,17 @@ package modchest.block.custom; import net.fabricmc.fabric.api.object.builder.v1.block.FabricBlockSettings; +import net.minecraft.block.BlockRenderType; import net.minecraft.block.BlockState; import net.minecraft.block.BlockWithEntity; +import net.minecraft.block.ShapeContext; import net.minecraft.block.entity.BlockEntity; import net.minecraft.entity.LivingEntity; import net.minecraft.item.ItemStack; import net.minecraft.text.Text; import net.minecraft.util.math.BlockPos; +import net.minecraft.util.shape.VoxelShape; +import net.minecraft.world.BlockView; import net.minecraft.world.World; import net.minecraft.world.explosion.Explosion; import org.jetbrains.annotations.Nullable; @@ -16,6 +20,17 @@ public class denkMalBlock extends BlockWithEntity { //Item soll nciht crafta public denkMalBlock(FabricBlockSettings fabricBlockSettings) { super(fabricBlockSettings); } + @Override + public BlockRenderType getRenderType(BlockState state) { //ruft auf, die Grafik zu rendern + return BlockRenderType.MODEL; + } + + private static VoxelShape SHAPE = BlockWithEntity.createCuboidShape(0, 0, 0, 16, 32, 16); //Erstellt eine approximation des Koerpers; braucht weniger Leistung als ein Volles Rendern + + @Override + public VoxelShape getOutlineShape(BlockState state, BlockView world, BlockPos pos, ShapeContext context) { //Beschreibt die tatsaechlichen Konturen + return SHAPE; + } @Nullable @Override //Später relevant für das Interface diff --git a/src/main/java/modchest/block/custom/steeringWheelBlock.java b/src/main/java/modchest/block/custom/steeringWheelBlock.java index 35b1e25..c814823 100644 --- a/src/main/java/modchest/block/custom/steeringWheelBlock.java +++ b/src/main/java/modchest/block/custom/steeringWheelBlock.java @@ -25,10 +25,8 @@ public class steeringWheelBlock extends BlockWithEntity implements BlockEntityPr super(settings); } - - /* stuff benötigt um das Interaktionsmenü zu laden!*/ @Override - public BlockRenderType getRenderType(BlockState state) { + public BlockRenderType getRenderType(BlockState state) {//ruft auf, die Grafik zu rendern return BlockRenderType.MODEL; } @@ -44,6 +42,7 @@ public class steeringWheelBlock extends BlockWithEntity implements BlockEntityPr } } + /* stuff benötigt um das Interaktionsmenü zu laden!*/ @Override //wird bei einem rechtsklick aufgerufen (ersellt das Blockentity) public ActionResult onUse(BlockState state, World world, BlockPos pos, PlayerEntity player, Hand hand, BlockHitResult hit) { if (!world.isClient) { diff --git a/src/main/java/modchest/block/modBlocks.java b/src/main/java/modchest/block/modBlocks.java index 36ecdae..5e7a1a4 100644 --- a/src/main/java/modchest/block/modBlocks.java +++ b/src/main/java/modchest/block/modBlocks.java @@ -7,6 +7,7 @@ import modchest.REServerMod; import net.fabricmc.fabric.api.item.v1.FabricItemSettings; import net.fabricmc.fabric.api.object.builder.v1.block.FabricBlockSettings; import net.minecraft.block.Block; +import net.minecraft.block.Blocks; import net.minecraft.block.Material; import net.minecraft.item.BlockItem; import net.minecraft.item.ItemGroup; @@ -24,7 +25,7 @@ public class modBlocks { modItemGroup.modchest); denk_mal_block = registerBlock("denk_mal_block", - new denkMalBlock(FabricBlockSettings.of(Material.METAL).strength(1.0f).requiresTool()), + new denkMalBlock(FabricBlockSettings.copyOf(Blocks.GLASS).nonOpaque()), modItemGroup.modchest); } diff --git a/src/main/resources/assets/modchest/blockstates/denk_mal_block.json b/src/main/resources/assets/modchest/blockstates/denk_mal_block.json new file mode 100644 index 0000000..49bafc0 --- /dev/null +++ b/src/main/resources/assets/modchest/blockstates/denk_mal_block.json @@ -0,0 +1,5 @@ +{ + "variants": { + "": { "model": "modchest:block/denk_mal_block_aus"} + } +} \ No newline at end of file diff --git a/src/main/resources/assets/modchest/models/block/denk_mal_block_an.json b/src/main/resources/assets/modchest/models/block/denk_mal_block_an.json new file mode 100644 index 0000000..b765d7f --- /dev/null +++ b/src/main/resources/assets/modchest/models/block/denk_mal_block_an.json @@ -0,0 +1,87 @@ +{ + "credit": "Made with Blockbench", + "texture_size": [64, 64], + "textures": { + "1": "modchest:block/denk_mal_block", + "3": "modchest:block/denk_mal_block_basis", + "particle": "modchest:block/denk_mal_block_kern_an" + }, + "elements": [ + { + "from": [0, 0, 0], + "to": [16, 16, 16], + "faces": { + "north": {"uv": [0, 0, 4, 4], "texture": "#3"}, + "east": {"uv": [0, 4, 4, 8], "texture": "#3"}, + "south": {"uv": [4, 0, 8, 4], "texture": "#3"}, + "west": {"uv": [4, 4, 8, 8], "texture": "#3"}, + "up": {"uv": [4, 12, 0, 8], "texture": "#3"}, + "down": {"uv": [12, 0, 8, 4], "texture": "#3"} + } + }, + { + "from": [0, 16, 0], + "to": [16, 32, 16], + "faces": { + "north": {"uv": [0, 0, 4, 4], "texture": "#1"}, + "east": {"uv": [0, 4, 4, 8], "texture": "#1"}, + "south": {"uv": [4, 0, 8, 4], "texture": "#1"}, + "west": {"uv": [4, 4, 8, 8], "texture": "#1"}, + "up": {"uv": [4, 12, 0, 8], "texture": "#1"}, + "down": {"uv": [12, 0, 8, 4], "texture": "#1"} + } + }, + { + "from": [3, 18, 3], + "to": [13, 29, 13], + "faces": { + "north": {"uv": [0, 0, 5, 5.5], "texture": "#missing"}, + "east": {"uv": [5, 0, 10, 5.5], "texture": "#missing"}, + "south": {"uv": [0, 5.5, 5, 11], "texture": "#missing"}, + "west": {"uv": [5, 5.5, 10, 11], "texture": "#missing"}, + "up": {"uv": [15, 5, 10, 0], "texture": "#missing"}, + "down": {"uv": [15, 5, 10, 10], "texture": "#missing"} + } + } + ], + "display": { + "thirdperson_righthand": { + "scale": [0.5, 0.5, 0.5] + }, + "thirdperson_lefthand": { + "scale": [0.5, 0.5, 0.5] + }, + "firstperson_righthand": { + "rotation": [1, 0, 0], + "translation": [2.5, -1.5, 0], + "scale": [0.5, 0.5, 0.5] + }, + "firstperson_lefthand": { + "translation": [2.5, -1.5, 0], + "scale": [0.5, 0.5, 0.5] + }, + "ground": { + "scale": [0.5, 0.5, 0.5] + }, + "gui": { + "translation": [0, -3.25, 0], + "scale": [0.5, 0.5, 0.5] + }, + "head": { + "translation": [0, 11.5, 0], + "scale": [0.5, 0.5, 0.5] + }, + "fixed": { + "translation": [0, -1.75, 0], + "scale": [0.5, 0.5, 0.5] + } + }, + "groups": [ + { + "name": "VoxelShapes", + "origin": [8, 8, 8], + "color": 0, + "children": [0, 1, 2] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/assets/modchest/models/block/denk_mal_block_aus.json b/src/main/resources/assets/modchest/models/block/denk_mal_block_aus.json new file mode 100644 index 0000000..62440df --- /dev/null +++ b/src/main/resources/assets/modchest/models/block/denk_mal_block_aus.json @@ -0,0 +1,324 @@ +{ + "parent": "block/cube_all", + "credit": "Made with Blockbench", + "texture_size": [ + 64, + 64 + ], + "textures": { + "1": "modchest:block/denk_mal_block", + "2": "modchest:block/denk_mal_block_kern_aus", + "3": "modchest:block/denk_mal_block_basis", + "particles": "modchest:block/denk_mal_block_basis" + }, + "elements": [ + { + "from": [ + 0, + 0, + 0 + ], + "to": [ + 16, + 16, + 16 + ], + "faces": { + "north": { + "uv": [ + 0, + 0, + 4, + 4 + ], + "texture": "#3" + }, + "east": { + "uv": [ + 0, + 4, + 4, + 8 + ], + "texture": "#3" + }, + "south": { + "uv": [ + 4, + 0, + 8, + 4 + ], + "texture": "#3" + }, + "west": { + "uv": [ + 4, + 4, + 8, + 8 + ], + "texture": "#3" + }, + "up": { + "uv": [ + 4, + 12, + 0, + 8 + ], + "texture": "#3" + }, + "down": { + "uv": [ + 12, + 0, + 8, + 4 + ], + "texture": "#3" + } + } + }, + { + "from": [ + 0, + 16, + 0 + ], + "to": [ + 16, + 32, + 16 + ], + "faces": { + "north": { + "uv": [ + 0, + 0, + 4, + 4 + ], + "texture": "#1" + }, + "east": { + "uv": [ + 0, + 4, + 4, + 8 + ], + "texture": "#1" + }, + "south": { + "uv": [ + 4, + 0, + 8, + 4 + ], + "texture": "#1" + }, + "west": { + "uv": [ + 4, + 4, + 8, + 8 + ], + "texture": "#1" + }, + "up": { + "uv": [ + 4, + 12, + 0, + 8 + ], + "texture": "#1" + }, + "down": { + "uv": [ + 12, + 0, + 8, + 4 + ], + "texture": "#1" + } + } + }, + { + "from": [ + 3, + 18, + 3 + ], + "to": [ + 13, + 29, + 13 + ], + "faces": { + "north": { + "uv": [ + 0, + 0, + 5, + 5.5 + ], + "texture": "#2" + }, + "east": { + "uv": [ + 5, + 0, + 10, + 5.5 + ], + "texture": "#2" + }, + "south": { + "uv": [ + 0, + 5.5, + 5, + 11 + ], + "texture": "#2" + }, + "west": { + "uv": [ + 5, + 5.5, + 10, + 11 + ], + "texture": "#2" + }, + "up": { + "uv": [ + 15, + 5, + 10, + 0 + ], + "texture": "#2" + }, + "down": { + "uv": [ + 15, + 5, + 10, + 10 + ], + "texture": "#2" + } + } + } + ], + "display": { + "thirdperson_righthand": { + "scale": [ + 0.5, + 0.5, + 0.5 + ] + }, + "thirdperson_lefthand": { + "scale": [ + 0.5, + 0.5, + 0.5 + ] + }, + "firstperson_righthand": { + "rotation": [ + 1, + 0, + 0 + ], + "translation": [ + 2.5, + -1.5, + 0 + ], + "scale": [ + 0.5, + 0.5, + 0.5 + ] + }, + "firstperson_lefthand": { + "translation": [ + 2.5, + -1.5, + 0 + ], + "scale": [ + 0.5, + 0.5, + 0.5 + ] + }, + "ground": { + "scale": [ + 0.5, + 0.5, + 0.5 + ] + }, + "gui": { + "translation": [ + 0, + -3.25, + 0 + ], + "scale": [ + 0.5, + 0.5, + 0.5 + ] + }, + "head": { + "translation": [ + 0, + 11.5, + 0 + ], + "scale": [ + 0.5, + 0.5, + 0.5 + ] + }, + "fixed": { + "translation": [ + 0, + -1.75, + 0 + ], + "scale": [ + 0.5, + 0.5, + 0.5 + ] + } + }, + "groups": [ + { + "name": "VoxelShapes", + "origin": [ + 8, + 8, + 8 + ], + "color": 0, + "children": [ + 0, + 1, + 2 + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/assets/modchest/models/block/senk_mal_block.json b/src/main/resources/assets/modchest/models/block/senk_mal_block.json deleted file mode 100644 index 9f0a582..0000000 --- a/src/main/resources/assets/modchest/models/block/senk_mal_block.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "parent": "block/cube_all", - "textures": { - "all": "modchest:block/denk_mal_block" - } -} \ No newline at end of file diff --git a/src/main/resources/assets/modchest/models/item/denk_mal_block.json b/src/main/resources/assets/modchest/models/item/denk_mal_block.json new file mode 100644 index 0000000..c9b0e8c --- /dev/null +++ b/src/main/resources/assets/modchest/models/item/denk_mal_block.json @@ -0,0 +1,3 @@ +{ + "parent": "modchest:block/denk_mal_block" +} \ No newline at end of file diff --git a/src/main/resources/assets/modchest/textures/block/denk_mal_block.png b/src/main/resources/assets/modchest/textures/block/denk_mal_block.png new file mode 100644 index 0000000000000000000000000000000000000000..8db9cf07a650b2564f1b8255db9f93fe424df946 GIT binary patch literal 2218 zcmV;b2vzrqP)Coq8EKf$=8`Y{-1DKk)Gt<}?=+V%Cfp^u|A&RPW^no##Rv z^JNM!n-R;6IO2W?4qD&dCbQ_VrhgK}K9p{4Qud>u#I2kL{^|0-WysR@zwO=T2q+FhyY+BT~h?FmP! zuWfH#@VdgPK{Q%pUb80bI$!8tVX=Lqqb>1^sm?hIhSFkou>ll|lU(yuMin)4zw1JN z7>raMGVCV+QR}>8=85G905*2@-s@v~$YhCJ9RFz5f+36X#dW`UoSDCJDkI@uSFAlj z%yQr>$!&cP0R#@i*bg9u4HDOT=by;cxk7do-18FQOpHXEc2`bjw7#|Rt@bsI53IjE zu_u7Lak?JBuo#g7K=z*EcxANu!Xr6*_k2`L=SxB8%syziWQpY}Sl`-s@UfoW-vbEs z8de3+(bCwRw|C>Jyfr1pc_~x-etys5hL(kY1~8-9nI^q^CPm5=tSu2v-pzZf?!$_F zg=Qw1%`?x;LY)h{u25~MaL8Y=;g*X>0XB9Gd^Or(VJ^bQw)fV0afpEWd>nRe-PiQw zi$^X1Fvxr0ON|2-NiqQE?8;y`^)rCZ?R^(cCJeGcgV3Ovavp$W_x?*Q3?3fMjI9`N znp0@UOGOCOOdPbgG;ZG5-Iq#srT&IzZ?dOvj+v|WI~Uv)MLK<+Fy?_R$l064k&R`3 zuCVfM;6<>pQUp;94$!9?9&K%UwWBR@lbJ?3TAJ>w8VkR3rr=}ej{|dXWOH$p>`vW< zxQU9Y$0Qy&*{Z|Ehfo|&XxEwYfR5J2bpVgtS$F)5%Fuhn35-c+ax+u1C)I;lZS3N2 zIobX=<}v`G{UwN@C_=-IE@4TWudu>bn^$JgyoRF4+!-GcK$1l}4y=uCtv@l|^n;1t z%s5nFze|Ra-Kkdq6M7r`Uhf!|(Tu6V;6}j!@OR9zh615ul9!oQf*nCxDl{Om$4rY2 zKOf^m97BS)y=k_vD#7grGl9Lp)xa=txT7_(Y&r)Z1kEUo-PB8EzRj<0PB*OfZymEK@tH5*V4vczmW$f2Pswgk{{pDYdIFd>8oM z_~DDu*3?V_D|{hUB3vvt68KC(laWL$xr&N(W$rbA3EpT-8>*Sw@a*CYs~XDqoa+If z#*BaC;;Yhi*}U_JD3Uk(Y!*5lIA^xFN@G=ph~;cHUKcDmSU2V4^9AIz@;sY3p`|}= zYaT2_?7eCYEnd5}u;QkqX}<$P%-)-L$LEXSV(^(<^_|`QFX0)@&Pv}C-MT0(&u}4r zONql3UYHcrLhdE8?Edr`lQjn;6>CnOVESK!&OE&U(T)Q(8@Khp)7jIz_K9tSwYi8r z>=HUv+V1R0txI;Nc14l7GucP?FG?%42W4uDc6=}c_;yL6C<5nX8Gz{4`V$K5pO}7` zb;JG1uGAkox9)42Ogvr{?w>fejBN)R!W9GCCfYtf811W?Ucaj~Pt_Hf1-)97)&U}4rZob1pNfm}&f@tVyNi3hv z0SFDdTvEMoI}JZ7uQ?b8&3sC7dvLm3(C@uf$@yBv!6M|-UJOdOj@HD==?tJ~l0AI| z@6ji_`yMG}U#0_RXtYrAc!}#vjgx7pP_azY{s)I*ab{L{J}xHRJ^C`>@enwgT@ z2NpfPWq$(zvT1*f6^k>koR_4Jccs2g*8eo?;yVB^<-RR;p5mO8^Zs1>nx@yxF<;K# zcCtm&zL+T%XV~re2)yHWl5+r(O?xU^ETPaR`3PLBIq}W~_W@w~_^kBm91?>41)#Gl zb&->X*S9uKTH$@Pwei`B@1FSRWVT-h9A57L1Wxrame)R=l;7QRKH^Na3SbOdhFJQ< zwvTcuh5(ps;Ouqn+~ANc1qh@*JWFF&@np2)Ku+~~7rTP9$n%8|(}_)+EVy^Ix`3{H z#1`n{v(&G1Mkq;pYx;L4yZc|2*~=bV4!Q=BcIYVZUt}3)!5gvpYr$?r)PseJEw2G9 sQ>ILrGG)q?DO09QnKEU{lsO;xAFaHR?ZF5rD*ylh07*qoM6N<$f&eE-n*aa+ literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/modchest/textures/block/denk_mal_block_basis.png b/src/main/resources/assets/modchest/textures/block/denk_mal_block_basis.png new file mode 100644 index 0000000000000000000000000000000000000000..0fdf5b43a0b25b4e99b8835f84b3e9309728742d GIT binary patch literal 2610 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 literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/modchest/textures/block/denk_mal_block_kern_an.png b/src/main/resources/assets/modchest/textures/block/denk_mal_block_kern_an.png new file mode 100644 index 0000000000000000000000000000000000000000..0335f71ec5907da667cd4f75e38fd9b8b5568347 GIT binary patch literal 1864 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 literal 0 HcmV?d00001