You are not logged in.

  • Login
Bitte besucht unser neues Forum unter https://forum.nitrado.net | Please visit our new Forum at https://forum.nitrado.net

Dear visitor, welcome to Nitrado.net Prepaid Gameserver Community-Support - Archiv. If this is your first visit here, please read the Help. It explains in detail how this page works. To use all features of this page, you should consider registering. Please use the registration form, to register here or read more information about the registration process. If you are already registered, please login here.

CreepieMC

User / Kunde

  • "CreepieMC" started this thread

Posts: 263

  • Send private message

1

Tuesday, November 11th 2014, 11:59am

Kann man in Minecraft eine Schwerelosigkeit Coden ?

Hey,

ich weiß nicht wie man die Schwerelosigkeit in Minecraft ändern kann(bzw. Coden).
Wird das mit einem Event ausgeführt oder kann man das nicht ändern, habe das so an Effecten gedacht.

CodeSchnipsel sind immer erwünscht.

MFG CreeperArmy =)

MinecraftKatze

User / Kunde

  • "MinecraftKatze" is male

Posts: 150

Location: Schweiz(Basel)

Occupation: Elektroinstallateur

  • Send private message

2

Tuesday, November 11th 2014, 2:29pm

Gib dem Spieler fly

TekkitTeam

User / Kunde

  • "TekkitTeam" is male

Posts: 1,349

Location: /home

Thanks: 2

  • Send private message

3

Tuesday, November 11th 2014, 2:53pm

Ich denke er meint Schwerelosigkeit wie auf dem Mond also mit kleiner Anziehungskraft

CreepieMC

User / Kunde

  • "CreepieMC" started this thread

Posts: 263

  • Send private message

4

Tuesday, November 11th 2014, 3:21pm

@TekkitTeam
Genau das meine ich, leider weiß ich nicht wie es geht.

th3t0myb0y

User / Kunde

  • "th3t0myb0y" is male

Posts: 214

Location: Nordrhein-Westfalen

Occupation: Schüler

  • Send private message

5

Tuesday, November 11th 2014, 3:39pm

Das geht bestimmt, aber wäre aufjedenfall mega anstregend. Du müsstest halt ständig die Locations hoch stellen.
"Most good programmers do programming not because they expect to get paid or get adulation by the public, but because it is fun to program."
~Linus Torvalds

UnitedSeventeen

User / Kunde

  • "UnitedSeventeen" is male

Posts: 641

Location: Localhost

Occupation: Nix

  • Send private message

6

Tuesday, November 11th 2014, 3:41pm

Du könntest dem Spieler, wenn er springt, einen kleinen "Kraftvektor" geben, von dem dauerhaft ein bestimmter Wert abgezogen wird ( so entstehen auch Sprungkurven )

mcf_

User / Kunde

Posts: 1,363

Thanks: 22

  • Send private message

7

Tuesday, November 11th 2014, 3:41pm

Es umzusetzen wird (sehr) schwierig sein wenn es möglich ist. Ein Problem wird Bukkit selbst sein. Wenn man dem Spieler kein Fly gibt, wird er gekickt. Wenn er aber Fly hat bringt eine Schwerelosigkeit auch nichtsmehr



Anno35

User / Kunde

Posts: 1,223

Thanks: 3

  • Send private message

8

Tuesday, November 11th 2014, 3:46pm

@mcf_
Ich glaube das kann man mit Player.setAllowFlight(true) verhindern das er gekickt wird, er hat dann sozusagen die Berechtigung zum fliegen, hat aber den eigentlichen Flugmodus nicht.

bubbleguj

User / Kunde

  • "bubbleguj" is male

Posts: 704

Location: Vancouver, Canada

Occupation: Special Projects Assistant

Thanks: 9

  • Send private message

9

Tuesday, November 11th 2014, 5:49pm

@Anno35, dann kann er aber mit Hacks rumfliegen...

@topic Denke, dass es nur schwer, aber möglich ist! Immer beim Sprung (in den Bukkit Foren findest du "SprungEvents") dem Spieler einen Vektor geben der ihn ein wenig hoch wirft. Dann eventuell die Walking oder Flying Speed runter setzten (wirkt sich das auf die Luft aus?).

//Edit
Hab bisschen rumprobiert: http://hastebin.com/bimeciroze.avrasm

Funktioniert nicht sehr flüssig, ist aber auch sehr unsauber und schnell geschrieben. Ein paar Änderungen und es könnte vielleicht klappen :)
Programmer (noun.)
A person who fixed a problem that you don't have, in a way you don't understand.

Algorithm (noun.)
Word used by programmers when they don't want to explain what they did.

This post has been edited 1 times, last edit by "bubbleguj" (Nov 11th 2014, 6:41pm)


mcf_

User / Kunde

Posts: 1,363

Thanks: 22

  • Send private message

10

Tuesday, November 11th 2014, 7:56pm

So wie ich es verstanden habe, will er, dass der Spieler schwebt und nicht i-was mit Sprüngen :o



bubbleguj

User / Kunde

  • "bubbleguj" is male

Posts: 704

Location: Vancouver, Canada

Occupation: Special Projects Assistant

Thanks: 9

  • Send private message

11

Tuesday, November 11th 2014, 7:59pm

einfach so schweben? das ist doch fliegen nur mit geringem speed!?
Programmer (noun.)
A person who fixed a problem that you don't have, in a way you don't understand.

Algorithm (noun.)
Word used by programmers when they don't want to explain what they did.

crysis992

User / Kunde

Posts: 284

  • Send private message

12

Tuesday, November 11th 2014, 8:00pm

Du könntest dir den SourceCode von einem der Plugins von Sethbling anschauen, das dürfte doch sowas in der Art sein das du suchst:

http://sethbling.com/downloads/bukkit-plugins/blinggravity/

mcf_

User / Kunde

Posts: 1,363

Thanks: 22

  • Send private message

13

Tuesday, November 11th 2014, 8:02pm

Wenn man es aber perfekt haben will mit wenn man Blöcke berührt in die gegnerische Richtung "geschleudert" wird. Klar, Velocity. Aber dran feilen muss man dann trotzdem

//Natürlich darf man nicht vergessen, dass sich der Spieler noch drehen muss :)


This post has been edited 2 times, last edit by "mcf_" (Nov 11th 2014, 8:35pm)


bubbleguj

User / Kunde

  • "bubbleguj" is male

Posts: 704

Location: Vancouver, Canada

Occupation: Special Projects Assistant

Thanks: 9

  • Send private message

14

Tuesday, November 11th 2014, 9:31pm

@mfc wtf :D
Programmer (noun.)
A person who fixed a problem that you don't have, in a way you don't understand.

Algorithm (noun.)
Word used by programmers when they don't want to explain what they did.

mcf_

User / Kunde

Posts: 1,363

Thanks: 22

  • Send private message

15

Tuesday, November 11th 2014, 9:46pm

Quoted

@mfc wtf :D

Ist was :o?



CreepieMC

User / Kunde

  • "CreepieMC" started this thread

Posts: 263

  • Send private message

16

Tuesday, November 11th 2014, 11:02pm

@crysis992

Genau das meine ich.
Er ist auf der Grünen Wolle drauf und er fällt/Jumpt/geht langsamer.

Habe mir den Source angeguckt und habe so geguckt O.o WTF!?
Ich kapiere nicht was er da macht, abschreiben bringt ja nichts.

BtoBastian

Moderator

  • "BtoBastian" is male

Posts: 3,612

Occupation: Softwareentwickler

  • Send private message

17

Tuesday, November 11th 2014, 11:11pm

Wo findet man denn den Source?
Soweit ich weiß kann man das auch irg. wo im NMS-Source modifizieren.
Standard Standart eines Flamingos ist einbeinig.

bubbleguj

User / Kunde

  • "bubbleguj" is male

Posts: 704

Location: Vancouver, Canada

Occupation: Special Projects Assistant

Thanks: 9

  • Send private message

18

Wednesday, November 12th 2014, 8:19pm

@BtoBastian In JDGui :)
@CreepieMC Ich schau's mir mal an

//Edit
Schau dir mal meinen Code an, den Teil wo man langsam nach unten fliegt. Das kann man doch übertragen, ist das selbe wie das, was er macht.
Programmer (noun.)
A person who fixed a problem that you don't have, in a way you don't understand.

Algorithm (noun.)
Word used by programmers when they don't want to explain what they did.

This post has been edited 1 times, last edit by "bubbleguj" (Nov 12th 2014, 8:25pm)


BtoBastian

Moderator

  • "BtoBastian" is male

Posts: 3,612

Occupation: Softwareentwickler

  • Send private message

19

Wednesday, November 12th 2014, 8:52pm

Das muss ich mir auch mal anschauen, scheint echt geil zu sein.
Kann ich dann ja eventuell in mein Spleef-Plugin einbauen. :-)

Werde sobald ich mehr herausgefunden habe und es nicht vergessen Rückmeldung geben. ;-)
Standard Standart eines Flamingos ist einbeinig.

BtoBastian

Moderator

  • "BtoBastian" is male

Posts: 3,612

Occupation: Softwareentwickler

  • Send private message

20

Saturday, November 15th 2014, 4:20pm

Für die, die es interessiert:
https://gist.github.com/BtoBastian/aec555165b247415b303

Ich habe den Source ein wenig aufgeräumt, unnötige Code-Teile entfernt und ihn allgemeintauglich gemacht.
Allerdings habe ich auch die Möglichkeit entfernt, dass es auf alle Entities Einfluss nimmt, da das so extrem an der Performance zieht, dass sich soetwas kein Server wirklich antun will.

Mein Code


Java source code

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
package de.oppermann.bastian.spleef.util;

import java.util.HashMap;
import java.util.Map.Entry;
import java.util.UUID;

import org.bukkit.Bukkit;
import org.bukkit.entity.Player;
import org.bukkit.util.Vector;

import de.oppermann.bastian.spleef.SpleefMain;

public class GravityModifier {
	
	private static final HashMap<UUID, Double> MODIFY = new HashMap<>();
	private static final HashMap<UUID, Vector> OLD_VELOCITIES = new HashMap<>();
	
	static {
		Bukkit.getScheduler().runTaskTimer(SpleefMain.getInstance(), new Runnable() {			
			@Override
			public void run() {
				onTick();
			}
		}, 1, 1);
	}	
	
	private GravityModifier() { }	// singleton
	
	public static void modifyGravity(UUID player, double gravity) {
		MODIFY.put(player, gravity);
	}
	
	public static void resetGravity(UUID player) {
		MODIFY.remove(player);
		OLD_VELOCITIES.remove(player);
	}
	
	private static void onTick() {
		for (Entry<UUID, Double> entry : MODIFY.entrySet()) {
			Player player = Bukkit.getPlayer(entry.getKey());
			updateVelocities(entry.getValue(), player);
		}
	}
	
	@SuppressWarnings("deprecation")	// cause isOnGround() is deprecated
	private static void updateVelocities(double gravity, Player player) {
    	UUID uuid = player.getUniqueId();
    	Vector newVector = player.getVelocity().clone();
    	if (OLD_VELOCITIES.containsKey(uuid) && !player.isInsideVehicle()) {
    		if (!player.isOnGround()) {
        		Vector oldVector = OLD_VELOCITIES.get(uuid);
    			Vector oldVectorClone = oldVector.clone();
    			oldVectorClone.subtract(newVector);
    			double oldVectorCloneY = oldVectorClone.getY();
    			if (oldVectorCloneY > 0.0D && (newVector.getY() < -0.01D || newVector.getY() > 0.01D)) {
    				newVector.setY(oldVector.getY() - oldVectorCloneY * gravity);
    				boolean newXChanged = newVector.getX() < -0.001D || newVector.getX() > 0.001D;
    				boolean oldXChanged = oldVector.getX() < -0.001D || oldVector.getX() > 0.001D;
    				if (newXChanged && oldXChanged) {
    					newVector.setX(oldVector.getX());
    				}
    				boolean newZChanged = newVector.getZ() < -0.001D || newVector.getZ() > 0.001D;
    				boolean oldZChanged = oldVector.getZ() < -0.001D || oldVector.getZ() > 0.001D;
    				if (newZChanged && oldZChanged) {
    					newVector.setZ(oldVector.getZ());
    				}
    				player.setVelocity(newVector.clone());
    			}
    		}
    	}
    	OLD_VELOCITIES.put(uuid, newVector.clone());
    }

}



Und für alle, die es interessiert, hier auch noch der "Original" Source (decompiled):

Original


Java source code

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
package com.sethbling.blinggravity;

import java.util.*;
import java.util.logging.Logger;
import org.bukkit.*;
import org.bukkit.block.Block;
import org.bukkit.entity.Entity;
import org.bukkit.entity.Player;
import org.bukkit.event.Listener;
import org.bukkit.event.entity.EntityDamageEvent;
import org.bukkit.plugin.PluginManager;
import org.bukkit.plugin.java.JavaPlugin;
import org.bukkit.util.Vector;

public class BlingGravity extends JavaPlugin
    implements Listener
{

    protected HashMap velocities;
    protected HashMap positions;
    protected HashMap onGround;

    public BlingGravity()
    {
    }

    public void onEnable()
    {
        getLogger().info("BlingGravity has been loaded.");
        (new GravityTask(this)).runTaskLater(this, 1L);
        velocities = new HashMap();
        onGround = new HashMap();
        positions = new HashMap();
        getServer().getPluginManager().registerEvents(this, this);
    }

    public void onDisable()
    {
        getLogger().info("BlingGravity has been unloaded.");
    }

    public void UpdateVelocities()
    {
        for(Iterator i = getServer().getWorlds().iterator(); i.hasNext();)
        {
            World world = (World)i.next();
            Entity e;
            UUID uuid;
            for(Iterator j = world.getEntities().iterator(); j.hasNext(); positions.put(uuid, e.getLocation()))
            {
                e = (Entity)j.next();
                Vector newv = e.getVelocity().clone();
                uuid = e.getUniqueId();
                if(velocities.containsKey(uuid) && onGround.containsKey(uuid) && !e.isOnGround() && !e.isInsideVehicle())
                {
                    Vector oldv = (Vector)velocities.get(uuid);
                    if(!((Boolean)onGround.get(uuid)).booleanValue())
                    {
                        Vector d = oldv.clone();
                        d.subtract(newv);
                        double dy = d.getY();
                        if(dy > 0.0D && (newv.getY() < -0.01D || newv.getY() > 0.01D))
                        {
                            Location loc = e.getLocation().clone();
                            double gravity = 1.0D;
                            for(; loc.getBlockY() >= 0; loc.setY(loc.getY() - 1.0D))
                            {
                                Block block = loc.getBlock();
                                if(block.getType() == Material.WOOL)
                                {
                                    if(block.getData() == 5)
                                    {
                                        gravity = 0.20000000000000001D;
                                    } else
                                    if(block.getData() == 14)
                                    {
                                        gravity = 5D;
                                    } else
                                    if(block.getData() == 9)
                                    {
                                        gravity = -0.20000000000000001D;
                                    } else
                                    if(block.getData() == 2)
                                    {
                                        gravity = -5D;
                                    }
                                }
                                if(block.getType() != Material.AIR)
                                {
                                    break;
                                }
                            }

                            newv.setY(oldv.getY() - dy * gravity);
                            boolean newxchanged = newv.getX() < -0.001D || newv.getX() > 0.001D;
                            boolean oldxchanged = oldv.getX() < -0.001D || oldv.getX() > 0.001D;
                            if(newxchanged && oldxchanged)
                            {
                                newv.setX(oldv.getX());
                            }
                            boolean newzchanged = newv.getZ() < -0.001D || newv.getZ() > 0.001D;
                            boolean oldzchanged = oldv.getZ() < -0.001D || oldv.getZ() > 0.001D;
                            if(newzchanged && oldzchanged)
                            {
                                newv.setZ(oldv.getZ());
                            }
                            e.setVelocity(newv.clone());
                        }
                    } else
                    if((e instanceof Player) && positions.containsKey(uuid))
                    {
                        Vector pos = e.getLocation().toVector();
                        Vector oldpos = ((Location)positions.get(uuid)).toVector();
                        Vector velocity = pos.subtract(oldpos);
                        newv.setX(velocity.getX());
                        newv.setZ(velocity.getZ());
                    }
                    e.setVelocity(newv.clone());
                }
                velocities.put(uuid, newv.clone());
                onGround.put(uuid, Boolean.valueOf(e.isOnGround()));
            }

        }

    }

    public void onEntityDamageEvent(EntityDamageEvent e)
    {
        if(e.getCause() == org.bukkit.event.entity.EntityDamageEvent.DamageCause.FALL)
        {
            e.setCancelled(true);
        }
    }
}

Java source code

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
package com.sethbling.blinggravity;

import org.bukkit.scheduler.BukkitRunnable;

public class GravityTask extends BukkitRunnable
{

    private final BlingGravity plugin;

    public GravityTask(BlingGravity plugin)
    {
        this.plugin = plugin;
    }

    public void run()
    {
        plugin.UpdateVelocities();
        (new GravityTask(plugin)).runTaskLater(plugin, 1L);
    }
}

Standard Standart eines Flamingos ist einbeinig.

Bitte besucht unser neues Forum unter https://forum.nitrado.net| Please visit our new Forum at https://forum.nitrado.net